full rebase to Aurora 32
authorWolfgang Rosenauer <wr@rosenauer.org>
Wed, 09 Jul 2014 14:56:22 +0200
changeset 748 72ba5129e5fd
parent 746 b441942b2a3f
child 751 8517d10e87ab
child 762 f20576d5885a
full rebase to Aurora 32
MozillaFirefox/MozillaFirefox.changes
MozillaFirefox/MozillaFirefox.spec
MozillaFirefox/mozilla-aarch64-bmo-810631.patch
firefox-branded-icons.patch
firefox-kde.patch
firefox-multilocale-chrome.patch
mozilla-aarch64-bmo-810631.patch
mozilla-kde.patch
mozilla-preferences.patch
series
--- a/MozillaFirefox/MozillaFirefox.changes	Thu Jun 12 22:59:33 2014 +0200
+++ b/MozillaFirefox/MozillaFirefox.changes	Wed Jul 09 14:56:22 2014 +0200
@@ -1,18 +1,20 @@
 -------------------------------------------------------------------
-Thu Jun 12 20:58:31 UTC 2014 - wr@rosenauer.org
-
-- update to Aurora 32 (20140611)
+Wed Jul  9 05:13:39 UTC 2014 - wr@rosenauer.org
+
+- update to Aurora 32 (20140707)
+- rebased patches
+- requires NSS 3.16.3
+- removed upstreamed patch
+  * mozilla-aarch64-bmo-810631.patch
+
+-------------------------------------------------------------------
+Sat Jul  5 12:28:20 UTC 2014 - wr@rosenauer.org
+
+- update to Firefox 31beta7
 - rebased patches
 - requires NSS 3.16.2
 
 -------------------------------------------------------------------
-Thu Jun 12 15:41:45 UTC 2014 - wr@rosenauer.org
-
-- update to Firefox 31beta1
-- rebased patches
-- requires NSS 3.16.1
-
--------------------------------------------------------------------
 Mon Jun  9 08:28:17 UTC 2014 - wr@rosenauer.org
 
 - update to Firefox 30.0 (bnc#881874)
--- a/MozillaFirefox/MozillaFirefox.spec	Thu Jun 12 22:59:33 2014 +0200
+++ b/MozillaFirefox/MozillaFirefox.spec	Wed Jul 09 14:56:22 2014 +0200
@@ -55,7 +55,7 @@
 BuildRequires:  wireless-tools
 %endif
 BuildRequires:  mozilla-nspr-devel >= 4.10.6
-BuildRequires:  mozilla-nss-devel >= 3.16.2
+BuildRequires:  mozilla-nss-devel >= 3.16.3
 BuildRequires:  nss-shared-helper-devel
 BuildRequires:  pkgconfig(libpulse)
 %if %suse_version > 1210
@@ -117,8 +117,6 @@
 Patch12:        mozilla-arm-disable-edsp.patch
 Patch13:        mozilla-ppc.patch
 Patch14:        mozilla-libproxy-compat.patch
-# Gecko/Toolkit AArch64 Porting
-Patch30:        mozilla-aarch64-bmo-810631.patch
 
 # Firefox/browser
 Patch101:       firefox-kde.patch
@@ -259,7 +257,6 @@
 %patch12 -p1
 %patch13 -p1
 %patch14 -p1
-%patch30 -p1
 
 # Firefox
 %patch101 -p1
--- a/MozillaFirefox/mozilla-aarch64-bmo-810631.patch	Thu Jun 12 22:59:33 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-../mozilla-aarch64-bmo-810631.patch
\ No newline at end of file
--- a/firefox-branded-icons.patch	Thu Jun 12 22:59:33 2014 +0200
+++ b/firefox-branded-icons.patch	Wed Jul 09 14:56:22 2014 +0200
@@ -1,10 +1,10 @@
 # HG changeset patch
-# Parent 9745e5d5cdc7e91dbfc5582b49881668cb6725f7
+# Parent 17ccae9100af86bc65f924b87545184af2f4ada9
 
 diff --git a/browser/app/Makefile.in b/browser/app/Makefile.in
 --- a/browser/app/Makefile.in
 +++ b/browser/app/Makefile.in
-@@ -76,16 +76,21 @@ GARBAGE += $(addprefix $(FINAL_TARGET)/d
+@@ -75,16 +75,21 @@ GARBAGE += $(addprefix $(FINAL_TARGET)/d
  endif
  
  ifdef MOZ_WIDGET_GTK
@@ -54,7 +54,7 @@
 diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
 --- a/browser/installer/package-manifest.in
 +++ b/browser/installer/package-manifest.in
-@@ -613,18 +613,21 @@
+@@ -629,18 +629,21 @@
  @BINPATH@/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
  @BINPATH@/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png
  @BINPATH@/chrome/toolkit@JAREXT@
@@ -70,9 +70,9 @@
 +@BINPATH@/browser/chrome/icons/default/default256.png
  #endif
  
- ; shell icons
- #ifdef XP_UNIX
- #ifndef XP_MACOSX
- ; shell icons
- @BINPATH@/browser/icons/*.png
- #ifdef MOZ_UPDATER
+ ; [Webide Files]
+ #ifdef MOZ_DEVTOOLS_WEBIDE
+ @BINPATH@/browser/chrome/webide@JAREXT@
+ @BINPATH@/browser/chrome/webide.manifest
+ @BINPATH@/browser/@PREF_DIR@/webide-prefs.js
+ #endif
--- a/firefox-kde.patch	Thu Jun 12 22:59:33 2014 +0200
+++ b/firefox-kde.patch	Wed Jul 09 14:56:22 2014 +0200
@@ -2,7 +2,7 @@
 new file mode 100644
 --- /dev/null
 +++ b/browser/base/content/browser-kde.xul
-@@ -0,0 +1,1197 @@
+@@ -0,0 +1,1205 @@
 +#filter substitution
 +<?xml version="1.0"?>
 +# -*- Mode: HTML -*-
@@ -106,6 +106,12 @@
 +                accesskey="&moveToNewWindow.accesskey;"
 +                tbattr="tabbrowser-multiple"
 +                oncommand="gBrowser.replaceTabWithWindow(TabContextMenu.contextTab);"/>
++#ifdef E10S_TESTING_ONLY
++      <menuitem id="context_openNonRemoteWindow" label="Open in new non-e10s window"
++                tbattr="tabbrowser-remote"
++                hidden="true"
++                oncommand="gBrowser.openNonRemoteWindow(TabContextMenu.contextTab);"/>
++#endif
 +      <menuseparator/>
 +      <menuitem id="context_reloadAllTabs" label="&reloadAllTabs.label;" accesskey="&reloadAllTabs.accesskey;"
 +                tbattr="tabbrowser-multiple-visible"
@@ -245,7 +251,7 @@
 +           onpopuphidden="SocialShare.onHidden()"
 +           hidden="true">
 +      <vbox class="social-share-toolbar">
-+        <vbox id="social-share-provider-buttons" flex="1"/>
++        <arrowscrollbox id="social-share-provider-buttons" orient="vertical" flex="1"/>
 +      </vbox>
 +    </panel>
 +
@@ -311,7 +317,7 @@
 +                oncommand="BrowserFullScreen();"/>
 +    </menupopup>
 +
-+    <menupopup id="contentAreaContextMenu" pagemenu="start"
++    <menupopup id="contentAreaContextMenu" pagemenu="#page-menu-separator"
 +               onpopupshowing="if (event.target != this)
 +                                 return true;
 +                               gContextMenu = new nsContextMenu(this, event.shiftKey);
@@ -578,7 +584,7 @@
 +                     label="&tabCmd.label;"
 +                     command="cmd_newNavigatorTab"
 +                     onclick="checkForMiddleClick(this, event);"
-+                     tooltiptext="&newTabButton.tooltip;"
++                     tooltip="dynamic-shortcut-tooltip"
 +                     ondrop="newTabButtonObserver.onDrop(event)"
 +                     ondragover="newTabButtonObserver.onDragOver(event)"
 +                     ondragenter="newTabButtonObserver.onDragOver(event)"
@@ -874,6 +880,7 @@
 +             during the customization of the toolbar, in the palette, and before
 +             the Downloads Indicator overlay is loaded. -->
 +        <toolbarbutton id="downloads-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
++                       key="key_openDownloads"
 +                       oncommand="DownloadsIndicatorView.onCommand(event);"
 +                       ondrop="DownloadsIndicatorView.onDrop(event);"
 +                       ondragover="DownloadsIndicatorView.onDragOver(event);"
@@ -881,7 +888,7 @@
 +                       label="&downloads.label;"
 +                       removable="true"
 +                       cui-areatype="toolbar"
-+                       tooltiptext="&downloads.tooltip;"/>
++                       tooltip="dynamic-shortcut-tooltip"/>
 +
 +        <toolbarbutton id="home-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
 +                       persist="class" removable="true"
@@ -890,6 +897,7 @@
 +                       ondragenter="homeButtonObserver.onDragOver(event)"
 +                       ondrop="homeButtonObserver.onDrop(event)"
 +                       ondragexit="homeButtonObserver.onDragExit(event)"
++                       key="goHome"
 +                       onclick="BrowserGoHome(event);"
 +                       cui-areatype="toolbar"
 +                       aboutHomeOverrideTooltip="&abouthome.pageTitle;"/>
@@ -897,11 +905,10 @@
 +
 +        <toolbarbutton id="social-share-button"
 +                       class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                       hidden="true"
-+                       overflows="false"
 +                       label="&sharePageCmd.label;"
 +                       tooltiptext="&sharePageCmd.label;"
 +                       cui-areatype="toolbar"
++                       removable="true"
 +                       command="Social:SharePage"/>
 +      </hbox>
 +
@@ -1011,9 +1018,11 @@
 +
 +      <toolbarbutton id="print-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
 +#ifdef XP_MACOSX
-+                     command="cmd_print" tooltip="dynamic-shortcut-tooltip"
++                     command="cmd_print"
++                     tooltip="dynamic-shortcut-tooltip"
 +#else
-+                     command="cmd_printPreview" tooltiptext="&printButton.tooltip;"
++                     command="cmd_printPreview"
++                     tooltiptext="&printButton.tooltip;"
 +#endif
 +                     label="&printButton.label;"/>
 +
@@ -1070,8 +1079,7 @@
 +                    tabcontainer="tabbrowser-tabs"
 +                    contentcontextmenu="contentAreaContextMenu"
 +                    autocompletepopup="PopupAutoComplete"
-+                    selectpopup="ContentSelectDropdown"
-+                    onclick="contentAreaClick(event, false);"/>
++                    selectpopup="ContentSelectDropdown"/>
 +        <chatbar id="pinnedchats" layer="true" mousethrough="always" hidden="true"/>
 +      </vbox>
 +      <splitter id="social-sidebar-splitter"
@@ -1203,7 +1211,7 @@
 diff --git a/browser/base/jar.mn b/browser/base/jar.mn
 --- a/browser/base/jar.mn
 +++ b/browser/base/jar.mn
-@@ -65,16 +65,18 @@ browser.jar:
+@@ -70,16 +70,18 @@ browser.jar:
          content/browser/aboutRobots-icon.png          (content/aboutRobots-icon.png)
          content/browser/aboutRobots-widget-left.png   (content/aboutRobots-widget-left.png)
          content/browser/aboutSocialError.xhtml        (content/aboutSocialError.xhtml)
@@ -1217,11 +1225,11 @@
  *       content/browser/browser-tabPreviews.xml       (content/browser-tabPreviews.xml)
  *       content/browser/chatWindow.xul                (content/chatWindow.xul)
          content/browser/content.js                    (content/content.js)
-         content/browser/fonts/ClearSans-Regular.woff  (content/fonts/ClearSans-Regular.woff)
-         content/browser/fonts/FiraSans-Regular.woff   (content/fonts/FiraSans-Regular.woff)
-         content/browser/fonts/FiraSans-Light.woff     (content/fonts/FiraSans-Light.woff)
          content/browser/newtab/newTab.xul             (content/newtab/newTab.xul)
  *       content/browser/newtab/newTab.js              (content/newtab/newTab.js)
+         content/browser/newtab/newTab.css             (content/newtab/newTab.css)
+ *       content/browser/pageinfo/pageInfo.xul         (content/pageinfo/pageInfo.xul)
+         content/browser/pageinfo/pageInfo.js          (content/pageinfo/pageInfo.js)
 diff --git a/browser/components/build/nsModule.cpp b/browser/components/build/nsModule.cpp
 --- a/browser/components/build/nsModule.cpp
 +++ b/browser/components/build/nsModule.cpp
@@ -1308,7 +1316,7 @@
      // when the user will select the default.  We refresh here periodically
      // in case the default changes.  On other Windows OS's defaults can also
      // be set while the prefs are open.
-@@ -884,14 +890,25 @@ var gAdvancedPane = {
+@@ -875,14 +881,25 @@ var gAdvancedPane = {
     * Set browser as the operating system default browser.
     */
    setDefaultBrowser: function()
@@ -1790,7 +1798,7 @@
 diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
 --- a/browser/installer/package-manifest.in
 +++ b/browser/installer/package-manifest.in
-@@ -643,19 +643,21 @@
+@@ -666,19 +666,21 @@
  @BINPATH@/defaults/autoconfig/prefcalls.js
  @BINPATH@/browser/defaults/profile/prefs.js
  
--- a/firefox-multilocale-chrome.patch	Thu Jun 12 22:59:33 2014 +0200
+++ b/firefox-multilocale-chrome.patch	Wed Jul 09 14:56:22 2014 +0200
@@ -1,5 +1,5 @@
 # HG changeset patch
-# Parent 8e7e4170601428db00564f738c8223c8d5122274
+# Parent 9e20873aca55242f18dd1b93e863eded6d1d08bd
 # User Wolfgang Rosenauer <wr@rosenauer.org>
 Add searchplugins to chrome packaging for proper localization
 
@@ -99,8 +99,8 @@
 diff --git a/browser/locales/en-US/searchplugins/google.xml b/browser/locales/en-US/searchplugins/google.xml
 --- a/browser/locales/en-US/searchplugins/google.xml
 +++ b/browser/locales/en-US/searchplugins/google.xml
-@@ -9,25 +9,17 @@
- <Image width="16" height="16">data:image/x-icon;base64,AAABAAIAEBAAAAAAAAB9AQAAJgAAACAgAAAAAAAA8gIAAKMBAACJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAFESURBVDjLpZNJSwNBEIXnt4lE4kHxovgT9BDwJHqPy0HEEOJBiAuCRg+KUdC4QS4KrpC4gCBGE3NQ48JsnZ6eZ3UOM6gjaePhQU93v6+qq2q0pqgeJj2S8EdJT1hr0OxBtKCD5iEd8QxDYpvhvOBAuMDKURX9C9aPu4GA1GEVkzvMg10UBfYveWAWgYAP00V01fa+R9M2bA51wJvhIn3qR+ybt3D3JNQBE5sMjCIOLFpoHzOwdsLRO22qA6R6kiZiWwxUvy/PUQZIhYZ1vFM9cvcOOsYNdcBgysISdSJBnZjJMlR0Fw8vAp0xoz5gao/h+NZBy4i/10XGwrPA+hmvDyhVRG2Avu/LwcrkFADZa16L1h330w1RNgc3DiJzCpPYRm1bpveXX11clQR28xwblHpk1vq1iP/5mcoS0CoXDZiL0vsJ+dzfl+3T/VYAAAAASUVORK5CYIKJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAK5SURBVFjDxVfrSxRRFJ9/Jta/oyWjF5XQm6D6EkHRgygIIgjUTcueVgqVWSRRkppEUQYWWB8ye1iGWilWlo/Ude489s7M6Zw7D9dlt53dmd29cFiWvXvO77x+51xpaaUsoSxBaUWZQ4ECy5xji2xKZDyCMlMEw6lCNiOSgwZKJK1SkcKeSealfP64t0mBjl4Ow39MkDUL0p2RSROOtqhZdeUEYM1pBl39XCg/fEeFtWcY7G9W4csvUxjlBkCsQ4Nt9QyWVfvT6RsAKXw3aoDGATZeYIt+W1kjw7cJG0RctWDTRebbKd8A6h5pwsDb70ba3w/eUr3wt/cmwgfw6Yft4TNMQaY7o1P2ncm4FT4ANQH/jQBJ2xv7kqIXEADDql8eS3+n8bku7oxNm+EDIM/dU92upb3T/NJGeaNbDx/AsbsLRUY5Xn92caWXY5d8RV6gWllxSg4fAEnTC90DQW13BLlgXR2D3dcUeDVkwOthA1bXspxILWcm3HdThcfvufB26LcJpkOEAz9NKI/lzqpSEC7feol5EWnpSeSlIxCALUkApmULdjUqxQVAQnl3D/X/yQda4QBEq2TYc12By091MQ17Bg3R88nHKlQbVmHvj89awNBLYrwT9zXY2aBAxTkGFdiSxP/Jp6FLDw+AS7GfsdJTJ2EqSO5khD43nGfBARy/ZxOQgZHe7GPM1jzUvChUtmnBAXQPcKGMJp3fdFGq6NByEhiAO4b/YptFfQJwNyQ/bZkVQGcf90Ja25ndIyrKBOa/f8wIpwi3X1G8UcxNu7ozUS7tiH0jBswwS3RIaF1w6LYKU/ML2+8sGnjygQswtKrVIy/Qd9qQP6LnO64q4fPAKpxyZIymHo1jWk6p1ag2BsdNwQMHcC+M5kHFJX+YlPxpVlbCx2mZ5DzPI04k4kUwHHdskU3pH76iftG8yWlkAAAAAElFTkSuQmCC</Image>
+@@ -11,25 +11,17 @@
+ <Image width="130" height="52">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIIAAAA0CAYAAABGkOCVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjMwQjQ3MEVGRjQxMTExRTM5RkNCRjhFNDM0QjY3OEQ1IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjMwQjQ3MEYwRjQxMTExRTM5RkNCRjhFNDM0QjY3OEQ1Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzBCNDcwRURGNDExMTFFMzlGQ0JGOEU0MzRCNjc4RDUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzBCNDcwRUVGNDExMTFFMzlGQ0JGOEU0MzRCNjc4RDUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5U94CwAAArpElEQVR42ux9B5hU5dn2c9r02Z3ZXmCX3QV2KS69KE1AsQAGEBT1tyQawUSN0fgbjfrFWGIs0ZjYjaKiWBABERSRDtKR3naXXZbtO7PTy6n/87xnlqLEL1++/Pn/fNee6zrOMDtz5pz3uZ/7ue/nfc/IGYYBXVvXxncNQdfWBYSurQsIXVsXELq2LiB0bV1A6Np+cBNDcdM+SgJAR9QADqGx7pAKNW06DC0RoCSbh+V7VZB48FS36hftqlMvjSvGyOag3q+uSTePIhjgtHGQ6eIiPXOFg7oONX0L+S0Axma7xG2f2NcCJ/06aGhV6bnTCqDq5zodDgwnD2m7NoJweBckOzrAMewC0FUV/O+/DqrfB2mX/Ag4qw04yQK8ywVKaxPYe/cFW59K4Gx24EQRDN0AXsTdQlBPA2h+HyCyDyBvNkBoG0CiESDZAJA9DSBeB1D7NIAWA+h+O4Cu4PU4gQ2E3AaQPhwgYwwex4av6XjeEkRVJ/CcARpegz9iAI4JSCLAjuMaDCwSQcfrfH5lAnbVarDyPguM6clDUP6+Taf3eSwO4DgO7tkx/95DwcYcj8WZJEvPcwKEEyFLWFNyHh0064ECh7cxpibPMWZ4XFc66HhuaS88D9xXy8E6eiKI+YXsr87ho8EaDkB11TH4Ei9RpO/VVPa3IUOGsH3VqlXs9XOcIIDdwkFRJg/HWvSRaw4qP91ao/6k2Y8BdwCk2TmoyBe+vaSf1Izv5SIJw3a4SevVFtYLVu+Qh2PEh687zM3OdnOQ4eQOxmTjQwTI630KhCYHHlfT/+f3LugKNQ2g0MsxgNMrRupZ52YTJAgosaxrNvxl6Zd7Pz0f0vIxUpglmEmgyJgtCXj+wrteGZ1b7v9b3xOnPAwEQKw5Bm1NzRC228H6jzDCWSePZ8rjmWa5OAjEjYwXvko+//F2+fr2Jg0Kuglw83jrHy/uL763/rC6q7I7D9eOtGLMAfadVGHZbgXcdq7weJs2CZnlxs92Jce1BnRENdf35ZXxRzLT+F/PGGJ5ISdNeBUBdjx+jgzBJAMNmcnAAcK0/rcGAjIo2x/8WIWHrhChT4EJgaBisHGmf1kEEY6Fm+2V3u4fz7riyWf+fOirx/a1Hu4jWd2QTETg+gHTX/5F30t/VhNuBVlX8TPmMShGcQIWHqjsZDsYJ2tBsdpBRxBw/2CDUDwTwchQkJvGQ1tYnfjkssQH9a1almjl4NqLbR8O7SHchVndnO7gADMcWkMGnPDpDAgNHTrIqgGKCg3ndRPfumGU9a35FeL0Z7+Iv3iiWcvPRWbxhw376+9G7nPYOedz17rvONmhwVnnjM9VOw8iJoIYxosTLf/e4gvH0oOMuGCNBku2a3DDaAFuu1iASkwoutggJTxmfrbNXX9Tz/HP9XBkwsLabXP2yPE+uuQCzuGF+kjbnstXPQ0RNX4KBJ3CrppX4FeJTBgQy4FYYTaiygrw3+gS852lQMRnBV4e3vtGnn3ne7FVqAGy7A4e5o633n/vZbbZhsE1U53v1BQcd2ZlN49BNbM1pEO9X4MxFdKnv53uqOhXLHwVQu2hRHWYNNmxaOYw232+6HeyHf+pOQTgFRyYhiMgxsNgSLZ/+9JADF+Yz4GEyfTKMhWGPyTDzW/IsB8ZNt2ig4CDqOCbmmIdUBdth7gm20mbGKkyEpYT6Tr+/SwQUOKpURjqyofb7L1BllBXUTD+m1MFPCHXirxgETlYvke5/KbXowuSmN0U2F9eYn385xOtT9a148kizZOg/KEMkFGDEFvQKZGIGtVLCv16quOBeLsGU8+3fXrfFMeVqA9ixB5ngki1IgoDIUj/Yj5IMT/ojvR/+9LQuVFyOJDcCos4sCG23/xchfPuVeG1rX6I8MfgJF6viMGnYLNYGibl0yOJSAnLh8Sf3nlRQuZV4TY5E6iEREH7pzEYE4Yo9gpmvRhdZkNAxFGcYj3f9viV9gdRFMLIngLkpfMQjhtnMcGZm4zngxoBsHyAgHF12whcKNYTxuDLx9nX3HO5fUZrWIdI0jC/NAUC2eDBgo4j58Re4BqrQXN5/seA4CzSw0uyo/QpKOZAxISa85wTXl7HgcsVZcwAcBoAZz6eudO7ahIBmOkqgYu5XGSQKPDA/XOAsLNOIxDA/R/HFsbiOudBoUgBvGakdCOVgm9PaBDHetYfxaEvBkwLnAsMZD0H9xBgbIUAQQQMAYPKRFmusHTuBNsEH4Ig+j0QIOJRIebjAFlxV20uc8T+B2/EEDkeHAek9N+/kw+NzW5wO2RWS04BADqBoJ+1x1UZHMgKc0pGYy2XQE3ZwH8KEIjK0RlMXfqtcn5hFg/NPg1mDLOsKMkWDu+p1+AkCsG9+EgBnDJAZPRFiv97YODM4KJghE7DRDHFstNM35FQ4GwQ6DwDQaEthhmB/wbhn4Ttfw8wuBw6MjEPIX+22bPgzgAA1WViRQNO7ZT5dVEfXFk4CFm3L8TjflY6/mkNpTG9RWp+/E5XTQGITA2XV4p/Lc/jmY3s/C4j1VvIcPLwIYYtnDBYCdC0039P4jEUzQw4XQt9li6a9s7nxDa56QK0hTTI4OJ4DOMUOL7vJ3kQvJnAE6J4nn0J70oD3u5gKKPm0T8skjiioQI8qcTpb5cyzYaSGa5UFP5OcWiYp0iui8drous0/tZ1pV5PGklIxryCFvNqYFdSQTdSj2d/MqEpkC7a4WZiA10zezG8Oci8yw28O5012tgY2ewgpHvAkGWz8cbAp0MwFAHRMESB51RTIKJLE03jKC77Vum387g6MBOtTgDpvXe+oAwoEteRPYx9x+uTY/A4ObhupAWBYApDCdMZdQCWBp3RO9XBNLSBZCupHNB10TmTIEWWAQHfP39THC4qU0GgcZe5033uVFB5pwsETwaovtZ+kbUrp2rRyAV6MNBTj8fkxP5dR8Fi2WcpKt0sObt/LXi8KQT/Z0FLhUXKwFFBEZSoHw6N8yZDonEEqB09EBAx8H99EN+2H9wDN4AlaxN776nP/u3sdqIryPNwsK9eK/xou3xdc1Abd6BB75aQjaTLygWN1NnRaSYVsGHy88Gg7qooEY7luPifxCKusMPh+wFrx0EtssEtCILi9FzQmxsxR/BVbwZzXHLVkYuSJ45PV+prz8fg25PHj1Ur/ra9YlbOVhzwpbo303BYrTCwshQBKqZHQsHbrVarnkgkYh0dHS9gSbpVXLhDnk7Zne3mkb4NcFu5qm3VajtRuaob5+w64ntYoKMIBLKdPTDAD1xhh5GlEtRiablnQQR+NNAClw20QiBmMkccj7dqfxI+2pSAmkYZjj/rNvvanWBDKuQkCcTsXEgePTQxtGLxb5O1VaM5ohebPYYXFRK9mXmRdV8N0FV5llRYhIBxH7VXDn7K0XfgXwXMCE1OnjsDDc1sG1sLAdoWzYTmDx6FaFUF8Oi9BXcI7GUJ0BPlcPKTQQyVgU14blk7wTvmUcgYtwQEl8kU3PdZoBjL6dFWrdvjSxOPf31QvYE6p8WZ3MGBRYLjWLPe41izBjnIEiQQCTT5CJgjjRqUFIrw8BXO+5x2I6wKSPN6ikZPsYJ+SiTGNBkyJKfJBhQDzHg+zQNKfd2M4Cfzn5MbTxQRKwiZOS3W0l5piarDFUpzw2Qao9j+3XWuCy99IKe05/uTh48BRbL4jh48eKL2+PGYqqqTamtrH0ZWGC7KijFCxWDoqZKUZufqD6F49EVOC7vvbjRPQHU9wynBxH4ipKHqF1JpTY+fbknAp2vjMGu8HWYOt8LBBhUW4msHamUSA5CVJ4LDevbBOStaaKcbAgveejm48N25WiIOaVNmPm0bNOJP8f27Gox4DNyXThPcbS3TOz586+nEsUM9OLu9d/zYwTdUv29KwUNPXSl5MnQtHgFOILpTzQYF4z0PpaMFqu7+EGrfmQZkg7vfeh+4Kv8K/tU+DDpA3tVOCO28Go4/9zzEmnBUW4ZAYP9i0OKvwnlvzGVA0oJ4GNMVUcy8yI7fVKlj7pgXW3G8XnP+crrtpW4Zwp0IGK1fIYeW28h7b7P8/NcHlauzU4x7cT/py0evdPzYH9H9Hpsl6dfaINMRQrbPPIMVjbPY4ETUD7eUjobuWYXsT2JaOgRWr3gVQXAredLsB37/UyOZfCu0aplmHzgM3BdPHR1a8emL0d1bK7VIqDi685v3YO6vimyjJj6pYrmQFaWhpaVFGjJkyKcItGFer3e5iLRexGFUSagQIzgtoA4vwRoeNn7Qc7Yg4XXP4MHr4FjJoHen283WR/ccAerbNfh4fRw+2RZng0Zv8GYI7L2iYGCSS1SUkQVMkSFkZENsw6qvY1s3TpBKekL6ZdPGSj16biA+1WNRICDgxWr2vpULYfaPv/C9/fL2ZF1NhZiTD/4lC6ZpkfCmoqdfO59HQGEpQWBZzaJNmyXbDkde3gUdjRXg7R6FgpsHgL20GtQQBjdi6gUDvVjGhDfxTFZB9RO7IOnLBGsawLF5c0BPZsKAd2eh1EdiUBm7ZaN+2l2nlU37U2R9a4MGt02zf/bYTPvPX12ThHq/ybBYXpvnz3HOfnJ5Qnj+0/jMnFwe5q9PXnJhH2n6LeNsL0XjAA2KAnUR1EtiqgSd0gjmrqB4c0l2mJJ/nokTOQHtTz28IPjJe7Ol4lLFe/MdfZznj60Ofr6ITcBJrS1grxy6sejF9wfWzpl1JH5oXy/SWS1vvvB71/DR6+2DR24uKOu5WrRY+DS7XZYslmWoFTi+MaB7nLbTQESEGASIuGwC47t7EndqLnXL4GBwicgsoXGO8iGJHGRmCuCy8agreMhwm0GhUpKQeWhvCuCTNtDCQSZqQosXzIvt2joB6z94rr3lF94bbmMgUPHiWEAJEEj9qBXAUTk0kn/fY+PF7BxVC/jBhsAJrPh0ZOOzj7yi+tohcRhLfbQBLyaMgY4C1D62EkIIAupa9/rDDCi+uxq/GEe5DY8rmNpBpX/jORXceAIq354EaNOw1qC8RyaoWjATjj54NyjNIAePQjseMoQa6aFF8Y9a23XI6S5An0LhuYMIiHwPuiEEOiVKeb7AxuHhK+yzyksEfxB1lAMTZ+68yIsr9sj9a9sNaGyzgUUQTkuRU7sJig5dhkH2LBjajufS0gqhpR/fHFzy4Wya7sz65YP3pF1xVTWdv+BwgmPAMFZaE4f2gNxYb3imXXNLp3jUQkFo+OMjS9WGExLUH1dVRZHN7icrQQZ/5neT2GsNG2kHGnWoxQukqejv7lWtOs1IQv/uIptUUf6TxhbVxjNLDAmrQMgKL32GQdi5BpRjByH4ybsTAgvevJHcgLW8X7u1T/8X5JO1IOXkgZRbAFpHu2mrknGsjWko7rPBMXhks2fKrN+qbc3MbkndiqBj2cdzgqtXDDCwKhhtawEiWwFqHvwpNHw+mpUDb+UBcPRZCZH9AI7eiNYcBGNTCr0YWSvN/qEeyJ68C/JnzYN4wrR21O0+/udnoe2LbEU10D0BrNirnL/+iDo43cuTU9AK0vmjLSiwqYs4ulzCBOCgFzJAI3VkEVM3jrE+loyaYltFVnxtbeIXrUH8+qSAQlqA0+l0dmmI4MWcJ3nZ82TtUXvgo3l/QakPyJZJQ1Xnxb/dDvF9u4HDEuEYPAJdlpe5iGT1YUgeO9wNUHcprc14qQXotlwnW15+xiG/9CSkbVkDKrkMTDLSIWKGgwvWtOHFiYQOg2ivfGSZSI5Nl88R5DgyQhZezHndBNYl/K9aWcY8ahIayboVo82SLeB/59VndQWFHmfFgBZv1WMx0OpqWNOE0Gwt6Y2DUAW2nhWmSPK34esO8Eye+WzwyyUPyCfrHDy6DBnVdHT3tvvTRk+azdHoczjKzR/+nglA+l5739WQbMHRP26uLxCR+p29zfKQPswsEfFaBAgOfPHtj0DToptAxfRHaoYIPob3/MJTMu3B5z8PwuqjtsnWlEXkzeviSFyjK8Dk0LFMIhFh4tCag7aQTusU3ikpEp9uDeoCkRAK9GH5GQYE4g6QcQw4R0qk6WdiwQBNkaF3TzzHioGQWPbxTHQENgETRswrPKYFO8KUMDThJGbmoIV0I57jkKw5ekPHh/Pujx87VCHlF/pc5497X8rvtgDF4zeJmmPAB1AWYYmRz0xYtD1tykFqiAvM4jV2aDn42KdHlnCAAv3djcpDgYcEE4cX8H0g0JxFyvL/7U1VQESVDw4vJHZt6o8nN5B8sNLeCnxGVr21z3mgZmWbIhKFn7eiP4TWfgnRvbtRS2Syz9MXS9m5CWtZ+eJ41ZFrOU1Dce+G2OEDlyvt7Tap1JuA0JJLINqUyagrTj6vogEyxuNFlKW6NBgtzyiA5oUA/o04GuhkiE4oUlJWLaRVfgNt28+nhTcs2v4tP4JuHQ+e39ML66q4nlQWvVj2WkK6UOfTupdk8SdVjVlEZAOBLcSJolOl17LcnK80W9hR26qN4KiNLxvub+s0TCYVSsrIfXGniSBVFmhCKsfugl4hPOCJkxDfve0yAzWKJsjEIHH78FGg4pgZqKGSNccGJDat+Vl4zYpbDV0DqaBbc/qUK++ylvR6U3ClhQ0NP9fhY00oAxNMF6WzmRup7BCO9QQ6CxvSWmuHDhuPKpPQ8hxowudnBlpLzaP372Y2mgT+bF0AqfKSSBhzqM/RqXvou8/oEWGB1XIFgdsMGd2/wlo2Wm1vARJ9BgonpD2dAsqCnbKVvCsdnCPGQGTLeqYRINWb14gtispWoO28ljWY0HWowQ533UN39it54rGd9pyTFwIdhthBl83cpWVLZAc7pz0tWA4yJmKQ16Xew6VA4kDg9FkOLQgE6rYRmIKH+8DOq739en3RkeHpZknIEXSfqAeQ/jGOg/oVCt/QlLwk8CwZQjFgToEaTE4rj7aS34eDOIJwhuDw8XgdGW6znKjad8QiU9AiiFYHRD98G2R/EmLh9nI+OwchEAe1w5+mNNTb4nt3TI2sXfk4Zn8v3uEAx9ALPkDx+IytZ5+dkW3rkZ4UUP3tzJqfEs/nKuEjyqRv3tuY/Dl5XFbLMdpbqtUbfzHJ/hz9mzRAJxhU/BvVPpvEsfdapdMoseDF+aNGxf96MbS5za9709I5SOJBaZ6CuQnenDTx+zS4aJILnr3eMiL67RaIfrutJ9pAIBTThagtjbnhr5eD0tJ4qoVqYLZzrESUAYdINlLtTMHpAnv/gbtEdBwqik7qrMk+H2ReNSfXmotisX5NCdMG1K6lx8iBbGiaj0itO93zMwh8yDLuganGVKoeWlE/eEftAPEdHBM1JShlAXpe1WNVTU5HVaNW5Xac7ryuPKBc+6PBlpdoTMga76pVmeC+uB8t09Og0EPCmUsYrNNqQFkuv4Ha8TKfwGtC2jCc3+9/0YwkBi9WcwTCB4+DWpCbzrqq1HKIhIqaf/erOJVJKTvveOb1c++w9aucJzjdER1dEy3rI4EouLH88SlBTL0JWvmEu4GvGaQRElH2NxFR+kVhJme0h3WOlqClYwA3H5IHfLIjOWxkmbTdH2VoZ0AlBqBu4uHGBGsm0YoiPTWkNPO4pUrJPdyovD9hoKWa+hJYRrQMF9d3W40yh6ao40ilWR4++tTcjOL0tkZfyzuvoYMLOUgLsIkVVM9KS1MpIVdEy9MZcDpxAdWw0tbCLBJvMdcqcOgwjGSiFh8DeACPkerTi1n5WLAPYiGudpoFPNVPSNaXMG1AfYNTVJY0G02xYxiVVpMxWIrgAMZPHMOsNJARTN6m4Ig5MKV/GJqjnk9+9wncS0CnfsL6Q+qo5qA+ZFQvcWcdWmdihk92yMxiEzCSmERYPvoAjmdGgQD3XGr/Y798EapCHLQkTU3xXcdwqi3LWsbpxJYKCkTGFHLTSbu9csiqjOvn3se703ZxGFjalaZ6zH4rS5zOjiuH48pxZmeVtJSWSICQiIGOpcLIQ62GukIcUy75LqywLHzvq/gsPqUTghEdFu9IvnTbBPswqoPk/TNcPGsi7a5V4Dg6hz0nVFYfyRWwjqSdJyu5bkAPaZ0V39jQocF1o2zQK08on/GnjjmcwYGi6lDaw9KwfIfh2x8Mw/U33QRt6zY1x99CIZyVy05c9bf1tVWc5xG9GQESPqxvgRdloHWsu/9ngGKJtZ/ZiCHaBIcrBpLFjwj30KCJqJpb33mxyV12J9hLZ7TALsxou2FOHSR9QyBz0mmXwOYXUBhGEQSH70PAhcwOZGfZENIi6CJUSAbMgiraNdjzQL1QxMPtl9y6dftRy9eL1iQmFpeK0B7U4K75sQ/WPeDuVU8rt/DjnlSPBZkCGkJGxZJNiYmUPX+42nndkBKpocmHY4cW16Dv4s4IfmezFROBlxXIu2wGpKGFDK5Z1hjbtrFCyMhiotBa0X+jY8SYXfE9O/BcUZgG4tRrwdP2MDCQtRaQZYkFdNGCjiILda8T80oBAUsvt3g+iGg5tf6DgacO4vSh1t8KLnPOgJLHmy3Ayh3y0N8tid1Mdo86wVuqZHhxVZQ5BWqZ0nS0TTJrWz7SXn46z0pFDI9R06bB6N4WuH60jQaiOCmDiUgqNarBq3ilDslgPQJNU/eD1cpKA+d0EtKtKHjGxg/sgdiuLbhvZdogceQgSHndQEDAUBcSrRAqbXOnImwgKNRQADMnI1zyzMsHbUUY4I6O/WbJp8YGlYYjxdD8UV8IbsEatcbc2z9HNjhi2klLtgkEYgMx3bSSnatOCTfOskNwwbp2V94ooL88c419Vv8KsaWuXoVsZNLtNUrPKc9FNoSTRmlpDg+0rI96CSv2yCMufDiwncrnnCudP+nXTXgfyzyCAPWsFgCJO/eyPAHPO6AloLZ3GfCjxoOlW4+dWixiZjmW09DXn9+PSeJwXzwFHMNHUyMJpKJSrHw1iOkOcF94KfA5hRCuqoLoiRNgMHGimKVBsrD1jfrW9WAsmg88IXfyQMvBuRfZ34q2Yog4c/6AHNN/fBB+Y1+D1j/LzUN1swbUMKESQGxFWoFsEW+2paEW6yBNNjWgcLqs0gK3jLexGcpI3GBLv80MZv/l7JzK+bg0iEbxeD17fiVm5ypU40lJEtIjWzdeS5NvWjSKzi7MZhkj6JdpLsFaWg6WohImLi2FxSBm5wkoMt30WaXDD47zBi23l5Yl0ayjOLlgCQOAlvJ4FMy2z65h4o/6B8lmYPbQt8F0EK5+WONwd5TgY39kkm4iaHHRXEaFe+b4xeDow8RgCO0AuoSOj253Dbigv/glNdooEVbvk0fPnRetnr9J/qrBr7/89PL4qinPhrZU1SmuBfemjZxYLr21v15nZdantqIzUPDU+NPC4HRnD0RkyJASgyYlwqZ57cMvWMy50lhjDcsBJI4dsvo+mvcHEtcSUTyWAA0DHT1eBZG9u8A1CgkI3ZiKdpwB4MwFP/Q9aDsNmrVEcIndsIaR+HtkhvOnS3cmL6pvULtnI4q9bg6oa3bJ4/7NO5/IHDGsp3RoX4PKKO+US8ABKsTPtwQ0eOK9IIweaIOfT7TDJAQCCSKiRV4wmcAwuFNFUMKT8gte0MovgPTuOWHXgf2vtb767M8ZpWEZiB/YfRUG+WfOwSP9nVOp4T07mQBynz8OvJdcgWIpTDWT7FOPjlWf56hooXi3BzzjJv5ebqgDyZkPQrcRVdDyxWqoWzcB0lJiJrDzNug/6iHIGGdaRQ0B045AUPwAOVcAdLvWBAmVjI5N5XD8I56dtpNW9k59AaJHSWuAZKUmTx5Vs5aHp9sv3V6tjdtcpVy6uUorP1GvuZFpL8JgX7TrmMIG/e1702fPGGTdunhnEnpkStCIgx/U/GDhrKkFKdyp3kEnGEg32fH1emQOEnzp5w3d7CvvdziyfVOFtXsJ003t775yu3PwiA+tpb03dixfxDqLkgf1FY4xlQZATcHTVPMPOAYCBE8TSCHM3EwXr6263zsuM4OPtTWZK4yzswRoatHcYx717/h6vzy+L4ocWpPQaRVZomC2EZAUFEfHmhUYVyHBhsMyVLVokOFEkYIXYgLRSNVBYAtSgsgGTQIqc7RH2T++8yGpsEhNNjegmPFCouYo1/LSH17tXCUbWLmUpqSZVlDamiGBOkFPJsDarRhCm9ZcK6PDSJxohpzrbnndO/GyPdR74JzdMEM8AOXPzmVrtYkNaMF/e0Mm1PzuMVYCqK3c8L7pHNiKm+MoMA+ZfQQrapamBTeyrgsJ61733geZ49qYuBQ9YLdqpxpsvrABBV5uXWmOcD8K6xlP3OC8+MIK8fM4iUBMKCeW3b75wloqvRU4hn0LeQjEdJYs3FlTmmfoBGQ4fyKsERN8G26E+kADXpMHsm+47TYKKjElMQGVxJO/u2dVYNnCYYLLhTo4l5XZ7zV4MAjkspgO6/BxWjgEZ+5853o6cgG984Tjy3/tHVpWKNS3YfYnSA8gO1Q3qo5fzgut3nhEeYxcI14wW4dwVg8BSwXNK5A7QJcAm47I4EJ9gWWjjfQBQ71+elUGDcKRVoONspiT29H98RdnkNBB14B1rgT8H82bGfxyyfWxg6gVcBfTzTYr2ad41SHGBnJrU7fmd159INEYgowrrtjR/d7/uJXYQ8KsoEc2n5A+5BgMevoOdicI9RRInR/642+gfcUY8K3FwO9DZKabwadp6cB2vEJ0FcGtI6Bm6Q1ANxdVTFkMfZ58ip04lQ1Pb9hd74Qv96GORKCQK3Dj9VNSPDvbAfdPtUMwplcqGHgS3zKC5e73wn/5cp8M39apeN0KZFvTwCtmYMVJgh1dU44jnW54SYCmmEI16ofppSMik/L7w4lIK2xx43EkHtIunro2Z849f06crGWlk0S24mu3tn/w121YKuYKaekocTx4KVbEawabg6AxE1EoRvbtnqxHo5PTL7iQd/SthDN34de/+Q8GHmIOQnZumtCe4+VfjelG2aE6pX8U7U46ikFqRO04Ko9de1T+CYLGjUBoQiHp65UrsSbSJ6tjkFcgwl2XuuFYiwroeKEtrDuX7Y5PPdKoXU5OUMUssNi4tIoC6VEanONtOlR4dfCg0LIW9z5qLS47Htq0errqa0Mh4YToto3T9Xi81VHRfwf1D8g+2orLwDVoGMQPHxhWffsNO6L7ahzZ1129pvy1D8fxksUg78yaSzw1w6iwY4C9Y7aBVU1C04aLINUSgPZlN4GuHIL0QQdAsJm3vqVVIg1OAGheMgW+uWY1Y4K+MxfA8E+vMvsIQaIz1EY2+GS3lTEggb05qEJxtgjRhMbmEkgkNgUM9+Yj8ngH6icLfuZwnda3MaSPH1QifTG8VIqAjoljtcCJWCNa0QBUBZpg6fFtD/ij/ix2t1MiDOU5PXMdgrSlJtDAXVY8xI7aP+ayOsFb1HOFEgkVRnZvHUJ6gfooGpbG2P5vp8hNDbPlxpO5CAgrWnBb8mRtz+CW9VdGdm59U4/HxmdOnjEvbfjoZgsmiw0ZtXPniKI6J4eiiOBmFHtbq9GyYPCrmpWpn+xI/HpntXJBIo7CEDNep1YtBjU3T4Asl7BnUA9xH9rHqqWb43JmlsBfPdKeeaxZLTjSpFTGkkafxhpMmTSB3eyBNbP58oG2pbdOcM4NxgyjPcbBeTkaDC7FZPWFWPMjuHrFsPYFbzyTOHpoLDVLyDe7ho+plXLyFyANVuF7ipWAf7Lvs0VDpPxCSB930YN519/6uGvQcHQNQbZyhzUGLQgEpk8kc1aR+gf1r1wCJxY8BaEDlZByj5BTvhfsBQtxJBswbXpBsn0WnNxRBm5vAvLG/gLKH3kN0gZgOvoYpgzODhurrMxF2fDfReiw6v0qjC23ADImSygky8wNR5QKHMflJ3x6GjkvYsV2LJ+ZaSgw7/JMm9BHWu9Dm7625Rs47D+Z/+yuxSs7Ao39weY2RR01gWIdDLWZabkwrfeYOVar7bU+3iK4Xc2FJB6vY+v629s/eOsxubE+nS1Tw5KoUBKx+0JJVMrsvlEeHUbGxVMX51xz0wwU3oaE7KorytnrQb4LBHICX+2XmQIeiv44hH//cm9y7Em/dtXuOvXCcNzo1x42b2gl4WgoZk3zZAgQjRmYtSpwKCBzMPgJ2Tg+tsKyoXsmv1PRYUs8aey6bIBNvXaUA9BiYUnhWAs0XVJACQZR3PjYhfBIZ5HtmyeFt26crgb8Y9RgoB/1yonyk40NtB7voOO8wa+7Bg55W3B7OyjBvRdPZrqhs9SeBoLFvJk1fsIUhBZUjU3LZ0D7qitAbh4JSricaQRbEQ5ADfra0u3gGfo6ZIyYj3YlAXZ8PRdFpIrnZqBGMRzsFr9NR5OQ4xahX6EAG47KpTWt+rQtVcpMtM4jLQLHNQbMlUnUXQzheLndZsexpZ1uWDFg0T0Z06YNtSzZ7TsK7x1e03/h0W03Z9lc1RxT12abjqaIk2rCk+3w+rq7sl4/Hm3XJnQfCI8YPSAaRpBkZOI1J9OD61ZeE9mzY6oWifQxeD6D6jAGWjc0rdHarWhl1pSZr9nLyo+QpSS2tPcoo8/97XsfT6EjVf5p3UEAS0NZnrh+eJll/XlFKhxtUnugsOzhj+jd1x2SM074NUtldymMpSA+vEwKW7FkvL853n735a4TK/Ykk5MHWcGFsdhUpUB7SAXqVFIDio6r6Dy46botqS/FLNCCAYZkW2mvlZjhKy2ojm3FJbbo3l0WS7ciIVFb00Gi0dG3P1rKHRhDDWuhF354GpQzNUCi2Zzs8A5bBJp/EbiwFDh6OKBjuwhpAzno2BBkC1qdPVEjfAtsTYLNvKtY1u0Q0xyslW4VDSjOFOFQozZ20Y7EfZ/tki9XMfDde0hav0Jxoaob21+/2b1//uZEnawaBrLmPb95N3xzGIV2Hq0UR5s+60/+xV8/kFXZr6D3vkh8435R0n6Z68LAstXL+imLl8DvLHJngVO0gdviAAeVDZVjglBtbsSykBlMH3vRK2gfX5Gy85D8/GmotQxk0GT08D6ZGkqkG+SWJjaHwNts//lNsOdaaUsb3diSkDW2CAXHu7ZXnlB7os1sNJFAIqRT57EMRWS6HV/k4kxNK5pBs5lsFRP57L9vdTHHUMvULNofPSePuooJtEMJtmQaBwdVLyitLf/1FcwEArKMRPOy3+wuarT0SYFTO/UWaBaycx5Cj5rGAQNC40FNNDeWyM92x597Z0PiLqNNg7yeUuOTP/XcGpfh87isE0AAg49ikod2pP8HpjpvcUrcuscXR95ubtO43BwRWk4q8PN3Am8vuSNr8I/LJ6MmaoWdLTXgMLJS7WATCEkUj+x+BgQA9/371FhmI2uyeQXWllfkEHUSyT7qbFVXnD3StP0PJcvf/UMZnQ06KgfUH6A5Bz1197Q59Wr2DWg1s2F2f0/d9fsPbylQsDmH1COzRv+ULTXBxFaxdD52zpzQ96LNcGCeZA5lg0RzAR67eb1//ir28tufRe8y0B4OGGo5+tS1rrL+heLnVDKbgjorB/ScmI/GiRawThtqffeJ2e5BqJUCLagp7Fg+T7RrgzbWxPrbFNQAtl9DiTQINFsj/EML9GmehY2Pbu6ppPl7IyBC13aOQUVQOBVoMqZCdVMF2AyV1XW67W/1IXn8nz6LzhW8AuvAPjPbPeei/pYEzS+QhfRFOqeUTVtNCUILVqobETRF4p7fzHBd/JsPw9vNtZ9oK+eHBmNq7XfwLsTdT4HrrUEuyhQuUQDGv/CWny4gfG+9PkbX2QFtbb3gzZYhIMYSqAs0llkEhNdXx++mqXpagNs9U2iv82lr/7o2zsjreCvaRxeHpZR0BMem3+MyD+X5ItA9JfTanPGOHftOKJ+882X0SkuWQAzLVuxHtBC7V8S1bw6+TwJL7hZI4/IAtC4g/L+5l93jg7rAWBjxxz7QogUhy5FItcdP3dAy0JMpsCl1rBnGvnoVS6LOFp7QApMIPq8o4LEcqFDVJMMNYxzw3IoIYwti6nQHT02mzYirK2n946Oz3LuL8Hikw+ineUBBEHBzYHFYhX2RbZBDHc4uIPwrNwy2iDY2EYH7V18OLWEFsrPQwRj8qcWkosDRrCubaSNGaGhSsyffmDZ8fB/LNgp8C+qDl76KQLZbYrf0VbWorIO64tsE3HGJC/oWipDrEWD14WRvaFagT19n1Yyhtr0krOXO+1m5JHgEKxQEb4RHD9WDLxGEPIe3Cwj/2k2BQGQ4XDtRhDsn0eBknSXcqC/w8MLwN+8sixRlFUnQjpbxtx+H/zL4V97hpBeqMfDUPDJXhHPsOekEclThuPn7EvtOKp4lm+P/C7BM/PJS1x09skW20vn0Sm9a66jD+AIXHIhPgid2vw7lnqL/61fe9fN6p7QBZr/YD9SCq2BiL4AhxQJUYrAHnLEXY02fO9HxCM2rtPs1yMwVYPOu+LDL/uD/Eh1T9/7dJPbrcgQK0gMUXJqToUm5gcUSHGhQ86c94dvZui/p/NXt3qevG2X/gsqKTTSX+nXudtHsKY0p7APZNi/7/aQuIPyrtmQLqDlXgJheDLGw+RNB4YR+1k7W+PxelkOL7s+cxdYTYDlw5Yiw/XBy0uVP+2peXxt9ozWkX4Hqr1TWDEk375Cm31Ub8dRnkWdn/tHX2N4gl95zp/ehp2el/W+6fYBsNjHF2bv5GwNOyYrAsJhNpq7S8K9iBI2tSKIFzwKc+/5nsz9iwPQhtoWPzHaPWLo9/vTeenUsjyzQelIV/1oduhmyxZtpGp4C3Iql49Y3OqAVtQMkUUSWWNZfconrVzOG2bdTr4EWA3Pc6RXg3xWu1EwiEHD/AhvZBYQzu456kvWUfuhnIGn9RqNPIyu57e4p7nEH6pULNh6RL4sljUEY1LKmgJaOjsKOh7MO7yW1+CP60Usq7atGl1uX64ZxgCb1TuLnSTiKPAD8f/KTk1zX/7ija+vSCF1bFxC6trO3/yPAAKRem5XZIKfcAAAAAElFTkSuQmCC</Image>
  <Url type="application/x-suggestions+json" method="GET" template="https://www.google.com/complete/search?client=firefox&amp;q={searchTerms}"/>
  <Url type="text/html" method="GET" template="https://www.google.com/search">
    <Param name="q" value="{searchTerms}"/>
@@ -128,7 +128,7 @@
 diff --git a/browser/locales/jar.mn b/browser/locales/jar.mn
 --- a/browser/locales/jar.mn
 +++ b/browser/locales/jar.mn
-@@ -130,14 +130,15 @@
+@@ -133,14 +133,15 @@
      locale/browser/syncQuota.properties         (%chrome/browser/syncQuota.properties)
  #endif
  % locale browser-region @AB_CD@ %locale/browser-region/
--- a/mozilla-aarch64-bmo-810631.patch	Thu Jun 12 22:59:33 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100372 +0,0 @@
-
-# HG changeset patch
-# User Ryan VanderMeulen <ryanvm@gmail.com>
-# Date 1395835684 14400
-# Node ID 1c6abf8c653a8788f5f2cb30779e46647ac8d504
-# Parent  9afe2a1145bd2962684186fe78d0fc4773630144
-Bug 810631 - Update libffi to version 3.1rc1.
-
-diff --git a/js/src/ctypes/libffi/ChangeLog b/js/src/ctypes/libffi/ChangeLog
---- a/js/src/ctypes/libffi/ChangeLog
-+++ b/js/src/ctypes/libffi/ChangeLog
-@@ -1,4259 +1,4883 @@
--2010-08-05  Dan Witte  <dwitte@mozilla.com>
--
--        * Makefile.am: Pass FFI_DEBUG define to msvcc.sh for linking to the
--        debug CRT when --enable-debug is given.
--        * configure.ac: Define it.
--        * msvcc.sh: Translate -g and -DFFI_DEBUG appropriately.
--
--2010-08-04  Dan Witte  <dwitte@mozilla.com>
--
--	* src/x86/ffitarget.h: Add X86_ANY define for all x86/x86_64
--	platforms.
--	* src/x86/ffi.c: Remove redundant ifdef checks.
--	* src/prep_cif.c: Push stack space computation into src/x86/ffi.c
--	for X86_ANY so return value space doesn't get added twice.
--
--2010-08-03  Neil Rashbrooke <neil@parkwaycc.co.uk>
--
--	* msvcc.sh: Don't pass -safeseh to ml64 because behavior is buggy.
--
--2010-07-22  Dan Witte  <dwitte@mozilla.com>
--
--	* src/*/ffitarget.h: Make FFI_LAST_ABI one past the last valid ABI.
--	* src/prep_cif.c: Fix ABI assertion.
--        * src/cris/ffi.c: Ditto.
--
--2010-07-10  Evan Phoenix  <evan@fallingsnow.net>
--
--	* src/closures.c (selinux_enabled_check): Fix strncmp usage bug.
--
--2010-07-07  Dan Horák <dan@danny.cz>
--
--	* include/ffi.h.in: Protect #define with #ifndef.
--	* src/powerpc/ffitarget.h: Ditto.
--	* src/s390/ffitarget.h: Ditto.
--	* src/sparc/ffitarget.h: Ditto.
--
--2010-05-11  Dan Witte  <dwitte@mozilla.com>
--
--	* doc/libffi.tex: Document previous change.
--
--2010-05-11  Makoto Kato <m_kato@ga2.so-net.ne.jp>
--
--	* src/x86/ffi.c (ffi_call): Don't copy structs passed by value.
--
--2010-05-05  Michael Kohler <michaelkohler@live.com>
--
--	* src/dlmalloc.c (dlfree): Fix spelling.
--	* src/ia64/ffi.c (ffi_prep_cif_machdep): Ditto.
--	* configure.ac: Ditto.
--	* configure: Rebuilt.
--
--2010-04-13  Dan Witte  <dwitte@mozilla.com>
--
--	* msvcc.sh: Build with -W3 instead of -Wall.
--	* src/powerpc/ffi_darwin.c: Remove build warnings.
--	* src/x86/ffi.c: Ditto.
--	* src/x86/ffitarget.h: Ditto.
--
--2010-03-30  Dan Witte  <dwitte@mozilla.com>
--
--	* msvcc.sh: Disable build warnings.
--	* README (tested): Clarify windows build procedure.
--
--2010-03-14  Matthias Klose  <doko@ubuntu.com>
--
--	* src/x86/ffi64.c: Fix typo in comment.
--	* src/x86/ffi.c: Use /* ... */ comment style.
--
--2010-07-07   Neil Roberts <neil@linux.intel.com>
--
--	* src/x86/sysv.S (ffi_call_SYSV): Align the stack pointer to
--	16-bytes.
--
--2010-07-02  Jakub Jelinek  <jakub@redhat.com>
--
--	* Makefile.am (AM_MAKEFLAGS): Pass also mandir to submakes.
--	* Makefile.in: Regenerated.
--
--2010-05-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
--
--	* configure.ac (libffi_cv_as_x86_pcrel): Check for illegal in as
--	output, too.
--	(libffi_cv_as_ascii_pseudo_op): Check for .ascii.
--	(libffi_cv_as_string_pseudo_op): Check for .string.
--	* configure: Regenerate.
--	* fficonfig.h.in: Regenerate.
--	* src/x86/sysv.S (.eh_frame): Use .ascii, .string or error.
--
--2010-04-07  Jakub Jelinek  <jakub@redhat.com>
--
--	* regex.c (byte_re_match_2_internal): Avoid set but not used
--	warning.
--
--2010-04-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
--
--	* Makefile.in: Regenerate.
--	* aclocal.m4: Regenerate.
--	* include/Makefile.in: Regenerate.
--	* man/Makefile.in: Regenerate.
--	* testsuite/Makefile.in: Regenerate.
--
--2010-03-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
--
--	* configure.ac (libffi_cv_as_x86_64_unwind_section_type): New test.
--	* configure: Regenerate.
--	* fficonfig.h.in: Regenerate.
--	* libffi/src/x86/unix64.S (.eh_frame)
--	[HAVE_AS_X86_64_UNWIND_SECTION_TYPE]: Use @unwind section type.
--
--2010-02-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
--
--	* doc/libffi.texi (The Closure API): Fix typo.
--	* doc/libffi.info: Remove.
--
--2010-02-15  Matthias Klose  <doko@ubuntu.com>
--
--	* src/arm/sysv.S (__ARM_ARCH__): Define for processor
--	__ARM_ARCH_7EM__.
--
--2010-01-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
--
--	PR libffi/40701
--	* testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRIdLL,
--	PRIuLL, PRId64, PRIu64, PRIuPTR): Define.
--	* testsuite/libffi.call/cls_align_sint64.c: Add -Wno-format on
--	alpha*-dec-osf*.
--	* testsuite/libffi.call/cls_align_uint64.c: Likewise.
--	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
--	* testsuite/libffi.call/return_ll1.c: Likewise.
--	* testsuite/libffi.call/stret_medium2.c: Likewise.
--	* testsuite/libffi.special/ffitestcxx.h (allocate_mmap): Cast
--	MAP_FAILED to char *.
--
--2010-01-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
--
--	* src/mips/n32.S: Use .abicalls and .eh_frame with __GNUC__.
--
--2009-12-31  Anthony Green  <green@redhat.com>
--
--	* README: Update for libffi 3.0.9.
--
--2009-12-27  Matthias Klose  <doko@ubuntu.com>
--
--	* configure.ac (HAVE_LONG_DOUBLE): Define for mips when
--	appropriate.
--	* configure: Rebuilt.
--
--2009-12-26  Anthony Green  <green@redhat.com>
--
--	* testsuite/libffi.call/cls_longdouble_va.c: Mark as xfail for
--	avr32*-*-*.
--	* testsuite/libffi.call/cls_double_va.c: Ditto.
--
--2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
--
--	* testsuite/libffi.call/ffitest.h: Conditionally include stdint.h
--	and inttypes.h.
--	* testsuite/libffi.special/unwindtest.cc: Ditto.
--
--2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
--
--	* configure.ac: Add amd64-*-openbsd*.
--	* configure: Rebuilt.
--	* testsuite/lib/libffi-dg.exp (libffi_target_compile): Link
--	openbsd programs with -lpthread.
--
--2009-12-26  Anthony Green  <green@redhat.com>
--
--	* testsuite/libffi.call/cls_double_va.c,
--	testsuite/libffi.call/cls_longdouble.c,
--	testsuite/libffi.call/cls_longdouble_va.c,
--	testsuite/libffi.call/cls_pointer.c,
--	testsuite/libffi.call/cls_pointer_stack.c: Remove xfail for
--	mips*-*-* and arm*-*-*.
--	* testsuite/libffi.call/cls_align_longdouble_split.c,
--	testsuite/libffi.call/cls_align_longdouble_split2.c,
--	testsuite/libffi.call/stret_medium2.c,
--	testsuite/libffi.call/stret_medium.c,
--	testsuite/libffi.call/stret_large.c,
--	testsuite/libffi.call/stret_large2.c: Remove xfail for arm*-*-*.
--
--2009-12-31  Kay Tietz  <ktietz70@googlemail.com>
--
--	* testsuite/libffi.call/ffitest.h,
--	testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRuLL): Fix
--	definitions.
--
--2009-12-31  Carlo Bramini  <carlo.bramix@libero.it>
--
--	* configure.ac (AM_LTLDFLAGS): Define for windows hosts.
--	* Makefile.am (libffi_la_LDFLAGS): Add AM_LTLDFLAGS.
--	* configure: Rebuilt.
--	* Makefile.in: Rebuilt.
--
--2009-12-31  Anthony Green  <green@redhat.com>
--	    Blake Chaffin.
--
--	* testsuite/libffi.call/huge_struct.c: New test case from Blake
--	Chaffin @ Apple.
--
--2009-12-28  David Edelsohn  <edelsohn@gnu.org>
--
--	* src/powerpc/ffi_darwin.c (ffi_prep_args): Copy abi and nargs to
--	local variables.
--	(aix_adjust_aggregate_sizes): New function.
--	(ffi_prep_cif_machdep): Call it.
--
--2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
--
--	* configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets.
--	* configure: Regenerate.
--	* fficonfig.h.in: Likewise.
--	* src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for
--	Solaris/x86.
--
--2009-12-26  Andreas Schwab  <schwab@linux-m68k.org>
--
--	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count
--	when a float arguments is passed in memory.
--	(ffi_closure_helper_SYSV): Mark general registers as used up when
--	a 64bit or soft-float long double argument is passed in memory.
--
--2009-12-25  Matthias Klose  <doko@ubuntu.com>
--
--	* man/ffi_call.3: Fix #include in examples.
--	* doc/libffi.texi: Add dircategory.
--
--2009-12-25  Frank Everdij <f.p.x.everdij@tudelft.nl>
--
--	* include/ffi.h.in: Placed '__GNUC__' ifdef around
--	'__attribute__((aligned(8)))' in ffi_closure, fixes compile for
--	IRIX MIPSPro c99.
--	* include/ffi_common.h: Added '__sgi' define to non
--	'__attribute__((__mode__()))' integer typedefs.
--	* src/mips/ffi.c (ffi_call, ffi_closure_mips_inner_O32,
--	ffi_closure_mips_inner_N32): Added 'defined(_MIPSEB)' to BE check.
--	(ffi_closure_mips_inner_O32, ffi_closure_mips_inner_N32): Added
--	FFI_LONGDOUBLE support and alignment(N32 only).
--	* src/mips/ffitarget.h: Corrected '#include <sgidefs.h>' for IRIX and
--	fixed non '__attribute__((__mode__()))' integer typedefs.
--	* src/mips/n32.S: Put '#ifdef linux' around '.abicalls' and '.eh_frame'
--	since they are Linux/GNU Assembler specific.
--
--2009-12-25  Bradley Smith  <brad@brad-smith.co.uk>
--
--	* configure.ac, Makefile.am, src/avr32/ffi.c,
--	src/avr32/ffitarget.h,
--	src/avr32/sysv.S: Add AVR32 port.
--	* configure, Makefile.in: Rebuilt.
--
--2009-12-21  Andreas Tobler  <a.tobler@schweiz.org>
--
--	* configure.ac: Make i?86 build on FreeBSD and OpenBSD.
--	* configure: Regenerate.
--
--2009-12-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
--
--	* testsuite/libffi.call/ffitest.h: Define PRIuPTR on PA HP-UX.
--
--2009-12-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
--
--	* src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE
--	type on HP-UX.
--
--2009-12-11  Eric Botcazou  <ebotcazou@adacore.com>
--
--	* src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long
--	double' arguments.
--
--2009-12-11  Eric Botcazou  <ebotcazou@adacore.com>
--
--	* testsuite/libffi.call/ffitest.h: Define PRIuPTR on Solaris < 10.
--
--2009-12-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
--
--	PR libffi/40700
--	* src/closures.c [X86_64 && __sun__ && __svr4__]
--	(FFI_MMAP_EXEC_WRIT): Define.
--
--2009-12-08  David Daney  <ddaney@caviumnetworks.com>
--
--	* testsuite/libffi.call/stret_medium.c: Remove xfail for mips*-*-*
--	* testsuite/libffi.call/cls_align_longdouble_split2.c: Same.
--	* testsuite/libffi.call/stret_large.c: Same.
--	* testsuite/libffi.call/cls_align_longdouble_split.c: Same.
--	* testsuite/libffi.call/stret_large2.c: Same.
--	* testsuite/libffi.call/stret_medium2.c: Same.
--
--2009-12-07  David Edelsohn  <edelsohn@gnu.org>
--
--	* src/powerpc/aix_closure.S (libffi_closure_ASM): Fix tablejump
--	typo.
--
--2009-12-05  David Edelsohn  <edelsohn@gnu.org>
--
--	* src/powerpc/aix.S: Update AIX32 code to be consistent with AIX64
--	code.
--	* src/powerpc/aix_closure.S: Same.
--
--2009-12-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
--
--	* Makefile.in: Regenerate.
--	* configure: Regenerate.
--	* include/Makefile.in: Regenerate.
--	* man/Makefile.in: Regenerate.
--	* testsuite/Makefile.in: Regenerate.
--
--2009-12-04  David Edelsohn  <edelsohn@gnu.org>
--
--	* src/powerpc/aix_closure.S: Reorganize 64-bit code to match
--	linux64_closure.S.
--
--2009-12-04  Uros Bizjak  <ubizjak@gmail.com>
--
--	PR libffi/41908
--	* src/x86/ffi64.c (classify_argument): Update from
--	gcc/config/i386/i386.c.
--	(ffi_closure_unix64_inner): Do not use the address of two consecutive
--	SSE registers directly.
--	* testsuite/libffi.call/cls_dbls_struct.c (main): Remove xfail
--	for x86_64 linux targets.
--
--2009-12-04  David Edelsohn  <edelsohn@gnu.org>
--
--	* src/powerpc/ffi_darwin.c (ffi_closure_helper_DARWIN): Increment
--	pfr for long double split between fpr13 and stack.
--
--2009-12-03  David Edelsohn  <edelsohn@gnu.org>
--
--	* src/powerpc/ffi_darwin.c (ffi_prep_args): Increment next_arg and
--	fparg_count twice for long double.
--
--2009-12-03  David Edelsohn  <edelsohn@gnu.org>
--
--	PR libffi/42243
--	* src/powerpc/ffi_darwin.c (ffi_prep_args): Remove extra parentheses.
--
--2009-12-03  Uros Bizjak  <ubizjak@gmail.com>
--
--	* testsuite/libffi.call/cls_longdouble_va.c (main): Fix format string.
--	Remove xfails for x86 linux targets.
--
--2009-12-02  David Edelsohn  <edelsohn@gnu.org>
--
--	* src/powerpc/ffi_darwin.c (ffi_prep_args): Fix typo in INT64
--	case.
--
--2009-12-01  David Edelsohn  <edelsohn@gnu.org>
--
--	* src/powerpc/aix.S (ffi_call_AIX): Convert to more standard
--	register usage.  Call ffi_prep_args directly.  Add long double
--	return value support.
--	* src/powerpc/ffi_darwin.c (ffi_prep_args): Double arg increment
--	applies to FFI_TYPE_DOUBLE.  Correct fpr_base increment typo.
--	Separate FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases.
--	(ffi_prep_cif_machdep): Only 16 byte stack alignment in 64 bit
--	mode.
--	(ffi_closure_helper_DARWIN): Remove nf and ng counters.  Move temp
--	into case.
--	* src/powerpc/aix_closure.S: Maintain 16 byte stack alignment.
--	Allocate result area between params and FPRs.
--
--2009-11-30  David Edelsohn  <edelsohn@gnu.org>
--
--	PR target/35484
--	* src/powerpc/ffitarget.h (POWERPC64): Define for PPC64 Linux and
--	AIX64.
--	* src/powerpc/aix.S: Implement AIX64 version.
--	* src/powerpc/aix_closure.S: Implement AIX64 version.
--	(ffi_closure_ASM): Use extsb, lha and displament addresses.
--	* src/powerpc/ffi_darwin.c (ffi_prep_args): Implement AIX64
--	support.
--	(ffi_prep_cif_machdep): Same.
--	(ffi_call): Same.
--	(ffi_closure_helper_DARWIN): Same.
--
--2009-11-02  Andreas Tobler  <a.tobler@schweiz.org>
--
--	PR libffi/41908
--	* testsuite/libffi.call/testclosure.c: New test.
--
--2009-09-28  Kai Tietz  <kai.tietz@onevision.com>
--
--	* src/x86/win64.S (_ffi_call_win64 stack): Remove for gnu
--	assembly version use of ___chkstk.
--
--2009-09-23  Matthias Klose  <doko@ubuntu.com>
--
--	PR libffi/40242, PR libffi/41443
--	* src/arm/sysv.S (__ARM_ARCH__): Define for processors
--	__ARM_ARCH_6T2__, __ARM_ARCH_6M__, __ARM_ARCH_7__,
--	__ARM_ARCH_7A__, __ARM_ARCH_7R__, __ARM_ARCH_7M__.
--	Change the conditionals to __SOFTFP__ || __ARM_EABI__
--	for -mfloat-abi=softfp to work.
--
--2009-09-17  Loren J. Rittle  <ljrittle@acm.org>
--
--	PR testsuite/32843 (strikes again)
--	* src/x86/ffi.c (ffi_prep_cif_machdep): Add X86_FREEBSD to
--	enable proper extension on char and short.
--
--2009-09-15  David Daney  <ddaney@caviumnetworks.com>
--
--	* src/java_raw_api.c (ffi_java_raw_to_rvalue): Remove special
--	handling for FFI_TYPE_POINTER.
--	* src/mips/ffitarget.h (FFI_TYPE_STRUCT_D_SOFT,
--	FFI_TYPE_STRUCT_F_SOFT, FFI_TYPE_STRUCT_DD_SOFT,
--	FFI_TYPE_STRUCT_FF_SOFT, FFI_TYPE_STRUCT_FD_SOFT,
--	FFI_TYPE_STRUCT_DF_SOFT, FFI_TYPE_STRUCT_SOFT): New defines.
--	(FFI_N32_SOFT_FLOAT, FFI_N64_SOFT_FLOAT): New ffi_abi enumerations.
--	(enum ffi_abi): Set FFI_DEFAULT_ABI for soft-float.
--	* src/mips/n32.S (ffi_call_N32): Add handling for soft-float
--	structure and pointer returns.
--	(ffi_closure_N32): Add handling for pointer returns.
--	* src/mips/ffi.c (ffi_prep_args, calc_n32_struct_flags,
--	calc_n32_return_struct_flags): Handle soft-float.
--	(ffi_prep_cif_machdep):  Handle soft-float, fix pointer handling.
--	(ffi_call_N32): Declare proper argument types.
--	(ffi_call, copy_struct_N32, ffi_closure_mips_inner_N32): Handle
--	soft-float.
--
--2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
--
--	* configure.ac (AC_PREREQ): Bump to 2.64.
--
--2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
--
--	* Makefile.am (install-html, install-pdf): Remove.
--	* Makefile.in: Regenerate.
--
--	* Makefile.in: Regenerate.
--	* aclocal.m4: Regenerate.
--	* configure: Regenerate.
--	* fficonfig.h.in: Regenerate.
--	* include/Makefile.in: Regenerate.
--	* man/Makefile.in: Regenerate.
--	* testsuite/Makefile.in: Regenerate.
--
--2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
--
--	* configure.ac (_AC_ARG_VAR_PRECIOUS): Use m4_rename_force.
--
--2009-07-24  Dave Korn  <dave.korn.cygwin@gmail.com>
--
--	PR libffi/40807
--	* src/x86/ffi.c (ffi_prep_cif_machdep): Also use sign/zero-extending
--	return types for X86_WIN32.
--	* src/x86/win32.S (_ffi_call_SYSV): Handle omitted return types.
--	(_ffi_call_STDCALL, _ffi_closure_SYSV, _ffi_closure_raw_SYSV,
--	_ffi_closure_STDCALL): Likewise.
--
--	* src/closures.c (is_selinux_enabled): Define to const 0 for Cygwin.
--	(dlmmap, dlmunmap): Also use these functions on Cygwin.
--
--2009-07-11  Richard Sandiford  <rdsandiford@googlemail.com>
--
--	PR testsuite/40699
--	PR testsuite/40707
--	PR testsuite/40709
--	* testsuite/lib/libffi-dg.exp: Revert 2009-07-02, 2009-07-01 and
--	2009-06-30 commits.
--
--2009-07-01  Richard Sandiford  <r.sandiford@uk.ibm.com>
--
--	* testsuite/lib/libffi-dg.exp (libffi-init): Set ld_library_path
--	to "" before adding paths.  (This reinstates an assignment that
--	was removed by my 2009-06-30 commit, but changes the initial
--	value from "." to "".)
--
--2009-07-01  H.J. Lu  <hongjiu.lu@intel.com>
--
--	PR testsuite/40601
--	* testsuite/lib/libffi-dg.exp (libffi-init): Properly set
--	gccdir.  Adjust ld_library_path for gcc only if gccdir isn't
--	empty.
--
--2009-06-30  Richard Sandiford  <r.sandiford@uk.ibm.com>
--
--	* testsuite/lib/libffi-dg.exp (libffi-init): Don't add "."
--	to ld_library_path.  Use add_path.  Add just find_libgcc_s
--	to ld_library_path, not every libgcc multilib directory.
--
--2009-06-16  Wim Lewis  <wiml@hhhh.org>
--
--	* src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are
--	supposed to be callee-saved.
--	* src/powerpc/sysv.S (small_struct_return_value): Fix overrun of
--	return buffer for odd-size structs.
--
--2009-06-16  Andreas Tobler  <a.tobler@schweiz.org>
--
--	PR libffi/40444
--	* testsuite/lib/libffi-dg.exp (libffi_target_compile): Add
--	allow_stack_execute for Darwin.
--
--2009-06-16  Andrew Haley  <aph@redhat.com>
--
--	* configure.ac (TARGETDIR): Add missing blank lines.
--	* configure: Regenerate.
--
--2009-06-16  Andrew Haley  <aph@redhat.com>
--
--	* testsuite/libffi.call/cls_align_sint64.c,
--	testsuite/libffi.call/cls_align_uint64.c,
--	testsuite/libffi.call/cls_longdouble_va.c,
--	testsuite/libffi.call/cls_ulonglong.c,
--	testsuite/libffi.call/return_ll1.c,
--	testsuite/libffi.call/stret_medium2.c: Fix printf format
--	specifiers.
--	* testsuite/libffi.call/ffitest.h,
--	testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define.
--
--2009-06-15  Andrew Haley  <aph@redhat.com>
--
--	* testsuite/libffi.call/err_bad_typedef.c: xfail everywhere.
--	* testsuite/libffi.call/err_bad_abi.c: Likewise.
--
--2009-06-12  Andrew Haley  <aph@redhat.com>
--
--	* Makefile.am: Remove info_TEXINFOS.
--
--2009-06-12  Andrew Haley  <aph@redhat.com>
--
--	* ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c,
--	testsuite/libffi.call/cls_align_uint64.c,
--	testsuite/libffi.call/cls_ulonglong.c,
--	testsuite/libffi.call/return_ll1.c,
--	testsuite/libffi.call/stret_medium2.c: Fix printf format
--	specifiers.
--	testsuite/libffi.special/unwindtest.cc: include stdint.h.
--
--2009-06-11  Timothy Wall  <twall@users.sf.net>
--
--	* Makefile.am,
--	configure.ac,
--	include/ffi.h.in,
--	include/ffi_common.h,
--	src/closures.c,
--	src/dlmalloc.c,
--	src/x86/ffi.c,
--	src/x86/ffitarget.h,
--	src/x86/win64.S (new),
--	README: Added win64 support (mingw or MSVC)
--	* Makefile.in,
--	include/Makefile.in,
--	man/Makefile.in,
--	testsuite/Makefile.in,
--	configure,
--	aclocal.m4: Regenerated
--	* ltcf-c.sh: properly escape cygwin/w32 path
--	* man/ffi_call.3: Clarify size requirements for return value.
--	* src/x86/ffi64.c: Fix filename in comment.
--	* src/x86/win32.S: Remove unused extern.
--
--	* testsuite/libffi.call/closure_fn0.c,
--	testsuite/libffi.call/closure_fn1.c,
--	testsuite/libffi.call/closure_fn2.c,
--	testsuite/libffi.call/closure_fn3.c,
--	testsuite/libffi.call/closure_fn4.c,
--	testsuite/libffi.call/closure_fn5.c,
--	testsuite/libffi.call/closure_fn6.c,
--	testsuite/libffi.call/closure_stdcall.c,
--	testsuite/libffi.call/cls_12byte.c,
--	testsuite/libffi.call/cls_16byte.c,
--	testsuite/libffi.call/cls_18byte.c,
--	testsuite/libffi.call/cls_19byte.c,
--	testsuite/libffi.call/cls_1_1byte.c,
--	testsuite/libffi.call/cls_20byte.c,
--	testsuite/libffi.call/cls_20byte1.c,
--	testsuite/libffi.call/cls_24byte.c,
--	testsuite/libffi.call/cls_2byte.c,
--	testsuite/libffi.call/cls_3_1byte.c,
--	testsuite/libffi.call/cls_3byte1.c,
-- 	testsuite/libffi.call/cls_3byte2.c,
-- 	testsuite/libffi.call/cls_4_1byte.c,
-- 	testsuite/libffi.call/cls_4byte.c,
-- 	testsuite/libffi.call/cls_5_1_byte.c,
-- 	testsuite/libffi.call/cls_5byte.c,
-- 	testsuite/libffi.call/cls_64byte.c,
-- 	testsuite/libffi.call/cls_6_1_byte.c,
-- 	testsuite/libffi.call/cls_6byte.c,
-- 	testsuite/libffi.call/cls_7_1_byte.c,
-- 	testsuite/libffi.call/cls_7byte.c,
-- 	testsuite/libffi.call/cls_8byte.c,
-- 	testsuite/libffi.call/cls_9byte1.c,
-- 	testsuite/libffi.call/cls_9byte2.c,
-- 	testsuite/libffi.call/cls_align_double.c,
-- 	testsuite/libffi.call/cls_align_float.c,
-- 	testsuite/libffi.call/cls_align_longdouble.c,
-- 	testsuite/libffi.call/cls_align_longdouble_split.c,
-- 	testsuite/libffi.call/cls_align_longdouble_split2.c,
-- 	testsuite/libffi.call/cls_align_pointer.c,
-- 	testsuite/libffi.call/cls_align_sint16.c,
-- 	testsuite/libffi.call/cls_align_sint32.c,
-- 	testsuite/libffi.call/cls_align_sint64.c,
-- 	testsuite/libffi.call/cls_align_uint16.c,
-- 	testsuite/libffi.call/cls_align_uint32.c,
-- 	testsuite/libffi.call/cls_align_uint64.c,
-- 	testsuite/libffi.call/cls_dbls_struct.c,
-- 	testsuite/libffi.call/cls_double.c,
-- 	testsuite/libffi.call/cls_double_va.c,
-- 	testsuite/libffi.call/cls_float.c,
-- 	testsuite/libffi.call/cls_longdouble.c,
-- 	testsuite/libffi.call/cls_longdouble_va.c,
-- 	testsuite/libffi.call/cls_multi_schar.c,
-- 	testsuite/libffi.call/cls_multi_sshort.c,
-- 	testsuite/libffi.call/cls_multi_sshortchar.c,
-- 	testsuite/libffi.call/cls_multi_uchar.c,
-- 	testsuite/libffi.call/cls_multi_ushort.c,
-- 	testsuite/libffi.call/cls_multi_ushortchar.c,
-- 	testsuite/libffi.call/cls_pointer.c,
-- 	testsuite/libffi.call/cls_pointer_stack.c,
-- 	testsuite/libffi.call/cls_schar.c,
-- 	testsuite/libffi.call/cls_sint.c,
-- 	testsuite/libffi.call/cls_sshort.c,
-- 	testsuite/libffi.call/cls_uchar.c,
-- 	testsuite/libffi.call/cls_uint.c,
-- 	testsuite/libffi.call/cls_ulonglong.c,
-- 	testsuite/libffi.call/cls_ushort.c,
-- 	testsuite/libffi.call/err_bad_abi.c,
-- 	testsuite/libffi.call/err_bad_typedef.c,
-- 	testsuite/libffi.call/float2.c,
-- 	testsuite/libffi.call/huge_struct.c,
-- 	testsuite/libffi.call/nested_struct.c,
-- 	testsuite/libffi.call/nested_struct1.c,
-- 	testsuite/libffi.call/nested_struct10.c,
-- 	testsuite/libffi.call/nested_struct2.c,
-- 	testsuite/libffi.call/nested_struct3.c,
-- 	testsuite/libffi.call/nested_struct4.c,
-- 	testsuite/libffi.call/nested_struct5.c,
-- 	testsuite/libffi.call/nested_struct6.c,
-- 	testsuite/libffi.call/nested_struct7.c,
-- 	testsuite/libffi.call/nested_struct8.c,
-- 	testsuite/libffi.call/nested_struct9.c,
-- 	testsuite/libffi.call/problem1.c,
-- 	testsuite/libffi.call/return_ldl.c,
-- 	testsuite/libffi.call/return_ll1.c,
-- 	testsuite/libffi.call/stret_large.c,
-- 	testsuite/libffi.call/stret_large2.c,
-- 	testsuite/libffi.call/stret_medium.c,
-- 	testsuite/libffi.call/stret_medium2.c,
--	testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead
--	of checking for MMAP.  Use intptr_t instead of long casts.
--
--2009-06-11  Kaz Kojima  <kkojima@gcc.gnu.org>
--
--	* testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*.
--	* testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*.
--	* testsuite/libffi.call/err_bad_typedef.c: Likewise.
--
--2009-06-09  Andrew Haley  <aph@redhat.com>
--
--	* src/x86/freebsd.S: Add missing file.
--
--2009-06-08  Andrew Haley  <aph@redhat.com>
--
--	Import from libffi 3.0.8:
--
--	* doc/libffi.texi: New file.
--	* doc/libffi.info: Likewise.
--	* doc/stamp-vti: Likewise.
--	* man/Makefile.am: New file.
--	* man/ffi_call.3: New file.
--
--	* Makefile.am (EXTRA_DIST): Add src/x86/darwin64.S,
--	src/dlmalloc.c.
--	(nodist_libffi_la_SOURCES): Add X86_FREEBSD.
--
--	* configure.ac: Bump version to 3.0.8.
--	parisc*-*-linux*: Add.
--	i386-*-freebsd* | i386-*-openbsd*: Add.
--	powerpc-*-beos*: Add.
--	AM_CONDITIONAL X86_FREEBSD: Add.
--	AC_CONFIG_FILES: Add man/Makefile.
--
--	* include/ffi.h.in (FFI_FN): Change void (*)() to void (*)(void).
--
--2009-06-08  Andrew Haley  <aph@redhat.com>
--
--	* README: Import from libffi 3.0.8.
--
--2009-06-08  Andrew Haley  <aph@redhat.com>
--
--	* testsuite/libffi.call/err_bad_abi.c: Add xfails.
--	* testsuite/libffi.call/cls_longdouble_va.c: Add xfails.
--	* testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*.
--	* testsuite/libffi.call/err_bad_typedef.c: Add xfails.
--
--	* testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args.
--	* testsuite/libffi.call/stret_medium.c: Likewise.
--	* testsuite/libffi.call/stret_large2.c: Likewise.
--	* testsuite/libffi.call/stret_large.c:  Likewise.
--
--2008-12-26  Timothy Wall  <twall@users.sf.net>
--
--	* testsuite/libffi.call/cls_longdouble.c,
--	testsuite/libffi.call/cls_longdouble_va.c,
--	testsuite/libffi.call/cls_align_longdouble.c,
--	testsuite/libffi.call/cls_align_longdouble_split.c,
--	testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected
--	failures on x86_64 cygwin/mingw.
--
--2008-12-22  Timothy Wall  <twall@users.sf.net>
--
--	* testsuite/libffi.call/closure_fn0.c,
--	testsuite/libffi.call/closure_fn1.c,
--	testsuite/libffi.call/closure_fn2.c,
--	testsuite/libffi.call/closure_fn3.c,
--	testsuite/libffi.call/closure_fn4.c,
--	testsuite/libffi.call/closure_fn5.c,
--	testsuite/libffi.call/closure_fn6.c,
--	testsuite/libffi.call/closure_loc_fn0.c,
--	testsuite/libffi.call/closure_stdcall.c,
--	testsuite/libffi.call/cls_align_pointer.c,
--	testsuite/libffi.call/cls_pointer.c,
--	testsuite/libffi.call/cls_pointer_stack.c: use portable cast from
--	pointer to integer (intptr_t).
--	* testsuite/libffi.call/cls_longdouble.c: disable for win64.
--
--2008-07-24  Anthony Green  <green@redhat.com>
--
--	* testsuite/libffi.call/cls_dbls_struct.c,
--	testsuite/libffi.call/cls_double_va.c,
--	testsuite/libffi.call/cls_longdouble.c,
--	testsuite/libffi.call/cls_longdouble_va.c,
--	testsuite/libffi.call/cls_pointer.c,
--	testsuite/libffi.call/cls_pointer_stack.c,
--	testsuite/libffi.call/err_bad_abi.c: Clean up failures from
--	compiler warnings.
--
--2008-03-04  Anthony Green  <green@redhat.com>
--	    Blake Chaffin
--	    hos@tamanegi.org
--
--	* testsuite/libffi.call/cls_align_longdouble_split2.c
--	  testsuite/libffi.call/cls_align_longdouble_split.c
--	  testsuite/libffi.call/cls_dbls_struct.c
--	  testsuite/libffi.call/cls_double_va.c
--	  testsuite/libffi.call/cls_longdouble.c
--	  testsuite/libffi.call/cls_longdouble_va.c
--	  testsuite/libffi.call/cls_pointer.c
--	  testsuite/libffi.call/cls_pointer_stack.c
--	  testsuite/libffi.call/err_bad_abi.c
--	  testsuite/libffi.call/err_bad_typedef.c
--	  testsuite/libffi.call/stret_large2.c
--	  testsuite/libffi.call/stret_large.c
--	  testsuite/libffi.call/stret_medium2.c
--	  testsuite/libffi.call/stret_medium.c: New tests from Apple.
--
--2009-06-05  Andrew Haley  <aph@redhat.com>
--
--	* src/x86/ffitarget.h, src/x86/ffi.c: Merge stdcall changes from
--	libffi.
--
--2009-06-04  Andrew Haley  <aph@redhat.com>
--
--	* src/x86/ffitarget.h, src/x86/win32.S, src/x86/ffi.c: Back out
--	stdcall changes.
--
--2008-02-26  Anthony Green  <green@redhat.com>
--	    Thomas Heller  <theller@ctypes.org>
--
--	* src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C
--	comment.
--
--2008-02-03  Timothy Wall  <twall@users.sf.net>
--
--	* src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return
--	  offset based on code pointer, not data pointer.
--
--2008-01-31  Timothy Wall <twall@users.sf.net>
--
--	* testsuite/libffi.call/closure_stdcall.c: Add test for stdcall
--	closures.
--	* src/x86/ffitarget.h: Increase size of trampoline for stdcall
--	closures.
--	* src/x86/win32.S: Add assembly for stdcall closure.
--	* src/x86/ffi.c: Initialize stdcall closure trampoline.
--
--2009-06-04  Andrew Haley  <aph@redhat.com>
--
--	* include/ffi.h.in: Change void (*)() to void (*)(void).
--	* src/x86/ffi.c: Likewise.
--
--2009-06-04  Andrew Haley  <aph@redhat.com>
--
--	* src/powerpc/ppc_closure.S: Insert licence header.
--	* src/powerpc/linux64_closure.S: Likewise.
--	* src/m68k/sysv.S: Likewise.
--
--	* src/sh64/ffi.c: Change void (*)() to void (*)(void).
--	* src/powerpc/ffi.c: Likewise.
--	* src/powerpc/ffi_darwin.c: Likewise.
--	* src/m32r/ffi.c: Likewise.
--	* src/sh64/ffi.c: Likewise.
--	* src/x86/ffi64.c: Likewise.
--	* src/alpha/ffi.c: Likewise.
--	* src/alpha/osf.S: Likewise.
--	* src/frv/ffi.c: Likewise.
--	* src/s390/ffi.c: Likewise.
--	* src/pa/ffi.c: Likewise.
--	* src/pa/hpux32.S: Likewise.
--	* src/ia64/unix.S: Likewise.
--	* src/ia64/ffi.c: Likewise.
--	* src/sparc/ffi.c: Likewise.
--	* src/mips/ffi.c: Likewise.
--	* src/sh/ffi.c: Likewise.
--
--2008-02-15  David Daney  <ddaney@avtrex.com>
--
--	* src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE):
--	Define (conditionally), and use it to include cachectl.h.
--	(ffi_prep_closure_loc): Fix cache flushing.
--	* src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define.
--
--2009-06-04  Andrew Haley  <aph@redhat.com>
--
--	include/ffi.h.in,
--	src/arm/ffitarget.h,
--	src/arm/ffi.c,
--	src/arm/sysv.S,
--	src/powerpc/ffitarget.h,
--	src/closures.c,
--	src/sh64/ffitarget.h,
--	src/sh64/ffi.c,
--	src/sh64/sysv.S,
--	src/types.c,
--	src/x86/ffi64.c,
--	src/x86/ffitarget.h,
--	src/x86/win32.S,
--	src/x86/darwin.S,
--	src/x86/ffi.c,
--	src/x86/sysv.S,
--	src/x86/unix64.S,
--	src/alpha/ffitarget.h,
--	src/alpha/ffi.c,
--	src/alpha/osf.S,
--	src/m68k/ffitarget.h,
--	src/frv/ffitarget.h,
--	src/frv/ffi.c,
--	src/s390/ffitarget.h,
--	src/s390/sysv.S,
--	src/cris/ffitarget.h,
--	src/pa/linux.S,
--	src/pa/ffitarget.h,
--	src/pa/ffi.c,
--	src/raw_api.c,
--	src/ia64/ffitarget.h,
--	src/ia64/unix.S,
--	src/ia64/ffi.c,
--	src/ia64/ia64_flags.h,
--	src/java_raw_api.c,
--	src/debug.c,
--	src/sparc/v9.S,
--	src/sparc/ffitarget.h,
--	src/sparc/ffi.c,
--	src/sparc/v8.S,
--	src/mips/ffitarget.h,
--	src/mips/n32.S,
--	src/mips/o32.S,
--	src/mips/ffi.c,
--	src/prep_cif.c,
--	src/sh/ffitarget.h,
--	src/sh/ffi.c,
--	src/sh/sysv.S: Update license text.
--
--2009-05-22  Dave Korn  <dave.korn.cygwin@gmail.com>
--
--	* src/x86/win32.S (_ffi_closure_STDCALL):  New function.
--	(.eh_frame):  Add FDE for it.
--
--2009-05-22  Dave Korn  <dave.korn.cygwin@gmail.com>
--
--	* configure.ac:  Also check if assembler supports pc-relative
--	relocs on X86_WIN32 targets.
--	* configure:  Regenerate.
--	* src/x86/win32.S (ffi_prep_args):  Declare extern, not global.
--	(_ffi_call_SYSV):  Add missing function type symbol .def and
--	add EH markup labels.
--	(_ffi_call_STDCALL):  Likewise.
--	(_ffi_closure_SYSV):  Likewise.
--	(_ffi_closure_raw_SYSV):  Likewise.
--	(.eh_frame):  Add hand-crafted EH data.
--
--2009-04-09  Jakub Jelinek  <jakub@redhat.com>
--
--	* testsuite/lib/libffi-dg.exp: Change copyright header to refer to
--	version 3 of the GNU General Public License and to point readers
--	at the COPYING3 file and the FSF's license web page.
--	* testsuite/libffi.call/call.exp: Likewise.
--	* testsuite/libffi.special/special.exp: Likewise.
--
--2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
--
--	* configure: Regenerate.
--
--2008-12-18  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
--
--	PR libffi/26048
--	* configure.ac (HAVE_AS_X86_PCREL): New test.
--	* configure: Regenerate.
--	* fficonfig.h.in: Regenerate.
--	* src/x86/sysv.S [!FFI_NO_RAW_API]: Precalculate
--	RAW_CLOSURE_CIF_OFFSET, RAW_CLOSURE_FUN_OFFSET,
--	RAW_CLOSURE_USER_DATA_OFFSET for the Solaris 10/x86 assembler.
--	(.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL.
--	* src/x86/unix64.S (.Lstore_table): Move to .text section.
--	(.Lload_table): Likewise.
--	(.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL.
--
--2008-12-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
--
--	* configure: Regenerate.
--
--2008-11-21  Eric Botcazou  <ebotcazou@adacore.com>
--
--	* src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for
--	signed/unsigned int8/16 return values.
--	* src/sparc/v8.S (ffi_call_v8): Likewise.
--	(ffi_closure_v8): Likewise.
--
--2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
--	    Steve Ellcey  <sje@cup.hp.com>
--
--	* configure: Regenerate for new libtool.
--	* Makefile.in: Ditto.
--	* include/Makefile.in: Ditto.
--	* aclocal.m4: Ditto.
--
--2008-08-25  Andreas Tobler  <a.tobler@schweiz.org>
--
--	* src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and
--	FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum.
--	Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT.
--	Adjust copyright notice.
--	* src/powerpc/ffi.c: Add two new flags to indicate if we have one
--	register or two register to use for FFI_SYSV structs.
--	(ffi_prep_cif_machdep): Pass the right register flag introduced above.
--	(ffi_closure_helper_SYSV): Fix the return type for
--	FFI_SYSV_TYPE_SMALL_STRUCT. Comment.
--	Adjust copyright notice.
--
--2008-07-16  Kaz Kojima  <kkojima@gcc.gnu.org>
--
--	* src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned
--	int.
--
--2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
--
--	* configure: Regenerate.
--	* include/Makefile.in: Regenerate.
--	* testsuite/Makefile.in: Regenerate.
--
--2008-06-07  Joseph Myers  <joseph@codesourcery.com>
--
--	* configure.ac (parisc*-*-linux*, powerpc-*-sysv*,
--	powerpc-*-beos*): Remove.
--	* configure: Regenerate.
--
--2008-05-09  Julian Brown  <julian@codesourcery.com>
--
--	* Makefile.am (LTLDFLAGS): New.
--	(libffi_la_LDFLAGS): Use above.
--	* Makefile.in: Regenerate.
--
--2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
--
--	PR bootstrap/35457
--	* aclocal.m4: Regenerate.
--	* configure: Regenerate.
--
--2008-03-26  Kaz Kojima  <kkojima@gcc.gnu.org>
--
--	* src/sh/sysv.S: Add .note.GNU-stack on Linux.
--	* src/sh64/sysv.S: Likewise.
--
--2008-03-26  Daniel Jacobowitz  <dan@debian.org>
--
--	* src/arm/sysv.S: Fix ARM comment marker.
--
--2008-03-26  Jakub Jelinek  <jakub@redhat.com>
--
--	* src/alpha/osf.S: Add .note.GNU-stack on Linux.
--	* src/s390/sysv.S: Likewise.
--	* src/powerpc/ppc_closure.S: Likewise.
--	* src/powerpc/sysv.S: Likewise.
--	* src/x86/unix64.S: Likewise.
--	* src/x86/sysv.S: Likewise.
--	* src/sparc/v8.S: Likewise.
--	* src/sparc/v9.S: Likewise.
--	* src/m68k/sysv.S: Likewise.
--	* src/arm/sysv.S: Likewise.
--
--2008-03-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
--
--	* aclocal.m4: Regenerate.
--	* configure: Likewise.
--	* Makefile.in: Likewise.
--	* include/Makefile.in: Likewise.
--	* testsuite/Makefile.in: Likewise.
--
--2008-02-12  Bjoern Koenig  <bkoenig@alpha-tierchen.de>
--	    Andreas Tobler  <a.tobler@schweiz.org>
--
--	* configure.ac: Add amd64-*-freebsd* target.
--	* configure: Regenerate.
--
--2008-01-30  H.J. Lu  <hongjiu.lu@intel.com>
--
--	PR libffi/34612
--	* src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when
--	returning struct.
--
--	* testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer"
--	tests.
--
--2008-01-24  David Edelsohn  <edelsohn@gnu.org>
--
--	* configure: Regenerate.
--
--2008-01-06  Andreas Tobler  <a.tobler@schweiz.org>
--
--	* src/x86/ffi.c (ffi_prep_cif_machdep): Fix thinko.
--
--2008-01-05  Andreas Tobler  <a.tobler@schweiz.org>
--
--	PR testsuite/32843
--	* src/x86/ffi.c (ffi_prep_cif_machdep): Add code for
--	signed/unsigned int8/16 for X86_DARWIN.
--	Updated copyright info.
--	Handle one and two byte structs with special cif->flags.
--	* src/x86/ffitarget.h: Add special types for one and two byte structs.
--	Updated copyright info.
--	* src/x86/darwin.S (ffi_call_SYSV): Rewrite to use a jump table like
--	sysv.S
--	Remove code to pop args from the stack after call.
--	Special-case signed/unsigned for int8/16, one and two byte structs.
--	(ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8,
--	FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32,
--	FFI_TYPE_SINT32.
--	Updated copyright info.
--
--2007-12-08  David Daney  <ddaney@avtrex.com>
--
--	* src/mips/n32.S (ffi_call_N32):  Replace dadd with ADDU, dsub with
--	SUBU, add with ADDU and use smaller code sequences.
--
--2007-12-07  David Daney  <ddaney@avtrex.com>
--
--	* src/mips/ffi.c (ffi_prep_cif_machdep): Handle long double return
--	type.
--
--2007-12-06  David Daney  <ddaney@avtrex.com>
--
--	* include/ffi.h.in (FFI_SIZEOF_JAVA_RAW): Define if not	already
--	defined.
--	(ffi_java_raw): New typedef.
--	(ffi_java_raw_call, ffi_java_ptrarray_to_raw,
--	ffi_java_raw_to_ptrarray): Change parameter types from ffi_raw to
--	ffi_java_raw.
--	(ffi_java_raw_closure) : Same.
--	(ffi_prep_java_raw_closure, ffi_prep_java_raw_closure_loc): Change
--	parameter types.
--	* src/java_raw_api.c (ffi_java_raw_size):  Replace FFI_SIZEOF_ARG with
--	FFI_SIZEOF_JAVA_RAW.
--	(ffi_java_raw_to_ptrarray): Change type of raw to ffi_java_raw.
--	Replace FFI_SIZEOF_ARG with FFI_SIZEOF_JAVA_RAW. Use
--	sizeof(ffi_java_raw) for alignment calculations.
--	(ffi_java_ptrarray_to_raw): Same.
--	(ffi_java_rvalue_to_raw): Add special handling for FFI_TYPE_POINTER
--	if FFI_SIZEOF_JAVA_RAW == 4.
--	(ffi_java_raw_to_rvalue): Same.
--	(ffi_java_raw_call): Change type of raw to ffi_java_raw.
--	(ffi_java_translate_args): Same.
--	(ffi_prep_java_raw_closure_loc, ffi_prep_java_raw_closure): Change
--	parameter types.
--	* src/mips/ffitarget.h (FFI_SIZEOF_JAVA_RAW): Define for N32 ABI.
--
--2007-12-06  David Daney  <ddaney@avtrex.com>
--
--	* src/mips/n32.S (ffi_closure_N32): Use 64-bit add instruction on
--	pointer values.
--
--2007-12-01  Andreas Tobler  <a.tobler@schweiz.org>
--
--	PR libffi/31937
--	* src/powerpc/ffitarget.h: Introduce new ABI FFI_LINUX_SOFT_FLOAT.
--	Add local FFI_TYPE_UINT128 to handle soft-float long-double-128.
--	* src/powerpc/ffi.c: Distinguish between __NO_FPRS__ and not and
--	set the NUM_FPR_ARG_REGISTERS according to.
--	Add support for potential soft-float support under hard-float
--	architecture.
--	(ffi_prep_args_SYSV): Set NUM_FPR_ARG_REGISTERS to 0 in case of
--	FFI_LINUX_SOFT_FLOAT, handle float, doubles and long-doubles according
--	to the FFI_LINUX_SOFT_FLOAT ABI.
--	(ffi_prep_cif_machdep): Likewise.
--	(ffi_closure_helper_SYSV): Likewise.
--	* src/powerpc/ppc_closure.S: Make sure not to store float/double
--	on archs where __NO_FPRS__ is true.
--	Add FFI_TYPE_UINT128 support.
--	* src/powerpc/sysv.S: Add support for soft-float long-double-128.
--	Adjust copyright notice.
--
--2007-11-25  Andreas Tobler  <a.tobler@schweiz.org>
--
--	* src/closures.c: Move defintion of MAYBE_UNUSED from here to ...
--	* include/ffi_common.h: ... here.
--	Update copyright.
--
--2007-11-17  Andreas Tobler  <a.tobler@schweiz.org>
--
--	* src/powerpc/sysv.S: Load correct cr to compare if we have long double.
--	* src/powerpc/linux64.S: Likewise.
--	* src/powerpc/ffi.c: Add a comment to show which part goes into cr6.
--	* testsuite/libffi.call/return_ldl.c: New test.
--
--2007-09-04    <aph@redhat.com>
--
--	* src/arm/sysv.S (UNWIND): New.
--	(Whole file): Conditionally compile unwinder directives.
--	* src/arm/sysv.S: Add unwinder directives.
--
--	* src/arm/ffi.c (ffi_prep_args): Align structs by at least 4 bytes.
--	Only treat r0 as a struct address if we're actually returning a
--	struct by address.
--	Only copy the bytes that are actually within a struct.
--	(ffi_prep_cif_machdep): A Composite Type not larger than 4 bytes
--	is returned in r0, not passed by address.
--	(ffi_call): Allocate a word-sized temporary for the case where
--	a composite is returned in r0.
--	(ffi_prep_incoming_args_SYSV): Align as necessary.
--
--2007-08-05  Steven Newbury  <s_j_newbury@yahoo.co.uk>
--
--	* src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of
--	directly using the sys_cacheflush syscall.
--
--2007-07-27  Andrew Haley  <aph@redhat.com>
--
--	* src/arm/sysv.S (ffi_closure_SYSV): Add soft-float.
--
--2007-09-03  Maciej W. Rozycki  <macro@linux-mips.org>
--
--	* Makefile.am: Unify MIPS_IRIX and MIPS_LINUX into MIPS.
--	* configure.ac: Likewise.
--	* Makefile.in: Regenerate.
--	* include/Makefile.in: Likewise.
--	* testsuite/Makefile.in: Likewise.
--	* configure: Likewise.
--
--2007-08-24  David Daney  <ddaney@avtrex.com>
--
--	* testsuite/libffi.call/return_sl.c: New test.
--
--2007-08-10  David Daney  <ddaney@avtrex.com>
--
--	* testsuite/libffi.call/cls_multi_ushort.c,
--	testsuite/libffi.call/cls_align_uint16.c,
--	testsuite/libffi.call/nested_struct1.c,
--	testsuite/libffi.call/nested_struct3.c,
--	testsuite/libffi.call/cls_7_1_byte.c,
--	testsuite/libffi.call/nested_struct5.c,
--	testsuite/libffi.call/cls_double.c,
--	testsuite/libffi.call/nested_struct7.c,
--	testsuite/libffi.call/cls_sint.c,
--	testsuite/libffi.call/nested_struct9.c,
--	testsuite/libffi.call/cls_20byte1.c,
--	testsuite/libffi.call/cls_multi_sshortchar.c,
--	testsuite/libffi.call/cls_align_sint64.c,
--	testsuite/libffi.call/cls_3byte2.c,
--	testsuite/libffi.call/cls_multi_schar.c,
--	testsuite/libffi.call/cls_multi_uchar.c,
--	testsuite/libffi.call/cls_19byte.c,
--	testsuite/libffi.call/cls_9byte1.c,
--	testsuite/libffi.call/cls_align_float.c,
--	testsuite/libffi.call/closure_fn1.c,
--	testsuite/libffi.call/problem1.c,
--	testsuite/libffi.call/closure_fn3.c,
--	testsuite/libffi.call/cls_sshort.c,
--	testsuite/libffi.call/closure_fn5.c,
--	testsuite/libffi.call/cls_align_double.c,
--	testsuite/libffi.call/nested_struct.c,
--	testsuite/libffi.call/cls_2byte.c,
--	testsuite/libffi.call/nested_struct10.c,
--	testsuite/libffi.call/cls_4byte.c,
--	testsuite/libffi.call/cls_6byte.c,
--	testsuite/libffi.call/cls_8byte.c,
--	testsuite/libffi.call/cls_multi_sshort.c,
--	testsuite/libffi.call/cls_align_sint16.c,
--	testsuite/libffi.call/cls_align_uint32.c,
--	testsuite/libffi.call/cls_20byte.c,
--	testsuite/libffi.call/cls_float.c,
--	testsuite/libffi.call/nested_struct2.c,
--	testsuite/libffi.call/cls_5_1_byte.c,
--	testsuite/libffi.call/nested_struct4.c,
--	testsuite/libffi.call/cls_24byte.c,
--	testsuite/libffi.call/nested_struct6.c,
--	testsuite/libffi.call/cls_64byte.c,
--	testsuite/libffi.call/nested_struct8.c,
--	testsuite/libffi.call/cls_uint.c,
--	testsuite/libffi.call/cls_multi_ushortchar.c,
--	testsuite/libffi.call/cls_schar.c,
--	testsuite/libffi.call/cls_uchar.c,
--	testsuite/libffi.call/cls_align_uint64.c,
--	testsuite/libffi.call/cls_ulonglong.c,
--	testsuite/libffi.call/cls_align_longdouble.c,
--	testsuite/libffi.call/cls_1_1byte.c,
--	testsuite/libffi.call/cls_12byte.c,
--	testsuite/libffi.call/cls_3_1byte.c,
--	testsuite/libffi.call/cls_3byte1.c,
--	testsuite/libffi.call/cls_4_1byte.c,
--	testsuite/libffi.call/cls_6_1_byte.c,
--	testsuite/libffi.call/cls_16byte.c,
--	testsuite/libffi.call/cls_18byte.c,
--	testsuite/libffi.call/closure_fn0.c,
--	testsuite/libffi.call/cls_9byte2.c,
--	testsuite/libffi.call/closure_fn2.c,
--	testsuite/libffi.call/closure_fn4.c,
--	testsuite/libffi.call/cls_ushort.c,
--	testsuite/libffi.call/closure_fn6.c,
--	testsuite/libffi.call/cls_5byte.c,
--	testsuite/libffi.call/cls_align_pointer.c,
--	testsuite/libffi.call/cls_7byte.c,
--	testsuite/libffi.call/cls_align_sint32.c,
--	testsuite/libffi.special/unwindtest_ffi_call.cc,
--	testsuite/libffi.special/unwindtest.cc: Remove xfail for mips64*-*-*.
--
--2007-08-10  David Daney  <ddaney@avtrex.com>
--
--	PR libffi/28313
--	* configure.ac: Don't treat mips64 as a special case.
--	* Makefile.am (nodist_libffi_la_SOURCES): Add n32.S.
--	* configure: Regenerate
--	* Makefile.in: Ditto.
--	* fficonfig.h.in: Ditto.
--	* src/mips/ffitarget.h (REG_L, REG_S, SUBU, ADDU, SRL, LI): Indent.
--	(LA, EH_FRAME_ALIGN, FDE_ADDR_BYTES): New preprocessor macros.
--	(FFI_DEFAULT_ABI): Set for n64 case.
--	(FFI_CLOSURES, FFI_TRAMPOLINE_SIZE): Define for n32 and n64 cases.
--	* src/mips/n32.S (ffi_call_N32): Add debug macros and labels for FDE.
--	(ffi_closure_N32): New function.
--	(.eh_frame): New section
--	* src/mips/o32.S: Clean up comments.
--	(ffi_closure_O32): Pass ffi_closure parameter in $12.
--	* src/mips/ffi.c: Use FFI_MIPS_N32 instead of
--	_MIPS_SIM == _ABIN32 throughout.
--	(FFI_MIPS_STOP_HERE): New, use in place of
--	ffi_stop_here.
--	(ffi_prep_args): Use unsigned long to hold pointer values.  Rewrite
--	to support n32/n64 ABIs.
--	(calc_n32_struct_flags): Rewrite.
--	(calc_n32_return_struct_flags): Remove unused variable.  Reverse
--	position of flag bits.
--	(ffi_prep_cif_machdep): Rewrite n32 portion.
--	(ffi_call): Enable for n64.  Add special handling for small structure
--	return values.
--	(ffi_prep_closure_loc): Add n32 and n64 support.
--	(ffi_closure_mips_inner_O32): Add cast to silence warning.
--	(copy_struct_N32, ffi_closure_mips_inner_N32): New functions.
--
--2007-08-08  David Daney  <ddaney@avtrex.com>
--
--	* testsuite/libffi.call/ffitest.h (ffi_type_mylong): Remove definition.
--	* testsuite/libffi.call/cls_align_uint16.c (main): Use correct type
--	specifiers.
--	* testsuite/libffi.call/nested_struct1.c (main): Ditto.
--	* testsuite/libffi.call/cls_sint.c (main): Ditto.
--	* testsuite/libffi.call/nested_struct9.c (main): Ditto.
--	* testsuite/libffi.call/cls_20byte1.c (main): Ditto.
--	* testsuite/libffi.call/cls_9byte1.c (main): Ditto.
--	* testsuite/libffi.call/closure_fn1.c (main): Ditto.
--	* testsuite/libffi.call/closure_fn3.c (main): Ditto.
--	* testsuite/libffi.call/return_dbl2.c (main): Ditto.
--	* testsuite/libffi.call/cls_sshort.c (main): Ditto.
--	* testsuite/libffi.call/return_fl3.c (main): Ditto.
--	* testsuite/libffi.call/closure_fn5.c (main): Ditto.
--	* testsuite/libffi.call/nested_struct.c (main): Ditto.
--	* testsuite/libffi.call/nested_struct10.c (main): Ditto.
--	* testsuite/libffi.call/return_ll1.c (main): Ditto.
--	* testsuite/libffi.call/cls_8byte.c (main): Ditto.
--	* testsuite/libffi.call/cls_align_uint32.c (main): Ditto.
--	* testsuite/libffi.call/cls_align_sint16.c (main): Ditto.
--	* testsuite/libffi.call/cls_20byte.c (main): Ditto.
--	* testsuite/libffi.call/nested_struct2.c (main): Ditto.
--	* testsuite/libffi.call/cls_24byte.c (main): Ditto.
--	* testsuite/libffi.call/nested_struct6.c (main): Ditto.
--	* testsuite/libffi.call/cls_uint.c (main): Ditto.
--	* testsuite/libffi.call/cls_12byte.c (main): Ditto.
--	* testsuite/libffi.call/cls_16byte.c (main): Ditto.
--	* testsuite/libffi.call/closure_fn0.c (main): Ditto.
--	* testsuite/libffi.call/cls_9byte2.c (main): Ditto.
--	* testsuite/libffi.call/closure_fn2.c (main): Ditto.
--	* testsuite/libffi.call/return_dbl1.c (main): Ditto.
--	* testsuite/libffi.call/closure_fn4.c (main): Ditto.
--	* testsuite/libffi.call/closure_fn6.c (main): Ditto.
--	* testsuite/libffi.call/cls_align_sint32.c (main): Ditto.
--
--2007-08-07  Andrew Haley  <aph@redhat.com>
--
--	* src/x86/sysv.S (ffi_closure_raw_SYSV): Fix typo in previous
--	checkin.
--
--2007-08-06  Andrew Haley  <aph@redhat.com>
--
--	PR testsuite/32843
--	* src/x86/sysv.S (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8,
--	FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32,
--	FFI_TYPE_SINT32.
--
--2007-08-02  David Daney  <ddaney@avtrex.com>
--
--	* testsuite/libffi.call/return_ul.c (main): Define return type as
--	ffi_arg.  Use proper printf conversion specifier.
--
--2007-07-30  Andrew Haley  <aph@redhat.com>
--
--	PR testsuite/32843
--	* src/x86/ffi.c (ffi_prep_cif_machdep): in x86 case, add code for
--	signed/unsigned int8/16.
--	* src/x86/sysv.S (ffi_call_SYSV): Rewrite to:
--	Use a jump table.
--	Remove code to pop args from the stack after call.
--	Special-case signed/unsigned int8/16.
--	* testsuite/libffi.call/return_sc.c (main): Revert.
--
--2007-07-26  Richard Guenther  <rguenther@suse.de>
--
--	PR testsuite/32843
--	* testsuite/libffi.call/return_sc.c (main): Verify call
--	result as signed char, not ffi_arg.
--
--2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
--
--	* configure.ac (i?86-*-solaris2.1[0-9]): Set TARGET to X86_64.
--	* configure: Regenerate.
--
--2007-07-11  David Daney  <ddaney@avtrex.com>
--
--	* src/mips/ffi.c: Don't include sys/cachectl.h.
--	(ffi_prep_closure_loc): Use __builtin___clear_cache() instead of
--	cacheflush().
--
--2007-05-18  Aurelien Jarno  <aurelien@aurel32.net>
--
--	* src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted
--	from (ffi_prep_closure): ... this.
--	(FFI_INIT_TRAMPOLINE): Adjust.
--
--2005-12-31  Phil Blundell  <pb@reciva.com>
--
--	* src/arm/ffi.c (ffi_prep_incoming_args_SYSV,
--	ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support.
--	* src/arm/sysv.S(ffi_closure_SYSV): Likewise.
--	* src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
--	(FFI_CLOSURES): Enable closure support.
--
--2007-07-03  Andrew Haley  <aph@hedges.billgatliff.com>
--
--	* testsuite/libffi.call/cls_multi_ushort.c,
--	testsuite/libffi.call/cls_align_uint16.c,
--	testsuite/libffi.call/nested_struct1.c,
--	testsuite/libffi.call/nested_struct3.c,
--	testsuite/libffi.call/cls_7_1_byte.c,
--	testsuite/libffi.call/cls_double.c,
--	testsuite/libffi.call/nested_struct5.c,
--	testsuite/libffi.call/nested_struct7.c,
--	testsuite/libffi.call/cls_sint.c,
--	testsuite/libffi.call/nested_struct9.c,
--	testsuite/libffi.call/cls_20byte1.c,
--	testsuite/libffi.call/cls_multi_sshortchar.c,
--	testsuite/libffi.call/cls_align_sint64.c,
--	testsuite/libffi.call/cls_3byte2.c,
--	testsuite/libffi.call/cls_multi_schar.c,
--	testsuite/libffi.call/cls_multi_uchar.c,
--	testsuite/libffi.call/cls_19byte.c,
--	testsuite/libffi.call/cls_9byte1.c,
--	testsuite/libffi.call/cls_align_float.c,
--	testsuite/libffi.call/closure_fn1.c,
--	testsuite/libffi.call/problem1.c,
--	testsuite/libffi.call/closure_fn3.c,
--	testsuite/libffi.call/cls_sshort.c,
--	testsuite/libffi.call/closure_fn5.c,
--	testsuite/libffi.call/cls_align_double.c,
--	testsuite/libffi.call/cls_2byte.c,
--	testsuite/libffi.call/nested_struct.c,
--	testsuite/libffi.call/nested_struct10.c,
--	testsuite/libffi.call/cls_4byte.c,
--	testsuite/libffi.call/cls_6byte.c,
--	testsuite/libffi.call/cls_8byte.c,
--	testsuite/libffi.call/cls_multi_sshort.c,
--	testsuite/libffi.call/cls_align_uint32.c,
--	testsuite/libffi.call/cls_align_sint16.c,
--	testsuite/libffi.call/cls_float.c,
--	testsuite/libffi.call/cls_20byte.c,
--	testsuite/libffi.call/cls_5_1_byte.c,
--	testsuite/libffi.call/nested_struct2.c,
--	testsuite/libffi.call/cls_24byte.c,
--	testsuite/libffi.call/nested_struct4.c,
--	testsuite/libffi.call/nested_struct6.c,
--	testsuite/libffi.call/cls_64byte.c,
--	testsuite/libffi.call/nested_struct8.c,
--	testsuite/libffi.call/cls_uint.c,
--	testsuite/libffi.call/cls_multi_ushortchar.c,
--	testsuite/libffi.call/cls_schar.c,
--	testsuite/libffi.call/cls_uchar.c,
--	testsuite/libffi.call/cls_align_uint64.c,
--	testsuite/libffi.call/cls_ulonglong.c,
--	testsuite/libffi.call/cls_align_longdouble.c,
--	testsuite/libffi.call/cls_1_1byte.c,
--	testsuite/libffi.call/cls_12byte.c,
--	testsuite/libffi.call/cls_3_1byte.c,
--	testsuite/libffi.call/cls_3byte1.c,
--	testsuite/libffi.call/cls_4_1byte.c,
--	testsuite/libffi.call/cls_6_1_byte.c,
--	testsuite/libffi.call/cls_16byte.c,
--	testsuite/libffi.call/cls_18byte.c,
--	testsuite/libffi.call/closure_fn0.c,
--	testsuite/libffi.call/cls_9byte2.c,
--	testsuite/libffi.call/closure_fn2.c,
--	testsuite/libffi.call/closure_fn4.c,
--	testsuite/libffi.call/cls_ushort.c,
--	testsuite/libffi.call/closure_fn6.c,
--	testsuite/libffi.call/cls_5byte.c,
--	testsuite/libffi.call/cls_align_pointer.c,
--	testsuite/libffi.call/cls_7byte.c,
--	testsuite/libffi.call/cls_align_sint32.c,
--	testsuite/libffi.special/unwindtest_ffi_call.cc,
--	testsuite/libffi.special/unwindtest.cc: Enable for ARM.
--
--2007-07-05  H.J. Lu  <hongjiu.lu@intel.com>
--
--	* aclocal.m4: Regenerated.
--
--2007-06-02  Paolo Bonzini  <bonzini@gnu.org>
--
--	* configure: Regenerate.
--
--2007-05-23  Steve Ellcey  <sje@cup.hp.com>
--
--	* Makefile.in: Regenerate.
--	* configure: Regenerate.
--	* aclocal.m4: Regenerate.
--	* include/Makefile.in: Regenerate.
--	* testsuite/Makefile.in: Regenerate.
--
--2007-05-10  Roman Zippel <zippel@linux-m68k.org>
--
--	* src/m68k/ffi.c (ffi_prep_incoming_args_SYSV,
--	ffi_closure_SYSV_inner,ffi_prep_closure): New, add closure support.
--	* src/m68k/sysv.S(ffi_closure_SYSV,ffi_closure_struct_SYSV): Likewise.
--	* src/m68k/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
--	(FFI_CLOSURES): Enable closure support.
--
--2007-05-10  Roman Zippel <zippel@linux-m68k.org>
--
--	* configure.ac (HAVE_AS_CFI_PSEUDO_OP): New test.
--	* configure: Regenerate.
--	* fficonfig.h.in: Regenerate.
--	* src/m68k/sysv.S (CFI_STARTPROC,CFI_ENDPROC,
--	CFI_OFFSET,CFI_DEF_CFA): New macros.
--	(ffi_call_SYSV): Add callframe annotation.
--
--2007-05-10  Roman Zippel <zippel@linux-m68k.org>
--
--	* src/m68k/ffi.c (ffi_prep_args,ffi_prep_cif_machdep): Fix
--	numerous test suite failures.
--	* src/m68k/sysv.S (ffi_call_SYSV): Likewise.
--
--2007-04-11  Paolo Bonzini  <bonzini@gnu.org>
--
--	* Makefile.am (EXTRA_DIST): Bring up to date.
--	* Makefile.in: Regenerate.
--	* src/frv/eabi.S: Remove RCS keyword.
--
--2007-04-06  Richard Henderson  <rth@redhat.com>
--
--	* configure.ac: Tidy target case.
--	(HAVE_LONG_DOUBLE): Allow the target to override.
--	* configure: Regenerate.
--	* include/ffi.h.in: Don't define ffi_type_foo if
--	LIBFFI_HIDE_BASIC_TYPES is defined.
--	(ffi_type_longdouble): If not HAVE_LONG_DOUBLE, define
--	to ffi_type_double.
--	* types.c (LIBFFI_HIDE_BASIC_TYPES): Define.
--	(FFI_TYPEDEF, ffi_type_void): Mark the data const.
--	(ffi_type_longdouble): Special case for Alpha.  Don't define
--	if long double == double.
--
--	* src/alpha/ffi.c (FFI_TYPE_LONGDOUBLE): Assert unique value.
--	(ffi_prep_cif_machdep): Handle it as the 128-bit type.
--	(ffi_call, ffi_closure_osf_inner): Likewise.
--	(ffi_closure_osf_inner): Likewise.  Mark hidden.
--	(ffi_call_osf, ffi_closure_osf): Mark hidden.
--	* src/alpha/ffitarget.h (FFI_LAST_ABI): Tidy definition.
--	* src/alpha/osf.S (ffi_call_osf, ffi_closure_osf): Mark hidden.
--	(load_table): Handle 128-bit long double.
--
--	* testsuite/libffi.call/float4.c: Add -mieee for alpha.
--
--2007-04-06  Tom Tromey  <tromey@redhat.com>
--
--	PR libffi/31491:
--	* README: Fixed bug in example.
--
--2007-04-03  Jakub Jelinek  <jakub@redhat.com>
--
--	* src/closures.c: Include sys/statfs.h.
--	(_GNU_SOURCE): Define on Linux.
--	(FFI_MMAP_EXEC_SELINUX): Define.
--	(selinux_enabled): New variable.
--	(selinux_enabled_check): New function.
--	(is_selinux_enabled): Define.
--	(dlmmap): Use it.
--
--2007-03-24  Uros Bizjak  <ubizjak@gmail.com>
--
--	* testsuite/libffi.call/return_fl2.c (return_fl): Mark as static.
--	Use 'volatile float sum' to create sum of floats to avoid false
--	negative due to excess precision on ix86 targets.
--	(main): Ditto.
--
--2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
--
--	* src/powerpc/ffi.c (flush_icache): Fix left-over from previous
--	patch.
--	(ffi_prep_closure_loc): Remove unneeded casts.  Add needed ones.
--
--2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
--
--	* include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New.
--	(ffi_prep_closure_loc): New.
--	(ffi_prep_raw_closure_loc): New.
--	(ffi_prep_java_raw_closure_loc): New.
--	* src/closures.c: New file.
--	* src/dlmalloc.c [FFI_MMAP_EXEC_WRIT] (struct malloc_segment):
--	Replace sflags with exec_offset.
--	[FFI_MMAP_EXEC_WRIT] (mmap_exec_offset, add_segment_exec_offset,
--	sub_segment_exec_offset): New macros.
--	(get_segment_flags, set_segment_flags, check_segment_merge): New
--	macros.
--	(is_mmapped_segment, is_extern_segment): Use get_segment_flags.
--	(add_segment, sys_alloc, create_mspace, create_mspace_with_base,
--	destroy_mspace): Use new macros.
--	(sys_alloc): Silence warning.
--	* Makefile.am (libffi_la_SOURCES): Add src/closures.c.
--	* Makefile.in: Rebuilt.
--	* src/prep_cif [FFI_CLOSURES] (ffi_prep_closure): Implement in
--	terms of ffi_prep_closure_loc.
--	* src/raw_api.c (ffi_prep_raw_closure_loc): Renamed and adjusted
--	from...
--	(ffi_prep_raw_closure): ... this.  Re-implement in terms of the
--	renamed version.
--	* src/java_raw_api (ffi_prep_java_raw_closure_loc): Renamed and
--	adjusted from...
--	(ffi_prep_java_raw_closure): ... this.  Re-implement in terms of
--	the renamed version.
--	* src/alpha/ffi.c (ffi_prep_closure_loc): Renamed from
--	(ffi_prep_closure): ... this.
--	* src/pa/ffi.c: Likewise.
--	* src/cris/ffi.c: Likewise.  Adjust.
--	* src/frv/ffi.c: Likewise.
--	* src/ia64/ffi.c: Likewise.
--	* src/mips/ffi.c: Likewise.
--	* src/powerpc/ffi_darwin.c: Likewise.
--	* src/s390/ffi.c: Likewise.
--	* src/sh/ffi.c: Likewise.
--	* src/sh64/ffi.c: Likewise.
--	* src/sparc/ffi.c: Likewise.
--	* src/x86/ffi64.c: Likewise.
--	* src/x86/ffi.c: Likewise.
--	(FFI_INIT_TRAMPOLINE): Adjust.
--	(ffi_prep_raw_closure_loc): Renamed and adjusted from...
--	(ffi_prep_raw_closure): ... this.
--	* src/powerpc/ffi.c (ffi_prep_closure_loc): Renamed from
--	(ffi_prep_closure): ... this.
--	(flush_icache): Adjust.
--
--2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
--
--	* src/dlmalloc.c: New file, imported version 2.8.3 of Doug
--	Lea's malloc.
--
--2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
--
--	* Makefile.am: Add dummy install-pdf target.
--	* Makefile.in: Regenerate
--
--2007-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
--
--	* src/s390/ffi.c (ffi_prep_args, ffi_prep_cif_machdep,
--	ffi_closure_helper_SYSV): Add long double handling.
--
--2007-02-02  Jakub Jelinek  <jakub@redhat.com>
--
--	* src/powerpc/linux64.S (ffi_call_LINUX64): Move restore of r2
--	immediately after bctrl instruction.
--
--2007-01-18  Alexandre Oliva  <aoliva@redhat.com>
--
--	* Makefile.am (all-recursive, install-recursive,
--	mostlyclean-recursive, clean-recursive, distclean-recursive,
--	maintainer-clean-recursive): Add missing targets.
--	* Makefile.in: Rebuilt.
--
--2006-12-14  Andreas Tobler  <a.tobler@schweiz.org>
--
--	* configure.ac: Add TARGET for x86_64-*-darwin*.
--	* Makefile.am (nodist_libffi_la_SOURCES): Add rules for 64-bit sources
--	for X86_DARWIN.
--	* src/x86/ffitarget.h: Set trampoline size for x86_64-*-darwin*.
--	* src/x86/darwin64.S: New file for x86_64-*-darwin* support.
--	* configure: Regenerate.
--	* Makefile.in: Regenerate.
--	* include/Makefile.in: Regenerate.
--	* testsuite/Makefile.in: Regenerate.
--	* testsuite/libffi.special/unwindtest_ffi_call.cc: New test case for
--	ffi_call only.
--
--2006-12-13  Andreas Tobler <a.tobler@schweiz.org>
--
--	* aclocal.m4: Regenerate with aclocal -I .. as written in the
--	Makefile.am.
--
--2006-10-31  Geoffrey Keating  <geoffk@apple.com>
--
--	* src/powerpc/ffi_darwin.c (darwin_adjust_aggregate_sizes): New.
--	(ffi_prep_cif_machdep): Call darwin_adjust_aggregate_sizes for
--	Darwin.
--	* testsuite/libffi.call/nested_struct4.c: Remove Darwin XFAIL.
--	* testsuite/libffi.call/nested_struct6.c: Remove Darwin XFAIL.
--
--2006-10-10  Paolo Bonzini  <bonzini@gnu.org>
--	    Sandro Tolaini  <tolaini@libero.it>
--
--	* configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and
--	conditional.
--	* configure: Regenerated.
--	* Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case.
--	(EXTRA_DIST): Add src/x86/darwin.S.
--	* Makefile.in: Regenerated.
--	* include/Makefile.in: Regenerated.
--	* testsuite/Makefile.in: Regenerated.
--
--	* src/x86/ffi.c (ffi_prep_cif_machdep) [X86_DARWIN]: Treat like
--	X86_WIN32, and additionally align stack to 16 bytes.
--	* src/x86/darwin.S: New, based on sysv.S.
--	* src/prep_cif.c (ffi_prep_cif) [X86_DARWIN]: Align > 8-byte structs.
--
--2006-09-12  David Daney  <ddaney@avtrex.com>
--
--	PR libffi/23935
--	* include/Makefile.am: Install both ffi.h and ffitarget.h in
--	$(libdir)/gcc/$(target_alias)/$(gcc_version)/include.
--	* aclocal.m4: Regenerated for automake 1.9.6.
--	* Makefile.in: Regenerated.
--	* include/Makefile.in: Regenerated.
--	* testsuite/Makefile.in: Regenerated.
--
--2006-08-17  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* include/ffi_common.h (struct): Revert accidental commit.
--
--2006-08-15  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* include/ffi_common.h: Remove lint directives.
--	* include/ffi.h.in: Likewise.
--
--2006-07-25  Torsten Schoenfeld  <kaffeetisch@gmx.de>
--
--	* include/ffi.h.in (ffi_type_ulong, ffi_type_slong): Define correctly
--	for 32-bit architectures.
--	* testsuite/libffi.call/return_ul.c: New test case.
--
--2006-07-19  David Daney  <ddaney@avtrex.com>
--
--	* testsuite/libffi.call/closure_fn6.c: Remove xfail for mips,
--	xfail remains for mips64.
--
--2006-05-23  Carlos O'Donell  <carlos@codesourcery.com>
--
--	* Makefile.am: Add install-html target. Add install-html to .PHONY
--	* Makefile.in: Regenerate.
--	* aclocal.m4: Regenerate.
--	* include/Makefile.in: Regenerate.
--	* testsuite/Makefile.in: Regenerate.
--
--2006-05-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
--
--	* pa/ffi.c (ffi_prep_args_pa32): Load floating point arguments from
--	stack slot.
--
--2006-04-22  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* README: Remove notice about 'Crazy Comments'.
--	* src/debug.c: Remove lint directives. Cleanup white spaces.
--	* src/java_raw_api.c: Likewise.
--	* src/prep_cif.c: Likewise.
--	* src/raw_api.c: Likewise.
--	* src/ffitest.c: Delete. No longer needed, all test cases migrated
--	to the testsuite.
--	* src/arm/ffi.c: Remove lint directives.
--	* src/m32r/ffi.c: Likewise.
--	* src/pa/ffi.c: Likewise.
--	* src/powerpc/ffi.c: Likewise.
--	* src/powerpc/ffi_darwin.c: Likewise.
--	* src/sh/ffi.c: Likewise.
--	* src/sh64/ffi.c: Likewise.
--	* src/x86/ffi.c: Likewise.
--	* testsuite/libffi.call/float2.c: Likewise.
--	* testsuite/libffi.call/promotion.c: Likewise.
--	* testsuite/libffi.call/struct1.c: Likewise.
--
--2006-04-13  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* src/pa/hpux32.S: Correct unwind offset calculation for
--	ffi_closure_pa32.
--	* src/pa/linux.S: Likewise.
--
--2006-04-12  James E Wilson  <wilson@specifix.com>
--
--	PR libgcj/26483
--	* src/ia64/ffi.c (stf_spill, ldf_fill): Rewrite as macros.
--	(hfa_type_load): Call stf_spill.
--	(hfa_type_store): Call ldf_fill.
--	(ffi_call): Adjust calls to above routines.  Add local temps for
--	macro result.
--
--2006-04-10  Matthias Klose  <doko@debian.org>
--
--	* testsuite/lib/libffi-dg.exp (libffi-init): Recognize multilib
--	directory names containing underscores.
--
--2006-04-07  James E Wilson  <wilson@specifix.com>
--
--	* testsuite/libffi.call/float4.c: New testcase.
--
--2006-04-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
--	    Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* Makefile.am: Add PA_HPUX port.
--	* Makefile.in: Regenerate.
--	* include/Makefile.in: Likewise.
--	* testsuite/Makefile.in: Likewise.
--	* configure.ac: Add PA_HPUX rules.
--	* configure: Regenerate.
--	* src/pa/ffitarget.h: Rename linux target to PA_LINUX.
--	Add PA_HPUX and PA64_HPUX.
--	Rename FFI_LINUX ABI to FFI_PA32 ABI.
--	(FFI_TRAMPOLINE_SIZE): Define for 32-bit HP-UX targets.
--	(FFI_TYPE_SMALL_STRUCT2): Define.
--	(FFI_TYPE_SMALL_STRUCT4): Likewise.
--	(FFI_TYPE_SMALL_STRUCT8): Likewise.
--	(FFI_TYPE_SMALL_STRUCT3): Redefine.
--	(FFI_TYPE_SMALL_STRUCT5): Likewise.
--	(FFI_TYPE_SMALL_STRUCT6): Likewise.
--	(FFI_TYPE_SMALL_STRUCT7): Likewise.
--	* src/pa/ffi.c (ROUND_DOWN): Delete.
--	(fldw, fstw, fldd, fstd): Use '__asm__'.
--	(ffi_struct_type): Add support for FFI_TYPE_SMALL_STRUCT2,
--	FFI_TYPE_SMALL_STRUCT4 and FFI_TYPE_SMALL_STRUCT8.
--	(ffi_prep_args_LINUX): Rename to ffi_prep_args_pa32. Update comment.
--	Simplify incrementing of stack slot variable. Change type of local
--	'n' to unsigned int.
--	(ffi_size_stack_LINUX): Rename to ffi_size_stack_pa32. Handle long
--	double on PA_HPUX.
--	(ffi_prep_cif_machdep): Likewise.
--	(ffi_call): Likewise.
--	(ffi_closure_inner_LINUX): Rename to ffi_closure_inner_pa32. Change
--	return type to ffi_status. Simplify incrementing of stack slot
--	variable. Only copy floating point argument registers when PA_LINUX
--	is true. Reformat debug statement.
--	Add support for FFI_TYPE_SMALL_STRUCT2, FFI_TYPE_SMALL_STRUCT4 and
--	FFI_TYPE_SMALL_STRUCT8.
--	(ffi_closure_LINUX): Rename to ffi_closure_pa32. Add 'extern' to
--	declaration.
--	(ffi_prep_closure): Make linux trampoline conditional on PA_LINUX.
--	Add nops to cache flush.  Add trampoline for PA_HPUX.
--	* src/pa/hpux32.S: New file.
--	* src/pa/linux.S (ffi_call_LINUX): Rename to ffi_call_pa32. Rename
--	ffi_prep_args_LINUX to ffi_prep_args_pa32.
--	Localize labels. Add support for 2, 4 and 8-byte small structs. Handle
--	unaligned destinations in 3, 5, 6 and 7-byte small structs. Order
--	argument type checks so that common argument types appear first.
--	(ffi_closure_LINUX): Rename to ffi_closure_pa32. Rename
--	ffi_closure_inner_LINUX to ffi_closure_inner_pa32.
--
--2006-03-24  Alan Modra  <amodra@bigpond.net.au>
--
--	* src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX.  Default
--	for 32-bit using IBM extended double format.  Fix FFI_LAST_ABI.
--	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of
--	FFI_TYPE_LONGDOUBLE.
--	(ffi_prep_args64): Assert using IBM extended double.
--	(ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type.
--	Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args.
--	(ffi_call): Handle FFI_LINUX.
--	(ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs
--	gpr3 return pointer as for struct return.  Handle FFI_LINUX
--	FFI_TYPE_LONGDOUBLE return and args.  Don't increment "nf"
--	unnecessarily.
--	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2
--	for FFI_TYPE_LONGDOUBLE.  Move epilogue insns into case table.
--	Don't use r6 as pointer to results, instead use sp offset.  Don't
--	make a special call to load lr with case table address, instead
--	use offset from previous call.
--	* src/powerpc/sysv.S (ffi_call_SYSV): Save long double return.
--	* src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double
--	return.
--
--2006-03-15  Kaz Kojima  <kkojima@gcc.gnu.org>
--
--	* src/sh64/ffi.c (ffi_prep_cif_machdep): Handle float arguments
--	passed with FP registers correctly.
--	(ffi_closure_helper_SYSV): Likewise.
--	* src/sh64/sysv.S: Likewise.
--
--2006-03-01  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/libffi.special/unwindtest.cc (closure_test_fn): Mark cif,
--	args and userdata unused.
--	(closure_test_fn1): Mark cif and userdata unused.
--	(main): Remove unused res.
--
--2006-02-28  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/libffi.call/call.exp: Adjust FSF address. Add test runs for
--	-O2, -O3, -Os and the warning flags -W -Wall.
--	* testsuite/libffi.special/special.exp: Likewise.
--	* testsuite/libffi.call/ffitest.h: Add an __UNUSED__ macro to mark
--	unused parameter unused for gcc or else do nothing.
--	* testsuite/libffi.special/ffitestcxx.h: Likewise.
--	* testsuite/libffi.call/cls_12byte.c (cls_struct_12byte_gn): Mark cif
--	and userdata unused.
--	* testsuite/libffi.call/cls_16byte.c (cls_struct_16byte_gn): Likewise.
--	* testsuite/libffi.call/cls_18byte.c (cls_struct_18byte_gn): Likewise.
--	* testsuite/libffi.call/cls_19byte.c (cls_struct_19byte_gn): Likewise.
--	* testsuite/libffi.call/cls_1_1byte.c (cls_struct_1_1byte_gn): Likewise.
--	* testsuite/libffi.call/cls_20byte.c (cls_struct_20byte_gn): Likewise.
--	* testsuite/libffi.call/cls_20byte1.c (cls_struct_20byte_gn): Likewise.
--	* testsuite/libffi.call/cls_24byte.c (cls_struct_24byte_gn): Likewise.
--	* testsuite/libffi.call/cls_2byte.c (cls_struct_2byte_gn): Likewise.
--	* testsuite/libffi.call/cls_3_1byte.c (cls_struct_3_1byte_gn): Likewise.
--	* testsuite/libffi.call/cls_3byte1.c (cls_struct_3byte_gn): Likewise.
--	* testsuite/libffi.call/cls_3byte2.c (cls_struct_3byte_gn1): Likewise.
--	* testsuite/libffi.call/cls_4_1byte.c (cls_struct_4_1byte_gn): Likewise.
--	* testsuite/libffi.call/cls_4byte.c (cls_struct_4byte_gn): Likewise.
--	* testsuite/libffi.call/cls_5_1_byte.c (cls_struct_5byte_gn): Likewise.
--	* testsuite/libffi.call/cls_5byte.c (cls_struct_5byte_gn): Likewise.
--	* testsuite/libffi.call/cls_64byte.c (cls_struct_64byte_gn): Likewise.
--	* testsuite/libffi.call/cls_6_1_byte.c (cls_struct_6byte_gn): Likewise.
--	* testsuite/libffi.call/cls_6byte.c (cls_struct_6byte_gn): Likewise.
--	* testsuite/libffi.call/cls_7_1_byte.c (cls_struct_7byte_gn): Likewise.
--	* testsuite/libffi.call/cls_7byte.c (cls_struct_7byte_gn): Likewise.
--	* testsuite/libffi.call/cls_8byte.c (cls_struct_8byte_gn): Likewise.
--	* testsuite/libffi.call/cls_9byte1.c (cls_struct_9byte_gn): Likewise.
--	* testsuite/libffi.call/cls_9byte2.c (cls_struct_9byte_gn): Likewise.
--	* testsuite/libffi.call/cls_align_double.c (cls_struct_align_gn):
--	Likewise.
--	* testsuite/libffi.call/cls_align_float.c (cls_struct_align_gn):
--	Likewise.
--	* testsuite/libffi.call/cls_align_longdouble.c (cls_struct_align_gn):
--	Likewise.
--	* testsuite/libffi.call/cls_align_pointer.c (cls_struct_align_fn): Cast
--	void* to avoid compiler warning.
--	(main): Likewise.
--	(cls_struct_align_gn): Mark cif and userdata unused.
--	* testsuite/libffi.call/cls_align_sint16.c (cls_struct_align_gn):
--	Likewise.
--	* testsuite/libffi.call/cls_align_sint32.c (cls_struct_align_gn):
--	Likewise.
--	* testsuite/libffi.call/cls_align_sint64.c (cls_struct_align_gn):
--	Likewise.
--	* testsuite/libffi.call/cls_align_uint16.c (cls_struct_align_gn):
--	Likewise.
--	* testsuite/libffi.call/cls_align_uint32.c (cls_struct_align_gn):
--	Likewise.
--	* testsuite/libffi.call/cls_double.c (cls_ret_double_fn): Likewise.
--	* testsuite/libffi.call/cls_float.c (cls_ret_float_fn): Likewise.
--	* testsuite/libffi.call/cls_multi_schar.c (test_func_gn): Mark cif and
--	data unused.
--	(main): Cast res_call to silence gcc.
--	* testsuite/libffi.call/cls_multi_sshort.c (test_func_gn): Mark cif and
--	data unused.
--	(main): Cast res_call to silence gcc.
--	* testsuite/libffi.call/cls_multi_sshortchar.c (test_func_gn): Mark cif
--	and data unused.
--	(main): Cast res_call to silence gcc.
--	* testsuite/libffi.call/cls_multi_uchar.c (test_func_gn): Mark cif and
--	data unused.
--	(main): Cast res_call to silence gcc.
--	* testsuite/libffi.call/cls_multi_ushort.c (test_func_gn): Mark cif and
--	data unused.
--	(main): Cast res_call to silence gcc.
--	* testsuite/libffi.call/cls_multi_ushortchar.c (test_func_gn): Mark cif
--	and data unused.
--	(main): Cast res_call to silence gcc.
--	* testsuite/libffi.call/cls_schar.c (cls_ret_schar_fn): Mark cif and
--	userdata unused.
--	(cls_ret_schar_fn): Cast printf parameter to silence gcc.
--	* testsuite/libffi.call/cls_sint.c (cls_ret_sint_fn): Mark cif and
--	userdata unused.
--	(cls_ret_sint_fn): Cast printf parameter to silence gcc.
--	* testsuite/libffi.call/cls_sshort.c (cls_ret_sshort_fn): Mark cif and
--	userdata unused.
--	(cls_ret_sshort_fn): Cast printf parameter to silence gcc.
--	* testsuite/libffi.call/cls_uchar.c (cls_ret_uchar_fn):  Mark cif and
--	userdata unused.
--	(cls_ret_uchar_fn): Cast printf parameter to silence gcc.
--	* testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Mark cif and
--	userdata unused.
--	(cls_ret_uint_fn): Cast printf parameter to silence gcc.
--	* testsuite/libffi.call/cls_ulonglong.c (cls_ret_ulonglong_fn): Mark cif
--	and userdata unused.
--	* testsuite/libffi.call/cls_ushort.c (cls_ret_ushort_fn): Mark cif and
--	userdata unused.
--	(cls_ret_ushort_fn): Cast printf parameter to silence gcc.
--	* testsuite/libffi.call/float.c (floating): Remove unused parameter e.
--	* testsuite/libffi.call/float1.c (main): Remove unused variable i.
--	Cleanup white spaces.
--	* testsuite/libffi.call/negint.c (checking): Remove unused variable i.
--	* testsuite/libffi.call/nested_struct.c (cls_struct_combined_gn): Mark
--	cif and userdata unused.
--	* testsuite/libffi.call/nested_struct1.c (cls_struct_combined_gn):
--	Likewise.
--	* testsuite/libffi.call/nested_struct10.c (B_gn): Likewise.
--	* testsuite/libffi.call/nested_struct2.c (B_fn): Adjust printf
--	formatters to silence gcc.
--	(B_gn): Mark cif and userdata unused.
--	* testsuite/libffi.call/nested_struct3.c (B_gn): Mark cif and userdata
--	unused.
--	* testsuite/libffi.call/nested_struct4.c: Mention related PR.
--	(B_gn): Mark cif and userdata unused.
--	* testsuite/libffi.call/nested_struct5.c (B_gn): Mark cif and userdata
--	unused.
--	* testsuite/libffi.call/nested_struct6.c: Mention related PR.
--	(B_gn): Mark cif and userdata unused.
--	* testsuite/libffi.call/nested_struct7.c (B_gn): Mark cif and userdata
--	unused.
--	* testsuite/libffi.call/nested_struct8.c (B_gn): Likewise.
--	* testsuite/libffi.call/nested_struct9.c (B_gn): Likewise.
--	* testsuite/libffi.call/problem1.c (stub): Likewise.
--	* testsuite/libffi.call/pyobjc-tc.c (main): Cast the result to silence
--	gcc.
--	* testsuite/libffi.call/return_fl2.c (return_fl): Add the note mentioned
--	in the last commit for this test case in the test case itself.
--	* testsuite/libffi.call/closure_fn0.c (closure_test_fn0): Mark cif as
--	unused.
--	* testsuite/libffi.call/closure_fn1.c (closure_test_fn1): Likewise.
--	* testsuite/libffi.call/closure_fn2.c (closure_test_fn2): Likewise.
--	* testsuite/libffi.call/closure_fn3.c (closure_test_fn3): Likewise.
--	* testsuite/libffi.call/closure_fn4.c (closure_test_fn0): Likewise.
--	* testsuite/libffi.call/closure_fn5.c (closure_test_fn5): Likewise.
--	* testsuite/libffi.call/closure_fn6.c (closure_test_fn0): Likewise.
--
--2006-02-22  Kaz Kojima  <kkojima@gcc.gnu.org>
--
--	* src/sh/sysv.S: Fix register numbers in the FDE for
--	ffi_closure_SYSV.
--
--2006-02-20  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/libffi.call/return_fl2.c (return_fl): Remove static
--	declaration to avoid a false negative on ix86. See PR323.
--
--2006-02-18  Kaz Kojima  <kkojima@gcc.gnu.org>
--
--	* src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable
--	and cast integer to void * if needed.  Update the pointer to
--	the FP register saved area correctly.
--
--2006-02-17  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/libffi.call/nested_struct6.c: XFAIL this test until PR25630
--	is fixed.
--	* testsuite/libffi.call/nested_struct4.c: Likewise.
--
--2006-02-16  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/libffi.call/return_dbl.c: New test case.
--	* testsuite/libffi.call/return_dbl1.c: Likewise.
--	* testsuite/libffi.call/return_dbl2.c: Likewise.
--	* testsuite/libffi.call/return_fl.c: Likewise.
--	* testsuite/libffi.call/return_fl1.c: Likewise.
--	* testsuite/libffi.call/return_fl2.c: Likewise.
--	* testsuite/libffi.call/return_fl3.c: Likewise.
--	* testsuite/libffi.call/closure_fn6.c: Likewise.
--
--	* testsuite/libffi.call/nested_struct2.c: Remove ffi_type_mylong
--	definition.
--	* testsuite/libffi.call/ffitest.h: Add ffi_type_mylong definition
--	here to be used by other test cases too.
--
--	* testsuite/libffi.call/nested_struct10.c: New test case.
--	* testsuite/libffi.call/nested_struct9.c: Likewise.
--	* testsuite/libffi.call/nested_struct8.c: Likewise.
--	* testsuite/libffi.call/nested_struct7.c: Likewise.
--	* testsuite/libffi.call/nested_struct6.c: Likewise.
--	* testsuite/libffi.call/nested_struct5.c: Likewise.
--	* testsuite/libffi.call/nested_struct4.c: Likewise.
--
--2006-01-21  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* configure.ac: Enable libffi for sparc64-*-freebsd*.
--	* configure: Rebuilt.
--
--2006-01-18  Jakub Jelinek  <jakub@redhat.com>
--
--	* src/powerpc/sysv.S (smst_two_register): Don't call __ashldi3,
--	instead do the shifting inline.
--	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't compute %r5
--	shift count unconditionally.  Simplify load sequences for 1, 2, 3, 4
--	and 8 byte structs, for the remaining struct sizes don't call
--	__lshrdi3, instead do the shifting inline.
--
--2005-12-07  Thiemo Seufer  <ths@networkno.de>
--
--	* src/mips/ffitarget.h: Remove obsolete sgidefs.h include. Add
--	missing parentheses.
--	* src/mips/o32.S (ffi_call_O32): Code formatting. Define
--	and use A3_OFF, FP_OFF, RA_OFF. Micro-optimizations.
--	(ffi_closure_O32): Likewise, but with newly defined A3_OFF2,
--	A2_OFF2, A1_OFF2, A0_OFF2, RA_OFF2, FP_OFF2, S0_OFF2, GP_OFF2,
--	V1_OFF2, V0_OFF2, FA_1_1_OFF2, FA_1_0_OFF2, FA_0_1_OFF2,
--	FA_0_0_OFF2.
--	* src/mips/ffi.c (ffi_prep_args): Code formatting. Fix
--	endianness bugs.
--	(ffi_prep_closure): Improve trampoline instruction scheduling.
--	(ffi_closure_mips_inner_O32): Fix endianness bugs.
--
--2005-12-03  Alan Modra  <amodra@bigpond.net.au>
--
--	* src/powerpc/ffi.c: Formatting.
--	(ffi_prep_args_SYSV): Avoid possible aliasing problems by using unions.
--	(ffi_prep_args64): Likewise.
--
--2005-09-30  Geoffrey Keating  <geoffk@apple.com>
--
--	* testsuite/lib/libffi-dg.exp (libffi_target_compile): For
--	darwin, use -shared-libgcc not -lgcc_s, and explain why.
--
--2005-09-26  Tom Tromey  <tromey@redhat.com>
--
--	* testsuite/libffi.call/float1.c (value_type): New typedef.
--	(CANARY): New define.
--	(main): Check for result buffer overflow.
--	* src/powerpc/linux64.S: Handle linux64 long double returns.
--	* src/powerpc/ffi.c (FLAG_RETURNS_128BITS): New constant.
--	(ffi_prep_cif_machdep): Handle linux64 long double returns.
--
--2005-08-25  Alan Modra  <amodra@bigpond.net.au>
--
--	PR target/23404
--	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Correct placement of stack
--	homed fp args.
--	(ffi_status ffi_prep_cif_machdep): Correct stack sizing for same.
--
--2005-08-11  Jakub Jelinek  <jakub@redhat.com>
--
--	* configure.ac (HAVE_HIDDEN_VISIBILITY_ATTRIBUTE): New test.
--	(AH_BOTTOM): Add FFI_HIDDEN definition.
--	* configure: Rebuilt.
--	* fficonfig.h.in: Rebuilt.
--	* src/powerpc/ffi.c (hidden): Remove.
--	(ffi_closure_LINUX64, ffi_prep_args64, ffi_call_LINUX64,
--	ffi_closure_helper_LINUX64): Use FFI_HIDDEN instead of hidden.
--	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64,
--	.ffi_closure_LINUX64): Use FFI_HIDDEN instead of .hidden.
--	* src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): Remove,
--	add FFI_HIDDEN to its prototype.
--	(ffi_closure_SYSV_inner): New.
--	* src/x86/sysv.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New.
--	* src/x86/win32.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New.
--
--2005-08-10  Alfred M. Szmidt  <ams@gnu.org>
--
--	PR libffi/21819:
--	* configure: Rebuilt.
--	* configure.ac: Handle i*86-*-gnu*.
--
--2005-08-09  Jakub Jelinek  <jakub@redhat.com>
--
--	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Use
--	DW_CFA_offset_extended_sf rather than
--	DW_CFA_GNU_negative_offset_extended.
--	* src/powerpc/sysv.S (ffi_call_SYSV): Likewise.
--
--2005-07-22  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
--
--	* src/sh/sysv.S (ffi_call_SYSV): Stop argument popping correctly
--	on sh3.
--	(ffi_closure_SYSV): Change the stack layout for sh3 struct argument.
--	* src/sh/ffi.c (ffi_prep_args): Fix sh3 argument copy, when it is
--	partially on register.
--	(ffi_closure_helper_SYSV): Likewise.
--	(ffi_prep_cif_machdep): Don't set too many cif->flags.
--
--2005-07-20  Kaz Kojima  <kkojima@gcc.gnu.org>
--
--	* src/sh/ffi.c (ffi_call): Handle small structures correctly.
--	Remove empty line.
--	* src/sh64/ffi.c (simple_type): Remove.
--	(return_type): Handle small structures correctly.
--	(ffi_prep_args): Likewise.
--	(ffi_call): Likewise.
--	(ffi_closure_helper_SYSV): Likewise.
--	* src/sh64/sysv.S (ffi_call_SYSV): Handle 1, 2 and 4-byte return.
--	Emit position independent code if PIC and remove wrong datalabel
--	prefixes from EH data.
--
--2005-07-19  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* Makefile.am (nodist_libffi_la_SOURCES): Add POWERPC_FREEBSD.
--	* Makefile.in: Regenerate.
--	* include/Makefile.in: Likewise.
--	* testsuite/Makefile.in: Likewise.
--	* configure.ac: Add POWERPC_FREEBSD rules.
--	* configure: Regenerate.
--	* src/powerpc/ffitarget.h: Add POWERPC_FREEBSD rules.
--	(FFI_SYSV_TYPE_SMALL_STRUCT): Define.
--	* src/powerpc/ffi.c: Add flags to handle small structure returns
--	in ffi_call_SYSV.
--	(ffi_prep_cif_machdep): Handle small structures for SYSV 4 ABI.
--	Aka FFI_SYSV.
--	(ffi_closure_helper_SYSV): Likewise.
--	* src/powerpc/ppc_closure.S: Add return types for small structures.
--	* src/powerpc/sysv.S: Add bits to handle small structures for
--	final SYSV 4 ABI.
--
--2005-07-10  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/libffi.call/cls_5_1_byte.c: New test file.
--	* testsuite/libffi.call/cls_6_1_byte.c: Likewise.
--	* testsuite/libffi.call/cls_7_1_byte.c: Likewise.
--
--2005-07-05  Randolph Chung  <tausq@debian.org>
--
--	* src/pa/ffi.c (ffi_struct_type): Rename FFI_TYPE_SMALL_STRUCT1
--	as FFI_TYPE_SMALL_STRUCT3.  Break out handling for 5-7 byte
--	structures.  Kill compilation warnings.
--	(ffi_closure_inner_LINUX): Print return values as hex in debug
--	message.  Rename FFI_TYPE_SMALL_STRUCT1 as FFI_TYPE_SMALL_STRUCT3.
--	Properly handle 5-7 byte structure returns.
--	* src/pa/ffitarget.h (FFI_TYPE_SMALL_STRUCT1)
--	(FFI_TYPE_SMALL_STRUCT2): Remove.
--	(FFI_TYPE_SMALL_STRUCT3, FFI_TYPE_SMALL_STRUCT5)
--	(FFI_TYPE_SMALL_STRUCT6, FFI_TYPE_SMALL_STRUCT7): Define.
--	* src/pa/linux.S: Mark source file as using PA1.1 assembly.
--	(checksmst1, checksmst2): Remove.
--	(checksmst3): Optimize handling of 3-byte struct returns.
--	(checksmst567): Properly handle 5-7 byte struct returns.
--
--2005-06-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
--
--	PR libgcj/21943
--	* src/mips/n32.S: Enforce PIC code.
--	* src/mips/o32.S: Likewise.
--
--2005-06-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
--
--	* configure.ac: Treat i*86-*-solaris2.10 and up as X86_64.
--	* configure: Regenerate.
--
--2005-06-01  Alan Modra  <amodra@bigpond.net.au>
--
--	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't use JUMPTARGET
--	to call ffi_closure_helper_SYSV.  Append @local instead.
--	* src/powerpc/sysv.S (ffi_call_SYSV): Likewise for ffi_prep_args_SYSV.
--
--2005-05-17  Kelley Cook  <kcook@gcc.gnu.org>
--
--	* configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS.
--	Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF.
--	* Makefile.am (ACLOCAL_AMFLAGS): Remove -I ../config.
--	* aclocal.m4, configure, fficonfig.h.in, Makefile.in,
--	include/Makefile.in, testsuite/Makefile.in: Regenerate.
--
--2005-05-09  Mike Stump  <mrs@apple.com>
--
--	* configure: Regenerate.
--
--2005-05-08  Richard Henderson  <rth@redhat.com>
--
--	PR libffi/21285
--	* src/alpha/osf.S: Update unwind into to match code.
--
--2005-05-04  Andreas Degert <ad@papyrus-gmbh.de>
--	    Richard Henderson  <rth@redhat.com>
--
--	* src/x86/ffi64.c (ffi_prep_cif_machdep): Save sse-used flag in
--	bit 11 of flags.
--	(ffi_call): Mask return type field.  Pass ssecount to ffi_call_unix64.
--	(ffi_prep_closure): Set carry bit if sse-used flag set.
--	* src/x86/unix64.S (ffi_call_unix64): Add ssecount argument.
--	Only load sse registers if ssecount non-zero.
--	(ffi_closure_unix64): Only save sse registers if carry set on entry.
--
--2005-04-29  Ralf Corsepius  <ralf.corsepius@rtems.org>
--
--	* configure.ac: Add i*86-*-rtems*, sparc*-*-rtems*,
--	powerpc-*rtems*, arm*-*-rtems*, sh-*-rtems*.
--	* configure: Regenerate.
--
--2005-04-20  Hans-Peter Nilsson  <hp@axis.com>
--
--	* testsuite/lib/libffi-dg.exp (libffi-dg-test-1): In regsub use,
--	have Tcl8.3-compatible intermediate variable.
--
--2005-04-18  Simon Posnjak <simon.posnjak@siol.net>
--	    Hans-Peter Nilsson  <hp@axis.com>
--
--	* Makefile.am: Add CRIS support.
--	* configure.ac: Likewise.
--	* Makefile.in, configure, testsuite/Makefile.in,
--	include/Makefile.in: Regenerate.
--	* src/cris: New directory.
--	* src/cris/ffi.c, src/cris/sysv.S, src/cris/ffitarget.h: New files.
--	* src/prep_cif.c (ffi_prep_cif): Wrap in #ifndef __CRIS__.
--
--	* testsuite/lib/libffi-dg.exp (libffi-dg-test-1): Replace \n with
--	\r?\n in output tests.
--
--2005-04-12  Mike Stump  <mrs@apple.com>
--
--	* configure: Regenerate.
--
--2005-03-30  Hans Boehm  <Hans.Boehm@hp.com>
--
--	* src/ia64/ffitarget.h (ffi_arg): Use long long instead of DI.
--
--2005-03-30  Steve Ellcey  <sje@cup.hp.com>
--
--	* src/ia64/ffitarget.h (ffi_arg) ADD DI attribute.
--	(ffi_sarg) Ditto.
--	* src/ia64/unix.S (ffi_closure_unix): Extend gp
--	to 64 bits in ILP32 mode.
--	Load 64 bits even for short data.
--
--2005-03-23  Mike Stump  <mrs@apple.com>
--
--	* src/powerpc/darwin.S: Update for -m64 multilib.
--	* src/powerpc/darwin_closure.S: Likewise.
--
--2005-03-21  Zack Weinberg  <zack@codesourcery.com>
--
--	* configure.ac: Do not invoke TL_AC_GCC_VERSION.
--	Do not set tool_include_dir.
--	* aclocal.m4, configure, Makefile.in, testsuite/Makefile.in:
--	Regenerate.
--	* include/Makefile.am: Set gcc_version and toollibffidir.
--	* include/Makefile.in: Regenerate.
--
--2005-02-22  Andrew Haley  <aph@redhat.com>
--
--	* src/powerpc/ffi.c (ffi_prep_cif_machdep): Bump alignment to
--	odd-numbered register pairs for 64-bit integer types.
--
--2005-02-23  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	PR libffi/20104
--	* testsuite/libffi.call/return_ll1.c: New test case.
--
--2005-02-11  Janis Johnson  <janis187@us.ibm.com>
--
--	* testsuite/libffi.call/cls_align_longdouble.c: Remove dg-options.
--	* testsuite/libffi.call/float.c: Ditto.
--	* testsuite/libffi.call/float2.c: Ditto.
--	* testsuite/libffi.call/float3.c: Ditto.
--
--2005-02-08  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* src/frv/ffitarget.h: Remove PPC stuff which does not belong to frv.
--
--2005-01-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
--
--	* testsuite/libffi.special/special.exp (cxx_options): Add
--	-shared-libgcc.
--
--2004-12-31  Richard Henderson  <rth@redhat.com>
--
--	* src/types.c (FFI_AGGREGATE_TYPEDEF): Remove.
--	(FFI_TYPEDEF): Rename from FFI_INTEGRAL_TYPEDEF.  Replace size and
--	offset parameters with a type parameter; deduce size and structure
--	alignment.  Update all users.
--
--2004-12-31  Richard Henderson  <rth@redhat.com>
--
--	* src/types.c (FFI_TYPE_POINTER): Define with sizeof.
--	(FFI_TYPE_LONGDOUBLE): Fix for ia64.
--	* src/ia64/ffitarget.h (struct ffi_ia64_trampoline_struct): Move
--	into ffi_prep_closure.
--	* src/ia64/ia64_flags.h, src/ia64/ffi.c, src/ia64/unix.S: Rewrite
--	from scratch.
--
--2004-12-27  Richard Henderson  <rth@redhat.com>
--
--	* src/x86/unix64.S: Fix typo in unwind info.
--
--2004-12-25  Richard Henderson  <rth@redhat.com>
--
--	* src/x86/ffi64.c (struct register_args): Rename from stackLayout.
--	(enum x86_64_reg_class): Add X86_64_COMPLEX_X87_CLASS.
--	(merge_classes): Check for it.
--	(SSE_CLASS_P): New.
--	(classify_argument): Pass byte_offset by value; perform all updates
--	inside struct case.
--	(examine_argument): Add classes argument; handle
--	X86_64_COMPLEX_X87_CLASS.
--	(ffi_prep_args): Merge into ...
--	(ffi_call): ... here.  Share stack frame with ffi_call_unix64.
--	(ffi_prep_cif_machdep): Setup cif->flags for proper structure return.
--	(ffi_fill_return_value): Remove.
--	(ffi_prep_closure): Remove dead assert.
--	(ffi_closure_unix64_inner): Rename from ffi_closure_UNIX64_inner.
--	Rewrite to use struct register_args instead of va_list.  Create
--	flags for handling structure returns.
--	* src/x86/unix64.S: Remove dead strings.
--	(ffi_call_unix64): Rename from ffi_call_UNIX64.  Rewrite to share
--	stack frame with ffi_call.  Handle structure returns properly.
--	(float2sse, floatfloat2sse, double2sse): Remove.
--	(sse2float, sse2double, sse2floatfloat): Remove.
--	(ffi_closure_unix64): Rename from ffi_closure_UNIX64.  Rewrite
--	to handle structure returns properly.
--
--2004-12-08  David Edelsohn  <edelsohn@gnu.org>
--
--	* Makefile.am (AM_MAKEFLAGS): Remove duplicate LIBCFLAGS and
--	PICFLAG.
--	* Makefile.in: Regenerated.
--
--2004-12-02  Richard Sandiford  <rsandifo@redhat.com>
--
--	* configure.ac: Use TL_AC_GCC_VERSION to set gcc_version.
--	* configure, aclocal.m4, Makefile.in: Regenerate.
--	* include/Makefile.in, testsuite/Makefile.in: Regenerate.
--
--2004-11-29  Kelley Cook  <kcook@gcc.gnu.org>
--
--	* configure: Regenerate for libtool change.
--
--2004-11-25  Kelley Cook  <kcook@gcc.gnu.org>
--
--	* configure: Regenerate for libtool reversion.
--
--2004-11-24  Kelley Cook  <kcook@gcc.gnu.org>
--
--	* configure: Regenerate for libtool change.
--
--2004-11-23  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
--
--	* testsuite/lib/libffi-dg.exp: Use new procs in target-libpath.exp.
--
--2004-11-23  Richard Sandiford  <rsandifo@redhat.com>
--
--	* src/mips/o32.S (ffi_call_O32, ffi_closure_O32): Use jalr instead
--	of jal.  Use an absolute encoding for the frame information.
--
--2004-11-23  Kelley Cook  <kcook@gcc.gnu.org>
--
--	* Makefile.am: Remove no-dependencies.  Add ACLOCAL_AMFLAGS.
--	* acinclude.m4: Delete logic for sincludes.
--	* aclocal.m4, Makefile.in, configure: Regenerate.
--	* include/Makefile: Likewise.
--	* testsuite/Makefile: Likewise.
--
--2004-11-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
--
--	* src/sparc/ffi.c (ffi_prep_closure): Align doubles and 64-bit integers
--	on a 8-byte boundary.
--	* src/sparc/v8.S (ffi_closure_v8): Reserve frame space for arguments.
--
--2004-10-27  Richard Earnshaw  <rearnsha@arm.com>
--
--	* src/arm/ffi.c (ffi_prep_cif_machdep): Handle functions that return
--	long long values.  Round stack allocation to a multiple of 8 bytes
--	for ATPCS compatibility.
--	* src/arm/sysv.S (ffi_call_SYSV): Rework to avoid use of APCS register
--	names.  Handle returning long long types.  Add Thumb and interworking
--	support.  Improve soft-float code.
--
--2004-10-27  Richard Earnshaw  <rearnsha@arm.com>
--
--	* testsuite/lib/libffi-db.exp (load_gcc_lib): New function.
--	(libffi_exit): New function.
--	(libffi_init): Build the testglue wrapper if needed.
--
--2004-10-25  Eric Botcazou  <ebotcazou@libertysurf.fr>
--
--	PR other/18138
--	* testsuite/lib/libffi-dg.exp: Accept more than one multilib libgcc.
--
--2004-10-25  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
--
--	* src/m32r/libffitarget.h (FFI_CLOSURES): Set to 0.
--
--2004-10-20  Kaz Kojima  <kkojima@gcc.gnu.org>
--
--	* src/sh/sysv.S (ffi_call_SYSV): Don't align for double data.
--	* testsuite/libffi.call/float3.c: New test case.
--
--2004-10-18  Kaz Kojima  <kkojima@gcc.gnu.org>
--
--	* src/sh/ffi.c (ffi_prep_closure): Set T bit in trampoline for
--	the function returning a structure pointed with R2.
--	* src/sh/sysv.S (ffi_closure_SYSV): Use R2 as the pointer to
--	the structure return value if T bit set.  Emit position
--	independent code and EH data if PIC.
--
--2004-10-13  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>
--
--	* Makefile.am: Add m32r support.
--	* configure.ac: Likewise.
--	* Makefile.in: Regenerate.
--	* confiugre: Regenerate.
--	* src/types.c: Add m32r port to FFI_INTERNAL_TYPEDEF
--	(uint64, sint64, double, longdouble)
--	* src/m32r: New directory.
--	* src/m32r/ffi.c: New file.
--	* src/m32r/sysv.S: Likewise.
--	* src/m32r/ffitarget.h: Likewise.
--
--2004-10-02  Kaz Kojima  <kkojima@gcc.gnu.org>
--
--	* testsuite/libffi.call/negint.c: New test case.
--
--2004-09-14  H.J. Lu  <hongjiu.lu@intel.com>
--
--	PR libgcj/17465
--	* testsuite/lib/libffi-dg.exp: Don't use global ld_library_path.
--	Set up LD_LIBRARY_PATH, SHLIB_PATH, LD_LIBRARYN32_PATH,
--	LD_LIBRARY64_PATH, LD_LIBRARY_PATH_32, LD_LIBRARY_PATH_64 and
--	DYLD_LIBRARY_PATH.
--
--2004-09-05  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/libffi.call/many_win32.c: Remove whitespaces.
--	* testsuite/libffi.call/promotion.c: Likewise.
--	* testsuite/libffi.call/return_ll.c: Remove unused var. Cleanup
--	whitespaces.
--	* testsuite/libffi.call/return_sc.c: Likewise.
--	* testsuite/libffi.call/return_uc.c: Likewise.
--
--2004-09-05  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* src/powerpc/darwin.S: Fix comments and identation.
--	* src/powerpc/darwin_closure.S: Likewise.
--
--2004-09-02  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* src/powerpc/ffi_darwin.c: Add flag for longdouble return values.
--	(ffi_prep_args): Handle longdouble arguments.
--	(ffi_prep_cif_machdep): Set flags for longdouble. Calculate space for
--	longdouble.
--	(ffi_closure_helper_DARWIN): Add closure handling for longdouble.
--	* src/powerpc/darwin.S (_ffi_call_DARWIN): Add handling of longdouble
--	values.
--	* src/powerpc/darwin_closure.S (_ffi_closure_ASM): Likewise.
--	* src/types.c: Defined longdouble size and alignment for darwin.
--
--2004-09-02  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* src/powerpc/aix.S: Remove whitespaces.
--	* src/powerpc/aix_closure.S: Likewise.
--	* src/powerpc/asm.h: Likewise.
--	* src/powerpc/ffi.c: Likewise.
--	* src/powerpc/ffitarget.h: Likewise.
--	* src/powerpc/linux64.S: Likewise.
--	* src/powerpc/linux64_closure.S: Likewise.
--	* src/powerpc/ppc_closure.S: Likewise.
--	* src/powerpc/sysv.S: Likewise.
--
--2004-08-30  Anthony Green  <green@redhat.com>
--
--	* Makefile.am: Add frv support.
--	* Makefile.in, testsuite/Makefile.in: Rebuilt.
--	* configure.ac: Read configure.host.
--	* configure.in: Read configure.host.
--	* configure.host: New file.  frv-elf needs libgloss.
--	* include/ffi.h.in: Force ffi_closure to have a nice big (8)
--	alignment.  This is needed to frv and shouldn't harm the others.
--	* include/ffi_common.h (ALIGN_DOWN): New macro.
--	* src/frv/ffi.c, src/frv/ffitarget.h, src/frv/eabi.S: New files.
--
--2004-08-24  David Daney  <daney@avtrex.com>
--
--	* testsuite/libffi.call/closure_fn0.c: Xfail mips64* instead of mips*.
--	* testsuite/libffi.call/closure_fn1.c: Likewise.
--	* testsuite/libffi.call/closure_fn2.c  Likewise.
--	* testsuite/libffi.call/closure_fn3.c: Likewise.
--	* testsuite/libffi.call/closure_fn4.c: Likewise.
--	* testsuite/libffi.call/closure_fn5.c: Likewise.
--	* testsuite/libffi.call/cls_18byte.c: Likewise.
--	* testsuite/libffi.call/cls_19byte.c: Likewise.
--	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
--	* testsuite/libffi.call/cls_20byte.c: Likewise.
--	* testsuite/libffi.call/cls_20byte1.c: Likewise.
--	* testsuite/libffi.call/cls_24byte.c: Likewise.
--	* testsuite/libffi.call/cls_2byte.c: Likewise.
--	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
--	* testsuite/libffi.call/cls_3byte1.c: Likewise.
--	* testsuite/libffi.call/cls_3byte2.c: Likewise.
--	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
--	* testsuite/libffi.call/cls_4byte.c: Likewise.
--	* testsuite/libffi.call/cls_64byte.c: Likewise.
--	* testsuite/libffi.call/cls_6byte.c: Likewise.
--	* testsuite/libffi.call/cls_7byte.c: Likewise.
--	* testsuite/libffi.call/cls_8byte.c: Likewise.
--	* testsuite/libffi.call/cls_9byte1.c: Likewise.
--	* testsuite/libffi.call/cls_9byte2.c: Likewise.
--	* testsuite/libffi.call/cls_align_double.c: Likewise.
--	* testsuite/libffi.call/cls_align_float.c: Likewise.
--	* testsuite/libffi.call/cls_align_longdouble.c: Likewise.
--	* testsuite/libffi.call/cls_align_pointer.c: Likewise.
--	* testsuite/libffi.call/cls_align_sint16.c: Likewise.
--	* testsuite/libffi.call/cls_align_sint32.c: Likewise.
--	* testsuite/libffi.call/cls_align_sint64.c: Likewise.
--	* testsuite/libffi.call/cls_align_uint16.c: Likewise.
--	* testsuite/libffi.call/cls_align_uint32.c: Likewise.
--	* testsuite/libffi.call/cls_align_uint64.c: Likewise.
--	* testsuite/libffi.call/cls_double.c: Likewise.
--	* testsuite/libffi.call/cls_float.c: Likewise.
--	* testsuite/libffi.call/cls_multi_schar.c: Likewise.
--	* testsuite/libffi.call/cls_multi_sshort.c: Likewise.
--	* testsuite/libffi.call/cls_multi_sshortchar.c: Likewise.
--	* testsuite/libffi.call/cls_multi_uchar.c: Likewise.
--	* testsuite/libffi.call/cls_multi_ushort.c: Likewise.
--	* testsuite/libffi.call/cls_multi_ushortchar.c: Likewise.
--	* testsuite/libffi.call/cls_schar.c: Likewise.
--	* testsuite/libffi.call/cls_sint.c: Likewise.
--	* testsuite/libffi.call/cls_sshort.c: Likewise.
--	* testsuite/libffi.call/cls_uchar.c: Likewise.
--	* testsuite/libffi.call/cls_uint.c: Likewise.
--	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
--	* testsuite/libffi.call/cls_ushort.c: Likewise.
--	* testsuite/libffi.call/nested_struct.c: Likewise.
--	* testsuite/libffi.call/nested_struct1.c: Likewise.
--	* testsuite/libffi.call/nested_struct2.c: Likewise.
--	* testsuite/libffi.call/nested_struct3.c: Likewise.
--	* testsuite/libffi.call/problem1.c: Likewise.
--	* testsuite/libffi.special/unwindtest.cc: Likewise.
--	* testsuite/libffi.call/cls_12byte.c: Likewise and set return value
--	to zero.
--	* testsuite/libffi.call/cls_16byte.c: Likewise.
--	* testsuite/libffi.call/cls_5byte.c: Likewise.
--
--2004-08-23  David Daney <daney@avtrex.com>
--
--	PR libgcj/13141
--	* src/mips/ffitarget.h (FFI_O32_SOFT_FLOAT): New ABI.
--	* src/mips/ffi.c (ffi_prep_args): Fix alignment calculation.
--	(ffi_prep_cif_machdep): Handle FFI_O32_SOFT_FLOAT floating point
--	parameters and return types.
--	(ffi_call): Handle FFI_O32_SOFT_FLOAT ABI.
--	(ffi_prep_closure): Ditto.
--	(ffi_closure_mips_inner_O32): Handle FFI_O32_SOFT_FLOAT ABI, fix
--	alignment calculations.
--	* src/mips/o32.S (ffi_closure_O32): Don't use floating point
--	instructions if FFI_O32_SOFT_FLOAT, make stack frame ABI compliant.
--
--2004-08-14  Casey Marshall <csm@gnu.org>
--
--	* src/mips/ffi.c (ffi_pref_cif_machdep): set `cif->flags' to
--	contain `FFI_TYPE_UINT64' as return type for any 64-bit
--	integer (O32 ABI only).
--	(ffi_prep_closure): new function.
--	(ffi_closure_mips_inner_O32): new function.
--	* src/mips/ffitarget.h: Define `FFI_CLOSURES' and
--	`FFI_TRAMPOLINE_SIZE' appropriately if the ABI is o32.
--	* src/mips/o32.S (ffi_call_O32): add labels for .eh_frame. Return
--	64 bit integers correctly.
--	(ffi_closure_O32): new function.
--	Added DWARF-2 unwind info for both functions.
--
--2004-08-10  Andrew Haley  <aph@redhat.com>
--
--	* src/x86/ffi64.c (ffi_prep_args ): 8-align all stack arguments.
--
--2004-08-01  Robert Millan  <robertmh@gnu.org>
--
--	* configure.ac: Detect knetbsd-gnu and kfreebsd-gnu.
--	* configure: Regenerate.
--
--2004-07-30  Maciej W. Rozycki  <macro@linux-mips.org>
--
--	* acinclude.m4 (AC_FUNC_MMAP_BLACKLIST): Check for <sys/mman.h>
--	and mmap() explicitly instead of relying on preset autoconf cache
--	variables.
--	* aclocal.m4: Regenerate.
--	* configure: Regenerate.
--
--2004-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
--
--	* src/s390/ffi.c (ffi_prep_args): Fix C aliasing violation.
--	(ffi_check_float_struct): Remove unused prototype.
--
--2004-06-30  Geoffrey Keating  <geoffk@apple.com>
--
--	* src/powerpc/ffi_darwin.c (flush_icache): ';' is a comment
--	character on Darwin, use '\n\t' instead.
--
--2004-06-26  Matthias Klose  <doko@debian.org>
--
--	* libtool-version: Fix typo in revision/age.
--
--2004-06-17  Matthias Klose  <doko@debian.org>
--
--	* libtool-version: New.
--	* Makefile.am (libffi_la_LDFLAGS): Use -version-info for soname.
--	* Makefile.in: Regenerate.
--
--2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
--
--	* Makefile.am: Remove useless multilib rules.
--	* Makefile.in: Regenerate.
--	* aclocal.m4: Regenerate with automake 1.8.5.
--	* configure.ac: Remove useless multilib configury.
--	* configure: Regenerate.
--
--2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
--
--	* .cvsignore: New file.
--
--2004-06-10  Jakub Jelinek  <jakub@redhat.com>
--
--	* src/ia64/unix.S (ffi_call_unix): Insert group barrier break
--	fp_done.
--	(ffi_closure_UNIX): Fix f14/f15 adjustment if FLOAT_SZ is ever
--	changed from 8.
--
--2004-06-06  Sean McNeil  <sean@mcneil.com>
--
--	* configure.ac: Add x86_64-*-freebsd* support.
--	* configure: Regenerate.
--
--2004-04-26  Joe Buck <jbuck@welsh-buck.org>
--
--	Bug 15093
--	* configure.ac: Test for existence of mmap and sys/mman.h before
--	checking blacklist.  Fix suggested by Jim Wilson.
--	* configure: Regenerate.
--
--2004-04-26  Matt Austern  <austern@apple.com>
--
--	* src/powerpc/darwin.S: Go through a non-lazy pointer for initial
--	FDE location.
--	* src/powerpc/darwin_closure.S: Likewise.
--
--2004-04-24  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/libffi.call/cls_multi_schar.c (main): Fix initialization
--	error. Reported by Thomas Heller <theller@python.net>.
--	* testsuite/libffi.call/cls_multi_sshort.c (main): Likewise.
--	* testsuite/libffi.call/cls_multi_ushort.c (main): Likewise.
--
--2004-03-20  Matthias Klose  <doko@debian.org>
--
--	* src/pa/linux.S: Fix typo.
--
--2004-03-19  Matthias Klose  <doko@debian.org>
--
--	* Makefile.am: Update.
--	* Makefile.in: Regenerate.
--	* src/pa/ffi.h.in: Remove.
--	* src/pa/ffitarget.h: New file.
--
--2004-02-10  Randolph Chung  <tausq@debian.org>
--
--	* Makefile.am: Add PA support.
--	* Makefile.in: Regenerate.
--	* include/Makefile.in: Regenerate.
--	* configure.ac: Add PA target.
--	* configure: Regenerate.
--	* src/pa/ffi.c: New file.
--	* src/pa/ffi.h.in: Add PA support.
--	* src/pa/linux.S: New file.
--	* prep_cif.c: Add PA support.
--
--2004-03-16  Hosaka Yuji  <hos@tamanegi.org>
--
--	* src/types.c: Fix alignment size of X86_WIN32 case int64 and
--	double.
--	* src/x86/ffi.c (ffi_prep_args): Replace ecif->cif->rtype->type
--	with ecif->cif->flags.
--	(ffi_call, ffi_prep_incoming_args_SYSV): Replace cif->rtype->type
--	with cif->flags.
--	(ffi_prep_cif_machdep): Add X86_WIN32 struct case.
--	(ffi_closure_SYSV): Add 1 or 2-bytes struct case for X86_WIN32.
--	* src/x86/win32.S (retstruct1b, retstruct2b, sc_retstruct1b,
--	sc_retstruct2b): Add for 1 or 2-bytes struct case.
--
--2004-03-15 Kelley Cook <kcook@gcc.gnu.org>
--
--	* configure.in: Rename file to ...
--	* configure.ac: ... this.
--	* fficonfig.h.in: Regenerate.
--	* Makefile.in: Regenerate.
--	* include/Makefile.in: Regenerate.
--	* testsuite/Makefile.in: Regenerate.
--
--2004-03-12  Matt Austern  <austern@apple.com>
--
--	* src/powerpc/darwin.S: Fix EH information so it corresponds to
--	changes in EH format resulting from addition of linkonce support.
--	* src/powerpc/darwin_closure.S: Likewise.
--
--2004-03-11  Andreas Tobler  <a.tobler@schweiz.ch>
--	    Paolo Bonzini  <bonzini@gnu.org>
--
--	* Makefile.am (AUTOMAKE_OPTIONS): Set them.
--	Remove VPATH. Remove rules for object files. Remove multilib support.
--	(AM_CCASFLAGS): Add.
--	* configure.in (AC_CONFIG_HEADERS): Relace AM_CONFIG_HEADER.
--	(AC_PREREQ): Bump version to 2.59.
--	(AC_INIT): Fill with version info and bug address.
--	(ORIGINAL_LD_FOR_MULTILIBS): Remove.
--	(AM_ENABLE_MULTILIB): Use this instead of AC_ARG_ENABLE.
--	De-precious CC so that the right flags are passed down to multilibs.
--	(AC_MSG_ERROR): Replace obsolete macro AC_ERROR.
--	(AC_CONFIG_FILES): Replace obsolete macro AC_LINK_FILES.
--	(AC_OUTPUT): Reorganize the output with AC_CONFIG_COMMANDS.
--	* configure: Rebuilt.
--	* aclocal.m4: Likewise.
--	* Makefile.in, include/Makefile.in, testsuite/Makefile.in: Likewise.
--	* fficonfig.h.in: Likewise.
--
--2004-03-11  Andreas Schwab  <schwab@suse.de>
--
--	* src/ia64/ffi.c (ffi_prep_incoming_args_UNIX): Get floating point
--	arguments from fp registers only for the first 8 parameter slots.
--	Don't convert a float parameter when passed in memory.
--
--2004-03-09  Hans-Peter Nilsson  <hp@axis.com>
--
--	* configure: Regenerate for config/accross.m4 correction.
--
--2004-02-25  Matt Kraai  <kraai@alumni.cmu.edu>
--
--	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Change
--	ecif->cif->bytes to bytes.
--	(ffi_prep_cif_machdep): Add braces around nested if statement.
--
--2004-02-09  Alan Modra  <amodra@bigpond.net.au>
--
--	* src/types.c (pointer): POWERPC64 has 8 byte pointers.
--
--	* src/powerpc/ffi.c (ffi_prep_args64): Correct long double handling.
--	(ffi_closure_helper_LINUX64): Fix typo.
--	* testsuite/libffi.call/cls_align_longdouble.c: Pass -mlong-double-128
--	for powerpc64-*-*.
--	* testsuite/libffi.call/float.c: Likewise.
--	* testsuite/libffi.call/float2.c: Likewise.
--
--2004-02-08  Alan Modra  <amodra@bigpond.net.au>
--
--	* src/powerpc/ffi.c (ffi_prep_cif_machdep <FFI_LINUX64>): Correct
--	long double function return and long double arg handling.
--	(ffi_closure_helper_LINUX64): Formatting.  Delete unused "ng" var.
--	Use "end_pfr" instead of "nf".  Correct long double handling.
--	Localise "temp".
--	* src/powerpc/linux64.S (ffi_call_LINUX64): Save f2 long double
--	return value.
--	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Allocate
--	space for long double return value.  Adjust stack frame and offsets.
--	Load f2 long double return.
--
--2004-02-07  Alan Modra  <amodra@bigpond.net.au>
--
--	* src/types.c: Use 16 byte long double for POWERPC64.
--
--2004-01-25  Eric Botcazou  <ebotcazou@libertysurf.fr>
--
--	* src/sparc/ffi.c (ffi_prep_args_v9): Shift the parameter array
--	when the structure return address is passed in %o0.
--	(ffi_V9_return_struct): Rename into ffi_v9_layout_struct.
--	(ffi_v9_layout_struct): Align the field following a nested structure
--	on a word boundary.  Use memmove instead of memcpy.
--	(ffi_call): Update call to ffi_V9_return_struct.
--	(ffi_prep_closure): Define 'ctx' only for V8.
--	(ffi_closure_sparc_inner): Clone into ffi_closure_sparc_inner_v8
--	and ffi_closure_sparc_inner_v9.
--	(ffi_closure_sparc_inner_v8): Return long doubles by reference.
--	Always skip the structure return address.  For structures and long
--	doubles, copy the argument directly.
--	(ffi_closure_sparc_inner_v9): Skip the structure return address only
--	if required.  Shift the maximum floating-point slot accordingly.  For
--	big structures, copy the argument directly; otherwise, left-justify the
--	argument and call ffi_v9_layout_struct to lay out the structure on
--	the stack.
--	* src/sparc/v8.S: Undef STACKFRAME before defining it.
--	(ffi_closure_v8): Pass the structure return address.  Update call to
--	ffi_closure_sparc_inner_v8.  Short-circuit FFI_TYPE_INT handling.
--	Skip the 'unimp' insn when returning long doubles and structures.
--	* src/sparc/v9.S: Undef STACKFRAME before defining it.
--	(ffi_closure_v9): Increase the frame size by 2 words.  Short-circuit
--	FFI_TYPE_INT handling.  Load structures both in integers and
--	floating-point registers on return.
--	* README: Update status of the SPARC port.
--
--2004-01-24  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/libffi.call/pyobjc-tc.c (main): Treat result value
--	as of type ffi_arg.
--	* testsuite/libffi.call/struct3.c (main): Fix CHECK.
--
--2004-01-22  Ulrich Weigand  <uweigand@de.ibm.com>
--
--	* testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Treat result
--	value as of type ffi_arg, not unsigned int.
--
--2004-01-21  Michael Ritzert  <ritzert@t-online.de>
--
--	* ffi64.c (ffi_prep_args): Cast the RHS of an assignment instead
--	of the LHS.
--
--2004-01-12  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_32 for
--	Solaris.
--
--2004-01-08  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
--
--	* testsuite/libffi.call/ffitest.h (allocate_mmap): Cast MAP_FAILED
--	to void *.
--
--2003-12-10  Richard Henderson  <rth@redhat.com>
--
--	* testsuite/libffi.call/cls_align_pointer.c: Cast pointers to
--	size_t instead of int.
--
--2003-12-04  Hosaka Yuji  <hos@tamanegi.org>
--
--	* testsuite/libffi.call/many_win32.c: Include <float.h>.
--	* testsuite/libffi.call/many_win32.c (main): Replace variable
--	int i with unsigned long ul.
--
--	* testsuite/libffi.call/cls_align_uint64.c: New test case.
--	* testsuite/libffi.call/cls_align_sint64.c: Likewise.
--	* testsuite/libffi.call/cls_align_uint32.c: Likewise.
--	* testsuite/libffi.call/cls_align_sint32.c: Likewise.
--	* testsuite/libffi.call/cls_align_uint16.c: Likewise.
--	* testsuite/libffi.call/cls_align_sint16.c: Likewise.
--	* testsuite/libffi.call/cls_align_float.c: Likewise.
--	* testsuite/libffi.call/cls_align_double.c: Likewise.
--	* testsuite/libffi.call/cls_align_longdouble.c: Likewise.
--	* testsuite/libffi.call/cls_align_pointer.c: Likewise.
--
--2003-12-02  Hosaka Yuji  <hos@tamanegi.org>
--
--	PR other/13221
--	* src/x86/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV):
--	Align arguments to 32 bits.
--
--2003-12-01  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	PR other/13221
--	* testsuite/libffi.call/cls_multi_sshort.c: New test case.
--	* testsuite/libffi.call/cls_multi_sshortchar.c: Likewise.
--	* testsuite/libffi.call/cls_multi_uchar.c: Likewise.
--	* testsuite/libffi.call/cls_multi_schar.c: Likewise.
--	* testsuite/libffi.call/cls_multi_ushortchar.c: Likewise.
--	* testsuite/libffi.call/cls_multi_ushort.c: Likewise.
--
--	* testsuite/libffi.special/unwindtest.cc: Cosmetics.
--
--2003-11-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
--
--	* testsuite/libffi.call/ffitest.h: Include <fcntl.h>.
--	* testsuite/libffi.special/ffitestcxx.h: Likewise.
--
--2003-11-22  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* Makefile.in: Rebuilt.
--	* configure: Likewise.
--	* testsuite/libffi.special/unwindtest.cc: Convert the mmap to
--	the right type.
--
--2003-11-21  Andreas Jaeger  <aj@suse.de>
--	    Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* acinclude.m4: Add AC_FUNC_MMAP_BLACKLIST.
--	* configure.in: Call AC_FUNC_MMAP_BLACKLIST.
--	* Makefile.in: Rebuilt.
--	* aclocal.m4: Likewise.
--	* configure: Likewise.
--	* fficonfig.h.in: Likewise.
--	* testsuite/lib/libffi-dg.exp: Add include dir.
--	* testsuite/libffi.call/ffitest.h: Add MMAP definitions.
--	* testsuite/libffi.special/ffitestcxx.h: Likewise.
--	* testsuite/libffi.call/closure_fn0.c: Use MMAP functionality
--	for ffi_closure if available.
--	* testsuite/libffi.call/closure_fn1.c: Likewise.
--	* testsuite/libffi.call/closure_fn2.c: Likewise.
--	* testsuite/libffi.call/closure_fn3.c: Likewise.
--	* testsuite/libffi.call/closure_fn4.c: Likewise.
--	* testsuite/libffi.call/closure_fn5.c: Likewise.
--	* testsuite/libffi.call/cls_12byte.c: Likewise.
--	* testsuite/libffi.call/cls_16byte.c: Likewise.
--	* testsuite/libffi.call/cls_18byte.c: Likewise.
--	* testsuite/libffi.call/cls_19byte.c: Likewise.
--	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
--	* testsuite/libffi.call/cls_20byte.c: Likewise.
--	* testsuite/libffi.call/cls_20byte1.c: Likewise.
--	* testsuite/libffi.call/cls_24byte.c: Likewise.
--	* testsuite/libffi.call/cls_2byte.c: Likewise.
--	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
--	* testsuite/libffi.call/cls_3byte1.c: Likewise.
--	* testsuite/libffi.call/cls_3byte2.c: Likewise.
--	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
--	* testsuite/libffi.call/cls_4byte.c: Likewise.
--	* testsuite/libffi.call/cls_5byte.c: Likewise.
--	* testsuite/libffi.call/cls_64byte.c: Likewise.
--	* testsuite/libffi.call/cls_6byte.c: Likewise.
--	* testsuite/libffi.call/cls_7byte.c: Likewise.
--	* testsuite/libffi.call/cls_8byte.c: Likewise.
--	* testsuite/libffi.call/cls_9byte1.c: Likewise.
--	* testsuite/libffi.call/cls_9byte2.c: Likewise.
--	* testsuite/libffi.call/cls_double.c: Likewise.
--	* testsuite/libffi.call/cls_float.c: Likewise.
--	* testsuite/libffi.call/cls_schar.c: Likewise.
--	* testsuite/libffi.call/cls_sint.c: Likewise.
--	* testsuite/libffi.call/cls_sshort.c: Likewise.
--	* testsuite/libffi.call/cls_uchar.c: Likewise.
--	* testsuite/libffi.call/cls_uint.c: Likewise.
--	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
--	* testsuite/libffi.call/cls_ushort.c: Likewise.
--	* testsuite/libffi.call/nested_struct.c: Likewise.
--	* testsuite/libffi.call/nested_struct1.c: Likewise.
--	* testsuite/libffi.call/nested_struct2.c: Likewise.
--	* testsuite/libffi.call/nested_struct3.c: Likewise.
--	* testsuite/libffi.call/problem1.c: Likewise.
--	* testsuite/libffi.special/unwindtest.cc: Likewise.
--
--2003-11-20  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/lib/libffi-dg.exp: Make the -lgcc_s conditional.
--
--2003-11-19  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/lib/libffi-dg.exp: Add DYLD_LIBRARY_PATH for darwin.
--	Add -lgcc_s to additional flags.
--
--2003-11-12  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* configure.in, include/Makefile.am: PR libgcj/11147, install
--	the ffitarget.h header file in a gcc versioned and target
--	dependent place.
--	* configure: Regenerated.
--	* Makefile.in, include/Makefile.in: Likewise.
--	* testsuite/Makefile.in: Likewise.
--
--2003-11-09  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/libffi.call/closure_fn0.c: Print result and check
--	with dg-output to make debugging easier.
--	* testsuite/libffi.call/closure_fn1.c: Likewise.
--	* testsuite/libffi.call/closure_fn2.c: Likewise.
--	* testsuite/libffi.call/closure_fn3.c: Likewise.
--	* testsuite/libffi.call/closure_fn4.c: Likewise.
--	* testsuite/libffi.call/closure_fn5.c: Likewise.
--	* testsuite/libffi.call/cls_12byte.c: Likewise.
--	* testsuite/libffi.call/cls_16byte.c: Likewise.
--	* testsuite/libffi.call/cls_18byte.c: Likewise.
--	* testsuite/libffi.call/cls_19byte.c: Likewise.
--	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
--	* testsuite/libffi.call/cls_20byte.c: Likewise.
--	* testsuite/libffi.call/cls_20byte1.c: Likewise.
--	* testsuite/libffi.call/cls_24byte.c: Likewise.
--	* testsuite/libffi.call/cls_2byte.c: Likewise.
--	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
--	* testsuite/libffi.call/cls_3byte1.c: Likewise.
--	* testsuite/libffi.call/cls_3byte2.c: Likewise.
--	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
--	* testsuite/libffi.call/cls_4byte.c: Likewise.
--	* testsuite/libffi.call/cls_5byte.c: Likewise.
--	* testsuite/libffi.call/cls_64byte.c: Likewise.
--	* testsuite/libffi.call/cls_6byte.c: Likewise.
--	* testsuite/libffi.call/cls_7byte.c: Likewise.
--	* testsuite/libffi.call/cls_8byte.c: Likewise.
--	* testsuite/libffi.call/cls_9byte1.c: Likewise.
--	* testsuite/libffi.call/cls_9byte2.c: Likewise.
--	* testsuite/libffi.call/cls_double.c: Likewise.
--	* testsuite/libffi.call/cls_float.c: Likewise.
--	* testsuite/libffi.call/cls_schar.c: Likewise.
--	* testsuite/libffi.call/cls_sint.c: Likewise.
--	* testsuite/libffi.call/cls_sshort.c: Likewise.
--	* testsuite/libffi.call/cls_uchar.c: Likewise.
--	* testsuite/libffi.call/cls_uint.c: Likewise.
--	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
--	* testsuite/libffi.call/cls_ushort.c: Likewise.
--	* testsuite/libffi.call/problem1.c: Likewise.
--
--	* testsuite/libffi.special/unwindtest.cc: Make ffi_closure
--	static.
--
--2003-11-08  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/libffi.call/cls_9byte2.c: New test case.
--	* testsuite/libffi.call/cls_9byte1.c: Likewise.
--	* testsuite/libffi.call/cls_64byte.c: Likewise.
--	* testsuite/libffi.call/cls_20byte1.c: Likewise.
--	* testsuite/libffi.call/cls_19byte.c: Likewise.
--	* testsuite/libffi.call/cls_18byte.c: Likewise.
--	* testsuite/libffi.call/closure_fn4.c: Likewise.
--	* testsuite/libffi.call/closure_fn5.c: Likewise.
--	* testsuite/libffi.call/cls_schar.c: Likewise.
--	* testsuite/libffi.call/cls_sint.c: Likewise.
--	* testsuite/libffi.call/cls_sshort.c: Likewise.
--	* testsuite/libffi.call/nested_struct2.c: Likewise.
--	* testsuite/libffi.call/nested_struct3.c: Likewise.
--
--2003-11-08  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/libffi.call/cls_double.c: Do a check on the result.
--	* testsuite/libffi.call/cls_uchar.c: Likewise.
--	* testsuite/libffi.call/cls_uint.c: Likewise.
--	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
--	* testsuite/libffi.call/cls_ushort.c: Likewise.
--	* testsuite/libffi.call/return_sc.c: Cleanup whitespaces.
--
--2003-11-06  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* src/prep_cif.c (ffi_prep_cif): Move the validity check after
--	the initialization.
--
--2003-10-23  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* src/java_raw_api.c (ffi_java_ptrarray_to_raw): Replace
--	FFI_ASSERT(FALSE) with FFI_ASSERT(0).
--
--2003-10-22  David Daney  <ddaney@avtrex.com>
--
--	* src/mips/ffitarget.h: Replace undefined UINT32 and friends with
--	__attribute__((__mode__(__SI__))) and friends.
--
--2003-10-22  Andreas Schwab  <schwab@suse.de>
--
--	* src/ia64/ffi.c: Replace FALSE/TRUE with false/true.
--
--2003-10-21  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* configure.in: AC_LINK_FILES(ffitarget.h).
--	* configure: Regenerate.
--	* Makefile.in: Likewise.
--	* include/Makefile.in: Likewise.
--	* testsuite/Makefile.in: Likewise.
--	* fficonfig.h.in: Likewise.
--
--2003-10-21  Paolo Bonzini  <bonzini@gnu.org>
--	    Richard Henderson  <rth@redhat.com>
--
--	Avoid that ffi.h includes fficonfig.h.
--
--	* Makefile.am (EXTRA_DIST): Include ffitarget.h files
--	(TARGET_SRC_MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
--	(TARGET_SRC_MIPS_SGI): Removed.
--	(MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
--	(MIPS_SGI): Removed.
--	(CLEANFILES): Removed.
--	(mostlyclean-am, clean-am, mostlyclean-sub, clean-sub): New
--	targets.
--	* acconfig.h: Removed.
--	* configure.in: Compute sizeofs only for double and long double.
--	Use them to define and subst HAVE_LONG_DOUBLE.  Include comments
--	into AC_DEFINE instead of using acconfig.h.  Create
--	include/ffitarget.h instead of include/fficonfig.h.  Rename
--	MIPS_GCC to MIPS_IRIX, drop MIPS_SGI since we are in gcc's tree.
--	AC_DEFINE EH_FRAME_FLAGS.
--	* include/Makefile.am (DISTCLEANFILES): New automake macro.
--	(hack_DATA): Add ffitarget.h.
--	* include/ffi.h.in: Remove all system specific definitions.
--	Declare raw API even if it is not installed, why bother?
--	Use limits.h instead of SIZEOF_* to define ffi_type_*.  Do
--	not define EH_FRAME_FLAGS, it is in fficonfig.h now.  Include
--	ffitarget.h instead of fficonfig.h.  Remove ALIGN macro.
--	(UINT_ARG, INT_ARG): Removed, use ffi_arg and ffi_sarg instead.
--	* include/ffi_common.h (bool): Do not define.
--	(ffi_assert): Accept failed assertion.
--	(ffi_type_test): Return void and accept file/line.
--	(FFI_ASSERT): Pass stringized failed assertion.
--	(FFI_ASSERT_AT): New macro.
--	(FFI_ASSERT_VALID_TYPE): New macro.
--	(UINT8, SINT8, UINT16, SINT16, UINT32, SINT32,
--	UINT64, SINT64): Define here with gcc's __attribute__ macro
--	instead of in ffi.h
--	(FLOAT32, ALIGN): Define here instead of in ffi.h
--	* include/ffi-mips.h: Removed.  Its content moved to
--	src/mips/ffitarget.h after separating assembly and C sections.
--	* src/alpha/ffi.c, src/alpha/ffi.c, src/java_raw_api.c
--	src/prep_cif.c, src/raw_api.c, src/ia64/ffi.c,
--	src/mips/ffi.c, src/mips/n32.S, src/mips/o32.S,
--	src/mips/ffitarget.h, src/sparc/ffi.c, src/x86/ffi64.c:
--	SIZEOF_ARG -> FFI_SIZEOF_ARG.
--	* src/ia64/ffi.c: Include stdbool.h (provided by GCC 2.95+).
--	* src/debug.c (ffi_assert): Accept stringized failed assertion.
--	(ffi_type_test): Rewritten.
--	* src/prep-cif.c (initialize_aggregate, ffi_prep_cif): Call
--	FFI_ASSERT_VALID_TYPE.
--	* src/alpha/ffitarget.h, src/arm/ffitarget.h,
--	src/ia64/ffitarget.h, src/m68k/ffitarget.h,
--	src/mips/ffitarget.h, src/powerpc/ffitarget.h,
--	src/s390/ffitarget.h, src/sh/ffitarget.h,
--	src/sh64/ffitarget.h, src/sparc/ffitarget.h,
--	src/x86/ffitarget.h: New files.
--	* src/alpha/osf.S, src/arm/sysv.S, src/ia64/unix.S,
--	src/m68k/sysv.S, src/mips/n32.S, src/mips/o32.S,
--	src/powerpc/aix.S, src/powerpc/darwin.S,
--	src/powerpc/ffi_darwin.c, src/powerpc/linux64.S,
--	src/powerpc/linux64_closure.S, src/powerpc/ppc_closure.S,
--	src/powerpc/sysv.S, src/s390/sysv.S, src/sh/sysv.S,
--	src/sh64/sysv.S, src/sparc/v8.S, src/sparc/v9.S,
--	src/x86/sysv.S, src/x86/unix64.S, src/x86/win32.S:
--	include fficonfig.h
--
--2003-10-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
--
--	* src/mips/ffi.c: Use _ABIN32, _ABIO32 instead of external
--	_MIPS_SIM_NABI32, _MIPS_SIM_ABI32.
--
--2003-10-19  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* src/powerpc/ffi_darwin.c (ffi_prep_args): Declare bytes again.
--	Used when FFI_DEBUG = 1.
--
--2003-10-14  Alan Modra  <amodra@bigpond.net.au>
--
--	* src/types.c (double, longdouble): Default POWERPC64 to 8 byte size
--	and align.
--
--2003-10-06  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
--
--	* include/ffi_mips.h: Define FFI_MIPS_N32 for N32/N64 ABIs,
--	FFI_MIPS_O32 for O32 ABI.
--
--2003-10-01  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_64 for
--	SPARC64. Cleanup whitespaces.
--
--2003-09-19  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* testsuite/libffi.call/closure_fn0.c: Xfail mips, arm,
--	strongarm, xscale. Cleanup whitespaces.
--	* testsuite/libffi.call/closure_fn1.c: Likewise.
--	* testsuite/libffi.call/closure_fn2.c: Likewise.
--	* testsuite/libffi.call/closure_fn3.c: Likewise.
--	* testsuite/libffi.call/cls_12byte.c: Likewise.
--	* testsuite/libffi.call/cls_16byte.c: Likewise.
--	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
--	* testsuite/libffi.call/cls_20byte.c: Likewise.
--	* testsuite/libffi.call/cls_24byte.c: Likewise.
--	* testsuite/libffi.call/cls_2byte.c: Likewise.
--	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
--	* testsuite/libffi.call/cls_3byte1.c: Likewise.
--	* testsuite/libffi.call/cls_3byte2.c: Likewise.
--	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
--	* testsuite/libffi.call/cls_4byte.c: Likewise.
--	* testsuite/libffi.call/cls_5byte.c: Likewise.
--	* testsuite/libffi.call/cls_6byte.c: Likewise.
--	* testsuite/libffi.call/cls_7byte.c: Likewise.
--	* testsuite/libffi.call/cls_8byte.c: Likewise.
--	* testsuite/libffi.call/cls_double.c: Likewise.
--	* testsuite/libffi.call/cls_float.c: Likewise.
--	* testsuite/libffi.call/cls_uchar.c: Likewise.
--	* testsuite/libffi.call/cls_uint.c: Likewise.
--	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
--	* testsuite/libffi.call/cls_ushort.c: Likewise.
--	* testsuite/libffi.call/nested_struct.c: Likewise.
--	* testsuite/libffi.call/nested_struct1.c: Likewise.
--	* testsuite/libffi.call/problem1.c: Likewise.
--	* testsuite/libffi.special/unwindtest.cc: Likewise.
--	* testsuite/libffi.call/pyobjc-tc.c: Cleanup whitespaces.
--
--2003-09-18  David Edelsohn  <edelsohn@gnu.org>
--
--	* src/powerpc/aix.S: Cleanup whitespaces.
--	* src/powerpc/aix_closure.S: Likewise.
--
--2003-09-18  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* src/powerpc/darwin.S: Cleanup whitespaces, comment formatting.
--	* src/powerpc/darwin_closure.S: Likewise.
--	* src/powerpc/ffi_darwin.c: Likewise.
--
--2003-09-18  Andreas Tobler  <a.tobler@schweiz.ch>
--	    David Edelsohn  <edelsohn@gnu.org>
--
--	* src/types.c (double): Add AIX and Darwin to the right TYPEDEF.
--	* src/powerpc/aix_closure.S: Remove the pointer to the outgoing
--	parameter stack.
--	* src/powerpc/darwin_closure.S: Likewise.
--	* src/powerpc/ffi_darwin.c (ffi_prep_args): Handle structures
--	according to the Darwin/AIX ABI.
--	(ffi_prep_cif_machdep): Likewise.
--	(ffi_closure_helper_DARWIN): Likewise.
--	Remove the outgoing parameter stack logic. Simplify the evaluation
--	of the different CASE types.
--	(ffi_prep_clousure): Avoid the casts on lvalues. Change the branch
--	statement in the trampoline code.
--
--2003-09-18  Kaz Kojima  <kkojima@gcc.gnu.org>
--
--	* src/sh/ffi.c (ffi_prep_args): Take account into the alignement
--	for the register size.
--	(ffi_closure_helper_SYSV): Handle the structure return value
--	address correctly.
--	(ffi_closure_helper_SYSV): Return the appropriate type when
--	the registers are used for the structure return value.
--	* src/sh/sysv.S (ffi_closure_SYSV): Fix the stack layout for
--	the 64-bit return value.  Update copyright years.
--
--2003-09-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
--
--	* testsuite/lib/libffi-dg.exp (libffi_target_compile): Search in
--	srcdir for ffi_mips.h.
--
--2003-09-12  Alan Modra  <amodra@bigpond.net.au>
--
--	* src/prep_cif.c (initialize_aggregate): Include tail padding in
--	structure size.
--	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Correct
--	placement of float result.
--	* testsuite/libffi.special/unwindtest.cc (closure_test_fn1): Correct
--	cast of "resp" for big-endian 64 bit machines.
--
--2003-09-11  Alan Modra  <amodra@bigpond.net.au>
--
--	* src/types.c (double, longdouble): Merge identical SH and ARM
--	typedefs, and add POWERPC64.
--	* src/powerpc/ffi.c (ffi_prep_args64): Correct next_arg calc for
--	struct split over gpr and rest.
--	(ffi_prep_cif_machdep): Correct intarg_count for structures.
--	* src/powerpc/linux64.S (ffi_call_LINUX64): Fix gpr offsets.
--
--2003-09-09  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* src/powerpc/ffi.c (ffi_closure_helper_SYSV) Handle struct
--	passing correctly.
--
--2003-09-09  Alan Modra  <amodra@bigpond.net.au>
--
--	* configure: Regenerate.
--
--2003-09-04  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* Makefile.am: Remove build rules for ffitest.
--	* Makefile.in: Rebuilt.
--
--2003-09-04  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* src/java_raw_api.c: Include <stdlib.h> to fix compiler warning
--	about implicit declaration of abort().
--
--2003-09-04  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* Makefile.am: Add dejagnu test framework. Fixes PR other/11411.
--	* Makefile.in: Rebuilt.
--	* configure.in: Add dejagnu test framework.
--	* configure: Rebuilt.
--
--	* testsuite/Makefile.am: New file.
--	* testsuite/Makefile.in: Built
--	* testsuite/lib/libffi-dg.exp: New file.
--	* testsuite/config/default.exp: Likewise.
--	* testsuite/libffi.call/call.exp: Likewise.
--	* testsuite/libffi.call/ffitest.h: Likewise.
--	* testsuite/libffi.call/closure_fn0.c: Likewise.
--	* testsuite/libffi.call/closure_fn1.c: Likewise.
--	* testsuite/libffi.call/closure_fn2.c: Likewise.
--	* testsuite/libffi.call/closure_fn3.c: Likewise.
--	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
--	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
--	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
--	* testsuite/libffi.call/cls_2byte.c: Likewise.
--	* testsuite/libffi.call/cls_3byte1.c: Likewise.
--	* testsuite/libffi.call/cls_3byte2.c: Likewise.
--	* testsuite/libffi.call/cls_4byte.c: Likewise.
--	* testsuite/libffi.call/cls_5byte.c: Likewise.
--	* testsuite/libffi.call/cls_6byte.c: Likewise.
--	* testsuite/libffi.call/cls_7byte.c: Likewise.
--	* testsuite/libffi.call/cls_8byte.c: Likewise.
--	* testsuite/libffi.call/cls_12byte.c: Likewise.
--	* testsuite/libffi.call/cls_16byte.c: Likewise.
--	* testsuite/libffi.call/cls_20byte.c: Likewise.
--	* testsuite/libffi.call/cls_24byte.c: Likewise.
--	* testsuite/libffi.call/cls_double.c: Likewise.
--	* testsuite/libffi.call/cls_float.c: Likewise.
--	* testsuite/libffi.call/cls_uchar.c: Likewise.
--	* testsuite/libffi.call/cls_uint.c: Likewise.
--	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
--	* testsuite/libffi.call/cls_ushort.c: Likewise.
--	* testsuite/libffi.call/float.c: Likewise.
--	* testsuite/libffi.call/float1.c: Likewise.
--	* testsuite/libffi.call/float2.c: Likewise.
--	* testsuite/libffi.call/many.c: Likewise.
--	* testsuite/libffi.call/many_win32.c: Likewise.
--	* testsuite/libffi.call/nested_struct.c: Likewise.
--	* testsuite/libffi.call/nested_struct1.c: Likewise.
--	* testsuite/libffi.call/pyobjc-tc.c: Likewise.
--	* testsuite/libffi.call/problem1.c: Likewise.
--	* testsuite/libffi.call/promotion.c: Likewise.
--	* testsuite/libffi.call/return_ll.c: Likewise.
--	* testsuite/libffi.call/return_sc.c: Likewise.
--	* testsuite/libffi.call/return_uc.c: Likewise.
--	* testsuite/libffi.call/strlen.c: Likewise.
--	* testsuite/libffi.call/strlen_win32.c: Likewise.
--	* testsuite/libffi.call/struct1.c: Likewise.
--	* testsuite/libffi.call/struct2.c: Likewise.
--	* testsuite/libffi.call/struct3.c: Likewise.
--	* testsuite/libffi.call/struct4.c: Likewise.
--	* testsuite/libffi.call/struct5.c: Likewise.
--	* testsuite/libffi.call/struct6.c: Likewise.
--	* testsuite/libffi.call/struct7.c: Likewise.
--	* testsuite/libffi.call/struct8.c: Likewise.
--	* testsuite/libffi.call/struct9.c: Likewise.
--	* testsuite/libffi.special/special.exp: New file.
--	* testsuite/libffi.special/ffitestcxx.h: Likewise.
--	* testsuite/libffi.special/unwindtest.cc: Likewise.
--
--
--2003-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
--
--	* src/sh/ffi.c (OFS_INT16): Set 0 for little endian case.  Update
--	copyright years.
--
--2003-08-02  Alan Modra  <amodra@bigpond.net.au>
--
--	* src/powerpc/ffi.c (ffi_prep_args64): Modify for changed gcc
--	structure passing.
--	(ffi_closure_helper_LINUX64): Likewise.
--	* src/powerpc/linux64.S: Remove code writing to parm save area.
--	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Use return
--	address in lr from ffi_closure_helper_LINUX64 call to calculate
--	table address.  Optimize function tail.
--
--2003-07-28  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* src/sparc/ffi.c: Handle all floating point registers.
--	* src/sparc/v9.S: Likewise. Fixes second part of PR target/11410.
--
--2003-07-11  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
--
--	* README: Note that libffi is not part of GCC.  Update the project
--	URL and status.
--
--2003-06-19  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
--
--	* src/powerpc/ppc_closure.S: Include ffi.h.
--
--2003-06-13  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
--
--	* src/x86/sysv.S: Avoid gas-only .uleb128/.sleb128 directives.
--	Use C style comments.
--
--2003-06-13  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
--
--	* Makefile.am: Add SHmedia support.  Fix a typo of SH support.
--	* Makefile.in: Regenerate.
--	* configure.in (sh64-*-linux*, sh5*-*-linux*): Add target.
--	* configure: Regenerate.
--	* include/ffi.h.in: Add SHmedia support.
--	* src/sh64/ffi.c: New file.
--	* src/sh64/sysv.S: New file.
--
--2003-05-16  Jakub Jelinek  <jakub@redhat.com>
--
--	* configure.in (HAVE_RO_EH_FRAME): Check whether .eh_frame section
--	should be read-only.
--	* configure: Rebuilt.
--	* fficonfig.h.in: Rebuilt.
--	* include/ffi.h.in (EH_FRAME_FLAGS): Define.
--	* src/alpha/osf.S: Use EH_FRAME_FLAGS.
--	* src/powerpc/linux64.S: Likewise.
--	* src/powerpc/linux64_closure.S: Likewise.  Include ffi.h.
--	* src/powerpc/sysv.S: Use EH_FRAME_FLAGS.  Use pcrel encoding
--	if -fpic/-fPIC/-mrelocatable.
--	* src/powerpc/powerpc_closure.S: Likewise.
--	* src/sparc/v8.S: If HAVE_RO_EH_FRAME is defined, don't include
--	#write in .eh_frame flags.
--	* src/sparc/v9.S: Likewise.
--	* src/x86/unix64.S: Use EH_FRAME_FLAGS.
--	* src/x86/sysv.S: Likewise.  Use pcrel encoding if -fpic/-fPIC.
--	* src/s390/sysv.S: Use EH_FRAME_FLAGS.  Include ffi.h.
--
--2003-05-07  Jeff Sturm  <jsturm@one-point.com>
--
--	Fixes PR bootstrap/10656
--	* configure.in (HAVE_AS_REGISTER_PSEUDO_OP): Test assembler
--	support for .register pseudo-op.
--	* src/sparc/v8.S: Use it.
--	* fficonfig.h.in: Rebuilt.
--	* configure: Rebuilt.
--
--2003-04-18  Jakub Jelinek  <jakub@redhat.com>
--
--	* include/ffi.h.in (POWERPC64): Define if 64-bit.
--	(enum ffi_abi): Add FFI_LINUX64 on POWERPC.
--	Make it the default on POWERPC64.
--	(FFI_TRAMPOLINE_SIZE): Define to 24 on POWERPC64.
--	* configure.in: Change powerpc-*-linux* into powerpc*-*-linux*.
--	* configure: Rebuilt.
--	* src/powerpc/ffi.c (hidden): Define.
--	(ffi_prep_args_SYSV): Renamed from
--	ffi_prep_args.  Cast pointers to unsigned long to shut up warnings.
--	(NUM_GPR_ARG_REGISTERS64, NUM_FPR_ARG_REGISTERS64,
--	ASM_NEEDS_REGISTERS64): New.
--	(ffi_prep_args64): New function.
--	(ffi_prep_cif_machdep): Handle FFI_LINUX64 ABI.
--	(ffi_call): Likewise.
--	(ffi_prep_closure): Likewise.
--	(flush_icache): Surround by #ifndef POWERPC64.
--	(ffi_dblfl): New union type.
--	(ffi_closure_helper_SYSV): Use it to avoid aliasing problems.
--	(ffi_closure_helper_LINUX64): New function.
--	* src/powerpc/ppc_closure.S: Surround whole file by #ifndef
--	__powerpc64__.
--	* src/powerpc/sysv.S: Likewise.
--	(ffi_call_SYSV): Rename ffi_prep_args to ffi_prep_args_SYSV.
--	* src/powerpc/linux64.S: New file.
--	* src/powerpc/linux64_closure.S: New file.
--	* Makefile.am (EXTRA_DIST): Add src/powerpc/linux64.S and
--	src/powerpc/linux64_closure.S.
--	(TARGET_SRC_POWERPC): Likewise.
--
--	* src/ffitest.c (closure_test_fn, closure_test_fn1, closure_test_fn2,
--	closure_test_fn3): Fix result printing on big-endian 64-bit
--	machines.
--	(main): Print tst2_arg instead of uninitialized tst2_result.
--
--	* src/ffitest.c (main): Hide what closure pointer really points to
--	from the compiler.
--
--2003-04-16  Richard Earnshaw  <rearnsha@arm.com>
--
--	* configure.in (arm-*-netbsdelf*): Add configuration.
--	(configure): Regenerated.
--
--2003-04-04  Loren J. Rittle  <ljrittle@acm.org>
--
--	* include/Makefile.in: Regenerate.
--
--2003-03-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
--
--	* libffi/include/ffi.h.in: Define X86 instead of X86_64 in 32
--	bit mode.
--	* libffi/src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV):
--	Receive closure pointer through parameter, read args using
--	__builtin_dwarf_cfa.
--	(FFI_INIT_TRAMPOLINE): Send closure reference through eax.
--
--2003-03-12  Andreas Schwab  <schwab@suse.de>
--
--	* configure.in: Avoid trailing /. in toolexeclibdir.
--	* configure: Rebuilt.
--
--2003-03-03  Andreas Tobler <a.tobler@schweiz.ch>
--
--	* src/powerpc/darwin_closure.S: Recode to fit dynamic libraries.
--
--2003-02-06  Andreas Tobler <a.tobler@schweiz.ch>
--
--	* libffi/src/powerpc/darwin_closure.S:
--	Fix alignement bug, allocate 8 bytes for the result.
--	* libffi/src/powerpc/aix_closure.S:
--	Likewise.
--	* libffi/src/powerpc/ffi_darwin.c:
--	Update stackframe description for aix/darwin_closure.S.
--
--2003-02-06  Jakub Jelinek  <jakub@redhat.com>
--
--	* src/s390/ffi.c (ffi_closure_helper_SYSV): Add hidden visibility
--	attribute.
--
--2003-01-31  Christian Cornelssen  <ccorn@cs.tu-berlin.de>,
--	    Andreas Schwab  <schwab@suse.de>
--
--	* configure.in: Adjust command to source config-ml.in to account
--	for changes to the libffi_basedir definition.
--	(libffi_basedir): Remove ${srcdir} from value and include trailing
--	slash if nonempty.
--
--	* configure: Regenerate.
--
--2003-01-29  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
--
--	* src/powerpc/ppc_closure.S: Recode to fit shared libs.
--
--2003-01-28  Andrew Haley  <aph@redhat.com>
--
--	* include/ffi.h.in: Enable FFI_CLOSURES for x86_64.
--	* src/x86/ffi64.c (ffi_prep_closure): New.
--	(ffi_closure_UNIX64_inner): New.
--	* src/x86/unix64.S (ffi_closure_UNIX64): New.
--
--2003-01-27  Alexandre Oliva  <aoliva@redhat.com>
--
--	* configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST.
--	Remove USE_LIBDIR conditional.
--	* Makefile.am (toolexecdir, toolexeclibdir): Don't override.
--	* Makefile.in, configure: Rebuilt.
--
--2003-01027  David Edelsohn  <edelsohn@gnu.org>
--
--	* Makefile.am (TARGET_SRC_POWERPC_AIX): Fix typo.
--	* Makefile.in: Regenerate.
--
--2003-01-22  Andrew Haley  <aph@redhat.com>
--
--	* src/powerpc/darwin.S (_ffi_call_AIX): Add Augmentation size to
--	unwind info.
--
--2003-01-21  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* src/powerpc/darwin.S: Add unwind info.
--	* src/powerpc/darwin_closure.S: Likewise.
--
--2003-01-14  Andrew Haley  <aph@redhat.com>
--
--	* src/x86/ffi64.c (ffi_prep_args): Check for void retval.
--	(ffi_prep_cif_machdep): Likewise.
--	* src/x86/unix64.S: Add unwind info.
--
--2003-01-14  Andreas Jaeger  <aj@suse.de>
--
--	* src/ffitest.c (main): Only use ffi_closures if those are
--	supported.
--
--2003-01-13 Andreas Tobler <a.tobler@schweiz.ch>
--
--	* libffi/src/ffitest.c
--	 add closure testcases
--
--2003-01-13 Kevin B. Hendricks <khendricks@ivey.uwo.ca>
--
--	* libffi/src/powerpc/ffi.c
--	 fix alignment bug for float (4 byte aligned iso 8 byte)
--
--2003-01-09  Geoffrey Keating  <geoffk@apple.com>
--
--	* src/powerpc/ffi_darwin.c: Remove RCS version string.
--	* src/powerpc/darwin.S: Remove RCS version string.
--
--2003-01-03  Jeff Sturm  <jsturm@one-point.com>
--
--	* include/ffi.h.in: Add closure defines for SPARC, SPARC64.
--	* src/ffitest.c (main): Use static storage for closure.
--	* src/sparc/ffi.c (ffi_prep_closure, ffi_closure_sparc_inner): New.
--	* src/sparc/v8.S (ffi_closure_v8): New.
--	* src/sparc/v9.S (ffi_closure_v9): New.
--
--2002-11-10  Ranjit Mathew <rmathew@hotmail.com>
--
--	* include/ffi.h.in: Added FFI_STDCALL ffi_type
--	  enumeration for X86_WIN32.
--	* src/x86/win32.S: Added ffi_call_STDCALL function
--	  definition.
--	* src/x86/ffi.c (ffi_call/ffi_raw_call): Added
--	  switch cases for recognising FFI_STDCALL and
--	  calling ffi_call_STDCALL if target is X86_WIN32.
--	* src/ffitest.c (my_stdcall_strlen/stdcall_many):
--	  stdcall versions of the "my_strlen" and "many"
--	  test functions (for X86_WIN32).
--	  Added test cases to test stdcall invocation using
--	  these functions.
--
--2002-12-02  Kaz Kojima  <kkojima@gcc.gnu.org>
--
--	* src/sh/sysv.S: Add DWARF2 unwind info.
--
--2002-11-27  Ulrich Weigand  <uweigand@de.ibm.com>
--
--	* src/s390/sysv.S (.eh_frame section): Make section read-only.
--
--2002-11-26  Jim Wilson  <wilson@redhat.com>
--
--	* src/types.c (FFI_TYPE_POINTER): Has size 8 on IA64.
--
--2002-11-23  H.J. Lu <hjl@gnu.org>
--
--	* acinclude.m4: Add dummy AM_PROG_LIBTOOL.
--	Include ../config/accross.m4.
--	* aclocal.m4; Rebuild.
--	* configure: Likewise.
--
--2002-11-15  Ulrich Weigand  <uweigand@de.ibm.com>
--
--	* src/s390/sysv.S (.eh_frame section): Adapt to pcrel FDE encoding.
--
--2002-11-11  DJ Delorie  <dj@redhat.com>
--
--	* configure.in: Look for common files in the right place.
--
--2002-10-08  Ulrich Weigand  <uweigand@de.ibm.com>
--
--	* src/java_raw_api.c (ffi_java_raw_to_ptrarray): Interpret
--	raw data as _Jv_word values, not ffi_raw.
--	(ffi_java_ptrarray_to_raw): Likewise.
--	(ffi_java_rvalue_to_raw): New function.
--	(ffi_java_raw_call): Call it.
--	(ffi_java_raw_to_rvalue): New function.
--	(ffi_java_translate_args): Call it.
--	* src/ffitest.c (closure_test_fn): Interpret return value
--	as ffi_arg, not int.
--	* src/s390/ffi.c (ffi_prep_cif_machdep): Add missing
--	FFI_TYPE_POINTER case.
--	(ffi_closure_helper_SYSV): Likewise.  Also, assume return
--	values extended to word size.
--
--2002-10-02  Andreas Jaeger  <aj@suse.de>
--
--	* src/x86/ffi64.c (ffi_prep_cif_machdep): Remove debug output.
--
--2002-10-01  Bo Thorsen  <bo@smetana.suse.de>
--
--	* include/ffi.h.in: Fix i386 win32 compilation.
--
--2002-09-30  Ulrich Weigand  <uweigand@de.ibm.com>
--
--	* configure.in: Add s390x-*-linux-* target.
--	* configure: Regenerate.
--	* include/ffi.h.in: Define S390X for s390x targets.
--	(FFI_CLOSURES): Define for s390/s390x.
--	(FFI_TRAMPOLINE_SIZE): Likewise.
--	(FFI_NATIVE_RAW_API): Likewise.
--	* src/prep_cif.c (ffi_prep_cif): Do not compute stack space for s390.
--	* src/types.c (FFI_TYPE_POINTER): Use 8-byte pointers on s390x.
--	* src/s390/ffi.c: Major rework of existing code.  Add support for
--	s390x targets.  Add closure support.
--	* src/s390/sysv.S: Likewise.
--
--2002-09-29  Richard Earnshaw  <rearnsha@arm.com>
--
--	* src/arm/sysv.S: Fix typo.
--
--2002-09-28  Richard Earnshaw  <rearnsha@arm.com>
--
--	* src/arm/sysv.S: If we don't have machine/asm.h and the pre-processor
--	has defined __USER_LABEL_PREFIX__, then use it in CNAME.
--	(ffi_call_SYSV): Handle soft-float.
--
--2002-09-27  Bo Thorsen  <bo@suse.de>
--
--	* include/ffi.h.in: Fix multilib x86-64 support.
--
--2002-09-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
--
--	* Makefile.am (all-multi): Fix multilib parallel build.
--
--2002-07-19  Kaz Kojima  <kkojima@gcc.gnu.org>
--
--	* configure.in (sh[34]*-*-linux*): Add brackets.
--	* configure: Regenerate.
--
--2002-07-18  Kaz Kojima  <kkojima@gcc.gnu.org>
--
--	* Makefile.am: Add SH support.
--	* Makefile.in: Regenerate.
--	* configure.in (sh-*-linux*, sh[34]*-*-linux*): Add target.
--	* configure: Regenerate.
--	* include/ffi.h.in: Add SH support.
--	* src/sh/ffi.c: New file.
--	* src/sh/sysv.S: New file.
--	* src/types.c: Add SH support.
--
--2002-07-16  Bo Thorsen  <bo@suse.de>
--
--	* src/x86/ffi64.c: New file that adds x86-64 support.
--	* src/x86/unix64.S: New file that handles argument setup for
--	x86-64.
--	* src/x86/sysv.S: Don't use this on x86-64.
--	* src/x86/ffi.c: Don't use this on x86-64.
--	Remove unused vars.
--	* src/prep_cif.c (ffi_prep_cif): Don't do stack size calculation
--	for x86-64.
--	* src/ffitest.c (struct6): New test that tests a special case in
--	the x86-64 ABI.
--	(struct7): Likewise.
--	(struct8): Likewise.
--	(struct9): Likewise.
--	(closure_test_fn): Silence warning about this when it's not used.
--	(main): Add the new tests.
--	(main): Fix a couple of wrong casts and silence some compiler warnings.
--	* include/ffi.h.in: Add x86-64 ABI definition.
--	* fficonfig.h.in: Regenerate.
--	* Makefile.am: Add x86-64 support.
--	* configure.in: Likewise.
--	* Makefile.in: Regenerate.
--	* configure: Likewise.
--
--2002-06-24  Bo Thorsen  <bo@suse.de>
--
--	* src/types.c: Merge settings for similar architectures.
--	Add x86-64 sizes and alignments.
--
--2002-06-23  Bo Thorsen  <bo@suse.de>
--
--	* src/arm/ffi.c (ffi_prep_args): Remove unused vars.
--	* src/sparc/ffi.c (ffi_prep_args_v8): Likewise.
--	* src/mips/ffi.c (ffi_prep_args): Likewise.
--	* src/m68k/ffi.c (ffi_prep_args): Likewise.
--
--2002-07-18  H.J. Lu  (hjl@gnu.org)
--
--	* Makefile.am (TARGET_SRC_MIPS_LINUX): New.
--	(libffi_la_SOURCES): Support MIPS_LINUX.
--	(libffi_convenience_la_SOURCES): Likewise.
--	* Makefile.in: Regenerated.
--
--	* configure.in (mips64*-*): Skip.
--	(mips*-*-linux*): New.
--	* configure: Regenerated.
--
--	* src/mips/ffi.c: Include <sgidefs.h>.
--
--2002-06-06  Ulrich Weigand  <uweigand@de.ibm.com>
--
--	* src/s390/sysv.S: Save/restore %r6.  Add DWARF-2 unwind info.
--
--2002-05-27  Roger Sayle  <roger@eyesopen.com>
--
--	* src/x86/ffi.c (ffi_prep_args): Remove reference to avn.
--
--2002-05-27  Bo Thorsen  <bo@suse.de>
--
--	* src/x86/ffi.c (ffi_prep_args): Remove unused variable and
--	fix formatting.
--
--2002-05-13  Andreas Tobler  <a.tobler@schweiz.ch>
--
--	* src/powerpc/ffi_darwin.c (ffi_prep_closure): Declare fd at
--	beginning of function (for older apple cc).
--
--2002-05-08  Alexandre Oliva  <aoliva@redhat.com>
--
--	* configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at
--	script entry, and set LD to it when configuring multilibs.
--	* configure: Rebuilt.
--
--2002-05-05  Jason Thorpe  <thorpej@wasabisystems.com>
--
--	* configure.in (sparc64-*-netbsd*): Add target.
--	(sparc-*-netbsdelf*): Likewise.
--	* configure: Regenerate.
--
--2002-04-28  David S. Miller  <davem@redhat.com>
--
--	* configure.in, configure: Fix SPARC test in previous change.
--
--2002-04-29  Gerhard Tonn  <GerhardTonn@swol.de>
--
--	* Makefile.am: Add Linux for S/390 support.
--	* Makefile.in: Regenerate.
--	* configure.in: Add Linux for S/390 support.
--	* configure: Regenerate.
--	* include/ffi.h.in: Add Linux for S/390 support.
--	* src/s390/ffi.c: New file from libffi CVS tree.
--	* src/s390/sysv.S: New file from libffi CVS tree.
--
--2002-04-28  Jakub Jelinek  <jakub@redhat.com>
--
--	* configure.in (HAVE_AS_SPARC_UA_PCREL): Check for working
--	%r_disp32().
--	* src/sparc/v8.S: Use it.
--	* src/sparc/v9.S: Likewise.
--	* fficonfig.h.in: Rebuilt.
--	* configure: Rebuilt.
--
--2002-04-08  Hans Boehm  <Hans_Boehm@hp.com>
--
--	* src/java_raw_api.c (ffi_java_raw_size): Handle FFI_TYPE_DOUBLE
--	correctly.
--	* src/ia64/unix.S: Add unwind information. Fix comments.
--	Save sp in a way that's compatible with unwind info.
--	(ffi_call_unix): Correctly restore sp in all cases.
--	* src/ia64/ffi.c: Add, fix comments.
--
--2002-04-08  Jakub Jelinek  <jakub@redhat.com>
--
--	* src/sparc/v8.S: Make .eh_frame dependent on target word size.
--
--2002-04-06  Jason Thorpe  <thorpej@wasabisystems.com>
--
--	* configure.in (alpha*-*-netbsd*): Add target.
--	* configure: Regenerate.
--
--2002-04-04  Jeff Sturm  <jsturm@one-point.com>
--
--	* src/sparc/v8.S: Add unwind info.
--	* src/sparc/v9.S: Likewise.
--
--2002-03-30  Krister Walfridsson  <cato@df.lth.se>
--
--	* configure.in: Enable i*86-*-netbsdelf*.
--	* configure: Rebuilt.
--
--2002-03-29  David Billinghurst <David.Billinghurst@riotinto.com>
--
--	PR other/2620
--	* src/mips/n32.s: Delete
--	* src/mips/o32.s: Delete
--
--2002-03-21  Loren J. Rittle  <ljrittle@acm.org>
--
--	* configure.in: Enable alpha*-*-freebsd*.
--	* configure: Rebuilt.
--
--2002-03-17  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
--
--	* Makefile.am: libfficonvenience -> libffi_convenience.
--	* Makefile.in: Rebuilt.
--
--	* Makefile.am: Define ffitest_OBJECTS.
--	* Makefile.in: Rebuilt.
--
--2002-03-07  Andreas Tobler  <toa@pop.agri.ch>
--	    David Edelsohn  <edelsohn@gnu.org>
--
--	* Makefile.am (EXTRA_DIST): Add Darwin and AIX closure files.
--	(TARGET_SRC_POWERPC_AIX): Add aix_closure.S.
--	(TARGET_SRC_POWERPC_DARWIN): Add darwin_closure.S.
--	* Makefile.in: Regenerate.
--	* include/ffi.h.in: Add AIX and Darwin closure definitions.
--	* src/powerpc/ffi_darwin.c (ffi_prep_closure): New function.
--	(flush_icache, flush_range): New functions.
--	(ffi_closure_helper_DARWIN): New function.
--	* src/powerpc/aix_closure.S: New file.
--	* src/powerpc/darwin_closure.S: New file.
--
--2002-02-24  Jeff Sturm  <jsturm@one-point.com>
--
--	* include/ffi.h.in: Add typedef for ffi_arg.
--	* src/ffitest.c (main): Declare rint with ffi_arg.
--
--2002-02-21  Andreas Tobler  <toa@pop.agri.ch>
--
--	* src/powerpc/ffi_darwin.c (ffi_prep_args): Skip appropriate
--	number of GPRs for floating-point arguments.
--
--2002-01-31  Anthony Green  <green@redhat.com>
--
--	* configure: Rebuilt.
--	* configure.in: Replace CHECK_SIZEOF and endian tests with
--	cross-compiler friendly macros.
--	* aclocal.m4 (AC_COMPILE_CHECK_SIZEOF, AC_C_BIGENDIAN_CROSS): New
--	macros.
--
--2002-01-18  David Edelsohn  <edelsohn@gnu.org>
--
--	* src/powerpc/darwin.S (_ffi_call_AIX): New.
--	* src/powerpc/aix.S (ffi_call_DARWIN): New.
--
--2002-01-17  David Edelsohn  <edelsohn@gnu.org>
--
--	* Makefile.am (EXTRA_DIST): Add Darwin and AIX files.
--	(TARGET_SRC_POWERPC_AIX): New.
--	(POWERPC_AIX): New stanza.
--	* Makefile.in: Regenerate.
--	* configure.in: Add AIX case.
--	* configure: Regenerate.
--	* include/ffi.h.in (ffi_abi): Add FFI_AIX.
--	* src/powerpc/ffi_darwin.c (ffi_status): Use "long" to scale frame
--	size.  Fix "long double" support.
--	(ffi_call): Add FFI_AIX case.
--	* src/powerpc/aix.S: New.
--
--2001-10-09  John Hornkvist  <john@toastedmarshmallow.com>
--
--	Implement Darwin PowerPC ABI.
--	* configure.in: Handle powerpc-*-darwin*.
--	* Makefile.am: Set source files for POWERPC_DARWIN.
--	* configure: Rebuilt.
--	* Makefile.in: Rebuilt.
--	* include/ffi.h.in: Define FFI_DARWIN and FFI_DEFAULT_ABI for
--	POWERPC_DARWIN.
--	* src/powerpc/darwin.S: New file.
--	* src/powerpc/ffi_darwin.c: New file.
--
--2001-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>
--
--	* src/x86/ffi.c: Fix spelling error of "separate" as "seperate".
--
--2001-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
--
--	* src/x86/sysv.S: Avoid gas-only .balign directive.
--	Use C style comments.
--
--2001-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
--
--	* src/alpha/ffi.c (ffi_prep_closure): Avoid gas-only mnemonic.
--	Fixes PR bootstrap/3563.
--
--2001-06-26  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
--
--	* src/alpha/osf.S (ffi_closure_osf): Use .rdata for ECOFF.
--
--2001-06-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
--
--	* configure.in: Recognize sparc*-sun-* host.
--	* configure: Regenerate.
--
--2001-06-06  Andrew Haley  <aph@redhat.com>
--
--	* src/alpha/osf.S (__FRAME_BEGIN__): Conditionalize for ELF.
--
--2001-06-03  Andrew Haley  <aph@redhat.com>
--
--	* src/alpha/osf.S: Add unwind info.
--	* src/powerpc/sysv.S: Add unwind info.
--	* src/powerpc/ppc_closure.S: Likewise.
--
--2000-05-31  Jeff Sturm  <jsturm@one-point.com>
--
--	* configure.in: Fix AC_ARG_ENABLE usage.
--	* configure: Rebuilt.
--
--2001-05-06  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
--
--	* configure.in: Remove warning about beta code.
--	* configure: Rebuilt.
--
--2001-04-25  Hans Boehm <Hans_Boehm@hp.com>
--
--	* src/ia64/unix.S: Restore stack pointer when returning from
--	ffi_closure_UNIX.
--	* src/ia64/ffi.c: Fix typo in comment.
--
--2001-04-18  Jim Wilson  <wilson@redhat.com>
--
--	* src/ia64/unix.S: Delete unnecessary increment and decrement of loc2
--	to eliminate RAW DV.
--
--2001-04-12  Bryce McKinlay  <bryce@albatross.co.nz>
--
--	* Makefile.am: Make a libtool convenience library.
--	* Makefile.in: Rebuilt.
--
--2001-03-29  Bryce McKinlay  <bryce@albatross.co.nz>
--
--	* configure.in: Use different syntax for subdirectory creation.
--	* configure: Rebuilt.
--
--2001-03-27  Jon Beniston  <jon@beniston.com>
--
--	* configure.in: Added X86_WIN32 target (Win32, CygWin, MingW).
--	* configure: Rebuilt.
--	* Makefile.am: Added X86_WIN32 target support.
--	* Makefile.in: Rebuilt.
--
--	* include/ffi.h.in: Added X86_WIN32 target support.
--
--	* src/ffitest.c: Doesn't run structure tests for X86_WIN32 targets.
--	* src/types.c: Added X86_WIN32 target support.
--
--	* src/x86/win32.S: New file. Based on sysv.S, but with EH
--	stuff removed and made to work with CygWin's gas.
--
--2001-03-26  Bryce McKinlay  <bryce@albatross.co.nz>
--
--	* configure.in: Make target subdirectory in build dir.
--	* Makefile.am: Override suffix based rules to specify correct output
--	subdirectory.
--	* Makefile.in: Rebuilt.
--	* configure: Rebuilt.
--
--2001-03-23  Kevin B Hendricks  <khendricks@ivey.uwo.ca>
--
--	* src/powerpc/ppc_closure.S: New file.
--	* src/powerpc/ffi.c (ffi_prep_args): Fixed ABI compatibility bug
--	involving long long and register pairs.
--	(ffi_prep_closure): New function.
--	(flush_icache): Likewise.
--	(ffi_closure_helper_SYSV): Likewise.
--	* include/ffi.h.in (FFI_CLOSURES): Define on PPC.
--	(FFI_TRAMPOLINE_SIZE): Likewise.
--	(FFI_NATIVE_RAW_API): Likewise.
--	* Makefile.in: Rebuilt.
--	* Makefile.am (EXTRA_DIST): Added src/powerpc/ppc_closure.S.
--	(TARGET_SRC_POWERPC): Likewise.
--
--2001-03-19  Tom Tromey  <tromey@redhat.com>
--
--	* Makefile.in: Rebuilt.
--	* Makefile.am (ffitest_LDFLAGS): New macro.
--
--2001-03-02  Nick Clifton  <nickc@redhat.com>
--
--	* include/ffi.h.in: Remove RCS ident string.
--	* include/ffi_mips.h: Remove RCS ident string.
--	* src/debug.c: Remove RCS ident string.
--	* src/ffitest.c: Remove RCS ident string.
--	* src/prep_cif.c: Remove RCS ident string.
--	* src/types.c: Remove RCS ident string.
--	* src/alpha/ffi.c: Remove RCS ident string.
--	* src/alpha/osf.S: Remove RCS ident string.
--	* src/arm/ffi.c: Remove RCS ident string.
--	* src/arm/sysv.S: Remove RCS ident string.
--	* src/mips/ffi.c: Remove RCS ident string.
--	* src/mips/n32.S: Remove RCS ident string.
--	* src/mips/o32.S: Remove RCS ident string.
--	* src/sparc/ffi.c: Remove RCS ident string.
--	* src/sparc/v8.S: Remove RCS ident string.
--	* src/sparc/v9.S: Remove RCS ident string.
--	* src/x86/ffi.c: Remove RCS ident string.
--	* src/x86/sysv.S: Remove RCS ident string.
--
--2001-02-08  Joseph S. Myers  <jsm28@cam.ac.uk>
--
--	* include/ffi.h.in: Change sourceware.cygnus.com references to
--	gcc.gnu.org.
--
--2000-12-09  Richard Henderson  <rth@redhat.com>
--
--	* src/alpha/ffi.c (ffi_call): Simplify struct return test.
--	(ffi_closure_osf_inner): Index rather than increment avalue
--	and arg_types.  Give ffi_closure_osf the raw return value type.
--	* src/alpha/osf.S (ffi_closure_osf): Handle return value type
--	promotion.
--
--2000-12-07  Richard Henderson  <rth@redhat.com>
--
--	* src/raw_api.c (ffi_translate_args): Fix typo.
--	(ffi_prep_closure): Likewise.
--
--	* include/ffi.h.in [ALPHA]: Define FFI_CLOSURES and
--	FFI_TRAMPOLINE_SIZE.
--	* src/alpha/ffi.c (ffi_prep_cif_machdep): Adjust minimal
--	cif->bytes for new ffi_call_osf implementation.
--	(ffi_prep_args): Absorb into ...
--	(ffi_call): ... here.  Do all stack allocation here and
--	avoid a callback function.
--	(ffi_prep_closure, ffi_closure_osf_inner): New.
--	* src/alpha/osf.S (ffi_call_osf): Reimplement with no callback.
--	(ffi_closure_osf): New.
--
--2000-09-10  Alexandre Oliva  <aoliva@redhat.com>
--
--	* config.guess, config.sub, install-sh: Removed.
--	* ltconfig, ltmain.sh, missing, mkinstalldirs: Likewise.
--	* Makefile.in: Rebuilt.
--
--	* acinclude.m4: Include libtool macros from the top level.
--	* aclocal.m4, configure: Rebuilt.
--
--2000-08-22  Alexandre Oliva  <aoliva@redhat.com>
--
--	* configure.in [i*86-*-freebsd*] (TARGET, TARGETDIR): Set.
--	* configure: Rebuilt.
--
--2000-05-11  Scott Bambrough  <scottb@netwinder.org>
--
--	* libffi/src/arm/sysv.S (ffi_call_SYSV): Doubles are not saved to
--	memory correctly.  Use conditional instructions, not branches where
--	possible.
--
--2000-05-04  Tom Tromey  <tromey@cygnus.com>
--
--	* configure: Rebuilt.
--	* configure.in: Match `arm*-*-linux-*'.
--	From Chris Dornan <cdornan@arm.com>.
--
--2000-04-28  Jakub Jelinek  <jakub@redhat.com>
--
--	* Makefile.am (SUBDIRS): Define.
--	(AM_MAKEFLAGS): Likewise.
--	(Multilib support.): Add section.
--	* Makefile.in: Rebuilt.
--	* ltconfig (extra_compiler_flags, extra_compiler_flags_value):
--	New variables. Set for gcc using -print-multi-lib. Export them
--	to libtool.
--	(sparc64-*-linux-gnu*): Use libsuff 64 for search paths.
--	* ltmain.sh (B|b|V): Don't throw away gcc's -B, -b and -V options
--	for -shared links.
--	(extra_compiler_flags_value, extra_compiler_flags): Check these
--	for extra compiler options which need to be passed down in
--	compiler_flags.
--
--2000-04-16  Anthony Green  <green@redhat.com>
--
--	* configure: Rebuilt.
--	* configure.in: Change i*86-pc-linux* to i*86-*-linux*.
--
--2000-04-14  Jakub Jelinek  <jakub@redhat.com>
--
--	* include/ffi.h.in (SPARC64): Define for 64bit SPARC builds.
--	Set SPARC FFI_DEFAULT_ABI based on SPARC64 define.
--	* src/sparc/ffi.c (ffi_prep_args_v8): Renamed from ffi_prep_args.
--	Replace all void * sizeofs with sizeof(int).
--	Only compare type with FFI_TYPE_LONGDOUBLE if LONGDOUBLE is
--	different than DOUBLE.
--	Remove FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases (handled elsewhere).
--	(ffi_prep_args_v9): New function.
--	(ffi_prep_cif_machdep): Handle V9 ABI and long long on V8.
--	(ffi_V9_return_struct): New function.
--	(ffi_call): Handle FFI_V9 ABI from 64bit code and FFI_V8 ABI from
--	32bit code (not yet cross-arch calls).
--	* src/sparc/v8.S: Add struct return delay nop.
--	Handle long long.
--	* src/sparc/v9.S: New file.
--	* src/prep_cif.c (ffi_prep_cif): Return structure pointer
--	is used on sparc64 only for structures larger than 32 bytes.
--	Pass by reference for structures is done for structure arguments
--	larger than 16 bytes.
--	* src/ffitest.c (main): Use 64bit rint on sparc64.
--	Run long long tests on sparc.
--	* src/types.c (FFI_TYPE_POINTER): Pointer is 64bit on alpha and
--	sparc64.
--	(FFI_TYPE_LONGDOUBLE): long double is 128 bit aligned to 128 bits
--	on sparc64.
--	* configure.in (sparc-*-linux*): New supported target.
--	(sparc64-*-linux*): Likewise.
--	* configure: Rebuilt.
--	* Makefile.am: Add v9.S to SPARC files.
--	* Makefile.in: Likewise.
--	(LINK): Surround $(CCLD) into double quotes, so that multilib
--	compiles work correctly.
--
--2000-04-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
--
--	* configure: Rebuilt.
--	* configure.in: (i*86-*-solaris*): New libffi target. Patch
--	proposed by Bryce McKinlay.
--
--2000-03-20  Tom Tromey  <tromey@cygnus.com>
--
--	* Makefile.in: Hand edit for java_raw_api.lo.
--
--2000-03-08  Bryce McKinlay  <bryce@albatross.co.nz>
--
--	* config.guess, config.sub: Update from the gcc tree.
--	Fix for PR libgcj/168.
--
--2000-03-03  Tom Tromey  <tromey@cygnus.com>
--
--	* Makefile.in: Fixed ia64 by hand.
--
--	* configure: Rebuilt.
--	* configure.in (--enable-multilib): New option.
--	(libffi_basedir): New subst.
--	(AC_OUTPUT): Added multilib code.
--
--2000-03-02  Tom Tromey  <tromey@cygnus.com>
--
--	* Makefile.in: Rebuilt.
--	* Makefile.am (TARGET_SRC_IA64): Use `ia64', not `alpha', as
--	directory name.
--
--2000-02-25  Hans Boehm <boehm@acm.org>
--
--	* src/ia64/ffi.c, src/ia64/ia64_flags.h, src/ia64/unix.S: New
--	files.
--	* src/raw_api.c (ffi_translate_args): Fixed typo in argument
--	list.
--	(ffi_prep_raw_closure): Use ffi_translate_args, not
--	ffi_closure_translate.
--	* src/java_raw_api.c: New file.
--	* src/ffitest.c (closure_test_fn): New function.
--	(main): Define `rint' as long long on IA64.  Added new test when
--	FFI_CLOSURES is defined.
--	* include/ffi.h.in (ALIGN): Use size_t, not unsigned.
--	(ffi_abi): Recognize IA64.
--	(ffi_raw): Added `flt' field.
--	Added "Java raw API" code.
--	* configure.in: Recognize ia64.
--	* Makefile.am (TARGET_SRC_IA64): New macro.
--	(libffi_la_common_SOURCES): Added java_raw_api.c.
--	(libffi_la_SOURCES): Define in IA64 case.
--
--2000-01-04  Tom Tromey  <tromey@cygnus.com>
--
--	* Makefile.in: Rebuilt with newer automake.
--
--1999-12-31  Tom Tromey  <tromey@cygnus.com>
--
--	* Makefile.am (INCLUDES): Added -I$(top_srcdir)/src.
--
--1999-09-01  Tom Tromey  <tromey@cygnus.com>
--
--	* include/ffi.h.in: Removed PACKAGE and VERSION defines and
--	undefs.
--	* fficonfig.h.in: Rebuilt.
--	* configure: Rebuilt.
--	* configure.in: Pass 3rd argument to AM_INIT_AUTOMAKE.
--	Use AM_PROG_LIBTOOL (automake 1.4 compatibility).
--	* acconfig.h: Don't #undef PACKAGE or VERSION.
--
--1999-08-09  Anthony Green  <green@cygnus.com>
--
--	* include/ffi.h.in: Try to work around messy header problem
--	with PACKAGE and VERSION.
--
--	* configure: Rebuilt.
--	* configure.in: Change version to 2.00-beta.
--
--	* fficonfig.h.in: Rebuilt.
--	* acconfig.h (FFI_NO_STRUCTS, FFI_NO_RAW_API): Define.
--
--	* src/x86/ffi.c (ffi_raw_call): Rename.
--
--1999-08-02  Kresten Krab Thorup  <krab@dominiq.is.s.u-tokyo.ac.jp>
--
--	* src/x86/ffi.c (ffi_closure_SYSV): New function.
--	(ffi_prep_incoming_args_SYSV): Ditto.
--	(ffi_prep_closure): Ditto.
--	(ffi_closure_raw_SYSV): Ditto.
--	(ffi_prep_raw_closure): More ditto.
--	(ffi_call_raw): Final ditto.
--
--	* include/ffi.h.in: Add definitions for closure and raw API.
--
--	* src/x86/ffi.c (ffi_prep_cif_machdep): Added case for
--	FFI_TYPE_UINT64.
--
--	* Makefile.am (libffi_la_common_SOURCES): Added raw_api.c
--
--	* src/raw_api.c: New file.
--
--	* include/ffi.h.in (ffi_raw): New type.
--	(UINT_ARG, SINT_ARG): New defines.
--	(ffi_closure, ffi_raw_closure): New types.
--	(ffi_prep_closure, ffi_prep_raw_closure): New declarations.
--
--	* configure.in: Add check for endianness and sizeof void*.
--
--	* src/x86/sysv.S (ffi_call_SYSV): Call fixup routine via argument,
--	instead of directly.
--
--	* configure: Rebuilt.
--
--Thu Jul  8 14:28:42 1999  Anthony Green  <green@cygnus.com>
--
--	* configure.in: Add x86 and powerpc BeOS configurations.
--	From Makoto Kato <m_kato@ga2.so-net.ne.jp>.
--
--1999-05-09  Anthony Green  <green@cygnus.com>
--
--	* configure.in: Add warning about this being beta code.
--	Remove src/Makefile.am from the picture.
--	* configure: Rebuilt.
--
--	* Makefile.am: Move logic from src/Makefile.am.  Add changes
--	to support libffi as a target library.
--	* Makefile.in: Rebuilt.
--
--	* aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh:
--	Upgraded to new autoconf, automake, libtool.
--
--	* README: Tweaks.
--
--	* LICENSE: Update copyright date.
--
--	* src/Makefile.am, src/Makefile.in: Removed.
--
--1998-11-29  Anthony Green  <green@cygnus.com>
--
--	* include/ChangeLog: Removed.
--	* src/ChangeLog: Removed.
--	* src/mips/ChangeLog: Removed.
--	* src/sparc/ChangeLog: Remboved.
--	* src/x86/ChangeLog: Removed.
--
--	* ChangeLog.v1: Created.
-+commit c860a992fef5d7cd7bb0975b1632d17a9fafe007
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Mar 25 17:02:51 2014 -0400
-+
-+    Upgrade version to 3.1-rc1
-+
-+commit 9837073e6203048a162a226798c5d252600219ed
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Mar 25 16:24:14 2014 -0400
-+
-+    Update copyright date and clean up README notes.
-+
-+commit 18d3baa9f597b026675baa1b4e5a5eeef7577a08
-+Merge: afee537 f0c8a31
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Mar 25 16:12:53 2014 -0400
-+
-+    Merge pull request #108 from joshtriplett/freebsd
-+    
-+    [3.1 blocker] Fix FreeBSD support
-+
-+commit afee53738a995e23bd2f89fd0f7b30b380566106
-+Merge: 7d24785 b2d610e
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Mar 25 16:12:35 2014 -0400
-+
-+    Merge pull request #106 from joshtriplett/darwin-award
-+    
-+    [3.1 blocker] Update OS X build system to include win32.S on 32-bit
-+
-+commit 7d2478568ed9f03cbf57627f449a2d2cf4d1571c
-+Merge: beab5f3 56be47f
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Mar 25 16:12:17 2014 -0400
-+
-+    Merge pull request #110 from joshtriplett/w64
-+    
-+    Fix 64-bit Windows support
-+
-+commit beab5f334d9ec5b8b91d1cc727d1029b40358e7e
-+Merge: 28fb197 ef5890e
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Mar 25 16:07:47 2014 -0400
-+
-+    Merge pull request #105 from joshtriplett/win32-relocations
-+    
-+    [3.1 blocker] win32.S needs to handle relocations/GOT
-+
-+commit f0c8a31577172104049283f0a80c723084a5bd77
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Mon Mar 24 22:14:26 2014 -0700
-+
-+    Compile win32.S on FreeBSD
-+
-+commit b2d610e028b5ce48d1ad7e5d0debc9c321d891b2
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Fri Mar 21 11:10:13 2014 -0700
-+
-+    Compile win32.S on 32-bit Darwin as well
-+
-+commit be50b87a490e794362cb4a27ada2fbaab202adb8
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Mon Mar 24 21:44:13 2014 -0700
-+
-+    Always use configure to detect whether global symbols need underscores
-+    
-+    64-bit Windows already used this check; make it universal, and use it in
-+    place of an ifdef on X86_WIN32, to handle non-Windows platforms that use
-+    the underscore, such as Darwin.
-+
-+commit 56be47f87629e31afbcb0774aa65735f539ee972
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Mon Mar 24 21:24:53 2014 -0700
-+
-+    Fix a warning on 64-bit Windows
-+    
-+    When sizeof(size_t) != sizeof(unsigned), adding a size_t to cif->bytes
-+    produces a "possible loss of data" warning.  However, the size_t in
-+    question refers to the size of a single parameter.  Use a cast to avoid
-+    the warning.
-+
-+commit 48a8eda74aad8a21b6f26df5df08fe64c043d208
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Mon Mar 24 21:21:12 2014 -0700
-+
-+    Avoid referencing undefined ABIs on 64-bit Windows builds
-+    
-+    64-bit Windows does not have FFI_STDCALL, FFI_THISCALL, or FFI_FASTCALL.
-+
-+commit f0f4138f90345d7d67dfa6783a7e1c7cc30d3c6f
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sat Mar 22 10:00:53 2014 -0700
-+
-+    win32.S: Add handling for position-independent code on Darwin
-+    
-+    Newer versions of Darwin generate the necessary stub functions
-+    automatically and just need a call instruction, but accomodating older
-+    versions as well requires adding the stub.
-+
-+commit ef5890ebafb7cd2fbf9acf161edb55fe1382871c
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Fri Mar 21 11:01:39 2014 -0700
-+
-+    win32.S: Use shifting for multiplication rather than repeated addition
-+    
-+    The jump table code added a register to itself twice to multiply by 4;
-+    shift the register left by 2 instead.
-+
-+commit 4fca48901e7e4f53bf490ed22607b2d2d8f4bfcc
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Fri Mar 21 11:00:41 2014 -0700
-+
-+    win32.S: Make the jump tables position-independent
-+    
-+    Now that non-Windows platforms include win32.S, it needs to support
-+    building as position-independent code.  This fixes build failures on
-+    target platforms that do not allow text relocations.
-+
-+commit 2087dcf736274286f76c69d3988fb6d7cc4fd0f5
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Fri Mar 21 10:57:06 2014 -0700
-+
-+    win32.S: Make calls to ffi_closure_SYSV_inner position-independent
-+    
-+    Now that non-Windows platforms include win32.S, it needs to support
-+    building as position-independent code.  This fixes one source of build
-+    failures on target platforms that do not allow text relocations.
-+
-+commit 28fb197079cf1d11da4eef7c8c243ab05590c528
-+Merge: c697472 c3dd0a1
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Mar 18 12:19:36 2014 -0400
-+
-+    Merge pull request #107 from rvandermeulen/msvcc
-+    
-+    Various compatibility fixes and improvements to msvcc.sh.
-+
-+commit c3dd0a1a0245fc174361a70876e88ae24285f861
-+Author: Ryan VanderMeulen <ryanvm@gmail.com>
-+Date:   Tue Mar 18 12:09:45 2014 -0400
-+
-+    Various compatibility fixes and improvements to msvcc.sh.
-+    
-+    * Don't try to mix incompatible optimization flags in debug builds.
-+    * Workaround ax_cc_maxopt.m4 not supporting MSVC and change -O3 to -O2.
-+    * Fix MSVC warning by properly passing linker flags to compiler.
-+    * Make msvcc.sh return 1 if invalid command line options are used rather than silently eating them.
-+    * Add more comments.
-+
-+commit c697472fccfbb5b87b007c053cda9ef014b346b9
-+Merge: 83fd2bc e48918e
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Mar 17 00:32:42 2014 -0400
-+
-+    Merge pull request #102 from joshtriplett/test-generic
-+    
-+    Add ABIs to the test matrix; unify many bits of the testsuite
-+
-+commit e48918ecf876bc85d040fc50a232059c566553a8
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 20:29:27 2014 -0700
-+
-+    testsuite: Add ABIs to the test matrix; unify tests across ABIs
-+    
-+    This eliminates all the *_win32.c tests in favor of the tests they were
-+    branched from, and expands test coverage to run many more tests on
-+    stdcall, thiscall, and fastcall.
-+    
-+    This same mechanism also supports testing any other target that has
-+    multiple ABIs.
-+
-+commit 4d4d368e5a55d9443c4c53b1b70d58ab6d8c941c
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 17:02:05 2014 -0700
-+
-+    testsuite: Replace ffitestcxx.h with ffitest.h
-+    
-+    ffitest.h contains a superset of the functionality of ffitestcxx.h;
-+    make the C++ tests include ffitest.h instead, and remove ffitestcxx.h.
-+
-+commit 3f97cf3413c46caf2a79f32ac9cda4620972c2d7
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 16:53:42 2014 -0700
-+
-+    testsuite: Unify the C and C++ testsuites
-+    
-+    These two testsuites differ only in the source file glob and a couple of
-+    additional compiler options; unify the remaining bits.
-+
-+commit 0d9cce8edb937bbe771a6cdd25f671edf06d2128
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 16:22:58 2014 -0700
-+
-+    testsuite: ffitest.h: Parenthesize the CHECK macro
-+
-+commit 5695ec1444c5323e48fe4314f8c8f027625e67df
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 16:04:58 2014 -0700
-+
-+    testsuite: Factor out a function to run a matrix of tests
-+    
-+    This commons up code from libffi.call/call.exp and
-+    libffi.special/special.exp, unifies the optimization option matrix
-+    between the two, and makes it easier to add more axes to the matrix
-+    in the future.
-+
-+commit dfdb02cc869855d3b68571e5f7aa77ae8c9d254a
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 15:26:26 2014 -0700
-+
-+    testsuite: Introduce a __THISCALL__ compiler-specific macro
-+
-+commit 83fd2bce0456224483435d4b764063f4513fd464
-+Merge: 3658a07 06ff924
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 22:03:29 2014 -0400
-+
-+    Merge pull request #99 from joshtriplett/gitignore
-+    
-+    .gitignore: Ignore more generated files
-+
-+commit 3658a0700a50d37a2fdba04fd9d79ad2f706d9f5
-+Merge: d948d0a 46c5d3c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 21:37:42 2014 -0400
-+
-+    Merge pull request #100 from rvandermeulen/bug-756740
-+    
-+    Change double quotes in Makefile.am to single quotes.
-+
-+commit 46c5d3c30fdc2b43c076ad955078d7c5f1e75b37
-+Author: Ryan VanderMeulen <ryanvm@gmail.com>
-+Date:   Sun Mar 16 21:16:08 2014 -0400
-+
-+    Change double quotes in Makefile.am to single quotes.
-+    
-+    This was originally done in PR #84, except the change was made to Makefile.in instead of Makefile.am and was therefore reverted the next time the files were regenerated.
-+
-+commit 06ff924215a2f9739efa2c059dc595bc4ec1c851
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 16:19:46 2014 -0700
-+
-+    .gitignore: Ignore more generated files
-+    
-+    The build process generates doc/libffi.info and fficonfig.h.in, so add
-+    them to .gitignore.
-+
-+commit bad8948346e9b8813023a0cc78a3b6eb8d9c14c6
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 15:16:18 2014 -0700
-+
-+    testsuite: Introduce a __STDCALL__ compiler-specific macro
-+    
-+    Several tests want to use stdcall, which differs in syntax by compiler,
-+    so introduce a macro for it in ffitest.h.
-+
-+commit 98a793fa36a4ab3ba24d059cb80a2891cdb940e1
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 15:20:36 2014 -0700
-+
-+    testsuite: Common up the ifdef blocks for compiler-specific macros
-+
-+commit d948d0a729c934b0224749338a3ba0a2c8f51c45
-+Merge: b61b472 a86bd31
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 10:53:48 2014 -0400
-+
-+    Merge pull request #98 from joshtriplett/unconfigure.host
-+    
-+    Merge configure.host into configure.ac
-+
-+commit a86bd318e2424d879d784ee7b29d6536d7a17c18
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 06:58:59 2014 -0700
-+
-+    Merge configure.host into configure.ac
-+    
-+    configure.host only has a single entry, and shows no signs of needing
-+    more added.
-+
-+commit b61b472bd0647006d6685238721002017f1d119c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 09:45:55 2014 -0400
-+
-+    Update version to 3.1-rc0.  Clean up README.
-+
-+commit 7a64e7dbba54e6e9f69954adfb943be1856ff928
-+Merge: 11a5c5c eef2e02
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 09:39:08 2014 -0400
-+
-+    Merge pull request #97 from joshtriplett/remove-more-generated-files
-+    
-+    Remove more generated files
-+
-+commit 11a5c5c39f5861011f6c5ddf795da3a32b5f0082
-+Merge: 9a62a21 1c68c07
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 09:38:47 2014 -0400
-+
-+    Merge pull request #96 from joshtriplett/sawing-changelogs
-+    
-+    Generate ChangeLog from git in make dist; remove it from version control
-+
-+commit eef2e02a13d7d1c8145d47a64467f654406a3548
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 06:26:03 2014 -0700
-+
-+    doc: Remove autogenerated info file and stamp
-+
-+commit 9fb403d3c5d9643e0f561cab6d4a07b1e54907ff
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 06:25:52 2014 -0700
-+
-+    fficonfig.h.in: Remove, configure generates it
-+
-+commit 1c68c07217fda78a779778c1480fedef7a58d5b4
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 06:11:58 2014 -0700
-+
-+    Generate ChangeLog from git in make dist
-+    
-+    Archive the existing ChangeLog to ChangeLog.libffi-3.1
-+
-+commit c65ed55e655711e008282edbdd82ce95d008b4f6
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 05:52:00 2014 -0700
-+
-+    ChangeLog.v1: Fix typo in explanatory header.
-+
-+commit 9a62a21f5c3a8e1da463229f3170c8ab3031d920
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 09:03:57 2014 -0400
-+
-+    Add missing ChangeLog entry.  Clean up some entries.
-+
-+commit 9bc704c58cb7a049d867837e3a11e2e31886ec66
-+Merge: 694447a e892e58
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 08:41:00 2014 -0400
-+
-+    Merge pull request #95 from joshtriplett/news
-+    
-+    README: Update news for 3.0.14
-+
-+commit e892e581d1838a06c18c7ecd50ebd79915cff92b
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 05:38:24 2014 -0700
-+
-+    README: Update news for 3.0.14
-+
-+commit 694447aa29deadd571efb4e9a26ee3f68ede1493
-+Merge: fdc87f3 45a6c21
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 08:32:05 2014 -0400
-+
-+    Merge pull request #93 from joshtriplett/travis-dist
-+    
-+    Make Travis check "make dist"
-+
-+commit 45a6c21efa944b520842e631dc54919b04884744
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 05:29:08 2014 -0700
-+
-+    .travis.yml: Test "make dist" too.
-+
-+commit fdc87f3b2ea37b58a4a9ae6c35083f544909fe3c
-+Merge: 7412b83 e1911f7
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 08:05:51 2014 -0400
-+
-+    Merge pull request #85 from joshtriplett/stdcall
-+    
-+    stdcall support on Linux
-+
-+commit e1911f78df113ca58738b66089a070d4cf747de7
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 03:25:53 2014 -0700
-+
-+    Add support for stdcall, thiscall, and fastcall on non-Windows x86-32
-+    
-+    Linux supports the stdcall calling convention, either via functions
-+    explicitly declared with the stdcall attribute, or via code compiled
-+    with -mrtd which effectively makes stdcall the default.
-+    
-+    This introduces FFI_STDCALL, FFI_THISCALL, and FFI_FASTCALL on
-+    non-Windows x86-32 platforms, as non-default calling conventions.
-+
-+commit 7412b838d543aae4fa925862bd5702d3dacbc29a
-+Merge: c0cc5fd 9531d05
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 07:58:16 2014 -0400
-+
-+    Merge pull request #90 from joshtriplett/win32-unifdef
-+    
-+    prep_cif.c: Remove unnecessary ifdef for X86_WIN32
-+
-+commit c0cc5fdaa237b67e86f22d2f6e13f3b42d9aae33
-+Merge: 98b5296 b3a5da0
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 07:57:59 2014 -0400
-+
-+    Merge pull request #89 from joshtriplett/travis32
-+    
-+    .travis.yml: Test on both 32-bit and 64-bit
-+
-+commit 9531d05f64c2a674e0197158ffad68d69f177bd0
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 01:50:02 2014 -0700
-+
-+    prep_cif.c: Remove unnecessary ifdef for X86_WIN32
-+    
-+    ffi_prep_cif_core had a special case for X86_WIN32, checking for
-+    FFI_THISCALL in addition to the FFI_FIRST_ABI-to-FFI_LAST_ABI range
-+    before returning FFI_BAD_ABI.  However, on X86_WIN32, FFI_THISCALL
-+    already falls in that range, making the special case unnecessary.
-+    Remove it.
-+
-+commit b3a5da068abd2f2983d9e67adbf41b0e0f34e37f
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sat Mar 15 23:27:56 2014 -0700
-+
-+    .travis.yml: Test on both 32-bit and 64-bit
-+
-+commit 98b52960485a261399f081915f36063de3854a5f
-+Merge: 134ce4c f6dd184
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 07:51:33 2014 -0400
-+
-+    Merge pull request #94 from joshtriplett/esp-extra-stackery-perception
-+    
-+    ChangeLog: Document testsuite changes to remove fragile stack pointer checks
-+
-+commit f6dd1845434dd53e22129becdfa092c082df307c
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 04:49:36 2014 -0700
-+
-+    ChangeLog: Document testsuite changes to remove fragile stack pointer checks
-+
-+commit 134ce4c0266bf994f07518fc534de53f1d3c8de8
-+Merge: 2680e9e 9c27932
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 07:47:17 2014 -0400
-+
-+    Merge pull request #91 from joshtriplett/esp-extra-stackery-perception
-+    
-+    testsuite: Remove fragile stack pointer checks
-+
-+commit 9c279328ee12fc869adff63ca81f1230977bd42b
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 02:31:19 2014 -0700
-+
-+    testsuite: Remove fragile stack pointer checks
-+    
-+    testsuite/libffi.call/closure_stdcall.c and
-+    testsuite/libffi.call/closure_thiscall.c include inline assembly to save
-+    the stack pointer before and after the call, and compare the values.
-+    However, compilers can and do leave the stack in different states for
-+    these two pieces of inline assembly, such as by saving a temporary value
-+    on the stack across the call; observed with gcc -Os, and verified as
-+    spurious through careful inspection of disassembly.
-+
-+commit 2680e9ea9b4c87ea8042a61e551bd667493d4bd3
-+Merge: 071eab3 82f8cb2
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 07:44:08 2014 -0400
-+
-+    Merge pull request #88 from joshtriplett/such-precision-many-fail-wow
-+    
-+    testsuite/libffi.call/many.c: Avoid spurious failure due to excess precision
-+
-+commit 82f8cb24a1d976db35ae31a4b86cec8926da327d
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 04:27:32 2014 -0700
-+
-+    ChangeLog: Document many.c and many_win32.c changes to avoid spurious failures
-+
-+commit 88d562a8b5912e99306063fe3bc289bab6ca6ebe
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sat Mar 15 22:08:19 2014 -0700
-+
-+    testsuite/libffi.call/many_win32.c: Avoid spurious failure due to excess precision
-+    
-+    The test case testsuite/libffi.call/many_win32.c can spuriously fail due
-+    to excess floating-point precision.  Instrumenting it with some printf
-+    calls shows differences well above FLT_EPSILON.  (Note when
-+    instrumenting it that multiple computations of the difference, such as
-+    one in a print and another in the conditional, may produce different
-+    results.)
-+    
-+    Rather than complicating the test suite with architecture-specific flags
-+    to avoid excess precision, just simplify the floating-point computation
-+    to avoid a dependency on potential excess precision.
-+
-+commit c00a49ecd165b2d06c1c9b249d212dc843fa116f
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sat Mar 15 22:08:19 2014 -0700
-+
-+    testsuite/libffi.call/many.c: Avoid spurious failure due to excess precision
-+    
-+    The test case testsuite/libffi.call/many.c can spuriously fail due to
-+    excess floating-point precision.  Instrumenting it with some printf
-+    calls shows differences well above FLT_EPSILON.  (Note when
-+    instrumenting it that multiple computations of the difference, such as
-+    one in a print and another in the conditional, may produce different
-+    results.)
-+    
-+    Rather than complicating the test suite with architecture-specific flags
-+    to avoid excess precision, just simplify the floating-point computation
-+    to avoid a dependency on potential excess precision.
-+
-+commit 071eab32a7f9fbbef46c0d8f37d9985bc9cceb37
-+Merge: 2228c7a 2f44952
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 07:36:52 2014 -0400
-+
-+    Merge pull request #92 from joshtriplett/autogen
-+    
-+    Re-add libtool-ldflags
-+
-+commit 2f44952c95765c1486fad66f57235f8d459a9748
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sun Mar 16 04:35:12 2014 -0700
-+
-+    Re-add libtool-ldflags
-+
-+commit 2228c7ab190f3c529b9018495467b841fa21cba2
-+Merge: 76d19d0 35634db
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 16 07:25:18 2014 -0400
-+
-+    Merge pull request #87 from joshtriplett/autogen
-+    
-+    Remove autogenerated files from the repository
-+
-+commit 35634dbceaac0a1544f7385addc01d21ef1ef6a8
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Sat Mar 15 18:11:16 2014 -0700
-+
-+    Remove autogenerated files from the repository
-+    
-+    Add an autogen.sh to regenerate them.
-+
-+commit 76d19d004e36e99d261ee78261e2f52cea5e4ab1
-+Merge: c86d9b6 a1a6f71
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Mar 14 16:54:31 2014 -0400
-+
-+    Ensure the linker supports @unwind sections in libffi.
-+
-+commit c86d9b6cc6e16ee262844a33b40441374400758c
-+Merge: 4efb7db f8cdf11
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Mar 14 16:51:20 2014 -0400
-+
-+    Fix merge
-+
-+commit 4efb7dbfd9427c478a948cd0d464210123db8de8
-+Merge: 634a475 18eb81d
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Mar 14 16:47:57 2014 -0400
-+
-+    Merge pull request #81 from rvandermeulen/bug-756740
-+    
-+    Allow building for mipsel with Android NDK r8.
-+
-+commit a1a6f71bfe4199293043b2e4cfb4c8d3cb1112f9
-+Author: Ryan VanderMeulen <ryanvm@gmail.com>
-+Date:   Mon Mar 10 15:12:47 2014 -0400
-+
-+    Remove stray hunk that shouldn't have been included in this patch.
-+
-+commit f8cdf11467181f2a9a6b7e748167569aa58e3a81
-+Author: Ryan VanderMeulen <ryanvm@gmail.com>
-+Date:   Mon Mar 10 15:04:58 2014 -0400
-+
-+    Replace double quotes with single quotes in Makefile.in to improve compatibility between some versions of MSYS and gmake. From Mozilla bug 943728.
-+    https://bugzilla.mozilla.org/show_bug.cgi?id=943728
-+
-+commit dfa3738732e1bc3a7f4130395ae4bab55fcebb99
-+Author: Ryan VanderMeulen <ryanvm@gmail.com>
-+Date:   Mon Mar 10 14:53:48 2014 -0400
-+
-+    Ensure the linker supports @unwind sections in libffi. From Mozilla bug 756740.
-+    https://bugzilla.mozilla.org/show_bug.cgi?id=778414
-+    
-+    Also tracked as issue #42.
-+    https://github.com/atgreen/libffi/issues/42
-+
-+commit 18eb81d032f29d645d0498ba92bddfd651f009ae
-+Author: Ryan VanderMeulen <ryanvm@gmail.com>
-+Date:   Mon Mar 10 14:43:37 2014 -0400
-+
-+    Allow building for mipsel with Android NDK r8. From Mozilla bug 756740.
-+    https://bugzilla.mozilla.org/show_bug.cgi?id=756740
-+
-+commit 634a475eaf1bee31c09f7d519e31c13b64cd24df
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 1 18:37:29 2014 -0500
-+
-+    Update Makefile for new darwin scripts
-+
-+commit c7b67e874bb89859f9a07d1cf9606052b6c0dcc1
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 1 18:34:18 2014 -0500
-+
-+    Add README note
-+
-+commit a04e30ba3dc303133d459c1ac273ceefe4d49b32
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 17:20:59 2014 -0500
-+
-+    Add missing -DFFI_DEBUG flag
-+
-+commit 934dc1b5c8d6a9e727bedc72342831eb7d62c35f
-+Merge: 11d7aa9 67fbef3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 01:10:17 2014 -0500
-+
-+    Merge branch 'master' of github.com:/atgreen/libffi
-+
-+commit 11d7aa9d7a4bbe642944edc0f07cf96db9b270b6
-+Merge: b40aeda 3b44d41
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 01:06:48 2014 -0500
-+
-+    Merge pull request #46 from makotokato/android-clang
-+    
-+    Fix build failure when using clang for Android
-+
-+commit 67fbef3b56ff0ef88f9b1a7fe48cb77222fa6cec
-+Merge: b40aeda 3b44d41
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 01:06:48 2014 -0500
-+
-+    Merge pull request #46 from makotokato/android-clang
-+    
-+    Fix build failure when using clang for Android
-+
-+commit b40aeda31a74d95a37c723b6243aabac466e67c4
-+Merge: 20698ab 53ceaf1
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 01:01:29 2014 -0500
-+
-+    Merge branch 'master' of github.com:/atgreen/libffi
-+
-+commit 53ceaf14c5eeb16ba09745f0ca87cca367d41a90
-+Merge: 860fe66 cc9b518
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 01:01:02 2014 -0500
-+
-+    Merge pull request #40 from wojdyr/master
-+    
-+    Correct the -L flag in libffi.pc.in
-+
-+commit 20698abc6a00092fd7fd3e434a3a29dc0f048f1e
-+Merge: 64bd069 1a0b01e
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 00:56:27 2014 -0500
-+
-+    Merge pull request #66 from ppizarro/master
-+    
-+    BlackFin fixes - Fatal error when calling a function defined in a shared library from within the function called by FFI
-+
-+commit 860fe6646f5ae603e99a8d1d722ddddba8b75769
-+Merge: 64bd069 1a0b01e
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 00:56:27 2014 -0500
-+
-+    Merge pull request #66 from ppizarro/master
-+    
-+    BlackFin fixes - Fatal error when calling a function defined in a shared library from within the function called by FFI
-+
-+commit 64bd06990a7accf72271516a2110b86cdccd8df4
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 00:52:56 2014 -0500
-+
-+    Add ChangeLog entry for Josh's change
-+
-+commit edf29c5169b06fcfc241445e152e325bc3c50e0e
-+Merge: 33c9954 3998d26
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 00:50:25 2014 -0500
-+
-+    Merge pull request #75 from joshtriplett/longdouble
-+    
-+    Fix build error on x86 without distinct long double
-+
-+commit 33c9954f2eec539011a0f93270aaf013318837ae
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 00:38:41 2014 -0500
-+
-+    Rebuilt with new libtool
-+
-+commit 926b6989fbd08488b9105943293353d45ac527e0
-+Merge: 5a88c85 cc82051
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 00:26:57 2014 -0500
-+
-+    Merge branch 'master' of github.com:/atgreen/libffi
-+    
-+    Conflicts:
-+    	ChangeLog
-+
-+commit 5a88c85fde304052bed1581ed0b6452ac2c68838
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 00:23:04 2014 -0500
-+
-+    Fix spelling errors
-+
-+commit cc82051c7e80cea772c4b72da026eb7e68d598fc
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 00:23:04 2014 -0500
-+
-+    Fix spelling errors
-+
-+commit 001aaf4b1b56349596bb6f6b5c1613dcbbd84ea8
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 00:20:17 2014 -0500
-+
-+    When no VFP arguments are present the IP register is used
-+    uninitialized. Initialize it to the value of FP.
-+    
-+    This fixes a number of testsuite failures when configured for
-+    armv7l-unknown-linux-gnueabihf
-+
-+commit 49f7729c3ce697c12408c42ccb29cdf4eb66bb85
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 28 00:17:16 2014 -0500
-+
-+    aarch64 fix
-+
-+commit 447483d51c6aa9df7116f346a73fc1cf795f4c2b
-+Merge: 51377bd b4df9cf
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Feb 27 15:42:41 2014 -0500
-+
-+    Fix ChangeLog merge
-+
-+commit 3998d2604b5c0d45a098ff3119a9fd9710ef429d
-+Author: Josh Triplett <josh@joshtriplett.org>
-+Date:   Mon Feb 17 11:20:33 2014 -0800
-+
-+    Fix build error on x86 without distinct long double
-+    
-+    src/x86/ffi64.c: In function 'classify_argument':
-+    src/x86/ffi64.c:205:5: error: duplicate case value
-+         case FFI_TYPE_LONGDOUBLE:
-+         ^
-+    src/x86/ffi64.c:202:5: error: previously used here
-+         case FFI_TYPE_DOUBLE:
-+         ^
-+
-+commit 51377bda9aed0b2c1309c818460cab9d9ab3d46e
-+Merge: f08da54 40927bd
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Feb 15 08:06:29 2014 -0500
-+
-+    Merge pull request #72 from heiher/devel
-+    
-+    MIPS N32: Fix call floating point va function
-+
-+commit f08da5465463e60a28f5e921f23ebf2ba984c148
-+Merge: 3dc3f32 fa5f25c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Feb 15 08:06:11 2014 -0500
-+
-+    Merge pull request #68 from zeldin/master
-+    
-+    Linux/ppc64: Remove assumption on contents of r11 in closure
-+
-+commit 40927bd3e1e7c6007025ba10854fd8a0664e47df
-+Author: Heiher <r@hev.cc>
-+Date:   Tue Jan 21 23:18:27 2014 +0800
-+
-+    Fix call floating point va function
-+    
-+    I'm not sure floating-point arguments in GPR or FPR before calling
-+    variable number arguments function. so, load all arguments to GPR and
-+    FPR.
-+
-+commit b4df9cf9cc4a9a9401a53fd6bea1f3c2c283b97b
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Wed Feb 5 14:22:52 2014 -0500
-+
-+    AArch64: Fix void fall-through case when assertions are enabled
-+
-+commit f466aad0d91a117e42571d1d6fb434fa0433c930
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Tue Jan 21 16:38:31 2014 -0500
-+
-+    AArch64: Fix missing semicolons when assertions are enabled
-+
-+commit 7ea677733bd98917241852b8901a6b7580728895
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 30 20:58:31 2013 -0500
-+
-+    Remove build-ios from Makefile
-+    
-+    Conflicts:
-+    	ChangeLog
-+
-+commit 6ae046cc59c12b2cd40158d6bcb96f4a59886159
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 30 21:06:51 2013 -0500
-+
-+    Mention Aarch64 on iOS
-+
-+commit bfc06b3fdb32abe90ce0749aedfec649df85a7ef
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Mon Dec 30 17:36:39 2013 -0500
-+
-+    Update ChangeLog
-+
-+commit 0a0f12ce1f7be81006b08a3c81a636926d283a9b
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Thu Jan 9 13:50:17 2014 -0500
-+
-+    AArch64: Remove duplicitous element_count call.
-+    
-+    This inhibits an analyzer warning by Clang.
-+
-+commit 4330fdcd92e67c816288d64ab230237065768206
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Thu Jan 9 13:53:30 2014 -0500
-+
-+    Darwin/aarch64: Respect iOS ABI re: stack argument alignment
-+
-+commit 0a333d6c3973935d4fe02aae76b10e39d3c88e07
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Thu Jan 9 14:03:29 2014 -0500
-+
-+    Darwin/aarch64: Fix size_t assumptions
-+
-+commit 2c18e3c76aad1b426617db05a4384e7c3a920176
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Mon Dec 30 16:14:02 2013 -0500
-+
-+    Darwin/aarch64: Fix "shadows declaration" warnings
-+
-+commit 1b8a8e20e344f3c55495ab6eb46bd14e843d4b3e
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Thu Jan 9 13:55:21 2014 -0500
-+
-+    Darwin/aarch64: Use Clang cache invalidation builtin
-+
-+commit 6030cdcae776f8fb5876a53168f7d1e75d28a242
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Mon Dec 30 15:45:51 2013 -0500
-+
-+    Darwin/aarch64: Account for long double being equal to double
-+
-+commit 5658b0892683d2e24e4d5842978c184a7ad33858
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Mon Dec 30 16:33:47 2013 -0500
-+
-+    Darwin/aarch64: Use CNAME, restrict .size like ARM
-+
-+commit 07175780802acec5dc49fdedd6d20a62409a6707
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Mon Dec 30 17:48:22 2013 -0500
-+
-+    Darwin/aarch64: Fix invalid reference in assembly
-+
-+commit 9da28b44277fea3aeb827c35dd63d609d2524a8b
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Mon Dec 30 16:23:21 2013 -0500
-+
-+    Darwin/x86_64: Fix 64-bit type shortening warnings
-+
-+commit 821d398f08bd1d540a5b235507812ffeee49b580
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Thu Jan 9 13:15:06 2014 -0500
-+
-+    Darwin: Merge build scripts, redo project, incl. arm64
-+
-+commit 6eff9ff9e72463b9783be2514f944b6f05692054
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Mon Dec 30 17:48:10 2013 -0500
-+
-+    Darwin/iOS: Improve unified syntax use for LLVM
-+
-+commit ba0ea99c82aadd5957386a031e3122011bd36d52
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Mon Dec 30 15:27:44 2013 -0500
-+
-+    Fix dlmalloc warnings due to set_segment_flags, sizeof(size_t)
-+
-+commit 994be3a5c1d0d17b19103396103e128517fd62f9
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Mon Dec 30 15:27:14 2013 -0500
-+
-+    Darwin/iOS: Fix mis-typing of vfp_reg_free
-+
-+commit a8e0a835ab1f62d03ad6391760e3e8b7732d24f8
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Mon Dec 30 15:26:20 2013 -0500
-+
-+    Darwin/ARM: Assert on NULL dereference
-+    
-+    This inhibits an analyzer warning by Clang on all platforms.
-+
-+commit 13675341581c489ed9df8ba390c8e08a732decb2
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Thu Jan 9 13:42:08 2014 -0500
-+
-+    Darwin/i386: Inhibit Clang previous prototype warnings
-+
-+commit 66469c381e2e2cc96e7d409266dea0ffe177eeca
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Thu Jan 9 13:41:45 2014 -0500
-+
-+    Darwin/ARM: Inhibit Clang previous prototype warnings
-+
-+commit 5bfe62a00d2d659eec9f19b39802b6e69844fc27
-+Author: Zachary Waldowski <zach@waldowski.me>
-+Date:   Thu Jan 9 13:41:27 2014 -0500
-+
-+    Darwin/AArch64: Inhibit Clang previous prototype warnings
-+
-+commit fa5f25c20f76a6ef5e950a7ccbce826672c8a620
-+Author: Marcus Comstedt <marcus@mc.pp.se>
-+Date:   Sat Jan 4 19:00:08 2014 +0100
-+
-+    Linux/ppc64: Remove assumption on contents of r11 in closure
-+
-+commit 1a0b01e171e9c750437cef2f18917f5a6e32c498
-+Author: Paulo Pizarro <paulo.pizarro@gmail.com>
-+Date:   Thu Jan 2 16:17:59 2014 -0200
-+
-+    When the function called by the ffi called a function defined in a shared library generate a fatal error
-+    The correction was to take into consideration the GOT.
-+
-+commit 3dc3f32c35db5ab995a835225f6815369735ceb7
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Dec 5 16:23:25 2013 -0500
-+
-+    Undo iOS ARM64 changes.
-+
-+commit 356b2cbc304bfe5bdc28b8d1c68d1ff084e9ec37
-+Merge: 484a758 07345a3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 30 22:38:13 2013 -0500
-+
-+    Merge branch 'master' of github.com:/atgreen/libffi
-+
-+commit 484a7584260e2fbb399ce90083046834271bf9ff
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 30 21:06:51 2013 -0500
-+
-+    Mention Aarch64 on iOS
-+
-+commit 07345a30ec0a2fa45a7c363d301f57723690cfa0
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 30 21:06:51 2013 -0500
-+
-+    Mention Aarch64 on iOS
-+
-+commit d4b931c1b872378c35f12ddbb9a6d55e7f17c65e
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 30 20:58:31 2013 -0500
-+
-+    Remove build-ios from Makefile
-+
-+commit dfbf236d70fc1ec68e6ff193584a154353508e2f
-+Merge: 852ac3b bb9740e
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 30 20:54:54 2013 -0500
-+
-+    Merge branch 'master' of github.com:/atgreen/libffi
-+    Add ChangeLog entry.
-+
-+commit bb9740e545205f93a525c77aa6d1cbf4ca9371f3
-+Merge: ac75368 4d701e0
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 30 17:54:39 2013 -0800
-+
-+    Merge pull request #60 from zwaldowski/ios-redo
-+    
-+    Mac/iOS support, including aarch64 port
-+
-+commit 4d701e03faa475a5eb3b54b90046114a1e27b813
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 13:25:27 2013 -0500
-+
-+    Darwin: Properly export headers from Xcode project
-+
-+commit 022f12eb9ad2264e838fa5fb453733f5177888f4
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 12:21:38 2013 -0500
-+
-+    Darwin: Freshen gen scripts, remove old build-ios.sh
-+
-+commit e820fe2025d7ad3df7584407946dfaad2af69599
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 12:03:51 2013 -0500
-+
-+    Darwin/iOS: Include x86_64+aarch64 pieces in library
-+
-+commit 0278284e470ec91db7cdc15ac3dcd64683305848
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 03:03:37 2013 -0500
-+
-+    Darwin/aarch64: size_t assumptions
-+
-+commit 9775446b6441c91cd9059215c106aa3bcf949767
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 02:39:34 2013 -0500
-+
-+    Darwin/aarch64: Fix “shadows declaration” warnings
-+
-+commit 4260badc37705d3618e774dfe61184ac709881c1
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 02:08:14 2013 -0500
-+
-+    Darwin/aarch64: Use Clang cache invalidation builtin
-+
-+commit 9fa7998d5f9250908cbf12a671479852ebadf9d1
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 02:07:48 2013 -0500
-+
-+    Darwin/aarch64: Inhibit Xcode warning
-+
-+commit 0e832048a93830575b0976406444e134e649a4f7
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 02:07:34 2013 -0500
-+
-+    Darwin/aarch64: double == long double
-+
-+commit 602dc22d76931092610234cf063f9f1b8dbc1a51
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 02:06:00 2013 -0500
-+
-+    Darwin/iOS prep script: try and compile for arm64
-+
-+commit b513dfe79de4725e8a717325a9e3b5b9f69f63dc
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 02:05:22 2013 -0500
-+
-+    Darwin/aarch64: Restrict .size to ELF like arm32.
-+
-+commit bc978099bf2812de755c076b67ef9c2547607572
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 02:04:57 2013 -0500
-+
-+    Darwin/aarch64: Potentially(?) fix compile error
-+
-+commit d6bb9314467c6e0683156559d23ca341c43fa3c8
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 02:04:22 2013 -0500
-+
-+    Darwin/aarch64: Use CNAME refs
-+
-+commit 33c46ce5680eea28d3437c8771ec1d137e226b45
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 04:13:42 2013 -0500
-+
-+    Darwin/Mac: Fix 64/32 shortening warnings
-+
-+commit 0612081e6c161d9d820742f995975d35da2adbc2
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 03:03:00 2013 -0500
-+
-+    Darwin: Misc size_t warnings
-+
-+commit 6a6247d179ec3859311c2d8775841b884f309f66
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 02:55:48 2013 -0500
-+
-+    Darwin: Fix dlmalloc warnings due to sizeof(size_t)
-+
-+commit 4d60d9e1e32de6166ffd63bbe9ce54cf961c78fc
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 04:09:30 2013 -0500
-+
-+    Darwin: Rebuild Xcode project
-+
-+commit cb719a5c1c2eb391d6a5f5e02484ba4aa990a51b
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 04:09:18 2013 -0500
-+
-+    Darwin/iOS: Fix LLVM 3.3 warning re: memcpy.
-+
-+commit 21bde92c9abb378f9c456a9d95e6f9b99ef8c920
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 03:43:42 2013 -0500
-+
-+    Darwin: Clean up, modernize generator scripts
-+
-+commit fd54eab74cef7891e4acaaafb71e783142ecb69e
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Sat Nov 30 03:38:02 2013 -0500
-+
-+    Darwin/Mac: Also exclude OS X generated source
-+
-+commit 953b6f14c655141f9e7d82550a312c3eeb961091
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Tue Apr 24 11:16:20 2012 -0400
-+
-+    Darwin/iOS: More unified syntax support w/ Clang.
-+    
-+    Signed-off-by: Zachary Waldowski <zwaldowski@gmail.com>
-+
-+commit c713a55379481c339877f2e0003d97cb8d9ed80e
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Tue Apr 24 10:25:29 2012 -0400
-+
-+    Darwin/iOS: Simplify RETLDM arguments for LLVM 3.1
-+    
-+    Signed-off-by: Zachary Waldowski <zwaldowski@gmail.com>
-+
-+commit 16ba1b80028db5cb71cf86e5f79f5e48317f83c8
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Wed Apr 11 23:26:04 2012 -0400
-+
-+    Darwin: Silence Clang warnings.
-+
-+commit 852ac3bd302d6ed97b1ef65f4cbed69c258a48df
-+Merge: ab79d6e ac75368
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Nov 21 21:25:44 2013 -0500
-+
-+    Merge branch 'master' of github.com:/atgreen/libffi
-+    
-+    Conflicts:
-+    	ChangeLog
-+
-+commit ab79d6e21992dd86139ba07530ff888833b78a04
-+Author: Alan Modra <amodra@gmail.com>
-+Date:   Thu Nov 21 06:12:35 2013 -0500
-+
-+    This separates the 32-bit sysv/linux/bsd code from the 64-bit linux
-+    code, and makes it possible to link code compiled with different
-+    options to those used to compile libffi.  For example, a
-+    -mlong-double-128 libffi can be used with -mlong-double-64 code.
-+    
-+    Using the return value area as a place to pass parameters wasn't such
-+    a good idea, causing a failure of cls_ulonglong.c.  I didn't see this
-+    when running the mainline gcc libffi testsuite because that version of
-+    the test is inferior to the upstreamm libffi test.
-+    
-+    Using NUM_FPR_ARG_REGISTERS rather than NUM_FPR_ARG_REGISTERS64 meant
-+    that a parameter save area could be allocated before it was strictly
-+    necessary.  Wrong but harmless.  Found when splitting apart ffi.c
-+    into 32-bit and 64-bit support.
-+
-+commit ac7536889334d4be50709006d7e23536364d7891
-+Author: Alan Modra <amodra@gmail.com>
-+Date:   Thu Nov 21 06:12:35 2013 -0500
-+
-+    This separates the 32-bit sysv/linux/bsd code from the 64-bit linux
-+    code, and makes it possible to link code compiled with different
-+    options to those used to compile libffi.  For example, a
-+    -mlong-double-128 libffi can be used with -mlong-double-64 code.
-+    
-+    Using the return value area as a place to pass parameters wasn't such
-+    a good idea, causing a failure of cls_ulonglong.c.  I didn't see this
-+    when running the mainline gcc libffi testsuite because that version of
-+    the test is inferior to the upstreamm libffi test.
-+    
-+    Using NUM_FPR_ARG_REGISTERS rather than NUM_FPR_ARG_REGISTERS64 meant
-+    that a parameter save area could be allocated before it was strictly
-+    necessary.  Wrong but harmless.  Found when splitting apart ffi.c
-+    into 32-bit and 64-bit support.
-+
-+commit 69df91cfb4fa6bcb644350a80bff970f27478a6a
-+Merge: 2f45082 aa1f62c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Nov 18 06:34:04 2013 -0800
-+
-+    Merge pull request #59 from iains/powerpc-darwin-unwind-fix
-+    
-+    Fix PowerPC Darwin FDE encodings to use pcrel correctly.  Modernise the picbase labels.
-+
-+commit aa1f62c0a093c30325dff1d4d2b6b4b22eb96929
-+Author: Iain Sandoe <iain@codesourcery.com>
-+Date:   Mon Nov 18 13:11:56 2013 +0000
-+
-+    Fix PowerPC Darwin FDE encodings to use pcrel correctly.  Modernise the picbase labels.
-+
-+commit 2f450822a8698ba88441c56d152c7dc8924b127f
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Nov 18 06:52:29 2013 -0500
-+
-+    Clean up code to appease modern GCC compiler.
-+
-+commit 16d56c51aded374730920a4acde76ff3d2860ae1
-+Author: Alan Modra <amodra@gmail.com>
-+Date:   Mon Nov 18 06:36:03 2013 -0500
-+
-+    An #endif in the wrong place would cause compile failure on powerpcle.
-+    Using bl instead of b doesn't cause runtime failures as you might think,
-+    but does mess the processor branch prediction.
-+
-+commit 34f878a5ef28663f6b1d7fd26fb099429ea1579e
-+Merge: 83f65b6 1fd0457
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 16 06:57:54 2013 -0500
-+
-+    Merge branch 'master' of github.com:/atgreen/libffi
-+    
-+    Conflicts:
-+    	ChangeLog
-+    	src/powerpc/ffi.c
-+
-+commit 83f65b63d9764a9cc7688fc5cda5ee2bd23faf54
-+Author: Alan Modra <amodra@gmail.com>
-+Date:   Sat Nov 16 06:53:50 2013 -0500
-+
-+    Finally, this adds _CALL_ELF == 2 support.  ELFv1 objects can't be
-+    linked with ELFv2 objects, so this is one case where preprocessor
-+    tests in ffi.c are fine.  Also, there is no need to define a new
-+    FFI_ELFv2 or somesuch value in enum ffi_abi.  FFI_LINUX64 will happily
-+    serve both ABIs.
-+
-+commit 1fd045784cac874b5d76b7fa931f67209a8280d3
-+Author: Alan Modra <amodra@gmail.com>
-+Date:   Sat Nov 16 06:53:50 2013 -0500
-+
-+    Finally, this adds _CALL_ELF == 2 support.  ELFv1 objects can't be
-+    linked with ELFv2 objects, so this is one case where preprocessor
-+    tests in ffi.c are fine.  Also, there is no need to define a new
-+    FFI_ELFv2 or somesuch value in enum ffi_abi.  FFI_LINUX64 will happily
-+    serve both ABIs.
-+
-+commit 362851379a49ce07d3e36e82c4e5c7b6cc16a352
-+Author: Alan Modra <amodra@gmail.com>
-+Date:   Sat Nov 16 06:52:43 2013 -0500
-+
-+    Andreas' 2013-02-08 change reverted some breakage for struct return
-+    values from 2011-11-12, but in so doing reintroduced string
-+    instructions to sysv.S that are not supported on all powerpc variants.
-+    This patch properly copies the bounce buffer to destination in C code
-+    rather than in asm.
-+    
-+    I have tested this on powerpc64-linux, powerpc-linux and
-+    powerpc-freebsd.  Well, the last on powerpc-linux by lying to
-+    configure with
-+    
-+    CC="gcc -m32 -msvr4-struct-return -mlong-double-64" \
-+    CXX="g++ -m32 -msvr4-struct-return -mlong-double-64" \
-+    /src/libffi-current/configure --build=powerpc-freebsd
-+    
-+    and then
-+    
-+    make && make CC="gcc -m32" CXX="g++ -m32" \
-+    RUNTESTFLAGS=--target_board=unix/-m32/-msvr4-struct-return/-mlong-double-64\
-+     check
-+
-+commit 1c06515d927d9de1582438d4eb5953890e79c5c7
-+Author: Alan Modra <amodra@gmail.com>
-+Date:   Sat Nov 16 06:41:36 2013 -0500
-+
-+    The powerpc64 ABIs align structs passed by value, a fact ignored by
-+    gcc for quite some time.  Since gcc now does the correct alignment,
-+    libffi needs to follow suit.  This ought to be made selectable via
-+    a new abi value, and the #ifdefs removed from ffi.c along with many
-+    other #ifdefs present there and in assembly.  I'll do that with a
-+    followup patch sometime.
-+    
-+    This is a revised version of
-+    https://sourceware.org/ml/libffi-discuss/2013/msg00162.html
-+
-+commit a97cf1fae575d8bfd5259c5c422025ad43911326
-+Author: Alan Modra <amodra@gmail.com>
-+Date:   Sat Nov 16 06:40:13 2013 -0500
-+
-+    This patch prepares for ELFv2, where sizes of these areas change.  It
-+    also makes some minor changes to improve code efficiency.
-+
-+commit 164283f4ac5972ce2ab5e015cc2ab1014c23276c
-+Author: Alan Modra <amodra@gmail.com>
-+Date:   Sat Nov 16 06:38:55 2013 -0500
-+
-+    The powerpc64 support opted to pass floating point values both in the
-+    fpr area and the parameter save area, necessary when the backend
-+    doesn't know if a function argument corresponds to the ellipsis
-+    arguments of a variadic function.  This patch adds powerpc support for
-+    variadic functions, and changes the code to only pass fp in the ABI
-+    mandated area.  ELFv2 needs this change since the parameter save area
-+    may not exist there.
-+    
-+    This also fixes two faulty tests that used a non-variadic function
-+    cast to call a variadic function, and spuriously reasoned that this is
-+    somehow necessary for static functions..
-+
-+commit 31257b3189f81a199bc2902c22bc5f2d7c54ccde
-+Author: Andrew Haley <aph@redhat.com>
-+Date:   Sat Nov 16 06:35:51 2013 -0500
-+
-+    Fix sample closure code
-+
-+commit db0ace3a38496af73eae3df02ef353736d16909f
-+Author: Andrew Haley <aph@redhat.com>
-+Date:   Sat Nov 16 06:29:25 2013 -0500
-+
-+    Fix broken test cases
-+
-+commit de10f5039ed7a53382ddcc95c368d03e535edb98
-+Merge: 58c2577 f3657da
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Nov 14 10:56:29 2013 -0500
-+
-+    Merge branch 'master' of https://github.com/bivab/libffi
-+    
-+    Conflicts:
-+    	ChangeLog
-+
-+commit f3657da278dd63afcdd8762894a9bdaea8ef028a
-+Author: David Schneider <david.schneider@bivab.de>
-+Date:   Thu Nov 14 13:02:16 2013 +0100
-+
-+    update Changelog
-+
-+commit 58c2577a3ff80e7416ef0434769e2af23365719c
-+Author: Alan Modra <amodra@gmail.com>
-+Date:   Wed Nov 13 16:55:36 2013 -0500
-+
-+    This enshrines the current testsuite practice of using ffi_arg for
-+    returned values.  It would be reasonable and logical to use the actual
-+    return argument type as passed to ffi_prep_cif, but this would mean
-+    changing a large number of tests that use ffi_arg and all backends
-+    that write results to an ffi_arg.
-+
-+commit 8af42f9944f7ed72c81ae360aac6a84dc11f89dc
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Nov 13 16:40:28 2013 -0500
-+
-+    Respect HAVE_ALLOCA_H
-+
-+commit cdf405d574f479b782454516366bd4f4b9b3415e
-+Author: David Schneider <david.schneider@bivab.de>
-+Date:   Wed Nov 13 15:50:21 2013 +0100
-+
-+    add a testcase for the double/float issue on ARMHF
-+
-+commit 77f823e31ffb557a466b24f7fba845fbf7831798
-+Author: David Schneider <david.schneider@bivab.de>
-+Date:   Wed Nov 13 14:26:57 2013 +0100
-+
-+    stop trying to assing vfp regs once we are done with the registers
-+
-+commit 37067ec5036f2a6ed7a4799f83f8f53160460344
-+Author: David Schneider <david.schneider@bivab.de>
-+Date:   Tue Nov 12 19:49:01 2013 +0100
-+
-+    mark all vfp registers as used when done.
-+    
-+    To avoid assigning registers the would fit, once arguments have been on
-+    the stack, we mark all registers as used once we do not find a free
-+    register for the first time.
-+
-+commit 2f5b7ce545473a7f6e41193edc29407cbebe82d5
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 9 06:16:32 2013 -0500
-+
-+    UltraSPARC IIi fix.  Update README and build configury.
-+
-+commit becd754434173032f426d22ffcbfe24f55b3c137
-+Author: Mark Kettenis <kettenis@gnu.org>
-+Date:   Wed Nov 6 06:43:49 2013 -0500
-+
-+    Align the stack pointer to 16-bytes.
-+
-+commit 05c31093409f7b3e6d795fac21d2c954313d8162
-+Author: Konstantin Belousov <kib@freebsd.org>
-+Date:   Wed Nov 6 06:40:58 2013 -0500
-+
-+    Mark executable as not requiring executable stack.
-+
-+commit cf6bf9818e8394cfcdb07a40c6a5e2ee6b01d333
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 2 17:23:59 2013 -0400
-+
-+    Fix up docs
-+
-+commit 02177176854d16fc0f1a5958aa34da2f306630ee
-+Merge: c242217 c265b4c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 2 17:11:22 2013 -0400
-+
-+    Merge branch 'master' of github.com:/atgreen/libffi
-+
-+commit c2422174b3edc0de0b148dfd6b67087bb881c4a6
-+Merge: f4b843f d918d47
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 2 14:08:23 2013 -0700
-+
-+    Merge pull request #45 from foss-for-synopsys-dwc-arc-processors/arc_support
-+    
-+    arc: Fix build error
-+
-+commit c265b4cacb9130f042699a85de9c7242b3f49cc3
-+Merge: f4b843f d918d47
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 2 14:08:23 2013 -0700
-+
-+    Merge pull request #45 from foss-for-synopsys-dwc-arc-processors/arc_support
-+    
-+    arc: Fix build error
-+
-+commit f4b843f83710ac378c48abd87fe66bb519d30d2e
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 2 17:01:15 2013 -0400
-+
-+    Don't align stack for win32
-+
-+commit f3cd39345713db8e414cf642b6cb65a4cfe6018c
-+Merge: 666f3e7 6aa1590
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 2 13:17:57 2013 -0700
-+
-+    Merge pull request #51 from vbudovski/for_upstream
-+    
-+    Don't use 16 byte aligned stack for WIN32
-+
-+commit 666f3e71b56d92c49fcd2d7f349b8f8ebca0f8a3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Oct 26 09:12:42 2013 -0400
-+
-+    Add more credits to README.  Tidy up.
-+
-+commit 73ada14e756bad97fad0e6915a821a3c7e079f81
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Oct 26 09:09:45 2013 -0400
-+
-+    Update README
-+
-+commit d3372c54ce7117e80d389ba875dc5b6b2213c71e
-+Author: Mark H Weaver <mhw@netris.org>
-+Date:   Sat Oct 26 08:30:06 2013 -0400
-+
-+    Fix N32 ABI issue for MIPS.
-+
-+commit d6716aba8118eb0513885cfe557bedebb7016e8b
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Oct 15 15:42:49 2013 -0400
-+
-+    Update travis-ci build dependencies to include texinfo
-+
-+commit 16b93a211bcfbe4bd0efdcf94de225a71aa0ee02
-+Author: Sandra Loosemore <sandra@codesourcery.com>
-+Date:   Tue Oct 15 15:33:59 2013 -0400
-+
-+    Add nios2 port.
-+
-+commit 2f5626ce02fce8267ab48ceb6d7d0ed7d672a75e
-+Author: Sandra Loosemore <sandra@codesourcery.com>
-+Date:   Tue Oct 15 15:32:16 2013 -0400
-+
-+    Fix testsuite bug
-+
-+commit f64e4a865557e440774436b4c2b2fd7374290e97
-+Author: Marcus Shawcroft <marcus.shawcroft@arm.com>
-+Date:   Tue Oct 15 15:20:14 2013 -0400
-+
-+    Fix many.c testcase for Aarch64
-+
-+commit 128cd1d2f358f26d9fa75a27cf2b30356f5dd903
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Oct 8 06:45:51 2013 -0400
-+
-+    Fix spelling errors
-+
-+commit ff06269d707cafbfef2a88afb07a79c9d1480c5f
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Oct 8 06:32:18 2013 -0400
-+
-+    Update README for M88K and VAX
-+
-+commit d2fcbcdfbea750d1f6a9f493e2e6c4d5ffa71b34
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Oct 8 06:27:46 2013 -0400
-+
-+    Add m88k and VAX support. Update some configury bits.
-+
-+commit 6aa15900accc0a648cdebf11ec11d11697ebfffd
-+Author: Vitaly Budovski <vbudovski@gmail.com>
-+Date:   Thu Sep 5 12:05:06 2013 +1000
-+
-+    Don't use 16 byte aligned stack for WIN32
-+    
-+    This fixes a crash when accessing __stdcall functions in Python ctypes.
-+
-+commit 3b44d41156149af8da2a58825fefdfa23274ae7a
-+Author: Makoto Kato <m_kato@ga2.so-net.ne.jp>
-+Date:   Wed Jul 10 15:34:53 2013 +0900
-+
-+    Fix build failure when using clang for Android
-+    
-+    clang for Android generates __gnu_linux__ define, but gcc for Android doesn't.  So we should add check it for Android
-+
-+commit d918d47809c174d62283306b282749f8db93661f
-+Author: Mischa Jonker <mjonker@synopsys.com>
-+Date:   Mon Jul 8 15:51:36 2013 +0200
-+
-+    arc: Fix build error
-+    
-+    One part of the patch for ARC support was missing in the upstreamed
-+    version.
-+    
-+    Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
-+
-+commit d3d099b40c122550279789200263346f120f6909
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Jul 2 16:11:38 2013 -0400
-+
-+    little-endian ppc64 support
-+
-+commit 0f8690a84c874ec09a090c8c6adfb93c594acac6
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Jul 2 15:54:40 2013 -0400
-+
-+    Rebuild for ARC additions
-+
-+commit f88118b345f27c46f5445d6e4832c498ff9a6d85
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Jul 2 15:51:27 2013 -0400
-+
-+    Revert "Merge pull request #36 from abergmeier/emscripten_fix"
-+    
-+    This reverts commit 6a4d901dde7b3f87984c563505717cde3113d16e, reversing
-+    changes made to b50a13b9c07ec09af4b9697e482acdad571e6961.
-+
-+commit 6a4d901dde7b3f87984c563505717cde3113d16e
-+Merge: b50a13b 587002c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Jul 2 12:12:34 2013 -0700
-+
-+    Merge pull request #36 from abergmeier/emscripten_fix
-+    
-+    Fixes for building with Emscripten
-+
-+commit b50a13b9c07ec09af4b9697e482acdad571e6961
-+Merge: 767f1f9 b082e15
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Jul 2 12:10:26 2013 -0700
-+
-+    Merge pull request #44 from foss-for-synopsys-dwc-arc-processors/arc_support
-+    
-+    Add ARC support
-+
-+commit 767f1f96e5282da44d7340e6815e9820a3f78e39
-+Merge: c3c40e0 b8a91d8
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Jul 2 12:08:04 2013 -0700
-+
-+    Merge pull request #43 from JensTimmerman/__m128
-+    
-+    added include for xmmintrin.h
-+
-+commit b8a91d81be77d479327fdb6bdd9fdae6d18e6e63
-+Author: Jens Timmerman <jens.timmerman@ugent.be>
-+Date:   Tue Jul 2 10:57:37 2013 +0200
-+
-+    added include for xmmintrin.h
-+
-+commit b082e15091961373c03d10ed0251f619ebb6ed76
-+Author: Mischa Jonker <mjonker@synopsys.com>
-+Date:   Mon Jun 10 16:19:33 2013 +0200
-+
-+    Add ARC support
-+    
-+    This adds support for the ARC architecture to libffi. DesignWare ARC
-+    is a family of processors from Synopsys, Inc.
-+    
-+    This patch has been tested on a little-endian system and passes
-+    the testsuite.
-+    
-+    Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
-+
-+commit cc9b518687e46b0d1acafdd4bc3f3b281c25a3d9
-+Author: Marcin Wojdyr <wojdyr@gmail.com>
-+Date:   Tue May 14 15:01:23 2013 +0200
-+
-+    Update libffi.pc.in
-+    
-+    use -L${toolexeclibdir} instead of -L${libdir}
-+    to be consistent with Makefile.am
-+
-+commit 587002c092cffe6e7a8d7028f246c241d03b738c
-+Author: Andreas Bergmeier <andreas.bergmeier@gmx.net>
-+Date:   Fri Apr 19 17:12:24 2013 +0200
-+
-+    Enable disabling of libtool on platforms where it does not work (e.g. LLVM).
-+    Build libraries normally then.
-+
-+commit c3c40e0290377d7cf948b072eedd8317c4bf215e
-+Merge: ede96e4 4750e3c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 30 05:24:14 2013 -0700
-+
-+    Merge pull request #34 from davidsch/armhf
-+    
-+    Fix ARM hard-float support for large numbers of VFP arguments
-+
-+commit 4750e3c662fd9569cb3e2d28f539685fd1ca8caf
-+Author: David Schneider <david.schneider@bivab.de>
-+Date:   Thu Mar 28 16:56:36 2013 +0100
-+
-+    update changelog
-+
-+commit 9708e7cf09f1bf815f4d6485eb1f180fabb35804
-+Author: David Schneider <david.schneider@bivab.de>
-+Date:   Wed Mar 27 19:31:04 2013 +0100
-+
-+    folow the ARM hard-float ABI in ffi_prep_incoming_args_VFP
-+
-+commit b41120981e5e49ca2da10b94b154775f50da5f36
-+Author: David Schneider <david.schneider@bivab.de>
-+Date:   Wed Mar 27 16:38:35 2013 +0100
-+
-+    create separated versions of ffi_prep_incoming_args_* for SYSV and VFP ABIs.
-+    
-+    The different versions will be called depending on the value of cif->abi
-+
-+commit dd26f1f39c54861c5b91931f0f37a72942c2a072
-+Author: David Schneider <david.schneider@bivab.de>
-+Date:   Thu Mar 28 15:39:01 2013 +0100
-+
-+    add a failing test for closures on ARM hardfloat
-+
-+commit 3c1608613ab3c2184222b98c5482cddedd6b559b
-+Author: David Schneider <david.schneider@bivab.de>
-+Date:   Tue Mar 26 19:24:47 2013 +0100
-+
-+    extend ffi_prepare_args for FFI_VFP (hard-float ABI), fixing an issue with passing VFP arguments in VFP registers and the stack, while at the same time not using all core registers.
-+
-+commit 0f2ff2d4c92719be8936179f9ab674f4d1a3fd14
-+Author: David Schneider <david.schneider@bivab.de>
-+Date:   Tue Mar 26 19:22:02 2013 +0100
-+
-+    separate ARM ffi_prepare_args in a version implementing the simple SYSV calling convention and one for the hard-float calling convention
-+
-+commit 3a352b8a8252400a83de22c7c424bf1887b4a2ef
-+Author: David Schneider <david.schneider@bivab.de>
-+Date:   Tue Mar 26 14:24:04 2013 +0100
-+
-+    move the hardfloat specific argument copying code to the helper function
-+
-+commit 5df6b7944a4225b6eb329f3886be64e04e966f29
-+Author: David Schneider <david.schneider@bivab.de>
-+Date:   Tue Mar 26 14:02:21 2013 +0100
-+
-+    extract setting of arguments to be passed to a helper function
-+
-+commit 7d1048c471bb4b1f9d67a9e9f8e95f9a1d2e6d45
-+Author: David Schneider <david.schneider@bivab.de>
-+Date:   Tue Mar 26 11:33:33 2013 +0100
-+
-+    extract code to align the argument storage pointer to a helper function
-+
-+commit b9f013788f0f384c423ad963475aaacb55598135
-+Author: David Schneider <david.schneider@bivab.de>
-+Date:   Mon Mar 25 13:27:36 2013 +0100
-+
-+    add a testcase, that on ARM hardfloat needs more than the 8  VFP argument registers to pass arguments to a call
-+
-+commit 2fbdb0f231cafdb77b025d3cd8afe90cda99b3ba
-+Author: David Schneider <david.schneider@bivab.de>
-+Date:   Mon Mar 25 13:26:02 2013 +0100
-+
-+    use the absolute value to check the test result against an epsilon
-+
-+commit ede96e4eb660bbf3e0fe048135efa8106f48af5d
-+Merge: f22ab3c 9e34992
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 17 18:38:21 2013 -0400
-+
-+    Merge branch 'master' of github.com:/atgreen/libffi
-+
-+commit f22ab3c6877cbdd07f058b68816b0086b1cb0e1e
-+Merge: 12b1886 d08124b
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 17 18:34:54 2013 -0400
-+
-+    Merge branch 'master' of github.com:/atgreen/libffi
-+
-+commit 9e34992a5ea2fda1dba5875bf96dc91a7230f51f
-+Merge: 12b1886 d08124b
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 17 18:34:54 2013 -0400
-+
-+    Merge branch 'master' of github.com:/atgreen/libffi
-+
-+commit 12b1886d7b1f8aa264b1d348bfa47a0e14712df4
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 17 18:32:12 2013 -0400
-+
-+    cygwin fix & updates for 3.0.13
-+
-+commit d08124bedf2c6d61874fe215404783aeb9f6f1ac
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 17 18:32:12 2013 -0400
-+
-+    cygwin fix & updates for 3.0.13
-+
-+commit cb32c812d04d1dfa72002cc04924e7e4fef89e02
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Mar 17 09:27:55 2013 -0400
-+
-+    Fix lib install dir
-+
-+commit efd7866a361a6f636bae8400d26c6811e56ca207
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 16 08:35:57 2013 -0400
-+
-+    2.0.13rc1
-+
-+commit ff647ad4dff2f07dd153f295a1f70b1d906cd6ca
-+Merge: 4acf005 d9dd417
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 16 08:20:40 2013 -0400
-+
-+    Merge branch 'master' of github.com:/atgreen/libffi
-+    
-+    Conflicts:
-+    	ChangeLog
-+
-+commit 4acf0056f55c757490dae6c29a65b0321327ea8a
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 16 08:18:45 2013 -0400
-+
-+    Build fix for soft-float power targets
-+
-+commit 675c9839224e4268187f1ec6f512127f9db555d0
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 16 08:12:38 2013 -0400
-+
-+    Documentation fix
-+
-+commit 8a286f570ccd41db81f74ea7f248da62241d898a
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 16 08:01:19 2013 -0400
-+
-+    Fix for m68000 systems
-+
-+commit d9dd417b09566af55b7b3000bb53ccaf2e1d6c92
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 16 08:01:19 2013 -0400
-+
-+    Fix for m68000 systems
-+
-+commit 215763d012a944d95406b394d6013b80d220e870
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 16 07:57:35 2013 -0400
-+
-+    Update configury.
-+
-+commit 9180d8f39c9b6afe17b78277c2711a5d9948e824
-+Merge: 2fb527a 7e1b326
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 16 07:46:55 2013 -0400
-+
-+    Merge branch 'master' of github.com:/atgreen/libffi
-+
-+commit 2fb527a017a4943e176a489ff103231b86464b59
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 16 07:46:38 2013 -0400
-+
-+    Add Meta processor support
-+
-+commit 211a9ebf4d1a9801e15e103566aed2b8c42790be
-+Merge: f308faf ee18766
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 16 04:24:40 2013 -0700
-+
-+    Merge pull request #32 from alex/patch-1
-+    
-+    Fix for a crasher due to misaligned stack on x86-32.
-+
-+commit 7e1b32649efd24814e86172e196f390566f9e970
-+Merge: f308faf ee18766
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 16 04:24:40 2013 -0700
-+
-+    Merge pull request #32 from alex/patch-1
-+    
-+    Fix for a crasher due to misaligned stack on x86-32.
-+
-+commit ee18766b169811426c14b011fbb46d81e344f926
-+Author: Alex Gaynor <alex.gaynor@gmail.com>
-+Date:   Thu Mar 14 15:00:33 2013 -0700
-+
-+    Fix for a crasher due to misaligned stack on x86-32.
-+    
-+    Full information on reproduction (using Python's ctypes available here: http://bugs.python.org/issue17423)
-+
-+commit f308faf1eabaf8dc24966ab17fbf94368f46b9c7
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Feb 11 14:25:13 2013 -0500
-+
-+    Add moxie support.  Release 3.0.12.
-+
-+commit 4ea22e54e3b143fe05c413f6dddd236af6bcbfb2
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Feb 10 08:48:38 2013 -0500
-+
-+    Update README
-+
-+commit 10e77227b6ae85f46f28590bfb09ca3608554358
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Feb 10 08:47:26 2013 -0500
-+
-+    mend
-+
-+commit a9521411a53d58f2bf88199242200ceb0d4dae3a
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Feb 9 06:54:40 2013 -0500
-+
-+    sparc v8 and testsuite fixes
-+
-+commit 70b11b47eea93bf43627588d494d0b3b0d062481
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 8 16:12:19 2013 -0500
-+
-+    Fix small struct passing on ppc
-+
-+commit 63ba1fa79f7c4ce42de848debe233aab31aecb51
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 8 15:18:19 2013 -0500
-+
-+    Remove xfail for arm*-*-*.
-+
-+commit 24fbca4c1d57d4ea628c0a8ba643684daf54a37e
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 8 14:19:56 2013 -0500
-+
-+    Fix typo
-+
-+commit b0fa11cb0a94ce6baca058eab9b10e40475e71d6
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 8 14:17:13 2013 -0500
-+
-+    More man page cleanup
-+
-+commit 8bd15d139a58a6e46dc90a1cb2d89f59f32f06c7
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 8 13:56:37 2013 -0500
-+
-+    Fix many.c testcase for ppc
-+
-+commit 7aab825cf198be85490d3cd80e778d415d85ad9b
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 8 13:26:21 2013 -0500
-+
-+    Add missing files to dist
-+
-+commit cb03ea8f4eb08024e44abe4392edc77b89fbfbad
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 8 12:25:18 2013 -0500
-+
-+    sparc v9 fixes for sun tools
-+
-+commit 35ee8d44f31dd3d3b88083c837dc351593e13cc2
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 8 07:12:41 2013 -0500
-+
-+    Fix microblaze big-endian struct issue
-+
-+commit 9db7e1a958fc484ba149efe027008b9a170395fb
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Feb 7 21:06:08 2013 -0500
-+
-+    Fix botched sparc patch. Update version.
-+
-+commit ce0138e61455f268af326e26908b9680ec2c4bea
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Feb 7 18:04:01 2013 -0500
-+
-+    Update bug report address. rc2.
-+
-+commit fd07c9e40451e0ec1d0475cd54a83d45ccaea2c0
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Feb 7 18:00:36 2013 -0500
-+
-+    Add cache flushing routine for sun compiler on sparc solaris 2.8
-+
-+commit ed6ae9501b2bab45daf93b4935eb0c977635b763
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Feb 7 16:43:36 2013 -0500
-+
-+    Add libtool-ldflags. Define toolexeclibdir for non-GCC builds.
-+
-+commit ffef2e046aaec853be356f0b8770a335185ea9cf
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Feb 7 15:47:01 2013 -0500
-+
-+    x32 and libtool fixes
-+
-+commit 95eecebb2858dc6f1495a61072ff36d0a8127144
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Feb 7 15:32:46 2013 -0500
-+
-+    Remove a.out cruft from dist
-+
-+commit 176aa9d2e23d9cd57d6f250692d910b408f9a651
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Feb 7 15:29:22 2013 -0500
-+
-+    Fix GCC usage test and update README
-+
-+commit f3a4f3fdde89b04d66983a42a25d09161c5d4d54
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Feb 7 09:57:20 2013 -0500
-+
-+    Fixes for AIX xlc compiler.
-+
-+commit 522f8fef49848927482bc63c94afaea5b84e5ec1
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 6 20:31:31 2013 -0500
-+
-+    Fix man page. Clean out junk.
-+
-+commit c4dfa259eb4e8e6f4c397868d7fee80aa0bb6a12
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 6 17:43:24 2013 -0500
-+
-+    Bump soversion
-+
-+commit f62bd63fe6123cadedb8b2b2c72eb549c40fbce9
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 6 17:38:32 2013 -0500
-+
-+    Release candidate 1
-+
-+commit f7cd61e9e68a4a51147df04d75bfe5b91b9d9286
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 6 17:38:04 2013 -0500
-+
-+    Fix pkgconfig install bits
-+
-+commit 6a790129427121f7db2d876e7218a3104e6d2741
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 6 17:37:15 2013 -0500
-+
-+    Work around LLVM ABI problem on x86-64
-+
-+commit 370112938e705128fd5dd4017fc1a1210bd0271a
-+Merge: bada2e3 bcc0c28
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Jan 27 05:09:04 2013 -0800
-+
-+    Merge pull request #28 from jralls/master
-+    
-+    Reorder x86_64 checks
-+
-+commit bcc0c28001b6d427d5cd8037d2e3c892babc6b4c
-+Author: John Ralls <jralls@ceridwen.us>
-+Date:   Sat Jan 26 15:21:14 2013 -0800
-+
-+    Reorder x86_64 tests
-+    
-+    So that darwin and cygwin/mingw are tested before the generic check --
-+    which allows them to actually be set.
-+
-+commit bada2e326d9a9acf3ae40cfa4f5d7a9ba97b2ea8
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 21 08:02:07 2013 -0500
-+
-+    Update README
-+
-+commit 655bb8f3690feba8e840a5f1854b1d78ed08f692
-+Merge: 1035ffb 840f975
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 21 08:01:24 2013 -0500
-+
-+    Merge branch 'master' of github.com:/atgreen/libffi
-+
-+commit 1035ffb2f468e1a1c401d58cff7e7abb69838e68
-+Merge: aeb8719 4086024
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 21 07:55:53 2013 -0500
-+
-+    Update README
-+
-+commit 840f975866052fdd91b2c224d56e01ae5900b60d
-+Merge: aeb8719 4086024
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 21 07:55:53 2013 -0500
-+
-+    Merge branch 'master' of github.com:/atgreen/libffi
-+
-+commit aeb8719a34756969970603fca4568530d56708af
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 21 07:37:30 2013 -0500
-+
-+    New microblaze support
-+
-+commit 40860245a4fd91a1b88adc9171ec993c549e45d5
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 21 07:37:30 2013 -0500
-+
-+    New microblaze support
-+
-+commit 20cae32b152b43679ae65a85db9a1c6bb8a143dd
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 21 07:07:38 2013 -0500
-+
-+    Xtensa support
-+
-+commit 9742f91782faef4a15941508a22c408fb7d1d227
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 21 07:03:41 2013 -0500
-+
-+    Mention IBM XL compiler support on AIX.
-+
-+commit f03eab08248f122ce3b623a18df9e19fae1b6e98
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Jan 11 17:14:11 2013 -0500
-+
-+    Remove obsolete inline test functions
-+
-+commit 05fbe1faedc7b2580d5f14010d00e9e3cee73951
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Jan 11 16:54:40 2013 -0500
-+
-+    xlc compiler support
-+
-+commit 0b4986a7889ed1864674192228f1162c1b5770a8
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Jan 11 11:19:52 2013 -0500
-+
-+    [travis] install dejagnu with sudo
-+
-+commit 3c337eef51ab9a4993fc875bfa26289dd6a08881
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Jan 11 11:18:14 2013 -0500
-+
-+    [travis] install dejagnu
-+
-+commit 90720962ce1baf9fc35d1bde1738102bcd5bd5ed
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Jan 11 10:57:30 2013 -0500
-+
-+    Add first travis config file
-+
-+commit bff052d9cd5be41ba9e47c76114054af487d3c30
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Jan 11 10:24:32 2013 -0500
-+
-+    32-bit x86 fix and more
-+
-+commit cd41aeab6176f839167955c016ecc19f65f75df3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Jan 10 17:25:45 2013 -0500
-+
-+    Add compiler column to table
-+
-+commit 8bf987d4df7c4d21435b9211f6cc86abf5904b42
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Jan 10 17:24:51 2013 -0500
-+
-+    Fix for sunpro compiler on Solaris
-+
-+commit 3ee74fd6dc8ccd32b608bbff73526838fc34f70b
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Jan 10 17:15:03 2013 -0500
-+
-+    Update documentation version.
-+
-+commit 13e2d7b92557a9511a0414df82bf2df3edc55cba
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Jan 10 10:52:02 2013 -0500
-+
-+    Handle both 32 and 64-bit x86 builds regardless of target triple
-+
-+commit 5141543000fc86a3d49a907a2313713ee79e504d
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Jan 10 07:35:53 2013 -0500
-+
-+    Don't run EH tests with non-GNU compiler
-+
-+commit 56ba8d86f47937a0afb81a2b9e77c9d235d9db45
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Jan 10 07:25:10 2013 -0500
-+
-+    Don't use warning checking macro with sun compiler
-+
-+commit 6a028caec1b2c7904feb4c4f9cb7e1125e1d1b60
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Jan 10 01:19:43 2013 -0500
-+
-+    Don't use GCCisms to define types when
-+    +       building with the SUNPRO compiler.
-+
-+commit 2d9b3939751b3ef9739049509d353ade10b32a8f
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 9 21:14:54 2013 -0500
-+
-+    Fix for closures with sunpro compiler
-+
-+commit 8308984e479e3274a36e98e8272b5adbb6b774c2
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Jan 8 15:14:21 2013 -0500
-+
-+    Make sure we're running dejagnu tests with the right compiler.
-+
-+commit f26c7ca67147450db2fe25ea932944e6cf145d5c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Jan 8 14:47:05 2013 -0500
-+
-+    Make compiler options in dejagnu runs compiler specific
-+
-+commit 74c776e21907fc2e59257c021f23077f8b7966cb
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Jan 8 12:25:54 2013 -0500
-+
-+    Switch x86 Solaris to X86 from X86_64
-+
-+commit 8962c8c8d06803e310bac0ffc8e84ea15daeff3f
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Jan 8 12:22:24 2013 -0500
-+
-+    Fix read-only eh_frame test
-+
-+commit 35ddb69c2b49746d940e919ca226ecc1be94f14a
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Jan 8 07:53:37 2013 -0500
-+
-+    Only emit DWARF unwind info when building with GCC
-+
-+commit f7879bc3f3a8d0bbfcc38771732c160a58ba9cd8
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Jan 8 07:30:28 2013 -0500
-+
-+    Testsuite fix for Solaris vendor compiler
-+
-+commit 67cea90fc0897021466fd102671019d30db474cd
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 7 06:30:24 2013 -0500
-+
-+    mend
-+
-+commit 0de3277b18cf54be3b81d509b9be9b47d9bc1e82
-+Author: Thorsten Glaser <tg@mirbsd.de>
-+Date:   Mon Dec 3 00:02:31 2012 +0000
-+
-+    Testsuite fixes (was Re: [PATCH] Fix libffi on m68k-linux-gnu, completely)
-+    
-+    Dixi quod…
-+    
-+    >although I believe some 3.0.11 checks to be broken:
-+    
-+    And indeed, with a few minor changes on top of git master,
-+    I still get a full run of PASS plus one XPASS on amd64-linux!
-+    
-+    With the other patches (from this message’s parent) and
-+    these applied, I get a full PASS on m68k-linux as well.
-+    
-+    So, please git am these three diffs ☺
-+    
-+    bye,
-+    //mirabilos
-+    --
-+    FWIW, I'm quite impressed with mksh interactively. I thought it was much
-+    *much* more bare bones. But it turns out it beats the living hell out of
-+    ksh93 in that respect. I'd even consider it for my daily use if I hadn't
-+    wasted half my life on my zsh setup. :-) -- Frank Terbeck in #!/bin/mksh
-+    From 5cb15a3bad1f0fb360520dd48bfc938c821cdcca Mon Sep 17 00:00:00 2001
-+    From: Thorsten Glaser <tg@mirbsd.org>
-+    Date: Sun, 2 Dec 2012 23:20:56 +0000
-+    Subject: [PATCH 1/2] Fix tests writing to a closure retval via pointer casts
-+    
-+    As explained in <Pine.BSM.4.64L.1212022014490.23442@herc.mirbsd.org>
-+    all other tests that do the same cast to an ffi_arg pointer instead.
-+    
-+    PASS on amd64-linux (Xen domU) and m68k-linux (ARAnyM)
-+    
-+    Signed-off-by: Thorsten Glaser <tg@mirbsd.org>
-+
-+commit 8f4772f383abd71cfa141c8a70ba11c1aa4ebe2c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 7 06:14:53 2013 -0500
-+
-+    m68k fixes for signed 8 and 16-bit calls.
-+
-+commit ea7f8440d58afbebb181e295ff564fdf3d6590a0
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Jan 4 09:09:32 2013 -0500
-+
-+    remove gcc-ism
-+
-+commit f06c0f10377ac04eeba5e632dbe5c62c629df4e6
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 2 09:39:17 2013 -0500
-+
-+    Add missing ChangeLog entry and generated files.
-+
-+commit 1f8675d4c101d19d67ca0a55ff2ba973349558ad
-+Merge: 335f419 f6b58d2
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 2 06:34:38 2013 -0800
-+
-+    Merge pull request #26 from rofl0r/master
-+    
-+    fix build error on ppc when long double == double
-+
-+commit 335f419a86090cda9f215d149572f9481c3ad034
-+Merge: 53236d5 6d6f711
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 2 06:30:03 2013 -0800
-+
-+    Merge pull request #23 from rurban/master
-+    
-+    cygwin/mingw shared libs need libtool LDFLAGS = -no-undefined
-+
-+commit 53236d5061034cc0a7f4647fc1bd05ba1aeb3d2a
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 2 09:24:55 2013 -0500
-+
-+    Regenerate files
-+
-+commit 72222ca3fbe560e13c8dc89ca441b28b7cc74daf
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 2 09:06:38 2013 -0500
-+
-+    Update texinfo.tex
-+
-+commit 1e326c95431fc9896422fa36659f3e833852579c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 2 09:05:02 2013 -0500
-+
-+    Update config.guess and config.sub
-+
-+commit cb6671f5b8a9596ff968c6b6c304f70adf71b368
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 2 08:56:07 2013 -0500
-+
-+    Missing .gitignore changes for xcode support
-+
-+commit ebbe77966855395a2a47ed2c09a38f93eb0481cf
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 2 08:54:05 2013 -0500
-+
-+    missed x32 libtool patch.
-+
-+commit 4394096da0aca0dd422b479a043c18b4f05c5770
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 2 08:51:35 2013 -0500
-+
-+    missed trampoline_table patch. Move to GCC.
-+
-+commit ed7a59c3ff7c84bd95c374a5aff21599f705e6dc
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 2 08:48:01 2013 -0500
-+
-+    Windows symbol export fix.  Move to GCC.
-+
-+commit ccee09a4ff843b11c7d8b6819776f57d187305c7
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 2 08:41:55 2013 -0500
-+
-+    +2012-03-21  Peter Rosin  <peda@lysator.liu.se>
-+    +
-+    +       * testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*]
-+    +       (set_ld_library_path_env_vars): Add the library search dir to PATH
-+    +       (and save PATH for later).
-+    +       (restore_ld_library_path_env_vars): Restore PATH.
-+
-+commit 089dbce7cc0889eb26444d89ae062c73c69f26f0
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 2 08:37:35 2013 -0500
-+
-+    med
-+
-+commit 980a334c42b4b0eff32e55929ec6727d1326b05d
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 2 07:36:42 2013 -0500
-+
-+    Test GCC update
-+
-+commit 8bad679ade5000e57cdc9cacde22e8b99840930f
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 2 08:28:35 2013 -0500
-+
-+    New stand-alone patch
-+
-+commit 981c32ee115e9f0d6546a74592875e138222a9d1
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Jan 2 07:34:03 2013 -0500
-+
-+    Merge with GCC.  Eliminate quilt bits.
-+
-+commit 61a054929517fb80c437ba71c91f3e20cfff581a
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Nov 28 06:07:41 2012 -0500
-+
-+    Refresh config.guess and config.sub
-+
-+commit f6b58d2bdc0a24ce94dedce59802f091979df265
-+Author: rofl0r <retnyg@gmx.net>
-+Date:   Thu Nov 22 16:26:21 2012 +0100
-+
-+    fix build on ppc when long double == double
-+
-+commit 69da33a0761aeac73f9e9646269da61c906d6020
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Nov 12 15:25:47 2012 -0500
-+
-+    Pull in config.sub for aarch64 support and more
-+
-+commit f680b598b7bdde325ac9349e8c35151c228bf2df
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Nov 6 16:00:40 2012 -0500
-+
-+    Add missing aarch64 configury bits
-+
-+commit dfadfb19853c57c8623c436d0ef2bdafab24b433
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Oct 31 06:46:41 2012 -0400
-+
-+    Rebase for ppc64 fix
-+
-+commit e944b8c7eb1e2eeb9c0f3b9742b4d7f476860ce1
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Oct 30 14:06:09 2012 -0400
-+
-+    Add PaX work-around
-+
-+commit 9ccd51be1fdeb99f8b4f42f905166c2abbba8ac0
-+Merge: f342996 fa5d747
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Oct 30 13:37:37 2012 -0400
-+
-+    Fix commit conflicts
-+
-+commit f342996cb50eb23b868afcff5ac0cdbb6b505d63
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Oct 30 07:42:27 2012 -0400
-+
-+    Darwin12 fix
-+
-+commit 58e8b66f70cef2e3c9b0e5a707b45d634cbbf5d9
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Oct 30 07:07:19 2012 -0400
-+
-+    AArch64 port
-+
-+commit fa5d747905472571fd472c07d4726017624f66b3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Oct 30 07:07:19 2012 -0400
-+
-+    AArch64 port
-+
-+commit 6993a6686f43f2313b18142c1e96189a27db2aa3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Oct 30 06:59:32 2012 -0400
-+
-+    Fix autoconf macros
-+
-+commit 70084e70ddb13b29dd05c751b1904de206bbe790
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Oct 12 23:55:06 2012 -0400
-+
-+    Update Tile* port info
-+
-+commit 9c00a3f6742d61404b31268cc773e7130ff43331
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Oct 12 16:46:06 2012 -0400
-+
-+    TILE-Gx/TILEPro support
-+
-+commit 048d2f41c3a6664b4b64bf21e804686662da4160
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Oct 11 10:55:25 2012 -0400
-+
-+    Rebase
-+
-+commit 6d6f71108064f5069edd7bf771059d3b82640135
-+Author: Reini Urban <rurban@cpanel.net>
-+Date:   Sat Jul 7 12:42:00 2012 -0500
-+
-+    cygwin/mingw shared libs need libtool LDFLAGS = -no-undefined
-+    
-+    otherwise only static libs are created.
-+
-+commit d330f19292da8f39a78a9e2b0ba08df8094e3bc5
-+Author: Nicolas Lelong <rotoglup>
-+Date:   Sat May 5 09:37:02 2012 -0400
-+
-+    iOS build fixes.
-+
-+commit 09b23cfc1d6d15361eee18818851fd3cacb26559
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Apr 27 08:29:48 2012 -0400
-+
-+    Update README with Blackfin/uClinux support
-+
-+commit 213ed15c70e72d666154c08e2b41dae3f61f20d3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Apr 27 01:34:15 2012 -0400
-+
-+    Add blackfin supprt from Alexandre Keunecke.
-+
-+commit ff3d76fd427382ce7d2b2ed54acdd0bce470ca4f
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Apr 11 23:16:48 2012 -0400
-+
-+    3.0.11
-+
-+commit 7e0a412c4fd9cbe77b467a9bf86f56aea62632c3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Apr 11 22:47:44 2012 -0400
-+
-+    Update files to ship
-+
-+commit 39e6a5860416f7bad992149817e1da1ba7c460d4
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Wed Apr 11 22:39:46 2012 -0400
-+
-+    More mac/ios build improvements
-+
-+commit 853cc722a16f8d1254573ef3bb73c7b8f3d8a110
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Apr 10 06:33:33 2012 -0400
-+
-+    Fix typo for darwin targets
-+
-+commit 3f5023068cda07a3dd6dacbaa875a5b5fc96d4bb
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Apr 6 20:34:51 2012 -0400
-+
-+    mend
-+
-+commit ebb8e8945681ce0af7a5c47a980287e8ece84b84
-+Author: Mike Lewis <mikelikespie@gmail.com>
-+Date:   Fri Apr 6 20:02:08 2012 -0400
-+
-+    Build iOS library with xcode
-+
-+commit a098b44f4c592c2192fcdef4fad6108eb3f4301c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Apr 6 17:04:35 2012 -0400
-+
-+    Reapply missing testsuite changes for arm
-+
-+commit 10d1e51393f08c14045db85843208f44f9f1e9ba
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Apr 6 11:57:14 2012 -0400
-+
-+    Update to rc4.  Upgrade autoconf version.
-+
-+commit 9bcc884276dc0a807b2605e510b11b1740dd9aa2
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Apr 6 11:53:07 2012 -0400
-+
-+    Fix Linux/x32 reference in README
-+
-+commit a044a56b1cd2a0924f5ec0d6b5a5089d14fcd1a1
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Apr 6 10:39:10 2012 -0400
-+
-+    Linux/x32 libtool fix
-+
-+commit 59bb61a36661b972e8443531d3b7bc736e131a4b
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Apr 6 08:26:14 2012 -0400
-+
-+    Update libtool version, README, tests dists
-+
-+commit f2981454cbe25cf9411b710f46c5f5552003a123
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Apr 5 15:45:19 2012 -0400
-+
-+    Revert debug code changes
-+
-+commit 39dccddb606f6fdb8dcb177d416e884041da6e30
-+Author: Zachary Waldowski <zwaldowski@gmail.com>
-+Date:   Thu Apr 5 12:32:41 2012 -0400
-+
-+    Fix building with Clang for Darwin (OS X 10.6+ and iOS
-+     4.0+)
-+
-+commit 3afaa9a34a81a305227ae8cf4f12b9d0484d055e
-+Author: Peter Rosin <peda@lysator.liu.se>
-+Date:   Tue Apr 3 07:40:31 2012 -0400
-+
-+    Fix return_uc.c test case on windows.
-+
-+commit 65f40c35a2873d8328359ec4512bd0736dbe32c7
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Apr 3 07:35:59 2012 -0400
-+
-+    Repair ppc build regression.
-+
-+commit 0a1ab12a8d15caa894116a82249551f23ef65612
-+Author: Peter Rosin <peda@lysator.liu.se>
-+Date:   Fri Mar 30 08:14:08 2012 -0400
-+
-+    Various MSVC-related changes.
-+
-+commit e1539266e6c6dde3c99832323586f33f977d1dc0
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Mar 30 00:40:18 2012 -0400
-+
-+    ARM VFP fix for old toolchains
-+
-+commit 7c5e60b5f47d725036a72162f136272bc407e3a1
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Mar 29 08:48:22 2012 -0400
-+
-+    Rebase on fixed GCC sources
-+
-+commit e72ed5eeaa9cfb0fdc86f6b3422734177b659f96
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Mar 21 09:52:28 2012 -0400
-+
-+    Fix vararg float test
-+
-+commit bd78c9c3311244dd5f877c915b0dff91621dd253
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Mar 21 08:09:30 2012 -0400
-+
-+    More cygwin fixes
-+
-+commit 84d3253f86dad6b4f261231935675d35fd964b05
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Mar 19 23:07:35 2012 -0400
-+
-+    Rebase post GCC merge
-+
-+commit 964c5b93f80dcaacf73056b7d15a4d2b4b7a217c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 3 14:46:20 2012 -0500
-+
-+    abi check fixes and Linux/x32 support
-+
-+commit 6c194233a5f6f1d274669afc5924a9e1f69d4876
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Mar 3 14:17:54 2012 -0500
-+
-+    Add -no-undefined for both 32- and 64-bit x86
-+    windows-like hosts.
-+
-+commit 8360bf1cd0aba8db5582266da70467de7e89a57a
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Feb 23 07:01:13 2012 -0500
-+
-+    Ensure that users don't include ffitarget.h directly
-+
-+commit d578b89619cf3d2baff027b203619dc307fc12e3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 15 00:18:18 2012 -0500
-+
-+    Fix ABI check regression
-+
-+commit dee20f8e45c486f5018f31e09bb362992aa498c3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 10 13:06:46 2012 -0500
-+
-+    Rebased from gcc
-+
-+commit 4130e1972d001143e5e9f3c6b65f2a6f9524169e
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 3 13:18:27 2012 -0600
-+
-+    Refresh autoconf-archive m4 scripts
-+
-+commit 1ff9c604bb214b5a305064af1049577ef783730a
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 1 16:34:30 2012 -0600
-+
-+    Rebase from GCC
-+
-+commit 211060eb8f714af0e935430efa6bb45e8e3ffc5d
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 23 14:24:01 2012 -0500
-+
-+    Alpha fix
-+
-+commit 78d9c638ba0de6edfbc603fd65d19c6562663248
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 23 14:17:24 2012 -0500
-+
-+    mend
-+
-+commit afaf3381604bd81803d8a5f3bf4d462299f1aac3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 23 14:17:13 2012 -0500
-+
-+    mend
-+
-+commit 9e9c4aeb77de5608d602109f22100c1c0c79faad
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 23 14:11:23 2012 -0500
-+
-+    Add Amiga support
-+
-+commit 8efc0b1f4027d5a3cbf205e55d422d94e60f3226
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 23 13:47:38 2012 -0500
-+
-+    Unlikely fixes
-+
-+commit 1df51398ae183dc208ba4599ee867278b04d13d3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 23 13:43:59 2012 -0500
-+
-+    mend
-+
-+commit cd2277cc796b96b149cd284ae85326529fe7fb9c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 23 13:43:38 2012 -0500
-+
-+    mend
-+
-+commit 164e6fe04b189746c8bd5810c6e3e919770bb9d4
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 23 12:41:06 2012 -0500
-+
-+    m68k fixes
-+
-+commit c365ee7577bef00cb3c2c0b5224147aea04138d8
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jan 23 11:13:18 2012 -0500
-+
-+    Refresh
-+
-+commit f22c38bbd93bcc0c04bf26c3e414556b3177c385
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Nov 18 15:13:41 2011 -0500
-+
-+    Update variadic patch
-+
-+commit 03e9ee321a3c208f88d2432587ce40b2bb2430ba
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Nov 18 15:13:00 2011 -0500
-+
-+    Fix cls_double_va.c and update docs
-+
-+commit 95f31151ec792809cfb80d385350f9f56d95aa25
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 12 23:46:05 2011 -0500
-+
-+    Rerun automake
-+
-+commit 198ed1ef85cf18342627f8d44bc3f12c9975a49d
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 12 23:45:20 2011 -0500
-+
-+    Update version number
-+
-+commit 4f17e1f142e805b13959ba2594ee735eae439f4e
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 12 17:22:24 2011 -0500
-+
-+    Fix last patch
-+
-+commit ff9454da44859716a5bd4eaa344499288c79694f
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 12 17:18:51 2011 -0500
-+
-+    Add David Gilbert's variadic function call support
-+
-+commit ea14ae85e8f54ff046b7fb8a9cfe349475272044
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 12 16:36:59 2011 -0500
-+
-+    clean up
-+
-+commit 52891f8a93f9b8de801cca4cf05639422dc9773e
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 12 16:35:55 2011 -0500
-+
-+    Add powerpc soft float support
-+
-+commit c8f1bde8e2566c5a87474b4d08aa934d6d28ee75
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 12 16:21:02 2011 -0500
-+
-+    Remove junk file
-+
-+commit 6a6e7f862f3cc677e19131587caa619e7f9c7ffd
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 12 16:20:42 2011 -0500
-+
-+    Fix kfreebsd
-+
-+commit d52fbed05ccbdee9ed8b9c911cbb4f85b0ff0f2a
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 12 16:13:41 2011 -0500
-+
-+    Add missing ChangeLog entry
-+
-+commit 322052ce65c4fdac85bedc24726fd0e0094ba521
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 12 16:11:49 2011 -0500
-+
-+    Fix arm wince alignment issue
-+
-+commit af18df2bc2f52df81e7b5c619bd86db8489dc873
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 12 15:52:08 2011 -0500
-+
-+    Remove use of ppc string instructions
-+
-+commit 236c9391321f83ad40daf03f40c35c9ebc1da6b3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 12 07:37:40 2011 -0500
-+
-+    Fix darwin11 build problem
-+
-+commit c411f140f305ebb00d33c92b7cb2742bcd241b6a
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 12 07:32:36 2011 -0500
-+
-+    Fix ax_enable_builddir macro on BSD systems
-+
-+commit 3d56106b07735abef6ae9f032e94f560a0ed2f30
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Nov 12 07:20:24 2011 -0500
-+
-+    Rebase
-+
-+commit 8c01954c50bf8ef2e00a3db166060a1b8f83a20d
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Sep 6 14:26:32 2011 -0400
-+
-+    Build assembly files with debug info
-+
-+commit fed646a2078969f4ce89c29107f1e72e03f4a977
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Sep 6 09:50:20 2011 -0400
-+
-+    Regenerate configury with missing m4 macros
-+
-+commit d76441cf71216f8f1e62e7ec852a7f4e21371ec8
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Aug 24 10:14:23 2011 -0400
-+
-+    Update list of supported OpenBSD systems
-+
-+commit ee6696fdf4768ba6dd037fb6dd99435afa13816e
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Aug 23 12:30:29 2011 -0400
-+
-+    3.0.11-rc1. soname bump.
-+
-+commit c6265c36a91eab8175d0e72db84d8225418f2379
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Aug 23 10:31:33 2011 -0400
-+
-+    Version 3.0.10
-+
-+commit cc5e41bf32d18a14dbdd653d52eacdbdc934c392
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Aug 22 16:34:24 2011 -0400
-+
-+    Fix use of autoconf macros
-+
-+commit 049d8386ff52399e69a530b55b9feedc8a2589d2
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Aug 22 14:50:10 2011 -0400
-+
-+    Many new patches
-+
-+commit 3b7efa4e74f0dcebf70b447391987aedd3473306
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Aug 15 13:25:13 2011 -0400
-+
-+    Revert remove-debug-code patch temporarily (for ARM Fedora release)
-+
-+commit d992ac54a2a9e7e064ffebcb91e05e7cb86185c7
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Fri Jul 29 17:32:53 2011 -0400
-+
-+    Refresh from GCC
-+
-+commit 2d3fb36420e09304220ee6c0652bae5eccdb965d
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Mar 30 16:54:42 2011 -0400
-+
-+    Fix darwin EH
-+
-+commit 30ff28e1d8cd9ed5319f1fbe9c7cccacc8161fb3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Feb 28 15:36:23 2011 -0500
-+
-+    Fix permissions
-+
-+commit 09f8f310f4f53a24289682d3d28f4399d7bafc3b
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Feb 28 15:36:07 2011 -0500
-+
-+    More AIX fixes. rc9.
-+
-+commit 53d7b165642c220aa5166ba350b490802f359b54
-+Merge: 18dd85d 3000dc2
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Feb 28 15:23:31 2011 -0500
-+
-+    Merge branch 'master' of https://github.com/landonf/libffi-ios
-+
-+commit 18dd85d6cb9f3f3eea2a3b70eb4e150045905c55
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 25 16:23:04 2011 -0500
-+
-+    rc8. fix last patch.
-+
-+commit 74ee6ea8b42e60d44a3ae8938b1e42a38c1e66b4
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 25 15:52:14 2011 -0500
-+
-+    rc7.  More AIX fixes.
-+
-+commit 2541679dbd3db0014890f42192dbf8008ab923fa
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 25 15:09:13 2011 -0500
-+
-+    Fix ppc32 bug
-+
-+commit cbb062cc35c518004f1ab45c847f8ec4f66069ad
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Feb 17 20:39:21 2011 -0500
-+
-+    Another non-GCC configury fix
-+
-+commit 8cf8878425e9971866fa6b27a3e4914729ad3960
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 15 15:19:49 2011 -0500
-+
-+    Fix ax_cc_maxopt.m4
-+
-+commit 24b72070c0937f9000744c77a636f07e04786b6a
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Feb 14 15:30:57 2011 -0500
-+
-+    Fix warning and msvcc patches
-+
-+commit d72c49e556a8c516e97f6722d1be2f1209c21207
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Feb 13 11:41:05 2011 -0500
-+
-+    Add missing msvcc.sh
-+
-+commit 3000dc237f6017a7445d8404097a4f46b73fdd29
-+Merge: 55e4a5a 1fbf9dc
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Feb 13 08:55:53 2011 -0500
-+
-+    Merge remote branch 'upstream/master'
-+
-+commit 1fbf9dc44feea564e84ad7406d17c5d5906ce0e0
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Feb 13 08:06:39 2011 -0500
-+
-+    Fix bad_abi test. rc5.
-+
-+commit 90af15ef5c1614b76370c4d13954586fabf9e8e3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Feb 12 12:29:36 2011 -0500
-+
-+    iOS fixes
-+
-+commit 55e4a5aa1568558a04aa40f16fc022e459af53e3
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Feb 12 12:13:46 2011 -0500
-+
-+    Add support for building a full armv6/armv7/i386 universal iOS library
-+
-+commit a0c80f279b8733d001cb5e5c5a3289ecb7a6e56a
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Feb 12 11:43:49 2011 -0500
-+
-+    Update my e-mail address.
-+
-+commit 8195e0e11df7a53fa474caa9375f73ca1136ed66
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Feb 12 11:27:00 2011 -0500
-+
-+    Fix symbol prefixes on Darwin.
-+
-+commit 56b3f8cef0f28cefaa0f40fe0cf7c524adef131d
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Feb 12 11:14:54 2011 -0500
-+
-+    Modify the ffi_closure structures to hold table/table entry pointers instead of a code buffer.
-+    
-+    This re-integrates commit da2773e02ab26cc11a7f.
-+
-+commit 28a00f61ff3f64c4eb2269ce2aea3d493274469e
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Feb 12 11:01:48 2011 -0500
-+
-+    Apple assembler support; fixed most gas/ELF-isms.
-+
-+commit 7f2ea33a80bfced5e48ed7292f3b8f057d54ff8f
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Feb 12 10:39:18 2011 -0500
-+
-+    Replace RETLDM macro.
-+    
-+    The macro is incompatible with Apple's assembler; switch to
-+    a simple inline version.
-+
-+commit 92ff23e77fa586455b427b71f49e1d9502470e6e
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Feb 12 10:24:49 2011 -0500
-+
-+    Switch to the current iOS 4.2 SDK.
-+
-+commit 58fb8ca2dfb89ad70284bb9678d3d4dbb658c8a7
-+Merge: cc3fbd9 71c792f
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Feb 12 10:23:19 2011 -0500
-+
-+    Merge remote branch 'upstream/master'
-+
-+commit cc3fbd975ce9366d4c40a6ff6c108f664867bd7c
-+Merge: e449a43 f6ab3ed
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Feb 12 10:21:02 2011 -0500
-+
-+    Merge branch 'master' of github.com:landonf/libffi-ios
-+
-+commit e449a43bbe12f8119399928db1ae26adc71dde14
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Feb 12 10:20:42 2011 -0500
-+
-+    Allow specification of the minimum supported iOS version.
-+
-+commit 71c792f51bcf3e2f334e5ea1fb1a8b667cb3aedb
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Feb 12 09:33:11 2011 -0500
-+
-+    rc4
-+
-+commit 7c7c9f327299331022f6000603a35f2310dfe308
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Feb 12 09:29:29 2011 -0500
-+
-+    ungccify parts of the build
-+
-+commit ed62e48b95a0fa60b685f647cb73c9e190eec35c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 11 12:23:58 2011 -0500
-+
-+    Fix permissions
-+
-+commit 17d9e9e68ddb1b915a0b9751713033861b598575
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 11 12:23:20 2011 -0500
-+
-+    Use newer autotools.  Only build debug.c when --enable-debug.
-+
-+commit 6972a4ffda75761eaab7dfbe0fb1516b255e8e0c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 11 07:32:51 2011 -0500
-+
-+    Fix xlc build on AIX
-+
-+commit 1833aa0fb9831eb0725b63e35886c0f6d35df480
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Feb 11 07:11:04 2011 -0500
-+
-+    sparc ABI test fix.
-+
-+commit f1fb139b4e283fffdcf205a903943d5e9d2bb2a2
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 9 18:30:02 2011 -0500
-+
-+    Fix tests
-+
-+commit 5cb470331d181c84d5d621e88868327a324a5898
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 9 15:23:06 2011 -0500
-+
-+    Fix permissions
-+
-+commit 269deef6dbbb426695919d3398357fada3bb288c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 9 15:22:23 2011 -0500
-+
-+    rc3
-+
-+commit 42695e72504f647444b8e8e9b90bd24f1e3220e1
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 9 15:12:35 2011 -0500
-+
-+    Fix IRIX support
-+
-+commit a6e56b97f62a3feeb3301c24a2e4cae55e546021
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 9 15:00:42 2011 -0500
-+
-+    Add powerpc64-*-darwin* support
-+
-+commit 747d6c32d4abb07c10c3a1f93579c3929aaa2487
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 9 14:56:23 2011 -0500
-+
-+    Add Interix support
-+
-+commit eab6e41cde382aa07de6c011d514a14c0d62eb47
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 9 10:15:02 2011 -0500
-+
-+    Remove README.markdown form libffi-ios
-+
-+commit 69dbe845f4ee3e6ce8999f17a1e4f2179ef7da89
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 9 07:38:43 2011 -0500
-+
-+    Fix xfails
-+
-+commit f498318c07b95137fe259d86bdbe15347588b84a
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 9 06:26:46 2011 -0500
-+
-+    Update README for iOS again
-+
-+commit 630b9c0ac43c7edcbfd892e23c09fb26724f4ac0
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 9 06:24:23 2011 -0500
-+
-+    Update to rc2
-+
-+commit 0cad4386fa4c9ea5f8ca88b16247db4e5c8fea90
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Wed Feb 9 06:11:46 2011 -0500
-+
-+    Add ChangeLog entry.  Fix copyright headers.
-+
-+commit 09cb76f2645bd2c151846e9249d8ea707ba01e8c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 20:39:51 2011 -0500
-+
-+    Add missing change
-+
-+commit 2e3a48ccdd54340983c46a29a0b41985e3e789ac
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 20:37:26 2011 -0500
-+
-+    Fix make dist
-+
-+commit 5e4814d9928e236a2a4afe84d6e1d4fdaa473206
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 19:46:28 2011 -0500
-+
-+    fix permissions
-+
-+commit 5c0cc6f1536aa1738795a97303810a823c7fa2cb
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 19:45:59 2011 -0500
-+
-+    3.0.10rc1
-+
-+commit 857fe3de46d2286afa2fe772920ecf4aefa1688f
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 19:39:20 2011 -0500
-+
-+    Clean ups
-+
-+commit e2214f8adb5577c247452e2cc9f4cbe304d7ca9f
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 19:22:56 2011 -0500
-+
-+    Update README
-+
-+commit 1106229a5721a659da5c231ec0e8211119615394
-+Merge: bc9d0be f6ab3ed
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 19:20:09 2011 -0500
-+
-+    Add iOS support
-+
-+commit bc9d0be2958ce475757f34dd2c878948aa77a39f
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 17:04:26 2011 -0500
-+
-+    3.0.10rc0 changes
-+
-+commit 3b836249feae6d08d3e6887486e4b9961ddafa09
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 14:28:59 2011 -0500
-+
-+    Rebase from GCC
-+
-+commit a26e3940619faeba6de54824c9540c90b1aab513
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 13:56:12 2011 -0500
-+
-+    copyright updates patch
-+
-+commit b8099539f00e224107594101e9760b6dc081a056
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 13:50:43 2011 -0500
-+
-+    Fix msvcc.sh botch
-+
-+commit dc411e8f99113a34656bfd2d3ae51259972488cc
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 10:49:29 2011 -0500
-+
-+    Fix HP-UX build
-+
-+commit 404585d1348e30ac58203bbd876d9131e5aed874
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 10:44:36 2011 -0500
-+
-+    Fix sparc v8 aggregate type returns for sun's compiler
-+
-+commit 19ce713188e193e4522740d24c20170411883d2d
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 10:34:23 2011 -0500
-+
-+    grammar fix
-+
-+commit 89284fe55f1a8ad3bddbea796ee00d0e3ba411ce
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 10:19:19 2011 -0500
-+
-+    Fix AIX build with IBM XLC
-+
-+commit ba022c338af97cb18d9f8ed5a607fd483a61c09c
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 10:12:48 2011 -0500
-+
-+    fix win64-underscore patch
-+
-+commit 097e5f3924ee92a3ba6cd72f787da8a3eb14fea3
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 10:11:00 2011 -0500
-+
-+    x86 pcrel test part 2
-+
-+commit ed2c518d960b91d444be74e5a55779a9c4602f3b
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 10:10:07 2011 -0500
-+
-+    x86 pcrel test
-+
-+commit 0e5843995f46900ef212531281e08b224464f413
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Feb 8 07:52:40 2011 -0500
-+
-+    Refresh from GCC
-+
-+commit 5b9cd52784339a42e417174a55e310e214d435f9
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Nov 22 15:19:57 2010 -0500
-+
-+    win64-underscore patch
-+
-+commit 2db72615b50eb5c0f29725c02c740a2f0d7fc7d9
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Nov 21 10:50:56 2010 -0500
-+
-+    Rebase
-+
-+commit f6ab3edc23dc8fc7c47a31c896044150c23f04b5
-+Author: Landon Fuller <landonf@plausible.coop>
-+Date:   Wed Oct 27 19:34:51 2010 -0400
-+
-+    Include the license header in the generated output.
-+
-+commit cef619462887fa0f360e3ee702d1e04f112b5b38
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Wed Oct 27 13:59:30 2010 -0400
-+
-+    Add missing copyright/license header.
-+
-+commit 53f387b203413c9aa6e31f49dbb70d37d816330b
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 19:57:17 2010 -0700
-+
-+    Minor README fix.
-+
-+commit 4fbcb5b5fbce11f4b168060e00639db33c85b75b
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 19:50:37 2010 -0700
-+
-+    Minor README fix.
-+
-+commit 8e7652ef6acab5db7a29f786686a54f05cdbdc7d
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 19:49:39 2010 -0700
-+
-+    Add a libffi-ios-specific github README.
-+
-+commit 83038cf24aa1a92b62b91ffee1dcc25d79243484
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 14:36:45 2010 -0700
-+
-+    Implement FFI_EXEC_TRAMPOLINE_TABLE allocator for iOS/ARM.
-+    
-+    This provides working closure support on iOS/ARM devices where
-+    PROT_WRITE|PROT_EXEC is not permitted. The code passes basic
-+    smoke tests, but requires further review.
-+
-+commit b00ff3e98fdde622cef617030e14d5356dff988f
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 14:22:26 2010 -0700
-+
-+    Rename the generated symbol
-+
-+commit da2773e02ab26cc11a7fe87e985599f35cdf0649
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 14:21:37 2010 -0700
-+
-+    Modify the ffi_closure structures to hold table/table entry pointers instead of a code buffer.
-+
-+commit 01d71b7bed41844f80cb9feef20dcc5ece5ba2d0
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 14:21:14 2010 -0700
-+
-+    Regenerated the autoconf script
-+
-+commit 19afda0069c42e51c81dca7b10a5cf884b4cdce0
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 14:20:52 2010 -0700
-+
-+    Enable AC_SUBST for FFI_EXEC_TRAMPOLINE_TABLE
-+
-+commit 9e1196444e78aef20028c18891f44ebe39a815fd
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 10:43:06 2010 -0700
-+
-+    Add a hard-coded FFI_EXEC_TRAMPOLINE_TABLE arm implementation.
-+    
-+    This implements support for re-mapping a shared table of executable
-+    trampolines directly in front of a writable configuration page, working
-+    around PROT_WRITE restrictions for sandboxed applications on Apple's
-+    iOS.
-+    
-+    This implementation is for testing purposes; a proper allocator is still
-+    necessary, and ARM-specific code needs to be moved out of
-+    src/closures.c.
-+
-+commit f38364b399184e682fc3e785084bd497827bc5af
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 10:42:36 2010 -0700
-+
-+    Fix symbol prefix for ffi_closure_SYSV_inner on Darwin.
-+
-+commit 36849e7716b77aa25e4175d1f4be1b93dbf47aac
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 09:35:04 2010 -0700
-+
-+    Whitespace/comment fixes.
-+
-+commit b764162526854686e579a48b6ac5981f4eb886a3
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 09:04:34 2010 -0700
-+
-+    Fix the script name (build-iphone.sh -> build-ios.sh)
-+
-+commit a3d9aa85013341451ea97766485b7a11852d32b2
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 09:03:52 2010 -0700
-+
-+    Update the autogenerated autoconf/automake files.
-+
-+commit c71480eaf839f26bbdfcd8965f65ac4d8defddc0
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 09:02:05 2010 -0700
-+
-+    Update automake/autoconf to conditionally build src/arm/trampoline.S if FFI_EXEC_TRAMPOLINE_TABLE is enabled.
-+
-+commit 9af9291b73bc5e27ecd949bec8157f20426d65b8
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 08:52:33 2010 -0700
-+
-+    Add the trampoline table generated by gentramp.sh
-+
-+commit 68ce0c383ece84f69945d1c8c3fed03f7f9cb5d6
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sun Sep 19 08:38:19 2010 -0700
-+
-+    Add a shell script that generates the ARM trampoline page.
-+    
-+    This generates a page of 340 trampolines, aligned within one page. The
-+    trampolines use pc-relative addressing to reference config data
-+    (context, jump address) from a page placed directly prior to the
-+    trampoline page. This can be used on systems -- such as iOS -- that do not
-+    support writable, executable memory by remapping the executable page
-+    containing the trampolines directly above a newly allocated writable
-+    config page.
-+
-+commit 75af086be8830a8eafe9b1ebda199d788bcb0c62
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Sep 18 18:12:19 2010 -0700
-+
-+    Update autoconf files
-+
-+commit 1ac92cca9b02ef8d6a769f0de1adccd5c9630355
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Sep 18 18:08:14 2010 -0700
-+
-+    Add autoconf check for W^X platforms that require a trampoline table.
-+    
-+    This adds the FFI_EXEC_TRAMPOLINE_TABLE. The flag is enabled for
-+    arm-apple-darwin, where PROT_EXEC on writable (or formerly writable) pages is
-+    not permitted for sandboxed binaries.
-+
-+commit be72fbab29b7190c702d8e1ac3d149855e95879d
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Sep 18 18:02:25 2010 -0700
-+
-+    Use the correct host triple for arm/darwin
-+
-+commit 70150bdf4509269965c72f2032bf74f285767afe
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Sep 18 16:38:03 2010 -0700
-+
-+    Add missing UNWIND entry; disables .pad on non-EABI targets.
-+
-+commit 6b452bafaec498df975ba8ac4c99de174e5f74f7
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Sep 18 16:21:32 2010 -0700
-+
-+    Apple assembler support; fixed most gas/ELF-isms.
-+
-+commit 8ddac835b6f8b54ede764d0ea977dee4c82e2d67
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Sep 18 15:38:06 2010 -0700
-+
-+    Fix placement of the __APPLE__ macro.
-+
-+commit 69043d02936bb0579ac59b4ee1ed8dec38c38db7
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Sep 18 15:32:08 2010 -0700
-+
-+    Work-around libffi's FP ABI detection.
-+    
-+    On iOS, we must use the AAPCS floating point return value calling
-+    conventions. libffi's ARM implementation will only use these conventions
-+    if __SOFTFP__ is defined, which is not the case when GCC's
-+    -mfloat-abi defaults to 'softfp' instead of 'soft'. To work around this
-+    we manually define __SOFTFP__ for Apple platforms in the ARM-specific
-+    sysv.S.
-+    
-+    See also:
-+      http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iPhoneOSABIReference/Introduction/Introduction.html
-+      http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf
-+
-+commit a82e6c354ea805114642a6e440abd0832cb1d23f
-+Author: Landon Fuller <landonf@bikemonkey.org>
-+Date:   Sat Sep 18 14:44:24 2010 -0700
-+
-+    Add a stub iOS build script to drive autoconf
-+
-+commit 84e8de6e9fc19388f6f1102c013b7d0d52940ecc
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Aug 6 01:35:12 2010 -0400
-+
-+    Restore execute permissions
-+
-+commit 3aeecc9eb1a6feba6549849cdd335c926415a4fc
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Aug 5 15:19:00 2010 -0400
-+
-+    Fix win64-struct-args patch
-+
-+commit 00d0b59cd13f89ab8b44bd894eb7f0a131fcb472
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Aug 5 14:56:53 2010 -0400
-+
-+    Fix debug build for windows
-+
-+commit bda487e87064f27965155459a62dc52a744778d0
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Aug 5 09:02:41 2010 -0400
-+
-+    Don't use -safeseh with ml64
-+
-+commit c1d28ba8d5029795af313ffeb81c97efc6d4c847
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Aug 5 08:48:16 2010 -0400
-+
-+    stdcall-x86-closure-fix
-+
-+commit 5feacad4a56c85b3f23a267a30b2cf424cd59548
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Aug 5 08:30:04 2010 -0400
-+
-+    define generic symbols carefully
-+
-+commit 10ea848900bc3018ac213cef52b44cacbe5cbebc
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Thu Aug 5 08:24:27 2010 -0400
-+
-+    don't copy win64 struct args
-+
-+commit d14178be4c49c3ada44a9fe9efe11d444372ddab
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Fri Jul 23 09:14:00 2010 -0400
-+
-+    FFI_LAST_ABI fix
-+
-+commit 3f5b1375ab1e2b8e3d593e21b27097a4a50f9b83
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Jul 12 14:39:18 2010 -0400
-+
-+    rebase
-+
-+commit eaf444eabc4c78703c0f98ac0197b1619c1b1bef
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sat Jul 10 08:59:09 2010 -0400
-+
-+    Fix selinux test
-+
-+commit 630974152247f100ece4d44f10c3721bb4599fbf
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Wed May 5 20:14:56 2010 -0400
-+
-+    Micharl Kohler's spelling fixes
-+
-+commit 9dc9a293f3d4589fcaf02dd4288c8cebaefa508e
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Tue Apr 13 10:33:52 2010 -0400
-+
-+    Rebase to latest GCC sources
-+
-+commit f2c2a4fce9b3eca9f39b4f3545118bc256da4a73
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Tue Apr 13 10:19:28 2010 -0400
-+
-+    Remove warnings and add OS/2 support
-+
-+commit c0b69e57d529e33d18b658cc5572a21e3663247c
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Tue Mar 30 08:30:22 2010 -0400
-+
-+    Dan Witte's windows build fixes.
-+
-+commit 59a259f4d348f593b45f452309f4d020a28051c4
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Mon Mar 15 05:57:51 2010 -0400
-+
-+    Remove junk file
-+
-+commit 3de1eb36d37a66829e606421939874d0d60d816d
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Mon Mar 15 05:57:24 2010 -0400
-+
-+    fix-comments patch
-+
-+commit c3813b6d7f8a777700f4c5862190c0db148d4de8
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Tue Jan 26 16:48:56 2010 -0500
-+
-+    Rebuild Makefiles with automake 1.11.1 for CVE-2009-4029.
-+
-+commit 8d27f68baa365bf883b6053c5f6bc819646d5434
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Fri Jan 15 11:35:37 2010 -0500
-+
-+    Mention recent changes in README
-+
-+commit ff3cd68b8cf2d9a28cad7aa9beff46236eacec8c
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Fri Jan 15 11:27:24 2010 -0500
-+
-+    Add msvc.sh wrapper
-+
-+commit cadeba6cb53414a1253582f1719c286665de7b6c
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Fri Jan 15 10:46:51 2010 -0500
-+
-+    Microsoft Visual C port
-+
-+commit 0739e7dc00db766eb64f502ec4137b817638c9a1
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Fri Jan 15 09:48:33 2010 -0500
-+
-+    Add x86 Sun Studio compiler support
-+
-+commit edfdfd2e85b8d01d2455934f1d7f4d7eb2f3cf1c
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Wed Jan 13 02:56:19 2010 -0500
-+
-+    Add closure example doc
-+
-+commit 7b7a42f221cf171e8d09df34cac6dc1fd8458cc3
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Tue Jan 12 09:14:14 2010 -0500
-+
-+    Rebase from GCC
-+
-+commit 4b18d1f73dc7733137869e4ab5725cb90c1c8fde
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Fri Jan 1 10:24:27 2010 -0500
-+
-+    Add x86-64 MingW to README
-+
-+commit c3042afaf3f84abbbe9c91bf9bc9896b0d9eb003
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Fri Jan 1 08:08:02 2010 -0500
-+
-+    Reset quilt patches post 3.0.9 merge with GCC
-+
-+commit b0304e9679bdfec6ac45a57b5c96542697249418
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Thu Dec 31 11:32:40 2009 -0500
-+
-+    Update version
-+
-+commit 2e7e03d014d9c9bf40e97ce75cba089ad052fa6b
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Thu Dec 31 07:43:22 2009 -0500
-+
-+    Final updates before 3.0.9
-+
-+commit aea706c52825c8eee677ffa7fdbdd3aed1725492
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Tue Dec 29 10:09:31 2009 -0500
-+
-+    really 3.0.9rc12
-+
-+commit 0cfe60e9d13f132b88995cfee41f2156344f6fa2
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Tue Dec 29 10:06:04 2009 -0500
-+
-+    3.0.9rc12
-+
-+commit 14e2e92e8645804b6940b3e96c98e9f7f384a6b2
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Sun Dec 27 21:03:33 2009 -0500
-+
-+    3.0.9rc11
-+
-+commit 884402787bf8eaf7ec207085037cf8ace2f660ec
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Sat Dec 26 12:57:23 2009 -0500
-+
-+    HPUX support and avr32 test fixes.
-+
-+commit 01c78756aff22efb1f122f8e93e068d7bf2185c7
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Sat Dec 26 10:05:18 2009 -0500
-+
-+    3.0.9rc9
-+
-+commit 70868464651320268d79c6894db5a50fdc11032a
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Sat Dec 26 09:58:03 2009 -0500
-+
-+    Remove xfails for mips and arm
-+
-+commit 838d4ad920ec85cf5ca3b511221d67f6d9a99024
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Sat Dec 26 09:57:27 2009 -0500
-+
-+    Remove a bunch of xfails.
-+
-+commit 7e37eaaf772f48906e69618c773b0a36c3927de9
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Sat Dec 26 07:46:50 2009 -0500
-+
-+    Fix huge_struct for solaris
-+
-+commit 07cc7a37194bc34064ebed7f2724333a798411c8
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Sat Dec 26 07:23:04 2009 -0500
-+
-+    3.0.9rc8
-+
-+commit 2b9be16ffabc81326128bc1bbdddff8ddc5d13d3
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Sat Dec 26 07:04:45 2009 -0500
-+
-+    3.0.9rc8
-+
-+commit 9458d88f676e9a21ab8993a54e16754b11687419
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Sat Dec 26 07:02:27 2009 -0500
-+
-+    Rebase from GCC
-+
-+commit 6a3412417593f068a04dc6163f4269cb295ad5ca
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Sat Dec 26 06:51:33 2009 -0500
-+
-+    Add Andreas Schwab's powerpc fix
-+
-+commit 39c8792ece1043f41f4c395a2ce71f4cf0ff4674
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Fri Dec 25 21:52:28 2009 -0500
-+
-+    3.0.9rc7
-+
-+commit 1d04af52e3e24db69f742064694c22f8df5cc70e
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Fri Dec 25 09:50:36 2009 -0500
-+
-+    Updated some mips XFAILs
-+
-+commit 26e9509c9b7929bc4fcf697071699051a652b1fd
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Fri Dec 25 02:19:23 2009 -0500
-+
-+    Clean up ChangeLog.libffi for older patches.
-+
-+commit 9c157d3215e4393777f83eb6fa801df6528f40d7
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Fri Dec 25 02:15:40 2009 -0500
-+
-+    Clean up undefine_AC_ARG_VAR_PRECIOUS patch.
-+
-+commit d22de05b0bfc480766bc1240615ce2830eee71b8
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Fri Dec 25 02:04:23 2009 -0500
-+
-+    Fix patches
-+
-+commit 1fe3dc7c20dc4dbd8fed0d19c8618027d44ed971
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Fri Dec 25 01:39:00 2009 -0500
-+
-+    Add windows support patch.
-+
-+commit f7c0bc613a88f7dbc2d18b345c10fa438833c170
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Fri Dec 25 01:22:11 2009 -0500
-+
-+    3.0.9rc6
-+
-+commit c7fa2da8260258c11ab1dc7ac06fb611a2c1b50f
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Thu Dec 24 07:22:44 2009 -0500
-+
-+    3.0.9rc6
-+
-+commit da11bece0fde66fc0268db3a01207dda857e25d2
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Thu Dec 24 05:34:46 2009 -0500
-+
-+    Release 3.0.9rc5
-+
-+commit e3399b11edeab546b066bfc18574f3edb905d0dc
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Thu Dec 24 01:09:32 2009 -0500
-+
-+    Update README
-+
-+commit 115ab36fceee69740a01ce49bc27e1908cc237b1
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Thu Dec 24 00:22:00 2009 -0500
-+
-+    Update missing changes for 3.0.9r4.
-+
-+commit f8c7a245bf5a80bd7e730ec03fcad17c8dcfcb07
-+Author: Anthony Green <green@gmachine.(none)>
-+Date:   Wed Dec 23 23:46:22 2009 -0500
-+
-+    Switch to quilt. Rebase to latest GCC.
-+
-+commit ce806772f02387b9a74f6496a263a368bccd5d59
-+Merge: cd98813 dcc1f6b
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Oct 5 00:41:35 2009 -0400
-+
-+    Merge branch 'master' of git@github.com:atgreen/libffi
-+
-+commit dcc1f6b4f1ffd2713bf68b791a13f85d455c8b1b
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Oct 5 00:29:33 2009 -0400
-+
-+    More clean up.
-+
-+commit 2829f5941a223b9d851d8ab6318318e6197d7e01
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Oct 5 00:28:03 2009 -0400
-+
-+    Clean up
-+
-+commit cd98813de517ea64041637e3e78d27a001d6d3b4
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Oct 5 00:25:29 2009 -0400
-+
-+    From Jens Rehsack.  Fix for 64-bit AIX.
-+
-+commit e4a91de766acc47f6c50f13cc11719a65e23ecba
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Mon Oct 5 00:16:17 2009 -0400
-+
-+    From Abdulaziz Ghuloum.  Adds special case for Snow Leopard.
-+
-+commit 3425a763bcdaadb8b430226f427ec833afdcc96a
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Oct 4 23:57:29 2009 -0400
-+
-+    Fix detection of free/openbsd.  From Alexis Ballier.
-+
-+commit 2340e7a777902de61499d47823ad8d5e0eeb6203
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Oct 4 23:53:17 2009 -0400
-+
-+    AVR support
-+
-+commit 5cbe2058c128e848446ae79fe15ee54260a90559
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Oct 4 23:53:11 2009 -0400
-+
-+    Initial stand-alone patch.
-+
-+commit c6dddbd02bad9654ed58cdb0feb360934d105dec
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Oct 4 08:11:33 2009 -0400
-+
-+    Initial commit
-+
-+commit 5ffc0c37486fb1538bccc0ca7acc807d4f1af932
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Sun Oct 4 07:58:22 2009 -0400
-+
-+    Update version to 3.0.9rc1.  Add more useful things to .gitignore.
-+
-+commit bd29f83ee9f6fa6b65adee9d3f57834f364d9887
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Sep 29 12:07:26 2009 -0400
-+
-+    Add .gitignore
-+
-+commit 9474f853f83e3f0167c1b306177321bfcc93e56d
-+Author: Anthony Green <green@moxielogic.com>
-+Date:   Tue Sep 29 11:13:02 2009 -0400
-+
-+    Remove old CVSROOT files.
-+
-+commit 0c25275ec24bfe2c2c25a000465f0950ef9dd51b
-+Author: twall <twall>
-+Date:   Wed Aug 19 12:57:34 2009 +0000
-+
-+    Apply Dave Korn's cygwin/GCC changes
-+
-+commit 39228c27ed3f677a95b46380a8d31602b5777e1a
-+Author: aph <aph>
-+Date:   Tue Jun 16 18:00:47 2009 +0000
-+
-+    2009-06-16  Wim Lewis  <wiml@hhhh.org>
-+    
-+    	* src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are
-+    	supposed to be callee-saved.
-+    	* src/powerpc/sysv.S (small_struct_return_value): Fix overrun of
-+    	return buffer for odd-size structs.
-+
-+commit 5e93cc704d127c2c8ae7f5d2cef621145d43e777
-+Author: aph <aph>
-+Date:   Tue Jun 16 17:41:47 2009 +0000
-+
-+    2009-06-16  Andreas Tobler  <a.tobler@schweiz.org>
-+    
-+    	PR libffi/40444
-+    	* testsuite/lib/libffi-dg.exp (libffi_target_compile): Add
-+    	allow_stack_execute for Darwin.
-+
-+commit b509af8959dc371b92392c623522ea6f4946a71d
-+Author: aph <aph>
-+Date:   Tue Jun 16 16:17:52 2009 +0000
-+
-+    2009-06-16  Andrew Haley  <aph@redhat.com>
-+    
-+    	* configure.ac (TARGETDIR): Add missing blank lines.
-+    	* configure: Regenerate.
-+
-+commit d57e96dc56ee76fbbb9b59d73aeaa92354db5ecb
-+Author: aph <aph>
-+Date:   Tue Jun 16 09:59:02 2009 +0000
-+
-+    2009-06-16  Andrew Haley  <aph@redhat.com>
-+    
-+            * testsuite/libffi.call/cls_align_sint64.c,
-+            testsuite/libffi.call/cls_align_uint64.c,
-+            testsuite/libffi.call/cls_longdouble_va.c,
-+            testsuite/libffi.call/cls_ulonglong.c,
-+            testsuite/libffi.call/return_ll1.c,
-+            testsuite/libffi.call/stret_medium2.c: Fix printf format
-+            specifiers.
-+            * testsuite/libffi.call/huge_struct.c: Ad x86 XFAILs.
-+            * testsuite/libffi.call/float2.c: Fix dg-excess-errors.
-+            * testsuite/libffi.call/ffitest.h,
-+            testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define.
-+
-+commit b01d6d1982c9e020507029bfd5a58a8c60d111fa
-+Author: aph <aph>
-+Date:   Tue Jun 16 09:44:54 2009 +0000
-+
-+    2009-06-16  Andrew Haley  <aph@redhat.com>
-+    
-+    	* testsuite/libffi.call/err_bad_typedef.c: xfail everywhere.
-+    	* testsuite/libffi.call/err_bad_abi.c: Likewise.
-+
-+commit 35b6ded138591900a88055a8a8ac1fadc29a76d6
-+Author: aph <aph>
-+Date:   Fri Jun 12 15:29:20 2009 +0000
-+
-+    2009-06-11  Kaz Kojima  <kkojima@gcc.gnu.org>
-+    
-+            * testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*.
-+            * testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*.
-+            * testsuite/libffi.call/err_bad_typedef.c: Likewise.
-+
-+commit acc46605f2d95d67d69398e7644610f10a157ce3
-+Author: aph <aph>
-+Date:   Fri Jun 12 14:21:28 2009 +0000
-+
-+    2009-06-12  Andrew Haley  <aph@redhat.com>
-+    
-+            * ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c,
-+            testsuite/libffi.call/cls_align_uint64.c,
-+            testsuite/libffi.call/cls_ulonglong.c,
-+            testsuite/libffi.call/return_ll1.c,
-+            testsuite/libffi.call/stret_medium2.c: Fix printf format
-+            specifiers.
-+            testsuite/libffi.special/unwindtest.cc: include stdint.h.
-+
-+commit 16d1996ed0797bd7c11aca2b0fe7e7748751aaf6
-+Author: twall <twall>
-+Date:   Thu Jun 11 14:27:42 2009 +0000
-+
-+    update changelog
-+
-+commit 92a515c33efe91be3cb0258f01c63aff208489c7
-+Author: twall <twall>
-+Date:   Thu Jun 11 14:27:28 2009 +0000
-+
-+    use ffi_closure_alloc instead of stack-based closure
-+
-+commit e4363160ba9e50167f9ca0a7399d537a1d2cd0ce
-+Author: twall <twall>
-+Date:   Thu Jun 11 14:26:23 2009 +0000
-+
-+    remove unused extern
-+
-+commit 1dc2781d2ba38f5f000ff70069d617fb21e1d2af
-+Author: twall <twall>
-+Date:   Thu Jun 11 11:36:16 2009 +0000
-+
-+    remove not-yet-applied changelog entries
-+
-+commit bb27735fe689dac97ec0dc847ed8d3d519620109
-+Author: twall <twall>
-+Date:   Wed Jun 10 10:42:36 2009 +0000
-+
-+    add win64 support
-+
-+commit b2a54c100c74854a409820817d54617fdda39eb8
-+Author: aph <aph>
-+Date:   Mon Jun 8 16:50:49 2009 +0000
-+
-+    2009-06-08  Andrew Haley  <aph@redhat.com>
-+    
-+    	* testsuite/libffi.call/err_bad_abi.c: Add xfails.
-+    	* testsuite/libffi.call/cls_longdouble_va.c: Add xfails.
-+    	* testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*.
-+    	* testsuite/libffi.call/err_bad_typedef.c: Add xfails.
-+    
-+    	* testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args.
-+    	* testsuite/libffi.call/stret_medium.c: Likewise.
-+    	* testsuite/libffi.call/stret_large2.c: Likewise.
-+    	* testsuite/libffi.call/stret_large.c:  Likewise.
-+
-+commit 25723e7141f73d3736d7244b980c89d97db852b6
-+Author: aph <aph>
-+Date:   Fri Jun 5 13:03:40 2009 +0000
-+
-+    2009-06-05  Andrew Haley  <aph@redhat.com>
-+    
-+            * src/x86/win32.S (_ffi_closure_STDCALL): Import from gcc.
-+
-+commit 70758199c7cd41f411987360ccb302b497a56dc9
-+Author: aph <aph>
-+Date:   Thu Jun 4 16:29:58 2009 +0000
-+
-+     2009-06-04  Andrew Haley  <aph@redhat.com>
-+    
-+            * src/powerpc/ffitarget.h: Fix misapplied merge from gcc.
-+
-+commit e8bb12563f9aa23ddf36fa6a5b92b16b5c3e1a7f
-+Author: aph <aph>
-+Date:   Thu Jun 4 14:59:18 2009 +0000
-+
-+    2009-06-04  Andrew Haley  <aph@redhat.com>
-+    
-+    	* src/mips/o32.S,
-+    	src/mips/n32.S: Fix licence formatting.
-+
-+commit d66a8e32c3671479e3ce0f6819673e5932ba6b7f
-+Author: aph <aph>
-+Date:   Thu Jun 4 14:43:40 2009 +0000
-+
-+    2009-06-04  Andrew Haley  <aph@redhat.com>
-+    
-+    	* src/x86/darwin.S: Fix licence formatting.
-+    	src/x86/win32.S: Likewise.
-+    	src/sh64/sysv.S: Likewise.
-+    	src/sh/sysv.S: Likewise.
-+
-+commit 7c3b7fd6b5db746b5b09a718f3044f811372f941
-+Author: aph <aph>
-+Date:   Thu Jun 4 14:39:20 2009 +0000
-+
-+    2009-06-04  Andrew Haley  <aph@redhat.com>
-+    
-+    	* src/sh64/ffi.c: Remove lint directives.  Was missing from merge
-+    	of Andreas Tobler's patch from 2006-04-22.
-+
-+commit 1a2f93a8b362db13638afd9fcb3f2650180bfa17
-+Author: aph <aph>
-+Date:   Thu Jun 4 10:45:51 2009 +0000
-+
-+    2009-06-04  Andrew Haley  <aph@redhat.com>
-+    
-+            * src/sh/ffi.c: Apply missing hunk from Alexandre Oliva's patch of
-+            2007-03-07.
-+
-+commit 944c95cf7aaaaf7c5fa368cda4673dd38f45020e
-+Author: aph <aph>
-+Date:   Wed Jun 3 17:42:56 2009 +0000
-+
-+    2009-05-22  Dave Korn  <dave.korn.cygwin@gmail.com>
-+    
-+           * src/x86/win32.S (_ffi_closure_STDCALL):  New function.
-+           (.eh_frame):  Add FDE for it.
-+    
-+    2009-05-22  Dave Korn  <dave.korn.cygwin@gmail.com>
-+    
-+           * configure.ac:  Also check if assembler supports pc-relative
-+           relocs on X86_WIN32 targets.
-+           * configure:  Regenerate.
-+           * src/x86/win32.S (ffi_prep_args):  Declare extern, not global.
-+           (_ffi_call_SYSV):  Add missing function type symbol .def and
-+           add EH markup labels.
-+           (_ffi_call_STDCALL):  Likewise.
-+           (_ffi_closure_SYSV):  Likewise.
-+           (_ffi_closure_raw_SYSV):  Likewise.
-+           (.eh_frame):  Add hand-crafted EH data.
-+    
-+    2008-11-21  Eric Botcazou  <ebotcazou@adacore.com>
-+    
-+           * src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for
-+           signed/unsigned int8/16 return values.
-+           * src/sparc/v8.S (ffi_call_v8): Likewise.
-+           (ffi_closure_v8): Likewise.
-+    
-+    2008-03-26  Kaz Kojima  <kkojima@gcc.gnu.org>
-+    
-+           * src/sh/sysv.S: Add .note.GNU-stack on Linux.
-+           * src/sh64/sysv.S: Likewise.
-+    
-+    2008-03-26  Daniel Jacobowitz  <dan@debian.org>
-+    
-+           * src/arm/sysv.S: Fix ARM comment marker.
-+
-+commit 00fa972430bb1535a4b34bf029ebcad500027b0c
-+Author: twall <twall>
-+Date:   Sat Dec 27 16:59:05 2008 +0000
-+
-+    properly glob-match
-+
-+commit f5179e6794ac35af26fe86e468b8508a7a570c55
-+Author: twall <twall>
-+Date:   Fri Dec 26 19:06:28 2008 +0000
-+
-+    Mark XFAIL on longdouble tests for x86_64/mingw
-+
-+commit 80e2b5a749208c8a18f994ec5bee84594d051cc8
-+Author: twall <twall>
-+Date:   Mon Dec 22 15:21:15 2008 +0000
-+
-+    clean up tests for win64 use
-+
-+commit 7063d9996f742576095c7b0eb5016c0f9a670aec
-+Author: green <green>
-+Date:   Fri Dec 19 16:13:46 2008 +0000
-+
-+    Version 3.0.8 with x86-solaris support
-+
-+commit bdfeb13f0df0a63b19d62597517237b54d92228b
-+Author: green <green>
-+Date:   Fri Dec 19 15:47:44 2008 +0000
-+
-+    Bump to 3.0.7
-+
-+commit 69205de17d6ac4c11d4ba92d6a5b40a0c5f246b2
-+Author: green <green>
-+Date:   Thu Jul 24 18:03:48 2008 +0000
-+
-+    Many test fixes (failures due to excessive compiler warnings).
-+
-+commit 260d513fea00b3613fe957a44a157fe72c4ca29e
-+Author: green <green>
-+Date:   Thu Jul 17 13:13:52 2008 +0000
-+
-+    Version 3.0.6.  sh/sh64 fixes.
-+
-+commit 3704031875feabb74e3655ed03cff4c2b3c76ac6
-+Author: green <green>
-+Date:   Thu Apr 3 18:57:57 2008 +0000
-+
-+    Rev 3.0.5.
-+
-+commit 8406f5f48f7f58a1c982a93a95d521cf82b3241f
-+Author: green <green>
-+Date:   Thu Apr 3 18:57:34 2008 +0000
-+
-+    3.0.5
-+
-+commit 23a9e73212b62f9684cedb0ce70e92c59cfdaffa
-+Author: green <green>
-+Date:   Wed Mar 5 00:07:02 2008 +0000
-+
-+    2008-03-04  Anthony Green  <green@redhat.com>
-+                Blake Chaffin
-+                hos@tamanegi.org
-+    
-+            * testsuite/libffi.call/cls_align_longdouble_split2.c
-+              testsuite/libffi.call/cls_align_longdouble_split.c
-+              testsuite/libffi.call/cls_dbls_struct.c
-+              testsuite/libffi.call/cls_double_va.c
-+              testsuite/libffi.call/cls_longdouble.c
-+              testsuite/libffi.call/cls_longdouble_va.c
-+              testsuite/libffi.call/cls_pointer.c
-+              testsuite/libffi.call/cls_pointer_stack.c
-+              testsuite/libffi.call/err_bad_abi.c
-+              testsuite/libffi.call/err_bad_typedef.c
-+              testsuite/libffi.call/huge_struct.c
-+              testsuite/libffi.call/stret_large2.c
-+              testsuite/libffi.call/stret_large.c
-+              testsuite/libffi.call/stret_medium2.c
-+              testsuite/libffi.call/stret_medium.c: New tests from Apple.
-+
-+commit 429e37d3ad653e52e75bf725c883ab79e859f89a
-+Author: green <green>
-+Date:   Thu Feb 28 04:50:19 2008 +0000
-+
-+    clicky
-+
-+commit 51e79c428348c033314f54bcb30f7e388c59e347
-+Author: green <green>
-+Date:   Thu Feb 28 04:47:35 2008 +0000
-+
-+    getclicky
-+
-+commit affcab04e280efeace45a72c4dc6152c0e4f1b7f
-+Author: green <green>
-+Date:   Tue Feb 26 19:01:53 2008 +0000
-+
-+    2008-02-26  Jakub Jelinek  <jakub@redhat.com>
-+                Anthony Green  <green@redhat.com>
-+    
-+            * src/alpha/osf.S: Add .note.GNU-stack on Linux.
-+            * src/s390/sysv.S: Likewise.
-+            * src/powerpc/linux64.S: Likewise.
-+            * src/powerpc/linux64_closure.S: Likewise.
-+            * src/powerpc/ppc_closure.S: Likewise.
-+            * src/powerpc/sysv.S: Likewise.
-+            * src/x86/unix64.S: Likewise.
-+            * src/x86/sysv.S: Likewise.
-+            * src/sparc/v8.S: Likewise.
-+            * src/sparc/v9.S: Likewise.
-+            * src/m68k/sysv.S: Likewise.
-+            * src/ia64/unix.S: Likewise.
-+            * src/arm/sysv.S: Likewise.
-+
-+commit 59689d5522c159a3ac967adb6b891cf5f22c890f
-+Author: green <green>
-+Date:   Tue Feb 26 17:40:51 2008 +0000
-+
-+    2008-02-26  Anthony Green  <green@redhat.com>
-+                Thomas Heller  <theller@ctypes.org>
-+    
-+            * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C
-+            comment.
-+
-+commit b13c84cf4668828ff8429ba4a2f94cd1eb574ae0
-+Author: green <green>
-+Date:   Tue Feb 26 17:38:15 2008 +0000
-+
-+    2008-02-26  Anthony Green  <green@redhat.org>
-+                Thomas Heller <theller@ctypes.org>
-+    
-+            * include/ffi.h.in: Change void (*)() to void (*)(void).
-+
-+commit 265289f679ffd24a88ae1aa2cef0e4aa14703cd8
-+Author: green <green>
-+Date:   Tue Feb 26 17:34:36 2008 +0000
-+
-+    2008-02-26  Anthony Green  <green@spindazzle.org>
-+    
-+            * src/alpha/ffi.c: Change void (*)() to void (*)(void).
-+            src/alpha/osf.S, src/arm/ffi.c, src/frv/ffi.c, src/ia64/ffi.c,
-+            src/ia64/unix.S, src/java_raw_api.c, src/m32r/ffi.c,
-+            src/mips/ffi.c, src/pa/ffi.c, src/pa/hpux32.S, src/pa/linux.S,
-+            src/powerpc/ffi.c, src/powerpc/ffi_darwin.c, src/raw_api.c,
-+            src/s390/ffi.c, src/sh/ffi.c, src/sh64/ffi.c, src/sparc/ffi.c,
-+            src/x86/ffi.c, src/x86/unix64.S, src/x86/darwin64.S,>         src/x86/ffi64.c: Ditto.
-+
-+commit fb5036cd6d0f909918e90f7d2d9fd80d46682d5d
-+Author: green <green>
-+Date:   Sun Feb 24 17:25:25 2008 +0000
-+
-+    fix date
-+
-+commit 40bec108e7d0181e6c9928aa7a33187bcc0f3d6f
-+Author: green <green>
-+Date:   Sun Feb 24 17:25:02 2008 +0000
-+
-+    New release
-+
-+commit b922048fa82ea109a4af269ee47bbc2a586bbac2
-+Author: green <green>
-+Date:   Sun Feb 24 17:24:00 2008 +0000
-+
-+    2008-02-24  Anthony Green  <green@spindazzle.org>
-+    
-+            * configure.ac: Accept openbsd*, not just openbsd.
-+            Bump version to 3.0.4.
-+            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
-+            * libtool-version: Increment revision.
-+            * README: Update for new release.
-+
-+commit affca4b92d06e5554784c7e9b233029ef83f7d8a
-+Author: green <green>
-+Date:   Fri Feb 22 21:53:29 2008 +0000
-+
-+    sync readme with web page.
-+
-+commit 3e53d8752ea74859b4c64fbbf935e62a937c4d78
-+Author: green <green>
-+Date:   Fri Feb 22 21:52:38 2008 +0000
-+
-+    New release
-+
-+commit 4d92f6c8e78fe084be65f3e8b58b859901ba796d
-+Author: green <green>
-+Date:   Fri Feb 22 21:49:46 2008 +0000
-+
-+    2008-02-22  Anthony Green  <green@redhat.com>
-+    
-+            * configure.ac: Bump version to 3.0.3.
-+            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
-+            * libtool-version: Increment revision.
-+            * README: Update for new release.  Clean up test docs.
-+
-+commit 0e185fa11a01f816824ba2687ed3715ab6219bef
-+Author: green <green>
-+Date:   Fri Feb 22 21:43:18 2008 +0000
-+
-+    Update configure script.
-+
-+commit f73986bd211cfbbaa593d1309504d0dc68626191
-+Author: green <green>
-+Date:   Fri Feb 22 21:40:53 2008 +0000
-+
-+    2008-02-22  Bjoern Koenig  <bkoenig@alpha-tierchen.de>
-+                Andreas Tobler  <a.tobler@schweiz.org>
-+    
-+            * configure.ac: Add amd64-*-freebsd* target.
-+            * configure: Regenerate.
-+
-+commit 0208f68fe5de30c33e7f70ebc281635917013f5a
-+Author: green <green>
-+Date:   Fri Feb 22 21:15:44 2008 +0000
-+
-+    2008-02-22  Thomas Heller <theller@ctypes.org>
-+    
-+            * configure.ac: Add x86 OpenBSD support.
-+            * configure: Rebuilt.
-+
-+commit 01adb0e638a86cf0d5e668ed8e08be9b0cd2505f
-+Author: green <green>
-+Date:   Thu Feb 21 16:17:26 2008 +0000
-+
-+    Fix README.
-+
-+commit 1edd4563225981a14f7d4fb9919b1ed88e38082f
-+Author: green <green>
-+Date:   Thu Feb 21 13:39:01 2008 +0000
-+
-+    3.0.2
-+
-+commit c9b542800864e2204db6e83f3843a17813ba6165
-+Author: green <green>
-+Date:   Thu Feb 21 13:36:43 2008 +0000
-+
-+    add missing file
-+
-+commit d5fa5633d5c8d3c212a2267cfa38fba4091baa2c
-+Author: green <green>
-+Date:   Thu Feb 21 13:36:19 2008 +0000
-+
-+    2008-02-21  Anthony Green  <green@redhat.com>
-+    
-+            * configure.ac: Bump version to 3.0.2.
-+            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
-+            * libtool-version: Increment revision.
-+            * README: Update for new release.
-+    
-+    2008-02-21  Björn König <bkoenig@alpha-tierchen.de>
-+    
-+            * src/x86/freebsd.S: New file.
-+            * configure.ac: Add x86 FreeBSD support.
-+            * Makefile.am: Ditto.
-+
-+commit ac35bfc6fcadd8880c1efce36724820f9074b318
-+Author: green <green>
-+Date:   Sat Feb 16 01:03:56 2008 +0000
-+
-+    Updated
-+
-+commit f7942975fee7b0162647dd79e2652615b737e98e
-+Author: green <green>
-+Date:   Sat Feb 16 01:02:00 2008 +0000
-+
-+    2008-02-15  Anthony Green  <green@redhat.com>
-+    
-+            * configure.ac: Bump version to 3.0.1.
-+            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
-+            * libtool-version: Increment revision.
-+            * README: Update for new release.
-+    
-+    2008-02-15  David Daney  <ddaney@avtrex.com>
-+    
-+            * src/mips/ffi.c: Remove extra '>' from include directive.
-+            (ffi_prep_closure_loc): Use clear_location instead of tramp.
-+
-+commit 59aa6bb1bfc86a610ac1a8b123443efd75854dd1
-+Author: green <green>
-+Date:   Fri Feb 15 20:52:26 2008 +0000
-+
-+    Add more platforms.
-+
-+commit 45a45ab99074448be0ae1a8d2ade50d28b60f8de
-+Author: green <green>
-+Date:   Fri Feb 15 19:16:36 2008 +0000
-+
-+    3.0 notes
-+
-+commit 4db74cbea888c9f1251b85baf00d99b83d3b994d
-+Author: green <green>
-+Date:   Fri Feb 15 19:10:26 2008 +0000
-+
-+    Update
-+
-+commit c3e1101ffabf44d8a2ee46e03ba9ab582050a825
-+Author: green <green>
-+Date:   Fri Feb 15 18:43:40 2008 +0000
-+
-+    2008-02-15  Anthony Green  <green@redhat.com>
-+    
-+            * configure.ac: Bump version to 3.0.0,
-+            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
-+    
-+    2008-02-15  David Daney  <ddaney@avtrex.com>
-+    
-+            * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE):
-+            Define (conditionally), and use it to include cachectl.h.
-+            (ffi_prep_closure_loc): Fix cache flushing.
-+            * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define.
-+
-+commit 7e0cc12e9233ad285db41ce8dbdda61ed2a7fb06
-+Author: green <green>
-+Date:   Fri Feb 15 15:51:03 2008 +0000
-+
-+    New release
-+
-+commit 2d7dc885ec40d53866f29984d595511942c8b686
-+Author: green <green>
-+Date:   Fri Feb 15 15:30:26 2008 +0000
-+
-+            * man/ffi_call.3, man/ffi_prep_cif.3, man/ffi.3:
-+            Update dates and remove all references to ffi_prep_closure.
-+            * configure.ac: Bump version to 2.99.9.
-+            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
-+
-+commit a0525f03eeaaed33b1eac80e0c016455cee3615d
-+Author: green <green>
-+Date:   Fri Feb 15 15:14:30 2008 +0000
-+
-+    New release.
-+
-+commit 2b30dfb3146ee26ad956d00ee05eb835ca1a95b4
-+Author: green <green>
-+Date:   Fri Feb 15 15:12:43 2008 +0000
-+
-+            * man/ffi_prep_closure.3: Delete.
-+            * man/Makefile.am (EXTRA_DIST): Remove ffi_prep_closure.3.
-+            (man_MANS): Ditto.
-+            * man/Makefile.in: Rebuilt.
-+            * configure.ac: Bump version to 2.99.8.
-+            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
-+
-+commit bf41e64840ebcb6cc31a6f028253c1fde82705d8
-+Author: green <green>
-+Date:   Fri Feb 15 01:56:50 2008 +0000
-+
-+    Update.
-+
-+commit 4d39ddee677bbb61d621893b91e11eac5e7c4af7
-+Author: green <green>
-+Date:   Fri Feb 15 01:24:06 2008 +0000
-+
-+    * configure.ac: Bump version to 2.99.7.
-+            * configure, doc/stamp-vti, doc/version.texi: Rebuilt.
-+            * include/ffi.h.in LICENSE src/debug.c src/closures.c
-+              src/ffitest.c src/s390/sysv.S src/s390/ffitarget.h
-+              src/types.c src/m68k/ffitarget.h src/raw_api.c src/frv/ffi.c
-+              src/frv/ffitarget.h src/sh/ffi.c src/sh/sysv.S
-+              src/sh/ffitarget.h src/powerpc/ffitarget.h src/pa/ffi.c
-+              src/pa/ffitarget.h src/pa/linux.S src/java_raw_api.c
-+              src/cris/ffitarget.h src/x86/ffi.c src/x86/sysv.S
-+              src/x86/unix64.S src/x86/win32.S src/x86/ffitarget.h
-+              src/x86/ffi64.c src/x86/darwin.S src/ia64/ffi.c
-+              src/ia64/ffitarget.h src/ia64/ia64_flags.h src/ia64/unix.S
-+              src/sparc/ffi.c src/sparc/v9.S src/sparc/ffitarget.h
-+              src/sparc/v8.S src/alpha/ffi.c src/alpha/ffitarget.h
-+              src/alpha/osf.S src/sh64/ffi.c src/sh64/sysv.S
-+              src/sh64/ffitarget.h src/mips/ffi.c src/mips/ffitarget.h
-+              src/mips/n32.S src/mips/o32.S src/arm/ffi.c src/arm/sysv.S
-+              src/arm/ffitarget.h src/prep_cif.c: Update license text.
-+
-+commit d58b032b41a12bd3d72148da6822ab59dd698ff9
-+Author: green <green>
-+Date:   Fri Feb 15 00:59:25 2008 +0000
-+
-+    New release
-+
-+commit 91e5478df6d5ac63efbb10f025807b4606afab56
-+Author: green <green>
-+Date:   Fri Feb 15 00:50:30 2008 +0000
-+
-+    Update supported platforms.  Bump version.
-+
-+commit bd0768f877c8f7fd0d36af2191b203d4d057b1ce
-+Author: green <green>
-+Date:   Fri Feb 15 00:45:33 2008 +0000
-+
-+    * configure.ac: Bump version to 2.99.5.
-+            * configure: Rebuilt.
-+            * Makefile.am (EXTRA_DIST): Add darwin64.S
-+            * Makefile.in: Rebuilt.
-+            * testsuite/lib/libffi-dg.exp: Remove libstdc++ bits from GCC tree.
-+            * LICENSE: Update WARRANTY.
-+
-+commit 49d345f767bd2cfee951bceaab6a1a07986cf293
-+Author: green <green>
-+Date:   Thu Feb 14 23:43:27 2008 +0000
-+
-+    update license reference
-+
-+commit 12ac48fc79b515db7c9accd9fcaa87b0dcefccdb
-+Author: green <green>
-+Date:   Thu Feb 14 23:42:08 2008 +0000
-+
-+    Update WARRANTY
-+
-+commit 6b91c41da87e78552f2990dfc504a0a3349f340b
-+Author: green <green>
-+Date:   Thu Feb 14 23:38:27 2008 +0000
-+
-+    fix tarball reference
-+
-+commit 2b59579e3533334bee4788e076b4e520c2ab518c
-+Author: green <green>
-+Date:   Thu Feb 14 23:35:58 2008 +0000
-+
-+    First update in 5 years!
-+
-+commit 6cbdf3f3a3777a93382a2d508ddef1c353ff0955
-+Author: green <green>
-+Date:   Thu Feb 14 22:44:06 2008 +0000
-+
-+    Fix .pc file bug and bump version
-+
-+commit 1d1dc81104b209df3cfef0840735c59efae2f655
-+Author: green <green>
-+Date:   Thu Feb 14 22:03:37 2008 +0000
-+
-+    Add man files and info file. Update README.  Tag as 2.99.3.
-+
-+commit f045a2367f793fa8b01534cf2e25bcc46afc8fa1
-+Author: tromey <tromey>
-+Date:   Thu Feb 14 20:46:57 2008 +0000
-+
-+    Move entry from ChangeLog to ChangeLog.libffi
-+
-+commit 6257f07d1a9efd27fa83639cfba281f5d3188731
-+Author: tromey <tromey>
-+Date:   Thu Feb 14 20:33:17 2008 +0000
-+
-+    	* aclocal.m4, Makefile.in, configure, fficonfig.h.in: Rebuilt.
-+    	* mdate-sh, texinfo.tex: New files.
-+    	* Makefile.am (info_TEXINFOS): New variable.
-+    	* doc/libffi.texi: New file.
-+    	* doc/version.texi: Likewise.
-+
-+commit 4232af563c5509c3760a33e3684a2b958be755e1
-+Author: green <green>
-+Date:   Thu Feb 14 16:19:21 2008 +0000
-+
-+            * Makefile.am (AM_CFLAGS): Don't compile with -D.
-+            (lib_LTLIBRARIES): Define.
-+            (toolexeclib_LIBRARIES): Undefine.
-+            * Makefile.in: Rebuilt.
-+            * configure.ac: Reset version to 2.99.1.
-+            * configure.in: Rebuilt.
-+
-+commit 961543615c31f092b578a4b4cda914db64f9d0fa
-+Author: green <green>
-+Date:   Thu Feb 14 15:57:40 2008 +0000
-+
-+    Fix typo.
-+
-+commit aeb0abab87222f637fbf352d4effd3b76b52ed26
-+Author: green <green>
-+Date:   Thu Feb 14 15:54:27 2008 +0000
-+
-+          * libffi.pc.in: Usse @PACKAGE_NAME@ and @PACKAGE_VERSION@.
-+            * configure.ac: Reset version to 2.99.1.
-+            * configure.in: Rebuilt.
-+            * Makefile.am (EXTRA_DIST): Add ChangeLog.libffi.
-+            * Makefile.in: Rebuilt.
-+            * LICENSE: Update copyright notice.
-+
-+commit 77fe243556433eae119d8bd7469bfccdd5bd8a1a
-+Author: green <green>
-+Date:   Thu Feb 14 15:37:00 2008 +0000
-+
-+    Fix make dist again
-+
-+commit d4970cf4529459bf0f0e43c602cac396786c6802
-+Author: green <green>
-+Date:   Thu Feb 14 15:18:56 2008 +0000
-+
-+    Fix make dist
-+
-+commit f0b1462f2d3024922ad71421bd5c4311fcb16da5
-+Author: green <green>
-+Date:   Thu Feb 14 15:01:41 2008 +0000
-+
-+    Use pkgconfig.  Increment libtool CURRENT version.
-+
-+commit 27e52f33baa069012a5adb2a3807f9ca1f2165ab
-+Author: green <green>
-+Date:   Sun Feb 3 13:59:48 2008 +0000
-+
-+    Fix header installs when using DESTDIR.
-+
-+commit fadab28eb6e33fb6dcdd7b9323e147142216d548
-+Author: twall <twall>
-+Date:   Sun Feb 3 12:32:22 2008 +0000
-+
-+    update changelog
-+
-+commit b5e44c8dfa92c87b99762c303cf5574a16db8f27
-+Author: twall <twall>
-+Date:   Sun Feb 3 01:12:32 2008 +0000
-+
-+    offset from code base address, not data base address
-+
-+commit f359848d1a995c0e44566d815f218729dc996e22
-+Author: green <green>
-+Date:   Fri Feb 1 21:29:43 2008 +0000
-+
-+    Fix header installs.
-+
-+commit c30df49e157c7bfc8e19e3f8a72b9464fe225e54
-+Author: green <green>
-+Date:   Fri Feb 1 21:13:55 2008 +0000
-+
-+    Revert my broken changes to twall's patch.
-+
-+commit 675561bb9aa0732c76698df10dd3007b5d0ec759
-+Author: green <green>
-+Date:   Thu Jan 31 13:44:25 2008 +0000
-+
-+    Fix make dist .
-+
-+commit abc0bbf3813dc43e23d4c23e6fe794dbf287639b
-+Author: green <green>
-+Date:   Thu Jan 31 11:58:57 2008 +0000
-+
-+    Add Tim Wall's x86 windows patch.
-+
-+commit e332366d15a31198735b593ec8f7fc0558d783b8
-+Author: green <green>
-+Date:   Wed Jan 30 13:21:02 2008 +0000
-+
-+    Add HJ's -fomit-frame-pointer struct return fix
-+
-+commit d4204240392af5b7750a08671b08e9c22dff5e93
-+Author: green <green>
-+Date:   Wed Jan 30 12:42:34 2008 +0000
-+
-+    Clean up for new automake.
-+
-+commit f4932dd020df574637c9fb3fc1bb18e5a8f304cc
-+Author: green <green>
-+Date:   Wed Jan 30 12:40:25 2008 +0000
-+
-+    Fixes to run testsuite
-+
-+commit 085520ddc8db6a916bfc416b871fcb2d00074d40
-+Author: green <green>
-+Date:   Tue Jan 29 15:16:43 2008 +0000
-+
-+    New files from gcc tree.
-+
-+commit 77175b3f7234e4875a4ef554ed1fe9fdc4133794
-+Author: green <green>
-+Date:   Tue Jan 29 15:15:20 2008 +0000
-+
-+    Latest gcc svn sources
-+
-+commit 2544e45a0b2b634053df02da3a2ed9680eeed2a1
-+Author: green <green>
-+Date:   Tue Jan 29 14:28:13 2008 +0000
-+
-+    Install ffitarget.h in $prefix/include.
-+
-+commit 6002211b1cc4daeb587d054b4f83968bda2c981e
-+Author: green <green>
-+Date:   Tue Jan 29 12:30:10 2008 +0000
-+
-+    Add new files.
-+
-+commit ccabd2b16be883cd03e5f0cd88ccfdd6ca39239d
-+Author: green <green>
-+Date:   Tue Jan 29 12:28:15 2008 +0000
-+
-+    Merge from gcc
-+
-+commit e680ecfbfca1da8d1823e48bc89b8375e66e128b
-+Author: tromey <tromey>
-+Date:   Sun Dec 24 23:12:15 2006 +0000
-+
-+    Pulled in libffi from gcc trunk.
-+    Fixed build and install for standalone use.
-+
-+commit e7ba08965942ce872fdbc69f70f9848cc3d0bad6
-+Author: root <root>
-+Date:   Sun Jun 4 23:22:24 2006 +0000
-+
-+    sourcware.org
-+
-+commit 0cd4aa24e21aaa964dfbdebc25ec5c8188049375
-+Author: root <root>
-+Date:   Sun May 30 01:51:57 2004 +0000
-+
-+    Add LockDir
-+
-+commit 5826120fbd940d26cca76ed2522187505581e1ed
-+Author: green <green>
-+Date:   Tue Nov 4 06:09:08 2003 +0000
-+
-+    Add link to Gianni's web site.
-+
-+commit 220aa4b27db42d7ffaac5056000d5179f00d5ea3
-+Author: jsm <jsm>
-+Date:   Tue Jan 21 08:07:42 2003 +0000
-+
-+    Newer, better, increased from before!  (list of acceptable anon usernames)
-+
-+commit 1c3adc892cc1403dc4d3d7003a2385899836612e
-+Author: green <green>
-+Date:   Fri Dec 6 01:28:03 2002 +0000
-+
-+    Fixed Cygnus references.
-+
-+commit 4af66bb62fab9a8e318af3bf01e5486596a0c8d4
-+Author: green <green>
-+Date:   Sun Oct 21 19:18:42 2001 +0000
-+
-+    Testsuite fixes.
-+
-+commit 5435965f9015ce40584c98d3816c3d05e7de1d21
-+Author: green <green>
-+Date:   Mon Apr 23 00:32:03 2001 +0000
-+
-+            * include/ffi_common.h: Delete, after moving contents to...
-+            * include/ffi_private.h: Subsume contents of ffi_common.h.
-+            * include/Makefile.am (noinst_HEADERS): Remove ffi_common.h.
-+            * include/Makefile.in: Rebuilt.
-+            * arm/ffi.c, m68k/ffi.c, mips/ffi.c, powerpc/ffi.c, s390/ffi.c,
-+            ia64/ffi.c: Include ffi_private.h, not ffi_common.h.
-+            * alpha/ffi.c, sparc/ffi.c, x86/ffi.c: Don't include ffi_common.h.
-+            * types.c, raw_api.c, java_raw_api.c, prep_cif.c: Don't include
-+            ffi_common.h.
-+            * debug.c: Include ffi_private.h instead of ffi_common.h.
-+    
-+            * mips/ffi.c (calc_n32_struct_flags): Make static.
-+            (FIX_ARGP): Remove call to debugging routine ffi_stop_here.
-+    
-+            * mips/n32.S: Include ffi_private.h.
-+            * mips/o32.S: Include ffi_private.h.
-+
-+commit 6fdb7de0fe3b7385e1fd78812ae69d9b3069d994
-+Author: green <green>
-+Date:   Sun Apr 22 19:38:34 2001 +0000
-+
-+            * README: Update some comments.
-+    
-+            * Makefile.am (SUBDIRS): Add include so ffi.h gets installed.
-+            * Makefile.in: Rebuilt.
-+    
-+            * include/ffi.h: Change ALPHA to __alpha__ and SPARC to __sparc__.
-+            * types.c: Ditto.
-+            * prep_cif.c (ffi_prep_cif): Ditto.
-+    
-+            * alpha/ffi.c, alpha/osf.S, sparc/ffi.c, sparc/v8.S, sparc/v9.S:
-+            Include ffi_private.h.
-+    
-+            * include/ffi_private.h (FFI_TYPE_LAST): Define.
-+
-+commit bc7144b01b9707ef35f1a2e3e6996e005e82953a
-+Author: green <green>
-+Date:   Sun Apr 22 18:28:36 2001 +0000
-+
-+    Moved files from old home
-+
-+commit e57279831e20368c1aa1d2b35462b8629be73959
-+Author: green <green>
-+Date:   Sun Apr 22 18:23:47 2001 +0000
-+
-+    These are dead.
-+
-+commit 7247436b5fe71767b29dc02b4da0fe18b08082e6
-+Author: green <green>
-+Date:   Sun Apr 22 18:22:43 2001 +0000
-+
-+    All these files live somewhere else now.
-+
-+commit a8b0d40ff908e275028f676870c31d0d70274a98
-+Author: green <green>
-+Date:   Sun Apr 22 18:17:14 2001 +0000
-+
-+    Many changes.  Not quite there yet.
-+
-+commit f893d2273355710a290a26faebf5f12c3a34d0e3
-+Author: green <green>
-+Date:   Sun Apr 22 18:13:22 2001 +0000
-+
-+    Moved m68k files
-+
-+commit 688ddfeced89cbb9d37b53005e1f7f2b9c78a8d7
-+Author: green <green>
-+Date:   Sun Apr 22 18:12:33 2001 +0000
-+
-+    New, target indepentent, header
-+
-+commit f9e40776d488d5ecf43b3ae21444a1a2f6eca528
-+Author: green <green>
-+Date:   Sun Apr 22 18:11:57 2001 +0000
-+
-+    Many changes.
-+
-+commit 8c1d2eb47f6bc314c431b75c85c107e8e43c4a76
-+Author: green <green>
-+Date:   Sun Apr 22 18:10:47 2001 +0000
-+
-+    Many changes
-+
-+commit 1359dfc6582680a158b3caa3efb7a368da4aa12d
-+Author: green <green>
-+Date:   Sun Apr 22 18:10:20 2001 +0000
-+
-+    Moved ia64 files
-+
-+commit 6e2de5eee316a4579869aff50c7c5f6f478582d8
-+Author: green <green>
-+Date:   Sun Apr 22 18:08:11 2001 +0000
-+
-+    Moved arm files
-+
-+commit 8807355af34cba8ffe87aee51152dfccec2771fa
-+Author: green <green>
-+Date:   Mon Apr 9 00:58:38 2001 +0000
-+
-+    Many many updates.  Merge from gcc and then some.
-+
-+commit f7e9f91adec4ff1c2e7a13b3de81d2c5a3f55e7e
-+Author: green <green>
-+Date:   Mon Apr 17 03:32:37 2000 +0000
-+
-+    Mnay fixes.
-+
-+commit c4860de618f4956283f5c8230a2544e403dfe390
-+Author: green <green>
-+Date:   Mon Apr 17 03:18:46 2000 +0000
-+
-+    Merge from libgcj.  Merged patches from net.  See ChangeLog for details.
-+
-+commit c578b58314990c3853429297c38ba14015fec5fa
-+Author: jsm <jsm>
-+Date:   Sat Oct 9 20:18:16 1999 +0000
-+
-+    1999-10-09  Jason Molenda  (jsm@bugshack.cygnus.com)
-+    
-+    	* CVSROOT/auto_checkout, CVSROOT/commit_prep, CVSROOT/log_accum:
-+    	Deleted; generic versions now used for all repositories.
-+    
-+    	* CVSROOT/commitinfo, CVSROOT/loginfo:  Change pathnames to
-+    	generic versions.
-+    
-+            * CVSROOT/checkoutlist:  Don't try to check out the removed
-+            files any longer.
-+
-+commit acdb20051207fed7652dd9f122f65de5458c474c
-+Author: jsm <jsm>
-+Date:   Sat Oct 9 20:18:15 1999 +0000
-+
-+    1999-10-09  Jason Molenda  (jsm@bugshack.cygnus.com)
-+    
-+    	* CVSROOT/auto_checkout, CVSROOT/commit_prep, CVSROOT/log_accum:
-+    	Deleted; generic versions now used for all repositories.
-+    
-+    	* CVSROOT/commitinfo, CVSROOT/loginfo:  Change pathnames to
-+    	generic versions.
-+    
-+            * CVSROOT/checkoutlist:  Don't try to check out the removed
-+            files any longer.
-+
-+commit e75be655ceedf7ab24c4e99d75eec9efeb979bc7
-+Author: green <green>
-+Date:   Sun Aug 8 13:16:41 1999 +0000
-+
-+    New configury
-+
-+commit d6669a0dd5b266005325bbf6d5a8ff34574d809e
-+Author: green <green>
-+Date:   Sun Aug 8 13:05:12 1999 +0000
-+
-+    	* include/ffi.h.in: Try to work around messy header problem
-+    	with PACKAGE and VERSION.
-+    
-+    	* configure: Rebuilt.
-+    	* configure.in: Change version to 2.00-beta.
-+    
-+            * fficonfig.h.in: Rebuilt.
-+    	* acconfig.h (FFI_NO_STRUCTS, FFI_NO_RAW_API): Define.
-+    
-+    	* src/x86/ffi.c (ffi_raw_call): Rename.
-+
-+commit 4819d52b007934a40d6d29a75ee30e857c4a93ae
-+Author: green <green>
-+Date:   Wed Aug 4 18:02:34 1999 +0000
-+
-+    New file for Kresten's closure work
-+
-+commit 2dbf801eb427cbf5021a9e1e512b5fc523524700
-+Author: green <green>
-+Date:   Wed Aug 4 18:00:05 1999 +0000
-+
-+    Kresten's closure work. Initial checkin.
-+
-+commit d170961701b0f2bf7e824d7caba2ebe10002ed84
-+Author: green <green>
-+Date:   Thu Jul 8 14:36:52 1999 +0000
-+
-+    	* configure.in: Add x86 and powerpc BeOS configurations.
-+    	From Makoto Kato <m_kato@ga2.so-net.ne.jp>.
-+
-+commit c7747d976924ec6f2229cbcfbbdb98d364e10de9
-+Author: jsm <jsm>
-+Date:   Wed May 12 23:32:16 1999 +0000
-+
-+    1999-05-12  Jason Molenda  (jsm@bugshack.cygnus.com)
-+            * index.html: Add links to libffi* mail list archives.
-+
-+commit dd2aa9a8de22e26df3bbc85d068358641f6202f7
-+Author: green <green>
-+Date:   Thu May 6 05:34:36 1999 +0000
-+
-+    	* configure.in: Add warning about this being beta code.
-+    	Remove src/Makefile.am from the picture.
-+    	* configure: Rebuilt.
-+    	* Makefile.am: Move logic from src/Makefile.am.  Add changes
-+    	to support libffi as a target library.
-+    	* Makefile.in: Rebuilt.
-+    	* aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh:
-+    	Upgraded to new autoconf, automake, libtool.
-+    	* README: Tweaks.
-+    	* LICENSE: Update copyright date.
-+    	* src/Makefile.am, src/Makefile.in: Removed.
-+
-+commit 4e9452abed58a3058ccdb446f96a29d50dda1f34
-+Author: green <green>
-+Date:   Wed May 5 22:06:13 1999 +0000
-+
-+    Updated to new automake, libtool, autoconf - nothing works :-)
-+
-+commit 6d3b2bddaf4967fba8b8656c01bfc77ec0f2800c
-+Author: jsm <jsm>
-+Date:   Mon Apr 26 15:55:28 1999 +0000
-+
-+    1999-04-26  Jason Molenda  (jsm@bugshack.cygnus.com)
-+            * index.html: Missed a reference to libffi-discuss@cygnus.com.  Fixed.
-+
-+commit ebc6a9c28af831d3d187af8ff17319f0f309bd98
-+Author: jsm <jsm>
-+Date:   Mon Apr 26 15:53:29 1999 +0000
-+
-+    1999-04-26  Jason Molenda  (jsm@bugshack.cygnus.com)
-+            * index.html: Change links to ftp directory to point to sourceware
-+            directory.
-+            Change mailing list subscription forms to point to sourceware lists.
-+
-+commit 78ffc52a8b257061348c576ccb6fbbf8b48b0fff
-+Author: jsm <jsm>
-+Date:   Sun Apr 18 01:33:21 1999 +0000
-+
-+    Standard sourceware setup.
-+
-+commit b4d77e827d7ebef7e57ebcd71e71c15c62f1e0a8
-+Author: jsm <jsm>
-+Date:   Mon Nov 30 11:11:25 1998 +0000
-+
-+    Small typeo.  (I wouldn't bother except that it made the sentence hard
-+    for me to parse on a casual read.)
-+
-+commit bfb73f08fdc987e37070c5fb0b196fbd28872888
-+Author: jsm <jsm>
-+Date:   Mon Nov 30 10:44:55 1998 +0000
-+
-+    A few cleanups.  Most notably, point to the correct subscribe cgi-bin
-+    script.
-+
-+commit af8b7f037ccee3b7939ee226a1a2bbc2f057b35c
-+Author: green <green>
-+Date:   Mon Nov 30 06:20:05 1998 +0000
-+
-+    	* index.html: Reformatted and updated to reflect hosting on
-+    	sourceware.cygnus.com (new mailing lists, etc).
-+
-+commit 334f0b060942aff8d26badaf7dde7830450dc5da
-+Author: green <green>
-+Date:   Sun Nov 29 16:56:12 1998 +0000
-+
-+    initial snapshot of documentation
-+
-+commit 3ab5cb4a1dcc7ecd7e773c97582b0099976c4753
-+Author: green <green>
-+Date:   Sun Nov 29 16:56:10 1998 +0000
-+
-+    Initial revision
-+
-+commit d2a9eb5a8b7cbc8b769809cad59c82b975c178e2
-+Merge: d3782ec bc75c54
-+Author: green <green>
-+Date:   Sun Nov 29 16:48:16 1998 +0000
-+
-+    This commit was generated by cvs2svn to compensate for changes in r7, which
-+    included commits to RCS files with non-trunk default branches.
-+
-+commit bc75c54bd311658005b065f1bf201b204c81cbca
-+Author: green <green>
-+Date:   Sun Nov 29 16:48:16 1998 +0000
-+
-+    Import of v1 code.
-+
-+commit d3782ec8160c644421dcea17b605fec6e328f14e
-+Author: jsm <jsm>
-+Date:   Fri Nov 20 20:18:00 1998 +0000
-+
-+    Send commit messages to mailing lists.
-+
-+commit 8d8d3843c484c2bb70d8375b2b799f75eb03f709
-+Author: jsm <jsm>
-+Date:   Thu Oct 1 22:08:36 1998 +0000
-+
-+    initial checkin
-+
-+commit 49634f3bf221cc1939abafc788f7e4e31293fe73
-+Author: jsm <jsm>
-+Date:   Thu Oct 1 22:08:35 1998 +0000
-+
-+    Add standard setup.
-+
-+commit c64a84c7693f8cd400fb94bba3c9bcfd9ad1fc36
-+Author: jsm <jsm>
-+Date:   Thu Oct 1 22:08:34 1998 +0000
-+
-+    Add readers and standard modules file.
-+
-+commit 9813273b07fd082da573b3b6bfb8d23809b59eea
-+Author: jsm <jsm>
-+Date:   Thu Oct 1 22:08:33 1998 +0000
-+
-+    initial checkin
-diff --git a/js/src/ctypes/libffi/ChangeLog.libffi b/js/src/ctypes/libffi/ChangeLog.libffi
---- a/js/src/ctypes/libffi/ChangeLog.libffi
-+++ b/js/src/ctypes/libffi/ChangeLog.libffi
-@@ -1,40 +1,11 @@
--2010-01-15  Anthony Green  <green@redhat.com>
-+2011-02-08  Andreas Tobler  <andreast@fgznet.ch>
- 
--	* README: Add notes on building with Microsoft Visual C++.
--
--2010-01-15  Daniel Witte  <dwitte@mozilla.com>
--
--	* msvcc.sh: New file.
--
--	* src/x86/win32.S: Port assembly routines to MSVC and #ifdef.
--	* src/x86/ffi.c: Tweak function declaration and remove excess
--	parens.
--	* include/ffi.h.in: Add __declspec(align(8)) to typedef struct
--	ffi_closure.
--
--	* src/x86/ffi.c: Merge ffi_call_SYSV and ffi_call_STDCALL into new
--	function ffi_call_win32 on X86_WIN32.
--	* src/x86/win32.S (ffi_call_SYSV): Rename to ffi_call_win32.
--	(ffi_call_STDCALL): Remove.
--
--	* src/prep_cif.c (ffi_prep_cif): Move stack space allocation code
--	to ffi_prep_cif_machdep for x86.
--	* src/x86/ffi.c (ffi_prep_cif_machdep): To here.
--
--2010-01-15  Oliver Kiddle  <okiddle@yahoo.co.uk>
--
--	* src/x86/ffitarget.h (ffi_abi): Check for __i386 and __amd64 for
--	Sun Studio compiler compatibility. 
--
--2010-01-12  Conrad Irwin <conrad.irwin@gmail.com>
--
--	* doc/libffi.texi: Add closure example.
--	* doc/libffi.info: Rebuilt.
-+	* testsuite/lib/libffi.exp: Tweak for stand-alone mode.
- 
- 2009-12-25  Samuli Suominen  <ssuominen@gentoo.org>
- 
- 	* configure.ac: Undefine _AC_ARG_VAR_PRECIOUS for autoconf 2.64.
- 	* configure: Rebuilt.
- 	* fficonfig.h.in: Rebuilt.
- 
- 2009-06-16  Andrew Haley  <aph@redhat.com>
-@@ -598,16 +569,16 @@ 2008-01-30  H.J. Lu <hongjiu.lu@intel.co
- 	* testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer"
- 	tests.
- 
- 2008-01-30  Anthony Green  <green@redhat.com>
- 
- 	* Makefile.am, include/Makefile.am: Move headers to
- 	libffi_la_SOURCES for new automake.
- 	* Makefile.in, include/Makefile.in: Rebuilt.
--	
--	* testsuite/lib/wrapper.exp: Copied from gcc tree to allow for 
-+
-+	* testsuite/lib/wrapper.exp: Copied from gcc tree to allow for
- 	execution outside of gcc tree.
- 	* testsuite/lib/target-libpath.exp: Ditto.
- 
- 	* testsuite/lib/libffi-dg.exp: Many changes to allow for execution
- 	outside of gcc tree.
- 
-diff --git a/js/src/ctypes/libffi/ChangeLog.libffi-3.1 b/js/src/ctypes/libffi/ChangeLog.libffi-3.1
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/ChangeLog.libffi-3.1
-@@ -0,0 +1,6000 @@
-+2014-03-16  Josh Triplett  <josh@joshtriplett.org>
-+
-+	* ChangeLog: Archive to ChangeLog.libffi-3.1 and delete.  Future
-+	changelogs will come from git, with autogenerated snapshots shipped in
-+	distributed tarballs.
-+
-+2014-03-16  Josh Triplett  <josh@joshtriplett.org>
-+
-+	Add support for stdcall, thiscall, and fastcall on non-Windows
-+	x86-32.
-+
-+	Linux supports the stdcall calling convention, either via
-+	functions explicitly declared with the stdcall attribute, or via
-+	code compiled with -mrtd which effectively makes stdcall the
-+	default.
-+
-+	This introduces FFI_STDCALL, FFI_THISCALL, and FFI_FASTCALL on
-+	non-Windows x86-32 platforms, as non-default calling conventions.
-+
-+	* Makefile.am: Compile in src/x86/win32.S on non-Windows x86-32.
-+	* src/x86/ffitarget.h: Add FFI_STDCALL, FFI_THISCALL, and
-+	FFI_FASTCALL on non-Windows x86-32.  Increase trampoline size to
-+	accomodate these calling conventions, and unify some ifdeffery.
-+	* src/x86/ffi.c: Add support for FFI_STDCALL, FFI_THISCALL, and
-+	FFI_FASTCALL on non-Windows x86-32 platforms; update ifdeffery.
-+	* src/x86/win32.S: Support compiling on non-Windows x86-32
-+	platforms.  On those platforms, avoid redefining the SYSV symbols
-+	already provided by src/x86/sysv.S.
-+	* testsuite/libffi.call/closure_stdcall.c: Run on non-Windows.
-+	#define __stdcall if needed.
-+	* testsuite/libffi.call/closure_thiscall.c: Run on non-Windows.
-+	#define __fastcall if needed.
-+	* testsuite/libffi.call/fastthis1_win32.c: Run on non-Windows.
-+	* testsuite/libffi.call/fastthis2_win32.c: Ditto.
-+	* testsuite/libffi.call/fastthis3_win32.c: Ditto.
-+	* testsuite/libffi.call/many2_win32.c: Ditto.
-+	* testsuite/libffi.call/many_win32.c: Ditto.
-+	* testsuite/libffi.call/strlen2_win32.c: Ditto.
-+	* testsuite/libffi.call/strlen_win32.c: Ditto.
-+	* testsuite/libffi.call/struct1_win32.c: Ditto.
-+	* testsuite/libffi.call/struct2_win32.c: Ditto.
-+
-+2014-03-16  Josh Triplett  <josh@joshtriplett.org>
-+
-+	* prep_cif.c: Remove unnecessary ifdef for X86_WIN32.
-+	ffi_prep_cif_core had a special case for X86_WIN32, checking for
-+	FFI_THISCALL in addition to the FFI_FIRST_ABI-to-FFI_LAST_ABI
-+	range before returning FFI_BAD_ABI.  However, on X86_WIN32,
-+	FFI_THISCALL already falls in that range, making the special case
-+	unnecessary.  Remove it.
-+
-+2014-03-16  Josh Triplett  <josh@joshtriplett.org>
-+
-+	* testsuite/libffi.call/closure_stdcall.c,
-+	testsuite/libffi.call/closure_thiscall.c: Remove fragile stack
-+	pointer checks.  These files included inline assembly to save the
-+	stack pointer before and after the call, and compare the values.
-+	However, compilers can and do leave the stack in different states
-+	for these two pieces of inline assembly, such as by saving a
-+	temporary value on the stack across the call; observed with gcc
-+	-Os, and verified as spurious through careful inspection of
-+	disassembly.
-+
-+2014-03-16  Josh Triplett  <josh@joshtriplett.org>
-+
-+	* testsuite/libffi.call/many.c: Avoid spurious failure due to
-+	excess floating-point precision.
-+	* testsuite/libffi.call/many_win32.c: Ditto.
-+
-+2014-03-16  Josh Triplett <josh@joshtriplett.org>
-+
-+	* libtool-ldflags: Re-add.
-+
-+2014-03-16  Josh Triplett <josh@joshtriplett.org>
-+
-+	* Makefile.in, aclocal.m4, compile, config.guess, config.sub,
-+	configure, depcomp, include/Makefile.in, install-sh,
-+	libtool-ldflags, ltmain.sh, m4/libtool.m4, m4/ltoptions.m4,
-+	m4/ltsugar.m4, m4/ltversion.m4, m4/lt~obsolete.m4,
-+	man/Makefile.in, mdate-sh, missing, testsuite/Makefile.in: Delete
-+	autogenerated files from version control.
-+	* .gitignore: Add autogenerated files.
-+	* autogen.sh: New script to generate the autogenerated files.
-+	* README: Document requirement to run autogen.sh when building
-+	directly from version control.
-+	* .travis.yml: Run autogen.sh
-+
-+2014-03-14  Anthony Green <green@moxielogic.com>
-+
-+	* configure, Makefile.in: Rebuilt.
-+
-+2014-03-10  Mike Hommey <mh+mozilla@glandium.org>
-+
-+	* configure.ac: Allow building for mipsel with Android NDK r8.
-+	* Makefile.am (AM_MAKEFLAGS): Replace double quotes with single
-+	quotes.
-+
-+2014-03-10  Landry Breuil <landry@openbsd.org>
-+
-+	* configure.ac: Ensure the linker supports @unwind sections in libffi.
-+
-+2014-03-01  Anthony Green  <green@moxielogic.com>
-+
-+	* Makefile.am (EXTRA_DIST): Replace old scripts with
-+	generate-darwin-source-and-headers.py.
-+	* Makefile.in: Rebuilt.
-+
-+2014-02-28  Anthony Green  <green@moxielogic.com>
-+
-+	* Makefile.am (AM_CFLAGS): Reintroduce missing -DFFI_DEBUG for
-+	--enable-debug builds.
-+	* Makefile.in: Rebuilt.
-+
-+2014-02-28  Makoto Kato  <m_kato@ga2.so-net.ne.jp>
-+
-+	* src/closures.c: Fix build failure when using clang for Android.
-+
-+2014-02-28  Marcin Wojdyr  <wojdyr@gmail.com>
-+
-+	* libffi.pc.in (toolexeclibdir): use -L${toolexeclibdir} instead
-+	of -L${libdir}.
-+
-+2014-02-28  Paulo Pizarro  <paulo.pizarro@gmail.com>
-+
-+	* src/bfin/sysv.S: Calling functions in shared libraries requires
-+	considering the GOT.
-+
-+2014-02-28  Josh Triplett  <josh@joshtriplett.org>
-+
-+	* src/x86/ffi64.c (classify_argument): Handle case where
-+	FFI_TYPE_LONGDOUBLE == FFI_TYPE_DOUBLE.
-+
-+2014-02-28  Anthony Green  <green@moxielogic.com>
-+
-+	* ltmain.sh: Generate with libtool-2.4.2.418.
-+	* m4/libtool.m4, m4/ltoptions.m4, m4/ltversion.m4: Ditto.
-+	* configure: Rebuilt.
-+
-+2014-02-28  Dominik Vogt  <vogt@linux.vnet.ibm.com>
-+
-+	* configure.ac (AC_ARG_ENABLE struct): Fix typo in help
-+	message.
-+	(AC_ARG_ENABLE raw_api): Ditto.
-+	* configure, fficonfig.h.in: Rebuilt.
-+
-+2014-02-28  Will Newton  <will.newton@linaro.org>
-+
-+	* src/arm/sysv.S: Initialize IP register with FP.
-+
-+2014-02-28  Yufeng Zhang  <yufeng.zhang@arm.com>
-+
-+	* src/aarch64/sysv.S (ffi_closure_SYSV): Use x29 as the
-+	main CFA reg; update cfi_rel_offset.
-+
-+2014-02-15  Marcus Comstedt  <marcus@mc.pp.se>
-+
-+	* src/powerpc/ffi_linux64.c, src/powerpc/linux64_closure.S: Remove
-+	assumption on contents of r11 in closure.
-+
-+2014-02-09  Heiher  <r@hev.cc>
-+
-+	* src/mips/n32.S: Fix call floating point va function.
-+
-+2014-01-21  Zachary Waldowski  <zach@waldowski.me>
-+
-+	* src/aarch64/ffi.c: Fix missing semicolons on assertions under
-+	debug mode.
-+
-+2013-12-30  Zachary Waldowski  <zach@waldowski.me>
-+
-+	* .gitignore: Exclude darwin_* generated source and build_* trees.
-+	* src/aarch64/ffi.c, src/arm/ffi.c, src/x86/ffi.c: Inhibit Clang
-+	previous prototype warnings.
-+	* src/arm/ffi.c: Prevent NULL dereference, fix short type warning
-+	* src/dlmalloc.c: Fix warnings from set_segment_flags return type,
-+	and the native use of size_t for malloc on platforms
-+	* src/arm/sysv.S: Use unified syntax. Clang clean-ups for
-+	ARM_FUNC_START.
-+	* generate-osx-source-and-headers.py: Remove.
-+	* build-ios.sh: Remove.
-+	* libffi.xcodeproj/project.pbxproj: Rebuild targets. Include
-+	x86_64+aarch64 pieces in library.  Export headers properly.
-+	* src/x86/ffi64.c: More Clang warning clean-ups.
-+	* src/closures.c (open_temp_exec_file_dir): Use size_t.
-+	* src/prep_cif.c (ffi_prep_cif_core): Cast ALIGN result.
-+	* src/aarch64/sysv.S: Use CNAME for global symbols.  Only use
-+	.size for ELF targets.
-+	* src/aarch64/ffi.c: Clean up for double == long double.  Clean up
-+	from Clang warnings.  Use Clang cache invalidation builtin.  Use
-+	size_t in place of unsigned in many places.  Accommodate for
-+	differences in Apple AArch64 ABI.
-+
-+2013-12-02  Daniel Rodríguez Troitiño  <drodrigueztroitino@yahoo.es>
-+
-+	* generate-darwin-source-and-headers.py: Clean up, modernize,
-+	merged version of previous scripts.
-+
-+2013-11-21  Anthony Green  <green@moxielogic.com>
-+
-+	* configure, Makefile.in, include/Makefile.in, include/ffi.h.in,
-+	man/Makefile.in, testsuite/Makefile.in, fficonfig.h.in: Rebuilt.
-+
-+2013-11-21  Alan Modra  <amodra@gmail.com>
-+
-+	* Makefile.am (EXTRA_DIST): Add new src/powerpc files.
-+	(nodist_libffi_la_SOURCES <POWERPC, POWERPC_FREEBSD>): Likewise.
-+	* configure.ac (HAVE_LONG_DOUBLE_VARIANT): Define for powerpc.
-+	* include/ffi.h.in (ffi_prep_types): Declare.
-+	* src/prep_cif.c (ffi_prep_cif_core): Call ffi_prep_types.
-+	* src/types.c (FFI_NONCONST_TYPEDEF): Define and use for
-+	HAVE_LONG_DOUBLE_VARIANT.
-+	* src/powerpc/ffi_powerpc.h: New file.
-+	* src/powerpc/ffi.c: Split into..
-+	* src/powerpc/ffi_sysv.c: ..new file, and..
-+	* src/powerpc/ffi_linux64.c: ..new file, rewriting parts.
-+	* src/powerpc/ffitarget.h (enum ffi_abi): Rewrite powerpc ABI
-+	selection as bits controlling features.
-+	* src/powerpc/linux64.S: For consistency, use POWERPC64 rather
-+	than __powerpc64__.
-+	* src/powerpc/linux64_closure.S: Likewise.
-+	* src/powerpc/ppc_closure.S: Likewise.  Move .note.FNU-stack
-+	inside guard.
-+	* src/powerpc/sysv.S: Likewise.
-+	* configure: Regenerate.
-+	* fficonfig.h.in: Regenerate.
-+	* Makefile.in: Regenerate.
-+
-+2013-11-20  Alan Modra  <amodra@gmail.com>
-+
-+	* src/powerpc/ffi.c (ffi_prep_cif_machdep_core): Use
-+	NUM_FPR_ARG_REGISTERS64 and NUM_GPR_ARG_REGISTERS64 not their
-+	32-bit versions for 64-bit code.
-+	* src/powerpc/linux64_closure.S: Don't use the return value area
-+	as a parameter save area on ELFv2.
-+
-+2013-11-18  Iain Sandoe  <iain@codesourcery.com>
-+
-+	* src/powerpc/darwin.S (EH): Correct use of pcrel FDE encoding.
-+	* src/powerpc/darwin_closure.S (EH): Likewise. Modernise picbase
-+	labels.
-+
-+2013-11-18  Anthony Green  <green@moxielogic.com>
-+
-+	* src/arm/ffi.c (ffi_call): Hoist declaration of temp to top of
-+	function.
-+	* src/arm/ffi.c (ffi_closure_inner): Moderize function declaration
-+	to appease compiler.
-+	Thanks for Gregory P. Smith <greg@krypto.org>.
-+
-+2013-11-18  Anthony Green  <green@moxielogic.com>
-+
-+	* README (tested): Mention PowerPC ELFv2.
-+
-+2013-11-16  Alan Modra  <amodra@gmail.com>
-+
-+	* src/powerpc/ppc_closure.S: Move errant #endif to where it belongs.
-+	Don't bl .Luint128.
-+
-+2013-11-16  Alan Modra  <amodra@gmail.com>
-+
-+	* src/powerpc/ffi.c (ffi_prep_cif_machdep_core): Use #if _CALL_ELF
-+	test to select parameter save sizing for ELFv2 vs. ELFv1.
-+	* src/powerpc/ffitarget.h (FFI_V2_TYPE_FLOAT_HOMOG,
-+	FFI_V2_TYPE_DOUBLE_HOMOG, FFI_V2_TYPE_SMALL_STRUCT): Define.
-+	(FFI_TRAMPOLINE_SIZE): Define variant for ELFv2.
-+	* src/powerpc/ffi.c (FLAG_ARG_NEEDS_PSAVE): Define.
-+	(discover_homogeneous_aggregate): New function.
-+	(ffi_prep_args64): Adjust start of param save area for ELFv2.
-+	Handle homogenous floating point struct parms.
-+	(ffi_prep_cif_machdep_core): Adjust space calculation for ELFv2.
-+	Handle ELFv2 return values.  Set FLAG_ARG_NEEDS_PSAVE.  Handle
-+	homogenous floating point structs.
-+	(ffi_call): Increase size of smst_buffer for ELFv2.  Handle ELFv2.
-+	(flush_icache): Compile for ELFv2.
-+	(ffi_prep_closure_loc): Set up ELFv2 trampoline.
-+	(ffi_closure_helper_LINUX64): Don't return all structs directly
-+	to caller.  Handle homogenous floating point structs.  Handle
-+	ELFv2 struct return values.
-+	* src/powerpc/linux64.S (ffi_call_LINUX64): Set up r2 for
-+	ELFv2.  Adjust toc save location.  Call function pointer using
-+	r12.  Handle FLAG_RETURNS_SMST.  Don't predict branches.
-+	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Set up r2
-+	for ELFv2.  Define ELFv2 versions of STACKFRAME, PARMSAVE, and
-+	RETVAL.  Handle possibly missing parameter save area.  Handle
-+	ELFv2 return values.
-+	(.note.GNU-stack): Move inside outer #ifdef.
-+
-+2013-11-16  Alan Modra  <amodra@gmail.com>
-+
-+	* src/powerpc/ffi.c (ffi_prep_cif_machdep): Revert 2013-02-08
-+	change.  Do not consume an int arg when returning a small struct
-+	for FFI_SYSV ABI.
-+	(ffi_call): Only use bounce buffer when FLAG_RETURNS_SMST.
-+	Properly copy bounce buffer to destination.
-+	* src/powerpc/sysv.S: Revert 2013-02-08 change.
-+	* src/powerpc/ppc_closure.S: Remove stray '+'.
-+
-+2013-11-16  Alan Modra  <amodra@gmail.com>
-+
-+	* src/powerpc/ffi.c (ffi_prep_args64): Align struct parameters
-+	according to __STRUCT_PARM_ALIGN__.
-+	(ffi_prep_cif_machdep_core): Likewise.
-+	(ffi_closure_helper_LINUX64): Likewise.
-+
-+2013-11-16  Alan Modra  <amodra@gmail.com>
-+
-+	* src/powerpc/linux64.S (ffi_call_LINUX64): Tweak restore of r28.
-+	(.note.GNU-stack): Move inside outer #ifdef.
-+	* src/powerpc/linux64_closure.S (STACKFRAME, PARMSAVE,
-+	RETVAL): Define and use throughout.
-+	(ffi_closure_LINUX64): Save fprs before buying stack.
-+	(.note.GNU-stack): Move inside outer #ifdef.
-+
-+2013-11-16  Alan Modra  <amodra@gmail.com>
-+
-+	* src/powerpc/ffitarget.h (FFI_TARGET_SPECIFIC_VARIADIC): Define.
-+	(FFI_EXTRA_CIF_FIELDS): Define.
-+	* src/powerpc/ffi.c (ffi_prep_args64): Save fprs as per the
-+	ABI, not to both fpr and param save area.
-+	(ffi_prep_cif_machdep_core): Renamed from ffi_prep_cif_machdep.
-+	Keep initial flags.  Formatting.  Remove dead FFI_LINUX_SOFT_FLOAT
-+	code.
-+	(ffi_prep_cif_machdep, ffi_prep_cif_machdep_var): New functions.
-+	(ffi_closure_helper_LINUX64): Pass floating point as per ABI,
-+	not to both fpr and parameter save areas.
-+
-+	* libffi/testsuite/libffi.call/cls_double_va.c (main): Correct
-+	function cast and don't call ffi_prep_cif.
-+	* libffi/testsuite/libffi.call/cls_longdouble_va.c (main): Likewise.
-+
-+2013-11-15  Andrew Haley  <aph@redhat.com>
-+
-+	* doc/libffi.texi (Closure Example): Fix the sample code.
-+	* doc/libffi.info, doc/stamp-vti, doc/version.texi: Rebuilt.
-+
-+2013-11-15  Andrew Haley  <aph@redhat.com>
-+
-+	* testsuite/libffi.call/va_struct1.c (main): Fix broken test.
-+	* testsuite/libffi.call/cls_uint_va.c (cls_ret_T_fn): Likewise
-+	* testsuite/libffi.call/cls_struct_va1.c (test_fn): Likewise.
-+	* testsuite/libffi.call/va_1.c (main): Likewise.
-+
-+2013-11-14  David Schneider  <david.schneider@bivab.de>
-+
-+	* src/arm/ffi.c: Fix register allocation for mixed float and
-+	doubles.
-+	* testsuite/libffi.call/cls_many_mixed_float_double.c: Testcase
-+	for many mixed float and double arguments.
-+
-+2013-11-13  Alan Modra  <amodra@gmail.com>
-+
-+	* doc/libffi.texi (Simple Example): Correct example code.
-+	* doc/libffi.info, doc/stamp-vti, doc/version.texi: Rebuilt.
-+
-+2013-11-13  Anthony Green  <green@moxielogic.com>
-+
-+	* include/ffi_common.h: Respect HAVE_ALLOCA_H for GNU compiler
-+	based build. (Thanks to tmr111116 on github)
-+
-+2013-11-09  Anthony Green  <green@moxielogic.com>
-+
-+	* m4/libtool.m4: Refresh.
-+	* configure, Makefile.in: Rebuilt.
-+	* README: Add more notes about next release.
-+
-+2013-11-09  Shigeharu TAKENO  <shige@iee.niit.ac.jp>
-+
-+	* m4/ax_gcc_archflag.m4 (ax_gcc_arch): Don't recognize
-+	UltraSPARC-IIi as ultrasparc3.
-+
-+2013-11-06  Mark Kettenis  <kettenis@gnu.org>
-+
-+	* src/x86/freebsd.S (ffi_call_SYSV): Align the stack pointer to
-+        16-bytes.
-+
-+2013-11-06  Konstantin Belousov <kib@freebsd.org>
-+
-+	* src/x86/freebsd.S (ffi_closure_raw_SYSV): Mark the assembler
-+	source as not requiring executable stack.
-+
-+2013-11-02  Anthony Green  <green@moxielogic.com>
-+
-+	* doc/libffi.texi (The Basics): Clarify return value buffer size
-+	requirements.  Also, NULL result buffer pointers are no longer
-+	supported.
-+	* doc/libffi.info: Rebuilt.
-+
-+2013-11-02  Mischa Jonker  <mjonker@synopsys.com>
-+
-+	* Makefile.am (nodist_libffi_la_SOURCES): Fix build error.
-+	* Makefile.in: Rebuilt.
-+
-+2013-11-02  David Schneider  <david.schneider@bivab.de>
-+
-+	* src/arm/ffi.c: more robust argument handling for closures on arm hardfloat
-+	* testsuite/libffi.call/many_mixed.c: New file.
-+	* testsuite/libffi.call/cls_many_mixed_args.c: More tests.
-+
-+2013-11-02  Vitaly Budovski
-+
-+	* src/x86/ffi.c (ffi_prep_cif_machdep): Don't align stack for win32.
-+
-+2013-10-23  Mark H Weaver  <mhw@netris.org>
-+
-+	* src/mips/ffi.c: Fix handling of uint32_t arguments on the
-+	MIPS N32 ABI.
-+
-+2013-10-13  Sandra Loosemore  <sandra@codesourcery.com>
-+
-+	* README: Add Nios II to table of supported platforms.
-+	* Makefile.am (EXTRA_DIST): Add nios2 files.
-+	(nodist_libffi_la_SOURCES): Likewise.
-+	* Makefile.in: Regenerated.
-+	* configure.ac (nios2*-linux*): New host.
-+	(NIOS2): Add AM_CONDITIONAL.
-+	* configure: Regenerated.
-+	* src/nios2/ffi.c: New.
-+	* src/nios2/ffitarget.h: New.
-+	* src/nios2/sysv.S: New.
-+	* src/prep_cif.c (initialize_aggregate): Handle extra structure
-+	alignment via FFI_AGGREGATE_ALIGNMENT.
-+	(ffi_prep_cif_core): Conditionalize structure return for NIOS2.
-+
-+2013-10-10  Sandra Loosemore  <sandra@codesourcery.com>
-+
-+	* testsuite/libffi.call/cls_many_mixed_args.c (cls_ret_double_fn):
-+	Fix uninitialized variable.
-+
-+2013-10-11  Marcus Shawcroft  <marcus.shawcroft@arm.com>
-+
-+	* testsuite/libffi.call/many.c (many): Replace * with +.
-+
-+2013-10-08  Ondřej Bílka  <neleai@seznam.cz>
-+
-+	* src/aarch64/ffi.c, src/aarch64/sysv.S, src/arm/ffi.c,
-+	src/arm/gentramp.sh, src/bfin/sysv.S, src/closures.c,
-+	src/dlmalloc.c, src/ia64/ffi.c, src/microblaze/ffi.c,
-+	src/microblaze/sysv.S, src/powerpc/darwin_closure.S,
-+	src/powerpc/ffi.c, src/powerpc/ffi_darwin.c, src/sh/ffi.c,
-+	src/tile/tile.S, testsuite/libffi.call/nested_struct11.c: Fix
-+	spelling errors.
-+
-+2013-10-08  Anthony Green  <green@moxielogic.com>
-+
-+	* aclocal.m4, compile, config.guess, config.sub, depcomp,
-+	install-sh, mdate-sh, missing, texinfo.tex: Update from upstream.
-+	* configure.ac: Update version to 3.0.14-rc0.
-+	* Makefile.in, configure, Makefile.in, include/Makefile.in,
-+	man/Makefile.in, testsuite/Makefile.in: Rebuilt.
-+	* README: Mention M88K and VAX.
-+
-+2013-07-15  Miod Vallat  <miod@openbsd.org>
-+
-+	* Makefile.am,
-+	configure.ac,
-+	src/m88k/ffi.c,
-+	src/m88k/ffitarget.h,
-+	src/m88k/obsd.S,
-+	src/vax/elfbsd.S,
-+	src/vax/ffi.c,
-+	src/vax/ffitarget.h: Add m88k and vax support.
-+
-+2013-06-24 Alan Modra  <amodra@gmail.com>
-+
-+	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Move var declaration
-+	before statements.
-+	(ffi_prep_args64): Support little-endian.
-+	(ffi_closure_helper_SYSV, ffi_closure_helper_LINUX64): Likewise.
-+	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Likewise.
-+	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Likewise.
-+
-+2013-06-12  Mischa Jonker  <mjonker@synopsys.com>
-+
-+	 * configure.ac: Add support for ARC.
-+	 * Makefile.am: Likewise.
-+	 * README: Add ARC details.
-+	 * src/arc/arcompact.S: New.
-+	 * src/arc/ffi.c: Likewise.
-+	 * src/arc/ffitarget.h: Likewise.
-+
-+2013-03-28  David Schneider  <david.schneider@bivab.de>
-+
-+	 * src/arm/ffi.c: Fix support for ARM hard-float calling convention.
-+	 * src/arm/sysv.S: call different methods for SYSV and VFP ABIs.
-+	 * testsuite/libffi.call/cls_many_mixed_args.c: testcase for a closure with
-+	 mixed arguments, many doubles.
-+	 * testsuite/libffi.call/many_double.c: testcase for calling a function using
-+	 more than 8 doubles.
-+	 * testcase/libffi.call/many.c: use absolute value to check result against an
-+	 epsilon
-+
-+2013-03-17  Anthony Green  <green@moxielogic.com>
-+
-+	* README: Update for 3.0.13.
-+	* configure.ac: Ditto.
-+	* configure: Rebuilt.
-+	* doc/*: Update version.
-+
-+2013-03-17  Dave Korn  <dave.korn.cygwin@gmail.com>
-+
-+	* src/closures.c (is_emutramp_enabled
-+	[!FFI_MMAP_EXEC_EMUTRAMP_PAX]): Move default definition outside
-+	enclosing #if scope.
-+
-+2013-03-17  Anthony Green  <green@moxielogic.com>
-+
-+	* configure.ac: Only modify toolexecdir in certain cases.
-+	* configure: Rebuilt.
-+
-+2013-03-16  Gilles Talis  <gilles.talis@gmail.com>
-+
-+	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Don't use
-+	fparg_count,etc on __NO_FPRS__ targets.
-+
-+2013-03-16  Alan Hourihane  <alanh@fairlite.co.uk>
-+
-+	* src/m68k/sysv.S (epilogue): Don't use extb instruction on
-+	m680000 machines.
-+
-+2013-03-16  Alex Gaynor <alex.gaynor@gmail.com>
-+
-+	* src/x86/ffi.c (ffi_prep_cif_machdep): Always align stack.
-+
-+2013-03-13  Markos Chandras <markos.chandras@imgtec.com>
-+
-+	* configure.ac: Add support for Imagination Technologies Meta.
-+	* Makefile.am: Likewise.
-+	* README: Add Imagination Technologies Meta details.
-+	* src/metag/ffi.c: New.
-+	* src/metag/ffitarget.h: Likewise.
-+	* src/metag/sysv.S: Likewise.
-+
-+2013-02-24  Andreas Schwab  <schwab@linux-m68k.org>
-+
-+	* doc/libffi.texi (Structures): Fix missing category argument of
-+	@deftp.
-+
-+2013-02-11  Anthony Green <green@moxielogic.com>
-+
-+	* configure.ac: Update release number to 3.0.12.
-+	* configure: Rebuilt.
-+	* README: Update release info.
-+
-+2013-02-10  Anthony Green <green@moxielogic.com>
-+
-+	* README: Add Moxie.
-+	* src/moxie/ffi.c: Created.
-+	* src/moxie/eabi.S: Created.
-+	* src/moxie/ffitarget.h: Created.
-+	* Makefile.am (nodist_libffi_la_SOURCES): Add Moxie.
-+	* Makefile.in: Rebuilt.
-+	* configure.ac: Add Moxie.
-+	* configure: Rebuilt.
-+	* testsuite/libffi.call/huge_struct.c: Disable format string
-+	warnings for moxie*-*-elf tests.
-+
-+2013-02-10  Anthony Green <green@moxielogic.com>
-+
-+	* Makefile.am (LTLDFLAGS): Fix reference.
-+	* Makefile.in: Rebuilt.
-+
-+2013-02-10  Anthony Green <green@moxielogic.com>
-+
-+	* README: Update supported platforms.  Update test results link.
-+
-+2013-02-09  Anthony Green <green@moxielogic.com>
-+
-+	* testsuite/libffi.call/negint.c: Remove forced -O2.
-+	* testsuite/libffi.call/many2.c (foo): Remove GCCism.
-+	* testsuite/libffi.call/ffitest.h: Add default PRIuPTR definition.
-+
-+	* src/sparc/v8.S (ffi_closure_v8): Import ancient ulonglong
-+	closure return type fix developed by Martin v. Löwis for cpython
-+	fork.
-+
-+2013-02-08  Andreas Tobler  <andreast@fgznet.ch>
-+
-+	* src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix small struct
-+	support.
-+	* src/powerpc/sysv.S: Ditto.
-+
-+2013-02-08  Anthony Green <green@moxielogic.com>
-+
-+	* testsuite/libffi.call/cls_longdouble.c: Remove xfail for
-+	arm*-*-*.
-+
-+2013-02-08  Anthony Green <green@moxielogic.com>
-+
-+	* src/sparc/ffi.c (ffi_prep_closure_loc): Fix cache flushing for GCC.
-+
-+2013-02-08  Matthias Klose  <doko@ubuntu.com>
-+
-+	* man/ffi_prep_cif.3: Clean up for debian linter.
-+
-+2013-02-08  Peter Bergner  <bergner@vnet.ibm.com>
-+
-+	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Account for FP args pushed
-+	on the stack.
-+
-+2013-02-08  Anthony Green <green@moxielogic.com>
-+
-+	* Makefile.am (EXTRA_DIST): Add missing files.
-+	* testsuite/Makefile.am (EXTRA_DIST): Ditto.
-+	* Makefile.in: Rebuilt.
-+
-+2013-02-08  Anthony Green <green@moxielogic.com>
-+
-+	* configure.ac: Move sparc asm config checks to within functions
-+	for compatibility with sun tools.
-+	* configure: Rebuilt.
-+	* src/sparc/ffi.c (ffi_prep_closure_loc): Flush cache on v9
-+	systems.
-+	* src/sparc/v8.S (ffi_flush_icache): Implement a sparc v9 cache
-+	flusher.
-+
-+2013-02-08  Nathan Rossi <nathan.rossi@xilinx.com>
-+
-+	* src/microblaze/ffi.c (ffi_closure_call_SYSV): Fix handling of
-+	small big-endian structures.
-+	(ffi_prep_args): Ditto.
-+
-+2013-02-07  Anthony Green <green@moxielogic.com>
-+
-+	* src/sparc/v8.S (ffi_call_v8): Fix typo from last patch
-+	(effectively hiding ffi_call_v8).
-+
-+2013-02-07  Anthony Green <green@moxielogic.com>
-+
-+	* configure.ac: Update bug reporting address.
-+	* configure.in: Rebuild.
-+
-+	* src/sparc/v8.S (ffi_flush_icache): Out-of-line cache flusher for
-+	Sun compiler.
-+	* src/sparc/ffi.c (ffi_call): Remove warning.
-+	Call ffi_flush_icache for non-GCC builds.
-+	(ffi_prep_closure_loc): Use ffi_flush_icache.
-+
-+	* Makefile.am (EXTRA_DIST): Add libtool-ldflags.
-+	* Makefile.in: Rebuilt.
-+	* libtool-ldflags: New file.
-+
-+2013-02-07  Daniel Schepler <dschepler@gmail.com>
-+
-+	* configure.ac: Correctly identify x32 systems as 64-bit.
-+	* m4/libtool.m4: Remove libtool expr error.
-+	* aclocal.m4, configure: Rebuilt.
-+
-+2013-02-07  Anthony Green <green@moxielogic.com>
-+
-+	* configure.ac: Fix GCC usage test.
-+	* configure: Rebuilt.
-+	* README: Mention LLVM/GCC x86_64 issue.
-+	* testsuite/Makefile.in: Rebuilt.
-+
-+2013-02-07  Anthony Green <green@moxielogic.com>
-+
-+	* testsuite/libffi.call/cls_double_va.c (main): Replace // style
-+	comments with /* */ for xlc compiler.
-+	* testsuite/libffi.call/stret_large.c (main): Ditto.
-+	* testsuite/libffi.call/stret_large2.c (main): Ditto.
-+	* testsuite/libffi.call/nested_struct1.c (main): Ditto.
-+	* testsuite/libffi.call/huge_struct.c (main): Ditto.
-+	* testsuite/libffi.call/float_va.c (main): Ditto.
-+	* testsuite/libffi.call/cls_struct_va1.c (main): Ditto.
-+	* testsuite/libffi.call/cls_pointer_stack.c (main): Ditto.
-+	* testsuite/libffi.call/cls_pointer.c (main): Ditto.
-+	* testsuite/libffi.call/cls_longdouble_va.c (main): Ditto.
-+
-+2013-02-06  Anthony Green <green@moxielogic.com>
-+
-+	* man/ffi_prep_cif.3: Clean up for debian lintian checker.
-+
-+2013-02-06  Anthony Green <green@moxielogic.com>
-+
-+	* Makefile.am (pkgconfigdir): Add missing pkgconfig install bits.
-+	* Makefile.in: Rebuild.
-+
-+2013-02-02  Mark H Weaver <mhw@netris.org>
-+
-+	* src/x86/ffi64.c (ffi_call): Sign-extend integer arguments passed
-+	via general purpose registers.
-+
-+2013-01-21  Nathan Rossi <nathan.rossi@xilinx.com>
-+
-+	* README: Add MicroBlaze details.
-+	* Makefile.am: Add MicroBlaze support.
-+	* configure.ac: Likewise.
-+	* src/microblaze/ffi.c: New.
-+	* src/microblaze/ffitarget.h: Likewise.
-+	* src/microblaze/sysv.S: Likewise.
-+
-+2013-01-21  Nathan Rossi <nathan.rossi@xilinx.com>
-+	* testsuite/libffi.call/return_uc.c: Fixed issue.
-+
-+2013-01-21  Chris Zankel   <chris@zankel.net>
-+
-+	* README: Add Xtensa support.
-+	* Makefile.am: Likewise.
-+	* configure.ac: Likewise.
-+	* Makefile.in Regenerate.
-+	* configure: Likewise.
-+	* src/prep_cif.c: Handle Xtensa.
-+	* src/xtensa: New directory.
-+	* src/xtensa/ffi.c: New file.
-+	* src/xtensa/ffitarget.h: Ditto.
-+	* src/xtensa/sysv.S: Ditto.
-+
-+2013-01-11  Anthony Green  <green@moxielogic.com>
-+
-+	* src/powerpc/ffi_darwin.c (ffi_prep_args): Replace // style
-+	comments with /* */ for xlc compiler.
-+	* src/powerpc/aix.S (ffi_call_AIX): Ditto.
-+	* testsuite/libffi.call/ffitest.h (allocate_mmap): Delete
-+	deprecated inline function.
-+	* testsuite/libffi.special/ffitestcxx.h: Ditto.
-+	* README: Add update for AIX support.
-+
-+2013-01-11  Anthony Green  <green@moxielogic.com>
-+
-+	* configure.ac: Robustify pc relative reloc check.
-+	* m4/ax_cc_maxopt.m4: Don't -malign-double.  This is an ABI
-+	changing option for 32-bit x86.
-+	* aclocal.m4, configure: Rebuilt.
-+	* README: Update supported target list.
-+
-+2013-01-10  Anthony Green  <green@moxielogic.com>
-+
-+	* README (tested): Add Compiler column to table.
-+
-+2013-01-10  Anthony Green  <green@moxielogic.com>
-+
-+	* src/x86/ffi64.c (struct register_args): Make sse array and array
-+	of unions for sunpro compiler compatibility.
-+
-+2013-01-10  Anthony Green  <green@moxielogic.com>
-+
-+	* configure.ac: Test target platform size_t size.  Handle both 32
-+	and 64-bit builds for x86_64-* and i?86-* targets (allowing for
-+	CFLAG option to change default settings).
-+	* configure, aclocal.m4: Rebuilt.
-+
-+2013-01-10  Anthony Green  <green@moxielogic.com>
-+
-+	* testsuite/libffi.special/special.exp: Only run exception
-+	handling tests when using GNU compiler.
-+
-+	* m4/ax_compiler_vendor.m4: New file.
-+	* configure.ac: Test for compiler vendor and don't use
-+	AX_CFLAGS_WARN_ALL with the sun compiler.
-+	* aclocal.m4, configure: Rebuilt.
-+
-+2013-01-10  Anthony Green  <green@moxielogic.com>
-+
-+	* include/ffi_common.h: Don't use GCCisms to define types when
-+	building with the SUNPRO compiler.
-+
-+2013-01-10  Anthony Green  <green@moxielogic.com>
-+
-+	* configure.ac: Put local.exp in the right place.
-+	* configure: Rebuilt.
-+
-+	* src/x86/ffi.c: Update comment about regparm function attributes.
-+	* src/x86/sysv.S (ffi_closure_SYSV): The SUNPRO compiler requires
-+	that all function arguments be passed on the stack (no regparm
-+	support).
-+
-+2013-01-08  Anthony Green  <green@moxielogic.com>
-+
-+	* configure.ac: Generate local.exp.  This sets CC_FOR_TARGET
-+	when we are using the vendor compiler.
-+	* testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): Point to
-+	../local.exp.
-+	* configure, testsuite/Makefile.in: Rebuilt.
-+
-+	* testsuite/libffi.call/call.exp: Run tests with different
-+	options, depending on whether or not we are using gcc or the
-+	vendor compiler.
-+	* testsuite/lib/libffi.exp (libffi-init): Set using_gcc based on
-+	whether or not we are building/testing with gcc.
-+
-+2013-01-08  Anthony Green  <green@moxielogic.com>
-+
-+	* configure.ac: Switch x86 solaris target to X86 by default.
-+	* configure: Rebuilt.
-+
-+2013-01-08  Anthony Green  <green@moxielogic.com>
-+
-+	* configure.ac: Fix test for read-only eh_frame.
-+	* configure: Rebuilt.
-+
-+2013-01-08  Anthony Green  <green@moxielogic.com>
-+
-+	* src/x86/sysv.S, src/x86/unix64.S: Only emit DWARF unwind info
-+	when building with the GNU toolchain.
-+	* testsuite/libffi.call/ffitest.h (CHECK): Fix for Solaris vendor
-+	compiler.
-+
-+2013-01-07  Thorsten Glaser <tg@mirbsd.org>
-+
-+	* testsuite/libffi.call/cls_uchar_va.c,
-+	testsuite/libffi.call/cls_ushort_va.c,
-+	testsuite/libffi.call/va_1.c: Testsuite fixes.
-+
-+2013-01-07  Thorsten Glaser <tg@mirbsd.org>
-+
-+	* src/m68k/ffi.c (CIF_FLAGS_SINT8, CIF_FLAGS_SINT16): Define.
-+	(ffi_prep_cif_machdep): Fix 8-bit and 16-bit signed calls.
-+	* src/m68k/sysv.S (ffi_call_SYSV, ffi_closure_SYSV): Ditto.
-+
-+2013-01-04  Anthony Green  <green@moxielogic.com>
-+
-+	* Makefile.am (AM_CFLAGS): Don't automatically add -fexceptions
-+	and -Wall.  This is set in the configure script after testing for
-+	GCC.
-+	* Makefile.in: Rebuilt.
-+
-+2013-01-02  rofl0r <https://github.com/rofl0r>
-+
-+	* src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix build error on ppc
-+	when long double == double.
-+
-+2013-01-02  Reini Urban  <rurban@x-ray.at>
-+
-+	* Makefile.am (libffi_la_LDFLAGS): Add -no-undefined to LDFLAGS
-+	(required for shared libs on cygwin/mingw).
-+	* Makefile.in: Rebuilt.
-+
-+2012-10-31  Alan Modra  <amodra@gmail.co>
-+
-+	* src/powerpc/linux64_closure.S: Add new ABI support.
-+	* src/powerpc/linux64.S: Likewise.
-+
-+2012-10-30  Magnus Granberg  <zorry@gentoo.org>
-+	    Pavel Labushev  <pavel.labushev@runbox.ru>
-+
-+	* configure.ac: New options pax_emutramp
-+	* configure, fficonfig.h.in: Regenerated
-+	* src/closures.c: New function emutramp_enabled_check() and
-+	checks.
-+
-+2012-10-30  Frederick Cheung  <frederick.cheung@gmail.com>
-+
-+	* configure.ac: Enable FFI_MAP_EXEC_WRIT for Darwin 12 (mountain
-+	lion) and future version.
-+	* configure: Rebuild.
-+
-+2012-10-30  James Greenhalgh  <james.greenhalgh at arm.com>
-+            Marcus Shawcroft  <marcus.shawcroft at arm.com>
-+
-+        * README: Add details of aarch64 port.
-+        * src/aarch64/ffi.c: New.
-+        * src/aarch64/ffitarget.h: Likewise.
-+        * src/aarch64/sysv.S: Likewise.
-+	* Makefile.am: Support aarch64.
-+	* configure.ac: Support aarch64.
-+	* Makefile.in, configure: Rebuilt.
-+
-+2012-10-30  James Greenhalgh  <james.greenhalgh at arm.com>
-+            Marcus Shawcroft  <marcus.shawcroft at arm.com>
-+
-+        * testsuite/lib/libffi.exp: Add support for aarch64.
-+        * testsuite/libffi.call/cls_struct_va1.c: New.
-+        * testsuite/libffi.call/cls_uchar_va.c: Likewise.
-+        * testsuite/libffi.call/cls_uint_va.c: Likewise.
-+        * testsuite/libffi.call/cls_ulong_va.c: Likewise.
-+        * testsuite/libffi.call/cls_ushort_va.c: Likewise.
-+        * testsuite/libffi.call/nested_struct11.c: Likewise.
-+        * testsuite/libffi.call/uninitialized.c: Likewise.
-+        * testsuite/libffi.call/va_1.c: Likewise.
-+        * testsuite/libffi.call/va_struct1.c: Likewise.
-+        * testsuite/libffi.call/va_struct2.c: Likewise.
-+        * testsuite/libffi.call/va_struct3.c: Likewise.
-+
-+2012-10-12  Walter Lee  <walt@tilera.com>
-+
-+        * Makefile.am: Add TILE-Gx/TILEPro support.
-+        * configure.ac: Likewise.
-+        * Makefile.in: Regenerate.
-+        * configure: Likewise.
-+        * src/prep_cif.c (ffi_prep_cif_core): Handle TILE-Gx/TILEPro.
-+        * src/tile: New directory.
-+        * src/tile/ffi.c: New file.
-+        * src/tile/ffitarget.h: Ditto.
-+        * src/tile/tile.S: Ditto.
-+
-+2012-10-12  Matthias Klose  <doko@ubuntu.com>
-+
-+	* generate-osx-source-and-headers.py: Normalize whitespace.
-+
-+2012-09-14  David Edelsohn  <dje.gcc@gmail.com>
-+
-+	* configure: Regenerated.
-+
-+2012-08-26  Andrew Pinski  <apinski@cavium.com>
-+
-+	PR libffi/53014
-+	* src/mips/ffi.c (ffi_prep_closure_loc): Allow n32 with soft-float and n64 with
-+	soft-float.
-+
-+2012-08-08  Uros Bizjak  <ubizjak@gmail.com>
-+
-+	* src/s390/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
-+	just return FFI_BAD_ABI when things are wrong.
-+
-+2012-07-18  H.J. Lu  <hongjiu.lu@intel.com>
-+
-+	PR libffi/53982
-+	PR libffi/53973
-+	* src/x86/ffitarget.h: Check __ILP32__ instead of __LP64__ for x32.
-+	(FFI_SIZEOF_JAVA_RAW): Defined to 4 for x32.
-+
-+2012-05-16  H.J. Lu  <hongjiu.lu@intel.com>
-+
-+	* configure: Regenerated.
-+
-+2012-05-05  Nicolas Lelong
-+
-+	* libffi.xcodeproj/project.pbxproj: Fixes.
-+	* README: Update for iOS builds.
-+
-+2012-04-23  Alexandre Keunecke I. de Mendonca <alexandre.keunecke@gmail.com>
-+
-+	* configure.ac: Add Blackfin/sysv support
-+	* Makefile.am: Add Blackfin/sysv support
-+	* src/bfin/ffi.c:  Add Blackfin/sysv support
-+	* src/bfin/ffitarget.h: Add Blackfin/sysv support
-+
-+2012-04-11  Anthony Green  <green@moxielogic.com>
-+
-+	* Makefile.am (EXTRA_DIST): Add new script.
-+	* Makefile.in: Rebuilt.
-+
-+2012-04-11  Zachary Waldowski  <zwaldowski@gmail.com>
-+
-+	* generate-ios-source-and-headers.py,
-+	libffi.xcodeproj/project.pbxproj: Support a Mac static library via
-+	Xcode. Set iOS compatibility to 4.0.  Move iOS trampoline
-+	generation into an Xcode "run script" phase.  Include both as
-+	Xcode build scripts. Don't always regenerate config files.
-+
-+2012-04-10  Anthony Green  <green@moxielogic.com>
-+
-+	* src/powerpc/ffi_darwin.c (ffi_prep_args): Add missing semicolon.
-+
-+2012-04-06  Anthony Green  <green@moxielogic.com>
-+
-+	* Makefile.am (EXTRA_DIST): Add new iOS/xcode files.
-+	* Makefile.in: Rebuilt.
-+
-+2012-04-06  Mike Lewis  <mikelikespie@gmail.com>
-+
-+	* generate-ios-source-and-headers.py: New file.
-+	* libffi.xcodeproj/project.pbxproj: New file.
-+	* README: Update instructions on building iOS binary.
-+	* build-ios.sh: Delete.
-+
-+2012-04-06  Anthony Green  <green@moxielogic.com>
-+
-+	* src/x86/ffi64.c (UINT128): Define differently for Intel and GNU
-+	compilers, then use it.
-+
-+2012-04-06  H.J. Lu  <hongjiu.lu@intel.com>
-+
-+	* m4/libtool.m4 (_LT_ENABLE_LOCK): Support x32.
-+
-+2012-04-06  Anthony Green  <green@moxielogic.com>
-+
-+	* testsuite/Makefile.am (EXTRA_DIST): Add missing test cases.
-+	* testsuite/Makefile.in: Rebuilt.
-+
-+2012-04-05  Zachary Waldowski  <zwaldowski@gmail.com>
-+
-+	* include/ffi.h.in: Add missing trampoline table fields.
-+	* src/arm/sysv.S: Fix ENTRY definition, and wrap symbol references
-+	in CNAME.
-+	* src/x86/ffi.c: Wrap Windows specific code in ifdefs.
-+
-+2012-04-02  Peter Bergner  <bergner@vnet.ibm.com>
-+
-+	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Declare double_tmp.
-+	Silence casting pointer to integer of different size warning.
-+	Delete goto to previously deleted label.
-+	(ffi_call): Silence possibly undefined warning.
-+	(ffi_closure_helper_SYSV): Declare variable type.
-+
-+2012-04-02  Peter Rosin  <peda@lysator.liu.se>
-+
-+	* src/x86/win32.S (ffi_call_win32): Sign/zero extend the return
-+	value in the Intel version as is already done for the AT&T version.
-+	(ffi_closure_SYSV): Likewise.
-+	(ffi_closure_raw_SYSV): Likewise.
-+	(ffi_closure_STDCALL): Likewise.
-+
-+2012-03-29  Peter Rosin  <peda@lysator.liu.se>
-+
-+	* src/x86/win32.S (ffi_closure_raw_THISCALL): Unify the frame
-+	generation, fix the ENDP label and remove the surplus third arg
-+	from the 'lea' insn.
-+
-+2012-03-29  Peter Rosin  <peda@lysator.liu.se>
-+
-+	* src/x86/win32.S (ffi_closure_raw_SYSV): Make the 'stubraw' label
-+	visible outside the PROC, so that ffi_closure_raw_THISCALL can see
-+	it.  Also instruct the assembler to add a frame to the function.
-+
-+2012-03-23  Peter Rosin  <peda@lysator.liu.se>
-+
-+	* Makefile.am (AM_CPPFLAGS): Add -DFFI_BUILDING.
-+	* Makefile.in: Rebuilt.
-+	* include/ffi.h.in [MSVC]: Add __declspec(dllimport) decorations
-+	to all data exports, when compiling libffi clients using MSVC.
-+
-+2012-03-29  Peter Rosin  <peda@lysator.liu.se>
-+
-+	* src/x86/ffitarget.h (ffi_abi): Add new ABI FFI_MS_CDECL and
-+	make it the default for MSVC.
-+	(FFI_TYPE_MS_STRUCT): New structure return convention.
-+	* src/x86/ffi.c (ffi_prep_cif_machdep): Tweak the structure
-+	return convention for FFI_MS_CDECL to be FFI_TYPE_MS_STRUCT
-+	instead of an ordinary FFI_TYPE_STRUCT.
-+	(ffi_prep_args): Treat FFI_TYPE_MS_STRUCT as FFI_TYPE_STRUCT.
-+	(ffi_call): Likewise.
-+	(ffi_prep_incoming_args_SYSV): Likewise.
-+	(ffi_raw_call): Likewise.
-+	(ffi_prep_closure_loc): Treat FFI_MS_CDECL as FFI_SYSV.
-+	* src/x86/win32.S (ffi_closure_SYSV): For FFI_TYPE_MS_STRUCT,
-+	return a pointer to the result structure in eax and don't pop
-+	that pointer from the stack, the caller takes care of it.
-+	(ffi_call_win32): Treat FFI_TYPE_MS_STRUCT as FFI_TYPE_STRUCT.
-+	(ffi_closure_raw_SYSV): Likewise.
-+
-+2012-03-22  Peter Rosin  <peda@lysator.liu.se>
-+
-+	* testsuite/libffi.call/closure_stdcall.c [MSVC]: Add inline
-+	assembly version with Intel syntax.
-+	* testsuite/libffi.call/closure_thiscall.c [MSVC]: Likewise.
-+
-+2012-03-23  Peter Rosin  <peda@lysator.liu.se>
-+
-+	* testsuite/libffi.call/ffitest.h: Provide abstration of
-+	__attribute__((fastcall)) in the form of a __FASTCALL__
-+	define.  Define it to __fastcall for MSVC.
-+	* testsuite/libffi.call/fastthis1_win32.c: Use the above.
-+	* testsuite/libffi.call/fastthis2_win32.c: Likewise.
-+	* testsuite/libffi.call/fastthis3_win32.c: Likewise.
-+	* testsuite/libffi.call/strlen2_win32.c: Likewise.
-+	* testsuite/libffi.call/struct1_win32.c: Likewise.
-+	* testsuite/libffi.call/struct2_win32.c: Likewise.
-+
-+2012-03-22  Peter Rosin  <peda@lysator.liu.se>
-+
-+	* src/x86/win32.S [MSVC] (ffi_closure_THISCALL): Remove the manual
-+	frame on function entry, MASM adds one automatically.
-+
-+2012-03-22  Peter Rosin  <peda@lysator.liu.se>
-+
-+	* testsuite/libffi.call/ffitest.h [MSVC]: Add kludge for missing
-+	bits in the MSVC headers.
-+
-+2012-03-22  Peter Rosin  <peda@lysator.liu.se>
-+
-+	* testsuite/libffi.call/cls_12byte.c: Adjust to the C89 style
-+	with no declarations after statements.
-+	* testsuite/libffi.call/cls_16byte.c: Likewise.
-+	* testsuite/libffi.call/cls_18byte.c: Likewise.
-+	* testsuite/libffi.call/cls_19byte.c: Likewise.
-+	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_20byte.c: Likewise.
-+	* testsuite/libffi.call/cls_20byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_24byte.c: Likewise.
-+	* testsuite/libffi.call/cls_2byte.c: Likewise.
-+	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_3byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_3byte2.c: Likewise.
-+	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_4byte.c: Likewise.
-+	* testsuite/libffi.call/cls_5_1_byte.c: Likewise.
-+	* testsuite/libffi.call/cls_5byte.c: Likewise.
-+	* testsuite/libffi.call/cls_64byte.c: Likewise.
-+	* testsuite/libffi.call/cls_6_1_byte.c: Likewise.
-+	* testsuite/libffi.call/cls_6byte.c: Likewise.
-+	* testsuite/libffi.call/cls_7_1_byte.c: Likewise.
-+	* testsuite/libffi.call/cls_7byte.c: Likewise.
-+	* testsuite/libffi.call/cls_8byte.c: Likewise.
-+	* testsuite/libffi.call/cls_9byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_9byte2.c: Likewise.
-+	* testsuite/libffi.call/cls_align_double.c: Likewise.
-+	* testsuite/libffi.call/cls_align_float.c: Likewise.
-+	* testsuite/libffi.call/cls_align_longdouble.c: Likewise.
-+	* testsuite/libffi.call/cls_align_longdouble_split.c: Likewise.
-+	* testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise.
-+	* testsuite/libffi.call/cls_align_pointer.c: Likewise.
-+	* testsuite/libffi.call/cls_align_sint16.c: Likewise.
-+	* testsuite/libffi.call/cls_align_sint32.c: Likewise.
-+	* testsuite/libffi.call/cls_align_sint64.c: Likewise.
-+	* testsuite/libffi.call/cls_align_uint16.c: Likewise.
-+	* testsuite/libffi.call/cls_align_uint32.c: Likewise.
-+	* testsuite/libffi.call/cls_align_uint64.c: Likewise.
-+	* testsuite/libffi.call/cls_dbls_struct.c: Likewise.
-+	* testsuite/libffi.call/cls_pointer_stack.c: Likewise.
-+	* testsuite/libffi.call/err_bad_typedef.c: Likewise.
-+	* testsuite/libffi.call/huge_struct.c: Likewise.
-+	* testsuite/libffi.call/nested_struct.c: Likewise.
-+	* testsuite/libffi.call/nested_struct1.c: Likewise.
-+	* testsuite/libffi.call/nested_struct10.c: Likewise.
-+	* testsuite/libffi.call/nested_struct2.c: Likewise.
-+	* testsuite/libffi.call/nested_struct3.c: Likewise.
-+	* testsuite/libffi.call/nested_struct4.c: Likewise.
-+	* testsuite/libffi.call/nested_struct5.c: Likewise.
-+	* testsuite/libffi.call/nested_struct6.c: Likewise.
-+	* testsuite/libffi.call/nested_struct7.c: Likewise.
-+	* testsuite/libffi.call/nested_struct8.c: Likewise.
-+	* testsuite/libffi.call/nested_struct9.c: Likewise.
-+	* testsuite/libffi.call/stret_large.c: Likewise.
-+	* testsuite/libffi.call/stret_large2.c: Likewise.
-+	* testsuite/libffi.call/stret_medium.c: Likewise.
-+	* testsuite/libffi.call/stret_medium2.c: Likewise.
-+	* testsuite/libffi.call/struct1.c: Likewise.
-+	* testsuite/libffi.call/struct1_win32.c: Likewise.
-+	* testsuite/libffi.call/struct2.c: Likewise.
-+	* testsuite/libffi.call/struct2_win32.c: Likewise.
-+	* testsuite/libffi.call/struct3.c: Likewise.
-+	* testsuite/libffi.call/struct4.c: Likewise.
-+	* testsuite/libffi.call/struct5.c: Likewise.
-+	* testsuite/libffi.call/struct6.c: Likewise.
-+	* testsuite/libffi.call/struct7.c: Likewise.
-+	* testsuite/libffi.call/struct8.c: Likewise.
-+	* testsuite/libffi.call/struct9.c: Likewise.
-+	* testsuite/libffi.call/testclosure.c: Likewise.
-+
-+2012-03-21  Peter Rosin	 <peda@lysator.liu.se>
-+
-+	* testsuite/libffi.call/float_va.c (float_va_fn): Use %f when
-+	printing doubles (%lf is for long doubles).
-+	(main): Likewise.
-+
-+2012-03-21  Peter Rosin  <peda@lysator.liu.se>
-+
-+	* testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*]
-+	(set_ld_library_path_env_vars): Add the library search dir to PATH
-+	(and save PATH for later).
-+	(restore_ld_library_path_env_vars): Restore PATH.
-+
-+2012-03-21  Peter Rosin  <peda@lysator.liu.se>
-+
-+	* testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*]
-+	(set_ld_library_path_env_vars): Add the library search dir to PATH
-+	(and save PATH for later).
-+	(restore_ld_library_path_env_vars): Restore PATH.
-+
-+2012-03-20  Peter Rosin  <peda@lysator.liu.se>
-+
-+	* testsuite/libffi.call/strlen2_win32.c (main): Remove bug.
-+	* src/x86/win32.S [MSVC] (ffi_closure_SYSV): Make the 'stub' label
-+	visible outside the PROC, so that ffi_closure_THISCALL can see it.
-+
-+2012-03-20  Peter Rosin  <peda@lysator.liu.se>
-+
-+	* testsuite/libffi.call/strlen2_win32.c (main): Remove bug.
-+	* src/x86/win32.S [MSVC] (ffi_closure_SYSV): Make the 'stub' label
-+	visible outside the PROC, so that ffi_closure_THISCALL can see it.
-+
-+2012-03-19  Alan Hourihane  <alanh@fairlite.co.uk>
-+
-+	* src/m68k/ffi.c: Add MINT support.
-+	* src/m68k/sysv.S: Ditto.
-+
-+2012-03-06  Chung-Lin Tang  <cltang@codesourcery.com>
-+
-+	* src/arm/ffi.c (ffi_call): Add __ARM_EABI__ guard around call to
-+	ffi_call_VFP().
-+	(ffi_prep_closure_loc): Add __ARM_EABI__ guard around use of
-+	ffi_closure_VFP.
-+	* src/arm/sysv.S: Add __ARM_EABI__ guard around VFP code.
-+
-+2012-03-19  chennam  <csit@axway.com>
-+
-+	* src/powerpc/ffi_darwin.c (ffi_prep_closure_loc): Fix AIX closure
-+	support.
-+
-+2012-03-13  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* src/sh/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
-+	just return FFI_BAD_ABI when things are wrong.
-+	* src/sh64/ffi.c (ffi_prep_closure_loc): Ditto.
-+
-+2012-03-09  David Edelsohn  <dje.gcc@gmail.com>
-+
-+	* src/powerpc/aix_closure.S (ffi_closure_ASM): Adjust for Darwin64
-+	change to return value of ffi_closure_helper_DARWIN and load type
-+	from return type.
-+
-+2012-03-03  H.J. Lu  <hongjiu.lu@intel.com>
-+
-+	* src/x86/ffi64.c (ffi_call): Cast the return value to unsigned
-+	long.
-+	(ffi_prep_closure_loc): Cast to 64bit address in trampoline.
-+	(ffi_closure_unix64_inner): Cast return pointer to unsigned long
-+	first.
-+
-+	* src/x86/ffitarget.h (FFI_SIZEOF_ARG): Defined to 8 for x32.
-+	(ffi_arg): Set to unsigned long long for x32.
-+	(ffi_sarg): Set to long long for x32.
-+
-+2012-03-03  H.J. Lu  <hongjiu.lu@intel.com>
-+
-+	* src/prep_cif.c (ffi_prep_cif_core): Properly check bad ABI.
-+
-+2012-03-03  Andoni Morales Alastruey  <ylatuya@gmail.com>
-+
-+	* configure.ac: Add -no-undefined for both 32- and 64-bit x86
-+	windows-like hosts.
-+	* configure: Rebuilt.
-+
-+2012-02-27  Mikael Pettersson  <mikpe@it.uu.se>
-+
-+	PR libffi/52223
-+	* Makefile.am (FLAGS_TO_PASS): Define.
-+	* Makefile.in: Regenerate.
-+
-+2012-02-23  Anthony Green  <green@moxielogic.com>
-+
-+	* src/*/ffitarget.h: Ensure that users never include ffitarget.h
-+	directly.
-+
-+2012-02-23  Kai Tietz  <ktietz@redhat.com>
-+
-+	PR libffi/52221
-+	* src/x86/ffi.c (ffi_closure_raw_THISCALL): New
-+	prototype.
-+	(ffi_prep_raw_closure_loc): Use ffi_closure_raw_THISCALL for
-+	thiscall-convention.
-+	(ffi_raw_call): Use ffi_prep_args_raw.
-+	* src/x86/win32.S (ffi_closure_raw_THISCALL): Add
-+	implementation for stub.
-+
-+2012-02-10  Kai Tietz  <ktietz@redhat.com>
-+
-+	* configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64
-+	windows target.
-+	* configure: Regenerated.
-+
-+2012-02-08  Kai Tietz  <ktietz@redhat.com>
-+
-+	* src/prep_cif.c (ffi_prep_cif): Allow for X86_WIN32
-+	also FFI_THISCALL.
-+	* src/x86/ffi.c (ffi_closure_THISCALL): Add prototype.
-+	(FFI_INIT_TRAMPOLINE_THISCALL): New trampoline code.
-+	(ffi_prep_closure_loc): Add FFI_THISCALL support.
-+	* src/x86/ffitarget.h (FFI_TRAMPOLINE_SIZE): Adjust size.
-+	* src/x86/win32.S (ffi_closure_THISCALL): New closure code
-+	for thiscall-calling convention.
-+	* testsuite/libffi.call/closure_thiscall.c: New test.
-+
-+2012-01-28  Kai Tietz  <ktietz@redhat.com>
-+
-+	* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
-+	argument to prototype for specify calling-convention.
-+	(ffi_call): Add support for stdcall/thiscall convention.
-+	(ffi_prep_args): Likewise.
-+	(ffi_raw_call): Likewise.
-+	* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
-+	FFI_FASTCALL.
-+	* src/x86/win32.S (_ffi_call_win32): Add support for
-+	fastcall/thiscall calling-convention calls.
-+	* testsuite/libffi.call/fastthis1_win32.c: New test.
-+	* testsuite/libffi.call/fastthis2_win32.c: New test.
-+	* testsuite/libffi.call/fastthis3_win32.c: New test.
-+	* testsuite/libffi.call/strlen2_win32.c: New test.
-+	* testsuite/libffi.call/many2_win32.c: New test.
-+	* testsuite/libffi.call/struct1_win32.c: New test.
-+	* testsuite/libffi.call/struct2_win32.c: New test.
-+
-+2012-01-23  Uros Bizjak  <ubizjak@gmail.com>
-+
-+	* src/alpha/ffi.c (ffi_prep_closure_loc): Check for bad ABI.
-+
-+2012-01-23  Anthony Green  <green@moxielogic.com>
-+	    Chris Young  <cdyoung@ntlworld.com>
-+
-+	* configure.ac: Add Amiga support.
-+	* configure: Rebuilt.
-+
-+2012-01-23  Dmitry Nadezhin  <dmitry.nadezhin@gmail.com>
-+
-+	* include/ffi_common.h (LIKELY, UNLIKELY): Fix definitions.
-+
-+2012-01-23  Andreas Schwab  <schwab@linux-m68k.org>
-+
-+	* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
-+	mc68000.  Test for __HAVE_68881__ in addition to __MC68881__.
-+
-+2012-01-19  Jakub Jelinek  <jakub@redhat.com>
-+
-+	PR rtl-optimization/48496
-+	* src/ia64/ffi.c (ffi_call): Fix up aliasing violations.
-+
-+2012-01-09  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	* configure.ac (i?86-*-*): Set TARGET to X86_64.
-+	* configure: Regenerate.
-+
-+2011-12-07  Andrew Pinski  <apinski@cavium.com>
-+
-+	PR libffi/50051
-+	* src/mips/n32.S: Add ".set mips4".
-+
-+2011-11-21  Andreas Tobler  <andreast@fgznet.ch>
-+
-+	* configure: Regenerate.
-+
-+2011-11-12  David Gilbert <david.gilbert@linaro.org>
-+
-+	* doc/libffi.texi, include/ffi.h.in, include/ffi_common.h,
-+	man/Makefile.am, man/ffi.3, man/ffi_prep_cif.3,
-+	man/ffi_prep_cif_var.3, src/arm/ffi.c, src/arm/ffitarget.h,
-+	src/cris/ffi.c, src/prep_cif.c,
-+	testsuite/libffi.call/cls_double_va.c,
-+	testsuite/libffi.call/cls_longdouble_va.c,
-+	testsuite/libffi.call/float_va.c: Many changes to support variadic
-+	function calls.
-+
-+2011-11-12  Kyle Moffett <Kyle.D.Moffett@boeing.com>
-+
-+	* src/powerpc/ffi.c, src/powerpc/ffitarget.h,
-+	src/powerpc/ppc_closure.S, src/powerpc/sysv.S: Many changes for
-+	softfloat powerpc variants.
-+
-+2011-11-12  Petr Salinger <Petr.Salinger@seznam.cz>
-+
-+	* configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Fix kfreebsd support.
-+	* configure: Rebuilt.
-+
-+2011-11-12  Timothy Wall  <twall@users.sf.net>
-+
-+	* src/arm/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV): Max
-+	alignment of 4 for wince on ARM.
-+
-+2011-11-12  Kyle Moffett <Kyle.D.Moffett@boeing.com>
-+	    Anthony Green <green@moxielogic.com>
-+
-+	* src/ppc/sysv.S, src/ppc/ffi.c: Remove use of ppc string
-+	instructions (not available on some cores, like the PPC440).
-+
-+2011-11-12  Kimura Wataru  <kimuraw@i.nifty.jp>
-+
-+	* m4/ax_enable_builddir: Change from string comparison to numeric
-+	comparison for wc output.
-+	* configure.ac: Enable FFI_MMAP_EXEC_WRIT for darwin11 aka Mac OS
-+	X 10.7.
-+	* configure: Rebuilt.
-+
-+2011-11-12  Anthony Green  <green@moxielogic.com>
-+
-+	* Makefile.am (AM_CCASFLAGS): Add -g option to build assembly
-+	files with debug info.
-+	* Makefile.in: Rebuilt.
-+
-+2011-11-12  Jasper Lievisse Adriaanse <jasper@openbsd.org>
-+
-+	* README: Update list of supported OpenBSD systems.
-+
-+2011-11-12  Anthony Green  <green@moxielogic.com>
-+
-+	* libtool-version: Update.
-+	* Makefile.am (nodist_libffi_la_SOURCES): Add src/debug.c if
-+	FFI_DEBUG.
-+	(libffi_la_SOURCES): Remove src/debug.c
-+	(EXTRA_DIST): Add src/debug.c
-+	* Makefile.in: Rebuilt.
-+	* README: Update for 3.0.11.
-+
-+2011-11-10  Richard Henderson  <rth@redhat.com>
-+
-+	* configure.ac (GCC_AS_CFI_PSEUDO_OP): Use it instead of inline check.
-+	* configure, aclocal.m4: Rebuild.
-+
-+2011-09-04  Iain Sandoe  <iains@gcc.gnu.org>
-+
-+	PR libffi/49594
-+	* src/powerpc/darwin_closure.S (stubs): Make the stub binding
-+	helper reference track the architecture pointer size.
-+
-+2011-08-25  Andrew Haley  <aph@redhat.com>
-+
-+	* src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Remove hard-coded assembly
-+	instructions.
-+	* src/arm/sysv.S (ffi_arm_trampoline): Put them here instead.
-+
-+2011-07-11  Andrew Haley  <aph@redhat.com>
-+
-+        * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Clear icache.
-+
-+2011-06-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	* testsuite/libffi.call/cls_double_va.c: Move PR number to comment.
-+	* testsuite/libffi.call/cls_longdouble_va.c: Likewise.
-+
-+2011-06-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	PR libffi/46660
-+	* testsuite/libffi.call/cls_double_va.c: xfail dg-output on
-+	mips-sgi-irix6*.
-+	* testsuite/libffi.call/cls_longdouble_va.c: Likewise.
-+
-+2011-06-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	* testsuite/libffi.call/huge_struct.c (test_large_fn): Use PRIu8,
-+	PRId8 instead of %hhu, %hhd.
-+	* testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRId8,
-+	PRIu8): Define.
-+	[__sgi__] (PRId8, PRIu8): Define.
-+
-+2011-04-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	* src/alpha/osf.S (UA_SI, FDE_ENCODING, FDE_ENCODE, FDE_ARANGE):
-+	Define.
-+	Use them to handle ELF vs. ECOFF differences.
-+	[__osf__] (_GLOBAL__F_ffi_call_osf): Define.
-+
-+2011-03-30  Timothy Wall  <twall@users.sf.net>
-+
-+	* src/powerpc/darwin.S: Fix unknown FDE encoding.
-+	* src/powerpc/darwin_closure.S: ditto.
-+
-+2011-02-25  Anthony Green  <green@moxielogic.com>
-+
-+	* src/powerpc/ffi.c (ffi_prep_closure_loc): Allow for more
-+	32-bit ABIs.
-+
-+2011-02-15  Anthony Green  <green@moxielogic.com>
-+
-+	* m4/ax_cc_maxopt.m4: Don't -malign-double or use -ffast-math.
-+	* configure: Rebuilt.
-+
-+2011-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
-+
-+	* configure: Regenerate.
-+
-+2011-02-13  Anthony Green  <green@moxielogic.com>
-+
-+	* include/ffi_common.h (UNLIKELY, LIKELY): Define.
-+	* src/x86/ffi64.c (UNLIKELY, LIKELY): Remove definition.
-+	* src/prep_cif.c (UNLIKELY, LIKELY): Remove definition.
-+
-+	* src/prep_cif.c (initialize_aggregate): Convert assertion into
-+	FFI_BAD_TYPEDEF return.  Initialize arg size and alignment to 0.
-+
-+	* src/pa/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
-+	just return FFI_BAD_ABI when things are wrong.
-+	* src/arm/ffi.c (ffi_prep_closure_loc): Ditto.
-+	* src/powerpc/ffi.c (ffi_prep_closure_loc): Ditto.
-+	* src/mips/ffi.c (ffi_prep_closure_loc): Ditto.
-+	* src/ia64/ffi.c (ffi_prep_closure_loc): Ditto.
-+	* src/avr32/ffi.c (ffi_prep_closure_loc): Ditto.
-+
-+2011-02-11  Anthony Green  <green@moxielogic.com>
-+
-+	* src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
-+	just return FFI_BAD_ABI when things are wrong.
-+
-+2012-02-11  Eric Botcazou  <ebotcazou@adacore.com>
-+
-+	* src/sparc/v9.S (STACKFRAME): Bump to 176.
-+
-+2011-02-09  Stuart Shelton  <srcshelton@gmail.com>
-+
-+	http://bugs.gentoo.org/show_bug.cgi?id=286911
-+	* src/mips/ffitarget.h: Clean up error messages.
-+	* src/java_raw_api.c (ffi_java_translate_args): Cast raw arg to
-+	ffi_raw*.
-+	* include/ffi.h.in: Add pragma for SGI compiler.
-+
-+2011-02-09  Anthony Green  <green@moxielogic.com>
-+
-+	* configure.ac: Add powerpc64-*-darwin* support.
-+
-+2011-02-09  Anthony Green <green@moxielogic.com>
-+
-+	* README: Mention Interix.
-+
-+2011-02-09  Jonathan Callen  <abcd@gentoo.org>
-+
-+	* configure.ac: Add Interix to win32/cygwin/mingw case.
-+	* configure: Ditto.
-+	* src/closures.c: Treat Interix like Cygwin, instead of as a
-+	generic win32.
-+
-+2011-02-09  Anthony Green <green@moxielogic.com>
-+
-+	* testsuite/libffi.call/err_bad_typedef.c: Remove xfail.
-+	* testsuite/libffi.call/err_bad_abi.c: Remove xfail.
-+	* src/x86/ffi64.c (UNLIKELY, LIKELY): Define.
-+	(ffi_prep_closure_loc): Check for bad ABI.
-+	* src/prep_cif.c (UNLIKELY, LIKELY): Define.
-+	(initialize_aggregate): Check for bad types.
-+
-+2011-02-09  Landon Fuller <landonf@plausible.coop>
-+
-+	* Makefile.am (EXTRA_DIST): Add build-ios.sh, src/arm/gentramp.sh,
-+	src/arm/trampoline.S.
-+	(nodist_libffi_la_SOURCES): Add src/arc/trampoline.S.
-+	* configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Define.
-+	* src/arm/ffi.c (ffi_trampoline_table)
-+	(ffi_closure_trampoline_table_page, ffi_trampoline_table_entry)
-+	(FFI_TRAMPOLINE_CODELOC_CONFIG, FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET)
-+	(FFI_TRAMPOLINE_COUNT, ffi_trampoline_lock, ffi_trampoline_tables)
-+	(ffi_trampoline_table_alloc, ffi_closure_alloc, ffi_closure_free):
-+	Define for FFI_EXEC_TRAMPOLINE_TABLE case (iOS).
-+	(ffi_prep_closure_loc): Handl FFI_EXEC_TRAMPOLINE_TABLE case
-+	separately.
-+	* src/arm/sysv.S: Handle Apple iOS host.
-+	* src/closures.c: Handle FFI_EXEC_TRAMPOLINE_TABLE case.
-+	* build-ios.sh: New file.
-+	* fficonfig.h.in, configure, Makefile.in: Rebuilt.
-+	* README: Mention ARM iOS.
-+
-+2011-02-08  Oren Held  <orenhe@il.ibm.com>
-+
-+	* src/dlmalloc.c (_STRUCT_MALLINFO): Define in order to avoid
-+	redefinition of mallinfo on HP-UX.
-+
-+2011-02-08  Ginn Chen  <ginn.chen@oracle.com>
-+
-+	* src/sparc/ffi.c (ffi_call): Make compatible with Solaris Studio
-+	aggregate return ABI.  Flush cache.
-+	(ffi_prep_closure_loc): Flush cache.
-+
-+2011-02-11  Anthony Green  <green@moxielogic.com>
-+
-+	From Tom Honermann <tom.honermann@oracle.com>:
-+	* src/powerpc/aix.S (ffi_call_AIX): Support for xlc toolchain on
-+	AIX.  Declare .ffi_prep_args.  Insert nops after branch
-+	instructions so that the AIX linker can insert TOC reload
-+	instructions.
-+	* src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN.
-+
-+2011-02-08  Ed  <ed@kdtc.net>
-+
-+	* src/powerpc/asm.h: Fix grammar nit in comment.
-+
-+2011-02-08  Uli Link  <ul.mcamafia@linkitup.de>
-+
-+	* include/ffi.h.in (FFI_64_BIT_MAX): Define and use.
-+
-+2011-02-09  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	PR libffi/46661
-+	* testsuite/libffi.call/cls_pointer.c (main): Cast void * to
-+	uintptr_t first.
-+	* testsuite/libffi.call/cls_pointer_stack.c (main): Likewise.
-+
-+2011-02-08  Rafael Avila de Espindola  <respindola@mozilla.com>
-+
-+	* configure.ac: Fix x86 test for pc related relocs.
-+	* configure: Rebuilt.
-+
-+2011-02-07  Joel Sherrill <joel.sherrill@oarcorp.com>
-+
-+	* libffi/src/m68k/ffi.c: Add RTEMS support for cache flushing.
-+	Handle case when CPU variant does not have long double support.
-+	* libffi/src/m68k/sysv.S: Add support for mc68000, Coldfire,
-+	and cores with soft floating point.
-+
-+2011-02-07  Joel Sherrill <joel.sherrill@oarcorp.com>
-+
-+	* configure.ac: Add mips*-*-rtems* support.
-+	* configure: Regenerate.
-+	* src/mips/ffitarget.h: Ensure needed constants are available
-+	for targets which do not have sgidefs.h.
-+
-+2011-01-26  Dave Korn  <dave.korn.cygwin@gmail.com>
-+
-+	PR target/40125
-+	* configure.ac (AM_LTLDFLAGS): Add -bindir option for windows DLLs.
-+	* configure: Regenerate.
-+
-+2010-12-18  Iain Sandoe  <iains@gcc.gnu.org>
-+
-+	PR libffi/29152
-+	PR libffi/42378
-+	* src/powerpc/darwin_closure.S: Provide Darwin64 implementation,
-+	update comments.
-+	* src/powerpc/ffitarget.h (POWERPC_DARWIN64): New,
-+	(FFI_TRAMPOLINE_SIZE): Update for Darwin64.
-+	* src/powerpc/darwin.S: Provide Darwin64 implementation,
-+	update comments.
-+	* src/powerpc/ffi_darwin.c: Likewise.
-+
-+2010-12-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	* configure.ac (libffi_cv_as_ascii_pseudo_op): Use double
-+	backslashes.
-+	(libffi_cv_as_string_pseudo_op): Likewise.
-+	* configure: Regenerate.
-+
-+2010-12-03  Chung-Lin Tang  <cltang@codesourcery.com>
-+
-+	* src/arm/sysv.S (ffi_closure_SYSV): Add UNWIND to .pad directive.
-+	(ffi_closure_VFP): Same.
-+	(ffi_call_VFP): Move down to before ffi_closure_VFP. Add '.fpu vfp'
-+	directive.
-+
-+2010-12-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	* testsuite/libffi.call/ffitest.h [__sgi] (PRId64, PRIu64): Define.
-+	(PRIuPTR): Define.
-+
-+2010-11-29  Richard Henderson  <rth@redhat.com>
-+	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	* src/x86/sysv.S (FDE_ENCODING, FDE_ENCODE): Define.
-+	(.eh_frame): Use FDE_ENCODING.
-+	(.LASFDE1, .LASFDE2, LASFDE3): Simplify with FDE_ENCODE.
-+
-+2010-11-22  Jacek Caban <jacek@codeweavers.com>
-+
-+	* configure.ac: Check for symbol underscores on mingw-w64.
-+	* configure: Rebuilt.
-+	* src/x86/win64.S: Correctly access extern symbols in respect to
-+	underscores.
-+
-+2010-11-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	* testsuite/lib/libffi-dg.exp: Rename ...
-+	* testsuite/lib/libffi.exp: ... to this.
-+	* libffi/testsuite/libffi.call/call.exp: Don't load libffi-dg.exp.
-+	* libffi/testsuite/libffi.special/special.exp: Likewise.
-+
-+2010-10-28  Chung-Lin Tang  <cltang@codesourcery.com>
-+
-+	* src/arm/ffi.c (ffi_prep_args): Add VFP register argument handling
-+	code, new parameter, and return value. Update comments.
-+	(ffi_prep_cif_machdep): Add case for VFP struct return values. Add
-+	call to layout_vfp_args().
-+	(ffi_call_SYSV): Update declaration.
-+	(ffi_call_VFP): New declaration.
-+	(ffi_call): Add VFP struct return conditions. Call ffi_call_VFP()
-+	when ABI is FFI_VFP.
-+	(ffi_closure_VFP): New declaration.
-+	(ffi_closure_SYSV_inner): Add new vfp_args parameter, update call to
-+	ffi_prep_incoming_args_SYSV().
-+	(ffi_prep_incoming_args_SYSV): Update parameters. Add VFP argument
-+	case handling.
-+	(ffi_prep_closure_loc): Pass ffi_closure_VFP to trampoline
-+	construction under VFP hard-float.
-+	(rec_vfp_type_p): New function.
-+	(vfp_type_p): Same.
-+	(place_vfp_arg): Same.
-+	(layout_vfp_args): Same.
-+	* src/arm/ffitarget.h (ffi_abi): Add FFI_VFP. Define FFI_DEFAULT_ABI
-+	based on __ARM_PCS_VFP.
-+	(FFI_EXTRA_CIF_FIELDS): Define for adding VFP hard-float specific
-+	fields.
-+	(FFI_TYPE_STRUCT_VFP_FLOAT): Define internally used type code.
-+	(FFI_TYPE_STRUCT_VFP_DOUBLE): Same.
-+	* src/arm/sysv.S (ffi_call_SYSV): Change call of ffi_prep_args() to
-+	direct call. Move function pointer load upwards.
-+	(ffi_call_VFP): New function.
-+	(ffi_closure_VFP): Same.
-+
-+	* testsuite/lib/libffi-dg.exp (check-flags): New function.
-+	(dg-skip-if): New function.
-+	* testsuite/libffi.call/cls_double_va.c: Skip if target is arm*-*-*
-+	and compiler options include -mfloat-abi=hard.
-+	* testsuite/libffi.call/cls_longdouble_va.c: Same.
-+
-+2010-10-01  Jakub Jelinek  <jakub@redhat.com>
-+
-+	PR libffi/45677
-+	* src/x86/ffi64.c (ffi_prep_cif_machdep): Ensure cif->bytes is
-+	a multiple of 8.
-+	* testsuite/libffi.call/many2.c: New test.
-+
-+2010-08-20  Mark Wielaard  <mjw@redhat.com>
-+
-+	* src/closures.c (open_temp_exec_file_mnt): Check if getmntent_r
-+	returns NULL.
-+
-+2010-08-09  Andreas Tobler  <andreast@fgznet.ch>
-+
-+	* configure.ac: Add target powerpc64-*-freebsd*.
-+	* configure: Regenerate.
-+	* testsuite/libffi.call/cls_align_longdouble_split.c: Pass
-+	-mlong-double-128 only to linux targets.
-+	* testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise.
-+	* testsuite/libffi.call/cls_longdouble.c: Likewise.
-+	* testsuite/libffi.call/huge_struct.c: Likewise.
-+
-+2010-08-05  Dan Witte  <dwitte@mozilla.com>
-+
-+        * Makefile.am: Pass FFI_DEBUG define to msvcc.sh for linking to the
-+        debug CRT when --enable-debug is given.
-+        * configure.ac: Define it.
-+        * msvcc.sh: Translate -g and -DFFI_DEBUG appropriately.
-+
-+2010-08-04  Dan Witte  <dwitte@mozilla.com>
-+
-+	* src/x86/ffitarget.h: Add X86_ANY define for all x86/x86_64
-+	platforms.
-+	* src/x86/ffi.c: Remove redundant ifdef checks.
-+	* src/prep_cif.c: Push stack space computation into src/x86/ffi.c
-+	for X86_ANY so return value space doesn't get added twice.
-+
-+2010-08-03  Neil Rashbrooke <neil@parkwaycc.co.uk>
-+
-+	* msvcc.sh: Don't pass -safeseh to ml64 because behavior is buggy.
-+
-+2010-07-22  Dan Witte  <dwitte@mozilla.com>
-+
-+	* src/*/ffitarget.h: Make FFI_LAST_ABI one past the last valid ABI.
-+	* src/prep_cif.c: Fix ABI assertion.
-+        * src/cris/ffi.c: Ditto.
-+
-+2010-07-10  Evan Phoenix  <evan@fallingsnow.net>
-+
-+	* src/closures.c (selinux_enabled_check): Fix strncmp usage bug.
-+
-+2010-07-07  Dan Horák <dan@danny.cz>
-+
-+	* include/ffi.h.in: Protect #define with #ifndef.
-+	* src/powerpc/ffitarget.h: Ditto.
-+	* src/s390/ffitarget.h: Ditto.
-+	* src/sparc/ffitarget.h: Ditto.
-+
-+2010-07-07   Neil Roberts <neil@linux.intel.com>
-+
-+	* src/x86/sysv.S (ffi_call_SYSV): Align the stack pointer to
-+	16-bytes.
-+
-+2010-07-02  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* Makefile.am (AM_MAKEFLAGS): Pass also mandir to submakes.
-+	* Makefile.in: Regenerated.
-+
-+2010-05-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	* configure.ac (libffi_cv_as_x86_pcrel): Check for illegal in as
-+	output, too.
-+	(libffi_cv_as_ascii_pseudo_op): Check for .ascii.
-+	(libffi_cv_as_string_pseudo_op): Check for .string.
-+	* configure: Regenerate.
-+	* fficonfig.h.in: Regenerate.
-+	* src/x86/sysv.S (.eh_frame): Use .ascii, .string or error.
-+
-+2010-05-11  Dan Witte  <dwitte@mozilla.com>
-+
-+	* doc/libffi.tex: Document previous change.
-+
-+2010-05-11  Makoto Kato <m_kato@ga2.so-net.ne.jp>
-+
-+	* src/x86/ffi.c (ffi_call): Don't copy structs passed by value.
-+
-+2010-05-05  Michael Kohler <michaelkohler@live.com>
-+
-+	* src/dlmalloc.c (dlfree): Fix spelling.
-+	* src/ia64/ffi.c (ffi_prep_cif_machdep): Ditto.
-+	* configure.ac: Ditto.
-+	* configure: Rebuilt.
-+
-+2010-04-13  Dan Witte  <dwitte@mozilla.com>
-+
-+	* msvcc.sh: Build with -W3 instead of -Wall.
-+	* src/powerpc/ffi_darwin.c: Remove build warnings.
-+	* src/x86/ffi.c: Ditto.
-+	* src/x86/ffitarget.h: Ditto.
-+
-+2010-04-12  Dan Witte  <dwitte@mozilla.com>
-+	    Walter Meinl <wuno@lsvw.de>
-+
-+	* configure.ac: Add OS/2 support.
-+	* configure: Rebuilt.
-+	* src/closures.c: Ditto.
-+	* src/dlmalloc.c: Ditto.
-+	* src/x86/win32.S: Ditto.
-+
-+2010-04-07  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* testsuite/libffi.call/err_bad_abi.c: Remove unused args variable.
-+
-+2010-04-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
-+
-+	* Makefile.in: Regenerate.
-+	* aclocal.m4: Regenerate.
-+	* include/Makefile.in: Regenerate.
-+	* man/Makefile.in: Regenerate.
-+	* testsuite/Makefile.in: Regenerate.
-+
-+2010-03-30  Dan Witte  <dwitte@mozilla.com>
-+
-+	* msvcc.sh: Disable build warnings.
-+	* README (tested): Clarify windows build procedure.
-+
-+2010-03-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	* configure.ac (libffi_cv_as_x86_64_unwind_section_type): New test.
-+	* configure: Regenerate.
-+	* fficonfig.h.in: Regenerate.
-+	* libffi/src/x86/unix64.S (.eh_frame)
-+	[HAVE_AS_X86_64_UNWIND_SECTION_TYPE]: Use @unwind section type.
-+
-+2010-03-14  Matthias Klose  <doko@ubuntu.com>
-+
-+	* src/x86/ffi64.c: Fix typo in comment.
-+	* src/x86/ffi.c: Use /* ... */ comment style.
-+
-+2010-02-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	* doc/libffi.texi (The Closure API): Fix typo.
-+	* doc/libffi.info: Remove.
-+
-+2010-02-15  Matthias Klose  <doko@ubuntu.com>
-+
-+	* src/arm/sysv.S (__ARM_ARCH__): Define for processor
-+	__ARM_ARCH_7EM__.
-+
-+2010-01-15  Anthony Green  <green@redhat.com>
-+
-+	* README: Add notes on building with Microsoft Visual C++.
-+
-+2010-01-15  Daniel Witte  <dwitte@mozilla.com>
-+
-+	* msvcc.sh: New file.
-+
-+	* src/x86/win32.S: Port assembly routines to MSVC and #ifdef.
-+	* src/x86/ffi.c: Tweak function declaration and remove excess
-+	parens.
-+	* include/ffi.h.in: Add __declspec(align(8)) to typedef struct
-+	ffi_closure.
-+
-+	* src/x86/ffi.c: Merge ffi_call_SYSV and ffi_call_STDCALL into new
-+	function ffi_call_win32 on X86_WIN32.
-+	* src/x86/win32.S (ffi_call_SYSV): Rename to ffi_call_win32.
-+	(ffi_call_STDCALL): Remove.
-+
-+	* src/prep_cif.c (ffi_prep_cif): Move stack space allocation code
-+	to ffi_prep_cif_machdep for x86.
-+	* src/x86/ffi.c (ffi_prep_cif_machdep): To here.
-+
-+2010-01-15  Oliver Kiddle  <okiddle@yahoo.co.uk>
-+
-+	* src/x86/ffitarget.h (ffi_abi): Check for __i386 and __amd64 for
-+	Sun Studio compiler compatibility.
-+
-+2010-01-12  Conrad Irwin <conrad.irwin@gmail.com>
-+
-+	* doc/libffi.texi: Add closure example.
-+
-+2010-01-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	PR libffi/40701
-+	* testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRIdLL,
-+	PRIuLL, PRId64, PRIu64, PRIuPTR): Define.
-+	* testsuite/libffi.call/cls_align_sint64.c: Add -Wno-format on
-+	alpha*-dec-osf*.
-+	* testsuite/libffi.call/cls_align_uint64.c: Likewise.
-+	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
-+	* testsuite/libffi.call/return_ll1.c: Likewise.
-+	* testsuite/libffi.call/stret_medium2.c: Likewise.
-+	* testsuite/libffi.special/ffitestcxx.h (allocate_mmap): Cast
-+	MAP_FAILED to char *.
-+
-+2010-01-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	* src/mips/n32.S: Use .abicalls and .eh_frame with __GNUC__.
-+
-+2009-12-31  Anthony Green  <green@redhat.com>
-+
-+	* README: Update for libffi 3.0.9.
-+
-+2009-12-27  Matthias Klose  <doko@ubuntu.com>
-+
-+	* configure.ac (HAVE_LONG_DOUBLE): Define for mips when
-+	appropriate.
-+	* configure: Rebuilt.
-+
-+2009-12-26  Anthony Green  <green@redhat.com>
-+
-+	* testsuite/libffi.call/cls_longdouble_va.c: Mark as xfail for
-+	avr32*-*-*.
-+	* testsuite/libffi.call/cls_double_va.c: Ditto.
-+
-+2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
-+
-+	* testsuite/libffi.call/ffitest.h: Conditionally include stdint.h
-+	and inttypes.h.
-+	* testsuite/libffi.special/unwindtest.cc: Ditto.
-+
-+2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
-+
-+	* configure.ac: Add amd64-*-openbsd*.
-+	* configure: Rebuilt.
-+	* testsuite/lib/libffi-dg.exp (libffi_target_compile): Link
-+	openbsd programs with -lpthread.
-+
-+2009-12-26  Anthony Green  <green@redhat.com>
-+
-+	* testsuite/libffi.call/cls_double_va.c,
-+	testsuite/libffi.call/cls_longdouble.c,
-+	testsuite/libffi.call/cls_longdouble_va.c,
-+	testsuite/libffi.call/cls_pointer.c,
-+	testsuite/libffi.call/cls_pointer_stack.c: Remove xfail for
-+	mips*-*-* and arm*-*-*.
-+	* testsuite/libffi.call/cls_align_longdouble_split.c,
-+	testsuite/libffi.call/cls_align_longdouble_split2.c,
-+	testsuite/libffi.call/stret_medium2.c,
-+	testsuite/libffi.call/stret_medium.c,
-+	testsuite/libffi.call/stret_large.c,
-+	testsuite/libffi.call/stret_large2.c: Remove xfail for arm*-*-*.
-+
-+2009-12-31  Kay Tietz  <ktietz70@googlemail.com>
-+
-+	* testsuite/libffi.call/ffitest.h,
-+	testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRuLL): Fix
-+	definitions.
-+
-+2009-12-31  Carlo Bramini  <carlo.bramix@libero.it>
-+
-+	* configure.ac (AM_LTLDFLAGS): Define for windows hosts.
-+	* Makefile.am (libffi_la_LDFLAGS): Add AM_LTLDFLAGS.
-+	* configure: Rebuilt.
-+	* Makefile.in: Rebuilt.
-+
-+2009-12-31  Anthony Green  <green@redhat.com>
-+	    Blake Chaffin.
-+
-+	* testsuite/libffi.call/huge_struct.c: New test case from Blake
-+	Chaffin @ Apple.
-+
-+2009-12-28  David Edelsohn  <edelsohn@gnu.org>
-+
-+	* src/powerpc/ffi_darwin.c (ffi_prep_args): Copy abi and nargs to
-+	local variables.
-+	(aix_adjust_aggregate_sizes): New function.
-+	(ffi_prep_cif_machdep): Call it.
-+
-+2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
-+
-+	* configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets.
-+	* configure: Regenerate.
-+	* fficonfig.h.in: Likewise.
-+	* src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for
-+	Solaris/x86.
-+
-+2009-12-26  Andreas Schwab  <schwab@linux-m68k.org>
-+
-+	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count
-+	when a float arguments is passed in memory.
-+	(ffi_closure_helper_SYSV): Mark general registers as used up when
-+	a 64bit or soft-float long double argument is passed in memory.
-+
-+2009-12-25  Matthias Klose  <doko@ubuntu.com>
-+
-+	* man/ffi_call.3: Fix #include in examples.
-+	* doc/libffi.texi: Add dircategory.
-+
-+2009-12-25  Frank Everdij <f.p.x.everdij@tudelft.nl>
-+
-+	* include/ffi.h.in: Placed '__GNUC__' ifdef around
-+	'__attribute__((aligned(8)))' in ffi_closure, fixes compile for
-+	IRIX MIPSPro c99.
-+	* include/ffi_common.h: Added '__sgi' define to non
-+	'__attribute__((__mode__()))' integer typedefs.
-+	* src/mips/ffi.c (ffi_call, ffi_closure_mips_inner_O32,
-+	ffi_closure_mips_inner_N32): Added 'defined(_MIPSEB)' to BE check.
-+	(ffi_closure_mips_inner_O32, ffi_closure_mips_inner_N32): Added
-+	FFI_LONGDOUBLE support and alignment(N32 only).
-+	* src/mips/ffitarget.h: Corrected '#include <sgidefs.h>' for IRIX and
-+	fixed non '__attribute__((__mode__()))' integer typedefs.
-+	* src/mips/n32.S: Put '#ifdef linux' around '.abicalls' and '.eh_frame'
-+	since they are Linux/GNU Assembler specific.
-+
-+2009-12-25  Bradley Smith  <brad@brad-smith.co.uk>
-+
-+	* configure.ac, Makefile.am, src/avr32/ffi.c,
-+	src/avr32/ffitarget.h,
-+	src/avr32/sysv.S: Add AVR32 port.
-+	* configure, Makefile.in: Rebuilt.
-+
-+2009-12-21  Andreas Tobler  <a.tobler@schweiz.org>
-+
-+	* configure.ac: Make i?86 build on FreeBSD and OpenBSD.
-+	* configure: Regenerate.
-+
-+2009-12-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+	* testsuite/libffi.call/ffitest.h: Define PRIuPTR on PA HP-UX.
-+
-+2009-12-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+	* src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE
-+	type on HP-UX.
-+
-+2012-02-13  Kai Tietz  <ktietz@redhat.com>
-+
-+	PR libffi/52221
-+	* src/x86/ffi.c (ffi_prep_raw_closure_loc): Add thiscall
-+	support for X86_WIN32.
-+	(FFI_INIT_TRAMPOLINE_THISCALL): Fix displacement.
-+
-+2009-12-11  Eric Botcazou  <ebotcazou@adacore.com>
-+
-+	* src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long
-+	double' arguments.
-+
-+2009-12-11  Eric Botcazou  <ebotcazou@adacore.com>
-+
-+	* testsuite/libffi.call/ffitest.h: Define PRIuPTR on Solaris < 10.
-+
-+2009-12-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+	PR libffi/40700
-+	* src/closures.c [X86_64 && __sun__ && __svr4__]
-+	(FFI_MMAP_EXEC_WRIT): Define.
-+
-+2009-12-08  David Daney  <ddaney@caviumnetworks.com>
-+
-+	* testsuite/libffi.call/stret_medium.c: Remove xfail for mips*-*-*
-+	* testsuite/libffi.call/cls_align_longdouble_split2.c: Same.
-+	* testsuite/libffi.call/stret_large.c: Same.
-+	* testsuite/libffi.call/cls_align_longdouble_split.c: Same.
-+	* testsuite/libffi.call/stret_large2.c: Same.
-+	* testsuite/libffi.call/stret_medium2.c: Same.
-+
-+2009-12-07  David Edelsohn  <edelsohn@gnu.org>
-+
-+	* src/powerpc/aix_closure.S (libffi_closure_ASM): Fix tablejump
-+	typo.
-+
-+2009-12-05  David Edelsohn  <edelsohn@gnu.org>
-+
-+	* src/powerpc/aix.S: Update AIX32 code to be consistent with AIX64
-+	code.
-+	* src/powerpc/aix_closure.S: Same.
-+
-+2009-12-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
-+
-+	* Makefile.in: Regenerate.
-+	* configure: Regenerate.
-+	* include/Makefile.in: Regenerate.
-+	* man/Makefile.in: Regenerate.
-+	* testsuite/Makefile.in: Regenerate.
-+
-+2009-12-04  David Edelsohn  <edelsohn@gnu.org>
-+
-+	* src/powerpc/aix_closure.S: Reorganize 64-bit code to match
-+	linux64_closure.S.
-+
-+2009-12-04  Uros Bizjak  <ubizjak@gmail.com>
-+
-+	PR libffi/41908
-+	* src/x86/ffi64.c (classify_argument): Update from
-+	gcc/config/i386/i386.c.
-+	(ffi_closure_unix64_inner): Do not use the address of two consecutive
-+	SSE registers directly.
-+	* testsuite/libffi.call/cls_dbls_struct.c (main): Remove xfail
-+	for x86_64 linux targets.
-+
-+2009-12-04  David Edelsohn  <edelsohn@gnu.org>
-+
-+	* src/powerpc/ffi_darwin.c (ffi_closure_helper_DARWIN): Increment
-+	pfr for long double split between fpr13 and stack.
-+
-+2009-12-03  David Edelsohn  <edelsohn@gnu.org>
-+
-+	* src/powerpc/ffi_darwin.c (ffi_prep_args): Increment next_arg and
-+	fparg_count twice for long double.
-+
-+2009-12-03  David Edelsohn  <edelsohn@gnu.org>
-+
-+	PR libffi/42243
-+	* src/powerpc/ffi_darwin.c (ffi_prep_args): Remove extra parentheses.
-+
-+2009-12-03  Uros Bizjak  <ubizjak@gmail.com>
-+
-+	* testsuite/libffi.call/cls_longdouble_va.c (main): Fix format string.
-+	Remove xfails for x86 linux targets.
-+
-+2009-12-02  David Edelsohn  <edelsohn@gnu.org>
-+
-+	* src/powerpc/ffi_darwin.c (ffi_prep_args): Fix typo in INT64
-+	case.
-+
-+2009-12-01  David Edelsohn  <edelsohn@gnu.org>
-+
-+	* src/powerpc/aix.S (ffi_call_AIX): Convert to more standard
-+	register usage.  Call ffi_prep_args directly.  Add long double
-+	return value support.
-+	* src/powerpc/ffi_darwin.c (ffi_prep_args): Double arg increment
-+	applies to FFI_TYPE_DOUBLE.  Correct fpr_base increment typo.
-+	Separate FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases.
-+	(ffi_prep_cif_machdep): Only 16 byte stack alignment in 64 bit
-+	mode.
-+	(ffi_closure_helper_DARWIN): Remove nf and ng counters.  Move temp
-+	into case.
-+	* src/powerpc/aix_closure.S: Maintain 16 byte stack alignment.
-+	Allocate result area between params and FPRs.
-+
-+2009-11-30  David Edelsohn  <edelsohn@gnu.org>
-+
-+	PR target/35484
-+	* src/powerpc/ffitarget.h (POWERPC64): Define for PPC64 Linux and
-+	AIX64.
-+	* src/powerpc/aix.S: Implement AIX64 version.
-+	* src/powerpc/aix_closure.S: Implement AIX64 version.
-+	(ffi_closure_ASM): Use extsb, lha and displament addresses.
-+	* src/powerpc/ffi_darwin.c (ffi_prep_args): Implement AIX64
-+	support.
-+	(ffi_prep_cif_machdep): Same.
-+	(ffi_call): Same.
-+	(ffi_closure_helper_DARWIN): Same.
-+
-+2009-11-02  Andreas Tobler  <a.tobler@schweiz.org>
-+
-+	PR libffi/41908
-+	* testsuite/libffi.call/testclosure.c: New test.
-+
-+2009-09-28  Kai Tietz  <kai.tietz@onevision.com>
-+
-+	* src/x86/win64.S (_ffi_call_win64 stack): Remove for gnu
-+	assembly version use of ___chkstk.
-+
-+2009-09-23  Matthias Klose  <doko@ubuntu.com>
-+
-+	PR libffi/40242, PR libffi/41443
-+	* src/arm/sysv.S (__ARM_ARCH__): Define for processors
-+	__ARM_ARCH_6T2__, __ARM_ARCH_6M__, __ARM_ARCH_7__,
-+	__ARM_ARCH_7A__, __ARM_ARCH_7R__, __ARM_ARCH_7M__.
-+	Change the conditionals to __SOFTFP__ || __ARM_EABI__
-+	for -mfloat-abi=softfp to work.
-+
-+2009-09-17  Loren J. Rittle  <ljrittle@acm.org>
-+
-+	PR testsuite/32843 (strikes again)
-+	* src/x86/ffi.c (ffi_prep_cif_machdep): Add X86_FREEBSD to
-+	enable proper extension on char and short.
-+
-+2009-09-15  David Daney  <ddaney@caviumnetworks.com>
-+
-+	* src/java_raw_api.c (ffi_java_raw_to_rvalue): Remove special
-+	handling for FFI_TYPE_POINTER.
-+	* src/mips/ffitarget.h (FFI_TYPE_STRUCT_D_SOFT,
-+	FFI_TYPE_STRUCT_F_SOFT, FFI_TYPE_STRUCT_DD_SOFT,
-+	FFI_TYPE_STRUCT_FF_SOFT, FFI_TYPE_STRUCT_FD_SOFT,
-+	FFI_TYPE_STRUCT_DF_SOFT, FFI_TYPE_STRUCT_SOFT): New defines.
-+	(FFI_N32_SOFT_FLOAT, FFI_N64_SOFT_FLOAT): New ffi_abi enumerations.
-+	(enum ffi_abi): Set FFI_DEFAULT_ABI for soft-float.
-+	* src/mips/n32.S (ffi_call_N32): Add handling for soft-float
-+	structure and pointer returns.
-+	(ffi_closure_N32): Add handling for pointer returns.
-+	* src/mips/ffi.c (ffi_prep_args, calc_n32_struct_flags,
-+	calc_n32_return_struct_flags): Handle soft-float.
-+	(ffi_prep_cif_machdep):  Handle soft-float, fix pointer handling.
-+	(ffi_call_N32): Declare proper argument types.
-+	(ffi_call, copy_struct_N32, ffi_closure_mips_inner_N32): Handle
-+	soft-float.
-+
-+2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
-+
-+	* configure.ac (AC_PREREQ): Bump to 2.64.
-+
-+2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
-+
-+	* Makefile.am (install-html, install-pdf): Remove.
-+	* Makefile.in: Regenerate.
-+
-+	* Makefile.in: Regenerate.
-+	* aclocal.m4: Regenerate.
-+	* configure: Regenerate.
-+	* fficonfig.h.in: Regenerate.
-+	* include/Makefile.in: Regenerate.
-+	* man/Makefile.in: Regenerate.
-+	* testsuite/Makefile.in: Regenerate.
-+
-+2011-08-22  Jasper Lievisse Adriaanse <jasper@openbsd.org>
-+
-+	* configure.ac: Add OpenBSD/hppa and OpenBSD/powerpc support.
-+	* configure: Rebuilt.
-+
-+2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
-+
-+	* configure.ac (_AC_ARG_VAR_PRECIOUS): Use m4_rename_force.
-+
-+2009-07-24  Dave Korn  <dave.korn.cygwin@gmail.com>
-+
-+	PR libffi/40807
-+	* src/x86/ffi.c (ffi_prep_cif_machdep): Also use sign/zero-extending
-+	return types for X86_WIN32.
-+	* src/x86/win32.S (_ffi_call_SYSV): Handle omitted return types.
-+	(_ffi_call_STDCALL, _ffi_closure_SYSV, _ffi_closure_raw_SYSV,
-+	_ffi_closure_STDCALL): Likewise.
-+
-+	* src/closures.c (is_selinux_enabled): Define to const 0 for Cygwin.
-+	(dlmmap, dlmunmap): Also use these functions on Cygwin.
-+
-+2009-07-11  Richard Sandiford  <rdsandiford@googlemail.com>
-+
-+	PR testsuite/40699
-+	PR testsuite/40707
-+	PR testsuite/40709
-+	* testsuite/lib/libffi-dg.exp: Revert 2009-07-02, 2009-07-01 and
-+	2009-06-30 commits.
-+
-+2009-07-01  Richard Sandiford  <r.sandiford@uk.ibm.com>
-+
-+	* testsuite/lib/libffi-dg.exp (libffi-init): Set ld_library_path
-+	to "" before adding paths.  (This reinstates an assignment that
-+	was removed by my 2009-06-30 commit, but changes the initial
-+	value from "." to "".)
-+
-+2009-07-01  H.J. Lu  <hongjiu.lu@intel.com>
-+
-+	PR testsuite/40601
-+	* testsuite/lib/libffi-dg.exp (libffi-init): Properly set
-+	gccdir.  Adjust ld_library_path for gcc only if gccdir isn't
-+	empty.
-+
-+2009-06-30  Richard Sandiford  <r.sandiford@uk.ibm.com>
-+
-+	* testsuite/lib/libffi-dg.exp (libffi-init): Don't add "."
-+	to ld_library_path.  Use add_path.  Add just find_libgcc_s
-+	to ld_library_path, not every libgcc multilib directory.
-+
-+2009-06-16  Wim Lewis  <wiml@hhhh.org>
-+
-+	* src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are
-+	supposed to be callee-saved.
-+	* src/powerpc/sysv.S (small_struct_return_value): Fix overrun of
-+	return buffer for odd-size structs.
-+
-+2009-06-16  Andreas Tobler  <a.tobler@schweiz.org>
-+
-+	PR libffi/40444
-+	* testsuite/lib/libffi-dg.exp (libffi_target_compile): Add
-+	allow_stack_execute for Darwin.
-+
-+2009-06-16  Andrew Haley  <aph@redhat.com>
-+
-+	* configure.ac (TARGETDIR): Add missing blank lines.
-+	* configure: Regenerate.
-+
-+2009-06-16  Andrew Haley  <aph@redhat.com>
-+
-+	* testsuite/libffi.call/cls_align_sint64.c,
-+	testsuite/libffi.call/cls_align_uint64.c,
-+	testsuite/libffi.call/cls_longdouble_va.c,
-+	testsuite/libffi.call/cls_ulonglong.c,
-+	testsuite/libffi.call/return_ll1.c,
-+	testsuite/libffi.call/stret_medium2.c: Fix printf format
-+	specifiers.
-+	* testsuite/libffi.call/ffitest.h,
-+	testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define.
-+
-+2009-06-15  Andrew Haley  <aph@redhat.com>
-+
-+	* testsuite/libffi.call/err_bad_typedef.c: xfail everywhere.
-+	* testsuite/libffi.call/err_bad_abi.c: Likewise.
-+
-+2009-06-12  Andrew Haley  <aph@redhat.com>
-+
-+	* Makefile.am: Remove info_TEXINFOS.
-+
-+2009-06-12  Andrew Haley  <aph@redhat.com>
-+
-+	* ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c,
-+	testsuite/libffi.call/cls_align_uint64.c,
-+	testsuite/libffi.call/cls_ulonglong.c,
-+	testsuite/libffi.call/return_ll1.c,
-+	testsuite/libffi.call/stret_medium2.c: Fix printf format
-+	specifiers.
-+	testsuite/libffi.special/unwindtest.cc: include stdint.h.
-+
-+2009-06-11  Timothy Wall  <twall@users.sf.net>
-+
-+	* Makefile.am,
-+	configure.ac,
-+	include/ffi.h.in,
-+	include/ffi_common.h,
-+	src/closures.c,
-+	src/dlmalloc.c,
-+	src/x86/ffi.c,
-+	src/x86/ffitarget.h,
-+	src/x86/win64.S (new),
-+	README: Added win64 support (mingw or MSVC)
-+	* Makefile.in,
-+	include/Makefile.in,
-+	man/Makefile.in,
-+	testsuite/Makefile.in,
-+	configure,
-+	aclocal.m4: Regenerated
-+	* ltcf-c.sh: properly escape cygwin/w32 path
-+	* man/ffi_call.3: Clarify size requirements for return value.
-+	* src/x86/ffi64.c: Fix filename in comment.
-+	* src/x86/win32.S: Remove unused extern.
-+
-+	* testsuite/libffi.call/closure_fn0.c,
-+	testsuite/libffi.call/closure_fn1.c,
-+	testsuite/libffi.call/closure_fn2.c,
-+	testsuite/libffi.call/closure_fn3.c,
-+	testsuite/libffi.call/closure_fn4.c,
-+	testsuite/libffi.call/closure_fn5.c,
-+	testsuite/libffi.call/closure_fn6.c,
-+	testsuite/libffi.call/closure_stdcall.c,
-+	testsuite/libffi.call/cls_12byte.c,
-+	testsuite/libffi.call/cls_16byte.c,
-+	testsuite/libffi.call/cls_18byte.c,
-+	testsuite/libffi.call/cls_19byte.c,
-+	testsuite/libffi.call/cls_1_1byte.c,
-+	testsuite/libffi.call/cls_20byte.c,
-+	testsuite/libffi.call/cls_20byte1.c,
-+	testsuite/libffi.call/cls_24byte.c,
-+	testsuite/libffi.call/cls_2byte.c,
-+	testsuite/libffi.call/cls_3_1byte.c,
-+	testsuite/libffi.call/cls_3byte1.c,
-+ 	testsuite/libffi.call/cls_3byte2.c,
-+ 	testsuite/libffi.call/cls_4_1byte.c,
-+ 	testsuite/libffi.call/cls_4byte.c,
-+ 	testsuite/libffi.call/cls_5_1_byte.c,
-+ 	testsuite/libffi.call/cls_5byte.c,
-+ 	testsuite/libffi.call/cls_64byte.c,
-+ 	testsuite/libffi.call/cls_6_1_byte.c,
-+ 	testsuite/libffi.call/cls_6byte.c,
-+ 	testsuite/libffi.call/cls_7_1_byte.c,
-+ 	testsuite/libffi.call/cls_7byte.c,
-+ 	testsuite/libffi.call/cls_8byte.c,
-+ 	testsuite/libffi.call/cls_9byte1.c,
-+ 	testsuite/libffi.call/cls_9byte2.c,
-+ 	testsuite/libffi.call/cls_align_double.c,
-+ 	testsuite/libffi.call/cls_align_float.c,
-+ 	testsuite/libffi.call/cls_align_longdouble.c,
-+ 	testsuite/libffi.call/cls_align_longdouble_split.c,
-+ 	testsuite/libffi.call/cls_align_longdouble_split2.c,
-+ 	testsuite/libffi.call/cls_align_pointer.c,
-+ 	testsuite/libffi.call/cls_align_sint16.c,
-+ 	testsuite/libffi.call/cls_align_sint32.c,
-+ 	testsuite/libffi.call/cls_align_sint64.c,
-+ 	testsuite/libffi.call/cls_align_uint16.c,
-+ 	testsuite/libffi.call/cls_align_uint32.c,
-+ 	testsuite/libffi.call/cls_align_uint64.c,
-+ 	testsuite/libffi.call/cls_dbls_struct.c,
-+ 	testsuite/libffi.call/cls_double.c,
-+ 	testsuite/libffi.call/cls_double_va.c,
-+ 	testsuite/libffi.call/cls_float.c,
-+ 	testsuite/libffi.call/cls_longdouble.c,
-+ 	testsuite/libffi.call/cls_longdouble_va.c,
-+ 	testsuite/libffi.call/cls_multi_schar.c,
-+ 	testsuite/libffi.call/cls_multi_sshort.c,
-+ 	testsuite/libffi.call/cls_multi_sshortchar.c,
-+ 	testsuite/libffi.call/cls_multi_uchar.c,
-+ 	testsuite/libffi.call/cls_multi_ushort.c,
-+ 	testsuite/libffi.call/cls_multi_ushortchar.c,
-+ 	testsuite/libffi.call/cls_pointer.c,
-+ 	testsuite/libffi.call/cls_pointer_stack.c,
-+ 	testsuite/libffi.call/cls_schar.c,
-+ 	testsuite/libffi.call/cls_sint.c,
-+ 	testsuite/libffi.call/cls_sshort.c,
-+ 	testsuite/libffi.call/cls_uchar.c,
-+ 	testsuite/libffi.call/cls_uint.c,
-+ 	testsuite/libffi.call/cls_ulonglong.c,
-+ 	testsuite/libffi.call/cls_ushort.c,
-+ 	testsuite/libffi.call/err_bad_abi.c,
-+ 	testsuite/libffi.call/err_bad_typedef.c,
-+ 	testsuite/libffi.call/float2.c,
-+ 	testsuite/libffi.call/huge_struct.c,
-+ 	testsuite/libffi.call/nested_struct.c,
-+ 	testsuite/libffi.call/nested_struct1.c,
-+ 	testsuite/libffi.call/nested_struct10.c,
-+ 	testsuite/libffi.call/nested_struct2.c,
-+ 	testsuite/libffi.call/nested_struct3.c,
-+ 	testsuite/libffi.call/nested_struct4.c,
-+ 	testsuite/libffi.call/nested_struct5.c,
-+ 	testsuite/libffi.call/nested_struct6.c,
-+ 	testsuite/libffi.call/nested_struct7.c,
-+ 	testsuite/libffi.call/nested_struct8.c,
-+ 	testsuite/libffi.call/nested_struct9.c,
-+ 	testsuite/libffi.call/problem1.c,
-+ 	testsuite/libffi.call/return_ldl.c,
-+ 	testsuite/libffi.call/return_ll1.c,
-+ 	testsuite/libffi.call/stret_large.c,
-+ 	testsuite/libffi.call/stret_large2.c,
-+ 	testsuite/libffi.call/stret_medium.c,
-+ 	testsuite/libffi.call/stret_medium2.c,
-+	testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead
-+	of checking for MMAP.  Use intptr_t instead of long casts.
-+
-+2009-06-11  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*.
-+	* testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*.
-+	* testsuite/libffi.call/err_bad_typedef.c: Likewise.
-+
-+2009-06-09  Andrew Haley  <aph@redhat.com>
-+
-+	* src/x86/freebsd.S: Add missing file.
-+
-+2009-06-08  Andrew Haley  <aph@redhat.com>
-+
-+	Import from libffi 3.0.8:
-+
-+	* doc/libffi.texi: New file.
-+	* doc/libffi.info: Likewise.
-+	* doc/stamp-vti: Likewise.
-+	* man/Makefile.am: New file.
-+	* man/ffi_call.3: New file.
-+
-+	* Makefile.am (EXTRA_DIST): Add src/x86/darwin64.S,
-+	src/dlmalloc.c.
-+	(nodist_libffi_la_SOURCES): Add X86_FREEBSD.
-+
-+	* configure.ac: Bump version to 3.0.8.
-+	parisc*-*-linux*: Add.
-+	i386-*-freebsd* | i386-*-openbsd*: Add.
-+	powerpc-*-beos*: Add.
-+	AM_CONDITIONAL X86_FREEBSD: Add.
-+	AC_CONFIG_FILES: Add man/Makefile.
-+
-+	* include/ffi.h.in (FFI_FN): Change void (*)() to void (*)(void).
-+
-+2009-06-08  Andrew Haley  <aph@redhat.com>
-+
-+	* README: Import from libffi 3.0.8.
-+
-+2009-06-08  Andrew Haley  <aph@redhat.com>
-+
-+	* testsuite/libffi.call/err_bad_abi.c: Add xfails.
-+	* testsuite/libffi.call/cls_longdouble_va.c: Add xfails.
-+	* testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*.
-+	* testsuite/libffi.call/err_bad_typedef.c: Add xfails.
-+
-+	* testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args.
-+	* testsuite/libffi.call/stret_medium.c: Likewise.
-+	* testsuite/libffi.call/stret_large2.c: Likewise.
-+	* testsuite/libffi.call/stret_large.c:  Likewise.
-+
-+2008-12-26  Timothy Wall  <twall@users.sf.net>
-+
-+	* testsuite/libffi.call/cls_longdouble.c,
-+	testsuite/libffi.call/cls_longdouble_va.c,
-+	testsuite/libffi.call/cls_align_longdouble.c,
-+	testsuite/libffi.call/cls_align_longdouble_split.c,
-+	testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected
-+	failures on x86_64 cygwin/mingw.
-+
-+2008-12-22  Timothy Wall  <twall@users.sf.net>
-+
-+	* testsuite/libffi.call/closure_fn0.c,
-+	testsuite/libffi.call/closure_fn1.c,
-+	testsuite/libffi.call/closure_fn2.c,
-+	testsuite/libffi.call/closure_fn3.c,
-+	testsuite/libffi.call/closure_fn4.c,
-+	testsuite/libffi.call/closure_fn5.c,
-+	testsuite/libffi.call/closure_fn6.c,
-+	testsuite/libffi.call/closure_loc_fn0.c,
-+	testsuite/libffi.call/closure_stdcall.c,
-+	testsuite/libffi.call/cls_align_pointer.c,
-+	testsuite/libffi.call/cls_pointer.c,
-+	testsuite/libffi.call/cls_pointer_stack.c: use portable cast from
-+	pointer to integer (intptr_t).
-+	* testsuite/libffi.call/cls_longdouble.c: disable for win64.
-+
-+2008-07-24  Anthony Green  <green@redhat.com>
-+
-+	* testsuite/libffi.call/cls_dbls_struct.c,
-+	testsuite/libffi.call/cls_double_va.c,
-+	testsuite/libffi.call/cls_longdouble.c,
-+	testsuite/libffi.call/cls_longdouble_va.c,
-+	testsuite/libffi.call/cls_pointer.c,
-+	testsuite/libffi.call/cls_pointer_stack.c,
-+	testsuite/libffi.call/err_bad_abi.c: Clean up failures from
-+	compiler warnings.
-+
-+2008-03-04  Anthony Green  <green@redhat.com>
-+	    Blake Chaffin
-+	    hos@tamanegi.org
-+
-+	* testsuite/libffi.call/cls_align_longdouble_split2.c
-+	  testsuite/libffi.call/cls_align_longdouble_split.c
-+	  testsuite/libffi.call/cls_dbls_struct.c
-+	  testsuite/libffi.call/cls_double_va.c
-+	  testsuite/libffi.call/cls_longdouble.c
-+	  testsuite/libffi.call/cls_longdouble_va.c
-+	  testsuite/libffi.call/cls_pointer.c
-+	  testsuite/libffi.call/cls_pointer_stack.c
-+	  testsuite/libffi.call/err_bad_abi.c
-+	  testsuite/libffi.call/err_bad_typedef.c
-+	  testsuite/libffi.call/stret_large2.c
-+	  testsuite/libffi.call/stret_large.c
-+	  testsuite/libffi.call/stret_medium2.c
-+	  testsuite/libffi.call/stret_medium.c: New tests from Apple.
-+
-+2009-06-05  Andrew Haley  <aph@redhat.com>
-+
-+	* src/x86/ffitarget.h, src/x86/ffi.c: Merge stdcall changes from
-+	libffi.
-+
-+2009-06-04  Andrew Haley  <aph@redhat.com>
-+
-+	* src/x86/ffitarget.h, src/x86/win32.S, src/x86/ffi.c: Back out
-+	stdcall changes.
-+
-+2008-02-26  Anthony Green  <green@redhat.com>
-+	    Thomas Heller  <theller@ctypes.org>
-+
-+	* src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C
-+	comment.
-+
-+2008-02-03  Timothy Wall  <twall@users.sf.net>
-+
-+	* src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return
-+	  offset based on code pointer, not data pointer.
-+
-+2008-01-31  Timothy Wall <twall@users.sf.net>
-+
-+	* testsuite/libffi.call/closure_stdcall.c: Add test for stdcall
-+	closures.
-+	* src/x86/ffitarget.h: Increase size of trampoline for stdcall
-+	closures.
-+	* src/x86/win32.S: Add assembly for stdcall closure.
-+	* src/x86/ffi.c: Initialize stdcall closure trampoline.
-+
-+2009-06-04  Andrew Haley  <aph@redhat.com>
-+
-+	* include/ffi.h.in: Change void (*)() to void (*)(void).
-+	* src/x86/ffi.c: Likewise.
-+
-+2009-06-04  Andrew Haley  <aph@redhat.com>
-+
-+	* src/powerpc/ppc_closure.S: Insert licence header.
-+	* src/powerpc/linux64_closure.S: Likewise.
-+	* src/m68k/sysv.S: Likewise.
-+
-+	* src/sh64/ffi.c: Change void (*)() to void (*)(void).
-+	* src/powerpc/ffi.c: Likewise.
-+	* src/powerpc/ffi_darwin.c: Likewise.
-+	* src/m32r/ffi.c: Likewise.
-+	* src/sh64/ffi.c: Likewise.
-+	* src/x86/ffi64.c: Likewise.
-+	* src/alpha/ffi.c: Likewise.
-+	* src/alpha/osf.S: Likewise.
-+	* src/frv/ffi.c: Likewise.
-+	* src/s390/ffi.c: Likewise.
-+	* src/pa/ffi.c: Likewise.
-+	* src/pa/hpux32.S: Likewise.
-+	* src/ia64/unix.S: Likewise.
-+	* src/ia64/ffi.c: Likewise.
-+	* src/sparc/ffi.c: Likewise.
-+	* src/mips/ffi.c: Likewise.
-+	* src/sh/ffi.c: Likewise.
-+
-+2008-02-15  David Daney  <ddaney@avtrex.com>
-+
-+	* src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE):
-+	Define (conditionally), and use it to include cachectl.h.
-+	(ffi_prep_closure_loc): Fix cache flushing.
-+	* src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define.
-+
-+2009-06-04  Andrew Haley  <aph@redhat.com>
-+
-+	include/ffi.h.in,
-+	src/arm/ffitarget.h,
-+	src/arm/ffi.c,
-+	src/arm/sysv.S,
-+	src/powerpc/ffitarget.h,
-+	src/closures.c,
-+	src/sh64/ffitarget.h,
-+	src/sh64/ffi.c,
-+	src/sh64/sysv.S,
-+	src/types.c,
-+	src/x86/ffi64.c,
-+	src/x86/ffitarget.h,
-+	src/x86/win32.S,
-+	src/x86/darwin.S,
-+	src/x86/ffi.c,
-+	src/x86/sysv.S,
-+	src/x86/unix64.S,
-+	src/alpha/ffitarget.h,
-+	src/alpha/ffi.c,
-+	src/alpha/osf.S,
-+	src/m68k/ffitarget.h,
-+	src/frv/ffitarget.h,
-+	src/frv/ffi.c,
-+	src/s390/ffitarget.h,
-+	src/s390/sysv.S,
-+	src/cris/ffitarget.h,
-+	src/pa/linux.S,
-+	src/pa/ffitarget.h,
-+	src/pa/ffi.c,
-+	src/raw_api.c,
-+	src/ia64/ffitarget.h,
-+	src/ia64/unix.S,
-+	src/ia64/ffi.c,
-+	src/ia64/ia64_flags.h,
-+	src/java_raw_api.c,
-+	src/debug.c,
-+	src/sparc/v9.S,
-+	src/sparc/ffitarget.h,
-+	src/sparc/ffi.c,
-+	src/sparc/v8.S,
-+	src/mips/ffitarget.h,
-+	src/mips/n32.S,
-+	src/mips/o32.S,
-+	src/mips/ffi.c,
-+	src/prep_cif.c,
-+	src/sh/ffitarget.h,
-+	src/sh/ffi.c,
-+	src/sh/sysv.S: Update license text.
-+
-+2009-05-22  Dave Korn  <dave.korn.cygwin@gmail.com>
-+
-+	* src/x86/win32.S (_ffi_closure_STDCALL):  New function.
-+	(.eh_frame):  Add FDE for it.
-+
-+2009-05-22  Dave Korn  <dave.korn.cygwin@gmail.com>
-+
-+	* configure.ac:  Also check if assembler supports pc-relative
-+	relocs on X86_WIN32 targets.
-+	* configure:  Regenerate.
-+	* src/x86/win32.S (ffi_prep_args):  Declare extern, not global.
-+	(_ffi_call_SYSV):  Add missing function type symbol .def and
-+	add EH markup labels.
-+	(_ffi_call_STDCALL):  Likewise.
-+	(_ffi_closure_SYSV):  Likewise.
-+	(_ffi_closure_raw_SYSV):  Likewise.
-+	(.eh_frame):  Add hand-crafted EH data.
-+
-+2009-04-09  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* testsuite/lib/libffi-dg.exp: Change copyright header to refer to
-+	version 3 of the GNU General Public License and to point readers
-+	at the COPYING3 file and the FSF's license web page.
-+	* testsuite/libffi.call/call.exp: Likewise.
-+	* testsuite/libffi.special/special.exp: Likewise.
-+
-+2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
-+
-+	* configure: Regenerate.
-+
-+2008-12-18  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
-+
-+	PR libffi/26048
-+	* configure.ac (HAVE_AS_X86_PCREL): New test.
-+	* configure: Regenerate.
-+	* fficonfig.h.in: Regenerate.
-+	* src/x86/sysv.S [!FFI_NO_RAW_API]: Precalculate
-+	RAW_CLOSURE_CIF_OFFSET, RAW_CLOSURE_FUN_OFFSET,
-+	RAW_CLOSURE_USER_DATA_OFFSET for the Solaris 10/x86 assembler.
-+	(.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL.
-+	* src/x86/unix64.S (.Lstore_table): Move to .text section.
-+	(.Lload_table): Likewise.
-+	(.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL.
-+
-+2008-12-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
-+
-+	* configure: Regenerate.
-+
-+2008-11-21  Eric Botcazou  <ebotcazou@adacore.com>
-+
-+	* src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for
-+	signed/unsigned int8/16 return values.
-+	* src/sparc/v8.S (ffi_call_v8): Likewise.
-+	(ffi_closure_v8): Likewise.
-+
-+2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
-+	    Steve Ellcey  <sje@cup.hp.com>
-+
-+	* configure: Regenerate for new libtool.
-+	* Makefile.in: Ditto.
-+	* include/Makefile.in: Ditto.
-+	* aclocal.m4: Ditto.
-+
-+2008-08-25  Andreas Tobler  <a.tobler@schweiz.org>
-+
-+	* src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and
-+	FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum.
-+	Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT.
-+	Adjust copyright notice.
-+	* src/powerpc/ffi.c: Add two new flags to indicate if we have one
-+	register or two register to use for FFI_SYSV structs.
-+	(ffi_prep_cif_machdep): Pass the right register flag introduced above.
-+	(ffi_closure_helper_SYSV): Fix the return type for
-+	FFI_SYSV_TYPE_SMALL_STRUCT. Comment.
-+	Adjust copyright notice.
-+
-+2008-07-16  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned
-+	int.
-+
-+2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
-+
-+	* configure: Regenerate.
-+	* include/Makefile.in: Regenerate.
-+	* testsuite/Makefile.in: Regenerate.
-+
-+2008-06-07  Joseph Myers  <joseph@codesourcery.com>
-+
-+	* configure.ac (parisc*-*-linux*, powerpc-*-sysv*,
-+	powerpc-*-beos*): Remove.
-+	* configure: Regenerate.
-+
-+2008-05-09  Julian Brown  <julian@codesourcery.com>
-+
-+	* Makefile.am (LTLDFLAGS): New.
-+	(libffi_la_LDFLAGS): Use above.
-+	* Makefile.in: Regenerate.
-+
-+2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
-+
-+	PR bootstrap/35457
-+	* aclocal.m4: Regenerate.
-+	* configure: Regenerate.
-+
-+2008-03-26  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* src/sh/sysv.S: Add .note.GNU-stack on Linux.
-+	* src/sh64/sysv.S: Likewise.
-+
-+2008-03-26  Daniel Jacobowitz  <dan@debian.org>
-+
-+	* src/arm/sysv.S: Fix ARM comment marker.
-+
-+2008-03-26  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* src/alpha/osf.S: Add .note.GNU-stack on Linux.
-+	* src/s390/sysv.S: Likewise.
-+	* src/powerpc/ppc_closure.S: Likewise.
-+	* src/powerpc/sysv.S: Likewise.
-+	* src/x86/unix64.S: Likewise.
-+	* src/x86/sysv.S: Likewise.
-+	* src/sparc/v8.S: Likewise.
-+	* src/sparc/v9.S: Likewise.
-+	* src/m68k/sysv.S: Likewise.
-+	* src/arm/sysv.S: Likewise.
-+
-+2008-03-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
-+
-+	* aclocal.m4: Regenerate.
-+	* configure: Likewise.
-+	* Makefile.in: Likewise.
-+	* include/Makefile.in: Likewise.
-+	* testsuite/Makefile.in: Likewise.
-+
-+2008-02-12  Bjoern Koenig  <bkoenig@alpha-tierchen.de>
-+	    Andreas Tobler  <a.tobler@schweiz.org>
-+
-+	* configure.ac: Add amd64-*-freebsd* target.
-+	* configure: Regenerate.
-+
-+2008-01-30  H.J. Lu  <hongjiu.lu@intel.com>
-+
-+	PR libffi/34612
-+	* src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when
-+	returning struct.
-+
-+	* testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer"
-+	tests.
-+
-+2008-01-24  David Edelsohn  <edelsohn@gnu.org>
-+
-+	* configure: Regenerate.
-+
-+2008-01-06  Andreas Tobler  <a.tobler@schweiz.org>
-+
-+	* src/x86/ffi.c (ffi_prep_cif_machdep): Fix thinko.
-+
-+2008-01-05  Andreas Tobler  <a.tobler@schweiz.org>
-+
-+	PR testsuite/32843
-+	* src/x86/ffi.c (ffi_prep_cif_machdep): Add code for
-+	signed/unsigned int8/16 for X86_DARWIN.
-+	Updated copyright info.
-+	Handle one and two byte structs with special cif->flags.
-+	* src/x86/ffitarget.h: Add special types for one and two byte structs.
-+	Updated copyright info.
-+	* src/x86/darwin.S (ffi_call_SYSV): Rewrite to use a jump table like
-+	sysv.S
-+	Remove code to pop args from the stack after call.
-+	Special-case signed/unsigned for int8/16, one and two byte structs.
-+	(ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8,
-+	FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32,
-+	FFI_TYPE_SINT32.
-+	Updated copyright info.
-+
-+2007-12-08  David Daney  <ddaney@avtrex.com>
-+
-+	* src/mips/n32.S (ffi_call_N32):  Replace dadd with ADDU, dsub with
-+	SUBU, add with ADDU and use smaller code sequences.
-+
-+2007-12-07  David Daney  <ddaney@avtrex.com>
-+
-+	* src/mips/ffi.c (ffi_prep_cif_machdep): Handle long double return
-+	type.
-+
-+2007-12-06  David Daney  <ddaney@avtrex.com>
-+
-+	* include/ffi.h.in (FFI_SIZEOF_JAVA_RAW): Define if not	already
-+	defined.
-+	(ffi_java_raw): New typedef.
-+	(ffi_java_raw_call, ffi_java_ptrarray_to_raw,
-+	ffi_java_raw_to_ptrarray): Change parameter types from ffi_raw to
-+	ffi_java_raw.
-+	(ffi_java_raw_closure) : Same.
-+	(ffi_prep_java_raw_closure, ffi_prep_java_raw_closure_loc): Change
-+	parameter types.
-+	* src/java_raw_api.c (ffi_java_raw_size):  Replace FFI_SIZEOF_ARG with
-+	FFI_SIZEOF_JAVA_RAW.
-+	(ffi_java_raw_to_ptrarray): Change type of raw to ffi_java_raw.
-+	Replace FFI_SIZEOF_ARG with FFI_SIZEOF_JAVA_RAW. Use
-+	sizeof(ffi_java_raw) for alignment calculations.
-+	(ffi_java_ptrarray_to_raw): Same.
-+	(ffi_java_rvalue_to_raw): Add special handling for FFI_TYPE_POINTER
-+	if FFI_SIZEOF_JAVA_RAW == 4.
-+	(ffi_java_raw_to_rvalue): Same.
-+	(ffi_java_raw_call): Change type of raw to ffi_java_raw.
-+	(ffi_java_translate_args): Same.
-+	(ffi_prep_java_raw_closure_loc, ffi_prep_java_raw_closure): Change
-+	parameter types.
-+	* src/mips/ffitarget.h (FFI_SIZEOF_JAVA_RAW): Define for N32 ABI.
-+
-+2007-12-06  David Daney  <ddaney@avtrex.com>
-+
-+	* src/mips/n32.S (ffi_closure_N32): Use 64-bit add instruction on
-+	pointer values.
-+
-+2007-12-01  Andreas Tobler  <a.tobler@schweiz.org>
-+
-+	PR libffi/31937
-+	* src/powerpc/ffitarget.h: Introduce new ABI FFI_LINUX_SOFT_FLOAT.
-+	Add local FFI_TYPE_UINT128 to handle soft-float long-double-128.
-+	* src/powerpc/ffi.c: Distinguish between __NO_FPRS__ and not and
-+	set the NUM_FPR_ARG_REGISTERS according to.
-+	Add support for potential soft-float support under hard-float
-+	architecture.
-+	(ffi_prep_args_SYSV): Set NUM_FPR_ARG_REGISTERS to 0 in case of
-+	FFI_LINUX_SOFT_FLOAT, handle float, doubles and long-doubles according
-+	to the FFI_LINUX_SOFT_FLOAT ABI.
-+	(ffi_prep_cif_machdep): Likewise.
-+	(ffi_closure_helper_SYSV): Likewise.
-+	* src/powerpc/ppc_closure.S: Make sure not to store float/double
-+	on archs where __NO_FPRS__ is true.
-+	Add FFI_TYPE_UINT128 support.
-+	* src/powerpc/sysv.S: Add support for soft-float long-double-128.
-+	Adjust copyright notice.
-+
-+2007-11-25  Andreas Tobler  <a.tobler@schweiz.org>
-+
-+	* src/closures.c: Move defintion of MAYBE_UNUSED from here to ...
-+	* include/ffi_common.h: ... here.
-+	Update copyright.
-+
-+2007-11-17  Andreas Tobler  <a.tobler@schweiz.org>
-+
-+	* src/powerpc/sysv.S: Load correct cr to compare if we have long double.
-+	* src/powerpc/linux64.S: Likewise.
-+	* src/powerpc/ffi.c: Add a comment to show which part goes into cr6.
-+	* testsuite/libffi.call/return_ldl.c: New test.
-+
-+2007-09-04    <aph@redhat.com>
-+
-+	* src/arm/sysv.S (UNWIND): New.
-+	(Whole file): Conditionally compile unwinder directives.
-+	* src/arm/sysv.S: Add unwinder directives.
-+
-+	* src/arm/ffi.c (ffi_prep_args): Align structs by at least 4 bytes.
-+	Only treat r0 as a struct address if we're actually returning a
-+	struct by address.
-+	Only copy the bytes that are actually within a struct.
-+	(ffi_prep_cif_machdep): A Composite Type not larger than 4 bytes
-+	is returned in r0, not passed by address.
-+	(ffi_call): Allocate a word-sized temporary for the case where
-+	a composite is returned in r0.
-+	(ffi_prep_incoming_args_SYSV): Align as necessary.
-+
-+2007-08-05  Steven Newbury  <s_j_newbury@yahoo.co.uk>
-+
-+	* src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of
-+	directly using the sys_cacheflush syscall.
-+
-+2007-07-27  Andrew Haley  <aph@redhat.com>
-+
-+	* src/arm/sysv.S (ffi_closure_SYSV): Add soft-float.
-+
-+2007-09-03  Maciej W. Rozycki  <macro@linux-mips.org>
-+
-+	* Makefile.am: Unify MIPS_IRIX and MIPS_LINUX into MIPS.
-+	* configure.ac: Likewise.
-+	* Makefile.in: Regenerate.
-+	* include/Makefile.in: Likewise.
-+	* testsuite/Makefile.in: Likewise.
-+	* configure: Likewise.
-+
-+2007-08-24  David Daney  <ddaney@avtrex.com>
-+
-+	* testsuite/libffi.call/return_sl.c: New test.
-+
-+2007-08-10  David Daney  <ddaney@avtrex.com>
-+
-+	* testsuite/libffi.call/cls_multi_ushort.c,
-+	testsuite/libffi.call/cls_align_uint16.c,
-+	testsuite/libffi.call/nested_struct1.c,
-+	testsuite/libffi.call/nested_struct3.c,
-+	testsuite/libffi.call/cls_7_1_byte.c,
-+	testsuite/libffi.call/nested_struct5.c,
-+	testsuite/libffi.call/cls_double.c,
-+	testsuite/libffi.call/nested_struct7.c,
-+	testsuite/libffi.call/cls_sint.c,
-+	testsuite/libffi.call/nested_struct9.c,
-+	testsuite/libffi.call/cls_20byte1.c,
-+	testsuite/libffi.call/cls_multi_sshortchar.c,
-+	testsuite/libffi.call/cls_align_sint64.c,
-+	testsuite/libffi.call/cls_3byte2.c,
-+	testsuite/libffi.call/cls_multi_schar.c,
-+	testsuite/libffi.call/cls_multi_uchar.c,
-+	testsuite/libffi.call/cls_19byte.c,
-+	testsuite/libffi.call/cls_9byte1.c,
-+	testsuite/libffi.call/cls_align_float.c,
-+	testsuite/libffi.call/closure_fn1.c,
-+	testsuite/libffi.call/problem1.c,
-+	testsuite/libffi.call/closure_fn3.c,
-+	testsuite/libffi.call/cls_sshort.c,
-+	testsuite/libffi.call/closure_fn5.c,
-+	testsuite/libffi.call/cls_align_double.c,
-+	testsuite/libffi.call/nested_struct.c,
-+	testsuite/libffi.call/cls_2byte.c,
-+	testsuite/libffi.call/nested_struct10.c,
-+	testsuite/libffi.call/cls_4byte.c,
-+	testsuite/libffi.call/cls_6byte.c,
-+	testsuite/libffi.call/cls_8byte.c,
-+	testsuite/libffi.call/cls_multi_sshort.c,
-+	testsuite/libffi.call/cls_align_sint16.c,
-+	testsuite/libffi.call/cls_align_uint32.c,
-+	testsuite/libffi.call/cls_20byte.c,
-+	testsuite/libffi.call/cls_float.c,
-+	testsuite/libffi.call/nested_struct2.c,
-+	testsuite/libffi.call/cls_5_1_byte.c,
-+	testsuite/libffi.call/nested_struct4.c,
-+	testsuite/libffi.call/cls_24byte.c,
-+	testsuite/libffi.call/nested_struct6.c,
-+	testsuite/libffi.call/cls_64byte.c,
-+	testsuite/libffi.call/nested_struct8.c,
-+	testsuite/libffi.call/cls_uint.c,
-+	testsuite/libffi.call/cls_multi_ushortchar.c,
-+	testsuite/libffi.call/cls_schar.c,
-+	testsuite/libffi.call/cls_uchar.c,
-+	testsuite/libffi.call/cls_align_uint64.c,
-+	testsuite/libffi.call/cls_ulonglong.c,
-+	testsuite/libffi.call/cls_align_longdouble.c,
-+	testsuite/libffi.call/cls_1_1byte.c,
-+	testsuite/libffi.call/cls_12byte.c,
-+	testsuite/libffi.call/cls_3_1byte.c,
-+	testsuite/libffi.call/cls_3byte1.c,
-+	testsuite/libffi.call/cls_4_1byte.c,
-+	testsuite/libffi.call/cls_6_1_byte.c,
-+	testsuite/libffi.call/cls_16byte.c,
-+	testsuite/libffi.call/cls_18byte.c,
-+	testsuite/libffi.call/closure_fn0.c,
-+	testsuite/libffi.call/cls_9byte2.c,
-+	testsuite/libffi.call/closure_fn2.c,
-+	testsuite/libffi.call/closure_fn4.c,
-+	testsuite/libffi.call/cls_ushort.c,
-+	testsuite/libffi.call/closure_fn6.c,
-+	testsuite/libffi.call/cls_5byte.c,
-+	testsuite/libffi.call/cls_align_pointer.c,
-+	testsuite/libffi.call/cls_7byte.c,
-+	testsuite/libffi.call/cls_align_sint32.c,
-+	testsuite/libffi.special/unwindtest_ffi_call.cc,
-+	testsuite/libffi.special/unwindtest.cc: Remove xfail for mips64*-*-*.
-+
-+2007-08-10  David Daney  <ddaney@avtrex.com>
-+
-+	PR libffi/28313
-+	* configure.ac: Don't treat mips64 as a special case.
-+	* Makefile.am (nodist_libffi_la_SOURCES): Add n32.S.
-+	* configure: Regenerate
-+	* Makefile.in: Ditto.
-+	* fficonfig.h.in: Ditto.
-+	* src/mips/ffitarget.h (REG_L, REG_S, SUBU, ADDU, SRL, LI): Indent.
-+	(LA, EH_FRAME_ALIGN, FDE_ADDR_BYTES): New preprocessor macros.
-+	(FFI_DEFAULT_ABI): Set for n64 case.
-+	(FFI_CLOSURES, FFI_TRAMPOLINE_SIZE): Define for n32 and n64 cases.
-+	* src/mips/n32.S (ffi_call_N32): Add debug macros and labels for FDE.
-+	(ffi_closure_N32): New function.
-+	(.eh_frame): New section
-+	* src/mips/o32.S: Clean up comments.
-+	(ffi_closure_O32): Pass ffi_closure parameter in $12.
-+	* src/mips/ffi.c: Use FFI_MIPS_N32 instead of
-+	_MIPS_SIM == _ABIN32 throughout.
-+	(FFI_MIPS_STOP_HERE): New, use in place of
-+	ffi_stop_here.
-+	(ffi_prep_args): Use unsigned long to hold pointer values.  Rewrite
-+	to support n32/n64 ABIs.
-+	(calc_n32_struct_flags): Rewrite.
-+	(calc_n32_return_struct_flags): Remove unused variable.  Reverse
-+	position of flag bits.
-+	(ffi_prep_cif_machdep): Rewrite n32 portion.
-+	(ffi_call): Enable for n64.  Add special handling for small structure
-+	return values.
-+	(ffi_prep_closure_loc): Add n32 and n64 support.
-+	(ffi_closure_mips_inner_O32): Add cast to silence warning.
-+	(copy_struct_N32, ffi_closure_mips_inner_N32): New functions.
-+
-+2007-08-08  David Daney  <ddaney@avtrex.com>
-+
-+	* testsuite/libffi.call/ffitest.h (ffi_type_mylong): Remove definition.
-+	* testsuite/libffi.call/cls_align_uint16.c (main): Use correct type
-+	specifiers.
-+	* testsuite/libffi.call/nested_struct1.c (main): Ditto.
-+	* testsuite/libffi.call/cls_sint.c (main): Ditto.
-+	* testsuite/libffi.call/nested_struct9.c (main): Ditto.
-+	* testsuite/libffi.call/cls_20byte1.c (main): Ditto.
-+	* testsuite/libffi.call/cls_9byte1.c (main): Ditto.
-+	* testsuite/libffi.call/closure_fn1.c (main): Ditto.
-+	* testsuite/libffi.call/closure_fn3.c (main): Ditto.
-+	* testsuite/libffi.call/return_dbl2.c (main): Ditto.
-+	* testsuite/libffi.call/cls_sshort.c (main): Ditto.
-+	* testsuite/libffi.call/return_fl3.c (main): Ditto.
-+	* testsuite/libffi.call/closure_fn5.c (main): Ditto.
-+	* testsuite/libffi.call/nested_struct.c (main): Ditto.
-+	* testsuite/libffi.call/nested_struct10.c (main): Ditto.
-+	* testsuite/libffi.call/return_ll1.c (main): Ditto.
-+	* testsuite/libffi.call/cls_8byte.c (main): Ditto.
-+	* testsuite/libffi.call/cls_align_uint32.c (main): Ditto.
-+	* testsuite/libffi.call/cls_align_sint16.c (main): Ditto.
-+	* testsuite/libffi.call/cls_20byte.c (main): Ditto.
-+	* testsuite/libffi.call/nested_struct2.c (main): Ditto.
-+	* testsuite/libffi.call/cls_24byte.c (main): Ditto.
-+	* testsuite/libffi.call/nested_struct6.c (main): Ditto.
-+	* testsuite/libffi.call/cls_uint.c (main): Ditto.
-+	* testsuite/libffi.call/cls_12byte.c (main): Ditto.
-+	* testsuite/libffi.call/cls_16byte.c (main): Ditto.
-+	* testsuite/libffi.call/closure_fn0.c (main): Ditto.
-+	* testsuite/libffi.call/cls_9byte2.c (main): Ditto.
-+	* testsuite/libffi.call/closure_fn2.c (main): Ditto.
-+	* testsuite/libffi.call/return_dbl1.c (main): Ditto.
-+	* testsuite/libffi.call/closure_fn4.c (main): Ditto.
-+	* testsuite/libffi.call/closure_fn6.c (main): Ditto.
-+	* testsuite/libffi.call/cls_align_sint32.c (main): Ditto.
-+
-+2007-08-07  Andrew Haley  <aph@redhat.com>
-+
-+	* src/x86/sysv.S (ffi_closure_raw_SYSV): Fix typo in previous
-+	checkin.
-+
-+2007-08-06  Andrew Haley  <aph@redhat.com>
-+
-+	PR testsuite/32843
-+	* src/x86/sysv.S (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8,
-+	FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32,
-+	FFI_TYPE_SINT32.
-+
-+2007-08-02  David Daney  <ddaney@avtrex.com>
-+
-+	* testsuite/libffi.call/return_ul.c (main): Define return type as
-+	ffi_arg.  Use proper printf conversion specifier.
-+
-+2007-07-30  Andrew Haley  <aph@redhat.com>
-+
-+	PR testsuite/32843
-+	* src/x86/ffi.c (ffi_prep_cif_machdep): in x86 case, add code for
-+	signed/unsigned int8/16.
-+	* src/x86/sysv.S (ffi_call_SYSV): Rewrite to:
-+	Use a jump table.
-+	Remove code to pop args from the stack after call.
-+	Special-case signed/unsigned int8/16.
-+	* testsuite/libffi.call/return_sc.c (main): Revert.
-+
-+2007-07-26  Richard Guenther  <rguenther@suse.de>
-+
-+	PR testsuite/32843
-+	* testsuite/libffi.call/return_sc.c (main): Verify call
-+	result as signed char, not ffi_arg.
-+
-+2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
-+
-+	* configure.ac (i?86-*-solaris2.1[0-9]): Set TARGET to X86_64.
-+	* configure: Regenerate.
-+
-+2007-07-11  David Daney  <ddaney@avtrex.com>
-+
-+	* src/mips/ffi.c: Don't include sys/cachectl.h.
-+	(ffi_prep_closure_loc): Use __builtin___clear_cache() instead of
-+	cacheflush().
-+
-+2007-05-18  Aurelien Jarno  <aurelien@aurel32.net>
-+
-+	* src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted
-+	from (ffi_prep_closure): ... this.
-+	(FFI_INIT_TRAMPOLINE): Adjust.
-+
-+2005-12-31  Phil Blundell  <pb@reciva.com>
-+
-+	* src/arm/ffi.c (ffi_prep_incoming_args_SYSV,
-+	ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support.
-+	* src/arm/sysv.S(ffi_closure_SYSV): Likewise.
-+	* src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
-+	(FFI_CLOSURES): Enable closure support.
-+
-+2007-07-03  Andrew Haley  <aph@hedges.billgatliff.com>
-+
-+	* testsuite/libffi.call/cls_multi_ushort.c,
-+	testsuite/libffi.call/cls_align_uint16.c,
-+	testsuite/libffi.call/nested_struct1.c,
-+	testsuite/libffi.call/nested_struct3.c,
-+	testsuite/libffi.call/cls_7_1_byte.c,
-+	testsuite/libffi.call/cls_double.c,
-+	testsuite/libffi.call/nested_struct5.c,
-+	testsuite/libffi.call/nested_struct7.c,
-+	testsuite/libffi.call/cls_sint.c,
-+	testsuite/libffi.call/nested_struct9.c,
-+	testsuite/libffi.call/cls_20byte1.c,
-+	testsuite/libffi.call/cls_multi_sshortchar.c,
-+	testsuite/libffi.call/cls_align_sint64.c,
-+	testsuite/libffi.call/cls_3byte2.c,
-+	testsuite/libffi.call/cls_multi_schar.c,
-+	testsuite/libffi.call/cls_multi_uchar.c,
-+	testsuite/libffi.call/cls_19byte.c,
-+	testsuite/libffi.call/cls_9byte1.c,
-+	testsuite/libffi.call/cls_align_float.c,
-+	testsuite/libffi.call/closure_fn1.c,
-+	testsuite/libffi.call/problem1.c,
-+	testsuite/libffi.call/closure_fn3.c,
-+	testsuite/libffi.call/cls_sshort.c,
-+	testsuite/libffi.call/closure_fn5.c,
-+	testsuite/libffi.call/cls_align_double.c,
-+	testsuite/libffi.call/cls_2byte.c,
-+	testsuite/libffi.call/nested_struct.c,
-+	testsuite/libffi.call/nested_struct10.c,
-+	testsuite/libffi.call/cls_4byte.c,
-+	testsuite/libffi.call/cls_6byte.c,
-+	testsuite/libffi.call/cls_8byte.c,
-+	testsuite/libffi.call/cls_multi_sshort.c,
-+	testsuite/libffi.call/cls_align_uint32.c,
-+	testsuite/libffi.call/cls_align_sint16.c,
-+	testsuite/libffi.call/cls_float.c,
-+	testsuite/libffi.call/cls_20byte.c,
-+	testsuite/libffi.call/cls_5_1_byte.c,
-+	testsuite/libffi.call/nested_struct2.c,
-+	testsuite/libffi.call/cls_24byte.c,
-+	testsuite/libffi.call/nested_struct4.c,
-+	testsuite/libffi.call/nested_struct6.c,
-+	testsuite/libffi.call/cls_64byte.c,
-+	testsuite/libffi.call/nested_struct8.c,
-+	testsuite/libffi.call/cls_uint.c,
-+	testsuite/libffi.call/cls_multi_ushortchar.c,
-+	testsuite/libffi.call/cls_schar.c,
-+	testsuite/libffi.call/cls_uchar.c,
-+	testsuite/libffi.call/cls_align_uint64.c,
-+	testsuite/libffi.call/cls_ulonglong.c,
-+	testsuite/libffi.call/cls_align_longdouble.c,
-+	testsuite/libffi.call/cls_1_1byte.c,
-+	testsuite/libffi.call/cls_12byte.c,
-+	testsuite/libffi.call/cls_3_1byte.c,
-+	testsuite/libffi.call/cls_3byte1.c,
-+	testsuite/libffi.call/cls_4_1byte.c,
-+	testsuite/libffi.call/cls_6_1_byte.c,
-+	testsuite/libffi.call/cls_16byte.c,
-+	testsuite/libffi.call/cls_18byte.c,
-+	testsuite/libffi.call/closure_fn0.c,
-+	testsuite/libffi.call/cls_9byte2.c,
-+	testsuite/libffi.call/closure_fn2.c,
-+	testsuite/libffi.call/closure_fn4.c,
-+	testsuite/libffi.call/cls_ushort.c,
-+	testsuite/libffi.call/closure_fn6.c,
-+	testsuite/libffi.call/cls_5byte.c,
-+	testsuite/libffi.call/cls_align_pointer.c,
-+	testsuite/libffi.call/cls_7byte.c,
-+	testsuite/libffi.call/cls_align_sint32.c,
-+	testsuite/libffi.special/unwindtest_ffi_call.cc,
-+	testsuite/libffi.special/unwindtest.cc: Enable for ARM.
-+
-+2007-07-05  H.J. Lu  <hongjiu.lu@intel.com>
-+
-+	* aclocal.m4: Regenerated.
-+
-+2007-06-02  Paolo Bonzini  <bonzini@gnu.org>
-+
-+	* configure: Regenerate.
-+
-+2007-05-23  Steve Ellcey  <sje@cup.hp.com>
-+
-+	* Makefile.in: Regenerate.
-+	* configure: Regenerate.
-+	* aclocal.m4: Regenerate.
-+	* include/Makefile.in: Regenerate.
-+	* testsuite/Makefile.in: Regenerate.
-+
-+2007-05-10  Roman Zippel <zippel@linux-m68k.org>
-+
-+	* src/m68k/ffi.c (ffi_prep_incoming_args_SYSV,
-+	ffi_closure_SYSV_inner,ffi_prep_closure): New, add closure support.
-+	* src/m68k/sysv.S(ffi_closure_SYSV,ffi_closure_struct_SYSV): Likewise.
-+	* src/m68k/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
-+	(FFI_CLOSURES): Enable closure support.
-+
-+2007-05-10  Roman Zippel <zippel@linux-m68k.org>
-+
-+	* configure.ac (HAVE_AS_CFI_PSEUDO_OP): New test.
-+	* configure: Regenerate.
-+	* fficonfig.h.in: Regenerate.
-+	* src/m68k/sysv.S (CFI_STARTPROC,CFI_ENDPROC,
-+	CFI_OFFSET,CFI_DEF_CFA): New macros.
-+	(ffi_call_SYSV): Add callframe annotation.
-+
-+2007-05-10  Roman Zippel <zippel@linux-m68k.org>
-+
-+	* src/m68k/ffi.c (ffi_prep_args,ffi_prep_cif_machdep): Fix
-+	numerous test suite failures.
-+	* src/m68k/sysv.S (ffi_call_SYSV): Likewise.
-+
-+2007-04-11  Paolo Bonzini  <bonzini@gnu.org>
-+
-+	* Makefile.am (EXTRA_DIST): Bring up to date.
-+	* Makefile.in: Regenerate.
-+	* src/frv/eabi.S: Remove RCS keyword.
-+
-+2007-04-06  Richard Henderson  <rth@redhat.com>
-+
-+	* configure.ac: Tidy target case.
-+	(HAVE_LONG_DOUBLE): Allow the target to override.
-+	* configure: Regenerate.
-+	* include/ffi.h.in: Don't define ffi_type_foo if
-+	LIBFFI_HIDE_BASIC_TYPES is defined.
-+	(ffi_type_longdouble): If not HAVE_LONG_DOUBLE, define
-+	to ffi_type_double.
-+	* types.c (LIBFFI_HIDE_BASIC_TYPES): Define.
-+	(FFI_TYPEDEF, ffi_type_void): Mark the data const.
-+	(ffi_type_longdouble): Special case for Alpha.  Don't define
-+	if long double == double.
-+
-+	* src/alpha/ffi.c (FFI_TYPE_LONGDOUBLE): Assert unique value.
-+	(ffi_prep_cif_machdep): Handle it as the 128-bit type.
-+	(ffi_call, ffi_closure_osf_inner): Likewise.
-+	(ffi_closure_osf_inner): Likewise.  Mark hidden.
-+	(ffi_call_osf, ffi_closure_osf): Mark hidden.
-+	* src/alpha/ffitarget.h (FFI_LAST_ABI): Tidy definition.
-+	* src/alpha/osf.S (ffi_call_osf, ffi_closure_osf): Mark hidden.
-+	(load_table): Handle 128-bit long double.
-+
-+	* testsuite/libffi.call/float4.c: Add -mieee for alpha.
-+
-+2007-04-06  Tom Tromey  <tromey@redhat.com>
-+
-+	PR libffi/31491:
-+	* README: Fixed bug in example.
-+
-+2007-04-03  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* src/closures.c: Include sys/statfs.h.
-+	(_GNU_SOURCE): Define on Linux.
-+	(FFI_MMAP_EXEC_SELINUX): Define.
-+	(selinux_enabled): New variable.
-+	(selinux_enabled_check): New function.
-+	(is_selinux_enabled): Define.
-+	(dlmmap): Use it.
-+
-+2007-03-24  Uros Bizjak  <ubizjak@gmail.com>
-+
-+	* testsuite/libffi.call/return_fl2.c (return_fl): Mark as static.
-+	Use 'volatile float sum' to create sum of floats to avoid false
-+	negative due to excess precision on ix86 targets.
-+	(main): Ditto.
-+
-+2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
-+
-+	* src/powerpc/ffi.c (flush_icache): Fix left-over from previous
-+	patch.
-+	(ffi_prep_closure_loc): Remove unneeded casts.  Add needed ones.
-+
-+2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
-+
-+	* include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New.
-+	(ffi_prep_closure_loc): New.
-+	(ffi_prep_raw_closure_loc): New.
-+	(ffi_prep_java_raw_closure_loc): New.
-+	* src/closures.c: New file.
-+	* src/dlmalloc.c [FFI_MMAP_EXEC_WRIT] (struct malloc_segment):
-+	Replace sflags with exec_offset.
-+	[FFI_MMAP_EXEC_WRIT] (mmap_exec_offset, add_segment_exec_offset,
-+	sub_segment_exec_offset): New macros.
-+	(get_segment_flags, set_segment_flags, check_segment_merge): New
-+	macros.
-+	(is_mmapped_segment, is_extern_segment): Use get_segment_flags.
-+	(add_segment, sys_alloc, create_mspace, create_mspace_with_base,
-+	destroy_mspace): Use new macros.
-+	(sys_alloc): Silence warning.
-+	* Makefile.am (libffi_la_SOURCES): Add src/closures.c.
-+	* Makefile.in: Rebuilt.
-+	* src/prep_cif [FFI_CLOSURES] (ffi_prep_closure): Implement in
-+	terms of ffi_prep_closure_loc.
-+	* src/raw_api.c (ffi_prep_raw_closure_loc): Renamed and adjusted
-+	from...
-+	(ffi_prep_raw_closure): ... this.  Re-implement in terms of the
-+	renamed version.
-+	* src/java_raw_api (ffi_prep_java_raw_closure_loc): Renamed and
-+	adjusted from...
-+	(ffi_prep_java_raw_closure): ... this.  Re-implement in terms of
-+	the renamed version.
-+	* src/alpha/ffi.c (ffi_prep_closure_loc): Renamed from
-+	(ffi_prep_closure): ... this.
-+	* src/pa/ffi.c: Likewise.
-+	* src/cris/ffi.c: Likewise.  Adjust.
-+	* src/frv/ffi.c: Likewise.
-+	* src/ia64/ffi.c: Likewise.
-+	* src/mips/ffi.c: Likewise.
-+	* src/powerpc/ffi_darwin.c: Likewise.
-+	* src/s390/ffi.c: Likewise.
-+	* src/sh/ffi.c: Likewise.
-+	* src/sh64/ffi.c: Likewise.
-+	* src/sparc/ffi.c: Likewise.
-+	* src/x86/ffi64.c: Likewise.
-+	* src/x86/ffi.c: Likewise.
-+	(FFI_INIT_TRAMPOLINE): Adjust.
-+	(ffi_prep_raw_closure_loc): Renamed and adjusted from...
-+	(ffi_prep_raw_closure): ... this.
-+	* src/powerpc/ffi.c (ffi_prep_closure_loc): Renamed from
-+	(ffi_prep_closure): ... this.
-+	(flush_icache): Adjust.
-+
-+2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
-+
-+	* src/dlmalloc.c: New file, imported version 2.8.3 of Doug
-+	Lea's malloc.
-+
-+2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
-+
-+	* Makefile.am: Add dummy install-pdf target.
-+	* Makefile.in: Regenerate
-+
-+2007-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
-+
-+	* src/s390/ffi.c (ffi_prep_args, ffi_prep_cif_machdep,
-+	ffi_closure_helper_SYSV): Add long double handling.
-+
-+2007-02-02  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* src/powerpc/linux64.S (ffi_call_LINUX64): Move restore of r2
-+	immediately after bctrl instruction.
-+
-+2007-01-18  Alexandre Oliva  <aoliva@redhat.com>
-+
-+	* Makefile.am (all-recursive, install-recursive,
-+	mostlyclean-recursive, clean-recursive, distclean-recursive,
-+	maintainer-clean-recursive): Add missing targets.
-+	* Makefile.in: Rebuilt.
-+
-+2006-12-14  Andreas Tobler  <a.tobler@schweiz.org>
-+
-+	* configure.ac: Add TARGET for x86_64-*-darwin*.
-+	* Makefile.am (nodist_libffi_la_SOURCES): Add rules for 64-bit sources
-+	for X86_DARWIN.
-+	* src/x86/ffitarget.h: Set trampoline size for x86_64-*-darwin*.
-+	* src/x86/darwin64.S: New file for x86_64-*-darwin* support.
-+	* configure: Regenerate.
-+	* Makefile.in: Regenerate.
-+	* include/Makefile.in: Regenerate.
-+	* testsuite/Makefile.in: Regenerate.
-+	* testsuite/libffi.special/unwindtest_ffi_call.cc: New test case for
-+	ffi_call only.
-+
-+2006-12-13  Andreas Tobler <a.tobler@schweiz.org>
-+
-+	* aclocal.m4: Regenerate with aclocal -I .. as written in the
-+	Makefile.am.
-+
-+2006-10-31  Geoffrey Keating  <geoffk@apple.com>
-+
-+	* src/powerpc/ffi_darwin.c (darwin_adjust_aggregate_sizes): New.
-+	(ffi_prep_cif_machdep): Call darwin_adjust_aggregate_sizes for
-+	Darwin.
-+	* testsuite/libffi.call/nested_struct4.c: Remove Darwin XFAIL.
-+	* testsuite/libffi.call/nested_struct6.c: Remove Darwin XFAIL.
-+
-+2006-10-10  Paolo Bonzini  <bonzini@gnu.org>
-+	    Sandro Tolaini  <tolaini@libero.it>
-+
-+	* configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and
-+	conditional.
-+	* configure: Regenerated.
-+	* Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case.
-+	(EXTRA_DIST): Add src/x86/darwin.S.
-+	* Makefile.in: Regenerated.
-+	* include/Makefile.in: Regenerated.
-+	* testsuite/Makefile.in: Regenerated.
-+
-+	* src/x86/ffi.c (ffi_prep_cif_machdep) [X86_DARWIN]: Treat like
-+	X86_WIN32, and additionally align stack to 16 bytes.
-+	* src/x86/darwin.S: New, based on sysv.S.
-+	* src/prep_cif.c (ffi_prep_cif) [X86_DARWIN]: Align > 8-byte structs.
-+
-+2006-09-12  David Daney  <ddaney@avtrex.com>
-+
-+	PR libffi/23935
-+	* include/Makefile.am: Install both ffi.h and ffitarget.h in
-+	$(libdir)/gcc/$(target_alias)/$(gcc_version)/include.
-+	* aclocal.m4: Regenerated for automake 1.9.6.
-+	* Makefile.in: Regenerated.
-+	* include/Makefile.in: Regenerated.
-+	* testsuite/Makefile.in: Regenerated.
-+
-+2006-08-17  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* include/ffi_common.h (struct): Revert accidental commit.
-+
-+2006-08-15  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* include/ffi_common.h: Remove lint directives.
-+	* include/ffi.h.in: Likewise.
-+
-+2006-07-25  Torsten Schoenfeld  <kaffeetisch@gmx.de>
-+
-+	* include/ffi.h.in (ffi_type_ulong, ffi_type_slong): Define correctly
-+	for 32-bit architectures.
-+	* testsuite/libffi.call/return_ul.c: New test case.
-+
-+2006-07-19  David Daney  <ddaney@avtrex.com>
-+
-+	* testsuite/libffi.call/closure_fn6.c: Remove xfail for mips,
-+	xfail remains for mips64.
-+
-+2006-05-23  Carlos O'Donell  <carlos@codesourcery.com>
-+
-+	* Makefile.am: Add install-html target. Add install-html to .PHONY
-+	* Makefile.in: Regenerate.
-+	* aclocal.m4: Regenerate.
-+	* include/Makefile.in: Regenerate.
-+	* testsuite/Makefile.in: Regenerate.
-+
-+2006-05-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+	* pa/ffi.c (ffi_prep_args_pa32): Load floating point arguments from
-+	stack slot.
-+
-+2006-04-22  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* README: Remove notice about 'Crazy Comments'.
-+	* src/debug.c: Remove lint directives. Cleanup white spaces.
-+	* src/java_raw_api.c: Likewise.
-+	* src/prep_cif.c: Likewise.
-+	* src/raw_api.c: Likewise.
-+	* src/ffitest.c: Delete. No longer needed, all test cases migrated
-+	to the testsuite.
-+	* src/arm/ffi.c: Remove lint directives.
-+	* src/m32r/ffi.c: Likewise.
-+	* src/pa/ffi.c: Likewise.
-+	* src/powerpc/ffi.c: Likewise.
-+	* src/powerpc/ffi_darwin.c: Likewise.
-+	* src/sh/ffi.c: Likewise.
-+	* src/sh64/ffi.c: Likewise.
-+	* src/x86/ffi.c: Likewise.
-+	* testsuite/libffi.call/float2.c: Likewise.
-+	* testsuite/libffi.call/promotion.c: Likewise.
-+	* testsuite/libffi.call/struct1.c: Likewise.
-+
-+2006-04-13  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* src/pa/hpux32.S: Correct unwind offset calculation for
-+	ffi_closure_pa32.
-+	* src/pa/linux.S: Likewise.
-+
-+2006-04-12  James E Wilson  <wilson@specifix.com>
-+
-+	PR libgcj/26483
-+	* src/ia64/ffi.c (stf_spill, ldf_fill): Rewrite as macros.
-+	(hfa_type_load): Call stf_spill.
-+	(hfa_type_store): Call ldf_fill.
-+	(ffi_call): Adjust calls to above routines.  Add local temps for
-+	macro result.
-+
-+2006-04-10  Matthias Klose  <doko@debian.org>
-+
-+	* testsuite/lib/libffi-dg.exp (libffi-init): Recognize multilib
-+	directory names containing underscores.
-+
-+2006-04-07  James E Wilson  <wilson@specifix.com>
-+
-+	* testsuite/libffi.call/float4.c: New testcase.
-+
-+2006-04-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+	    Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* Makefile.am: Add PA_HPUX port.
-+	* Makefile.in: Regenerate.
-+	* include/Makefile.in: Likewise.
-+	* testsuite/Makefile.in: Likewise.
-+	* configure.ac: Add PA_HPUX rules.
-+	* configure: Regenerate.
-+	* src/pa/ffitarget.h: Rename linux target to PA_LINUX.
-+	Add PA_HPUX and PA64_HPUX.
-+	Rename FFI_LINUX ABI to FFI_PA32 ABI.
-+	(FFI_TRAMPOLINE_SIZE): Define for 32-bit HP-UX targets.
-+	(FFI_TYPE_SMALL_STRUCT2): Define.
-+	(FFI_TYPE_SMALL_STRUCT4): Likewise.
-+	(FFI_TYPE_SMALL_STRUCT8): Likewise.
-+	(FFI_TYPE_SMALL_STRUCT3): Redefine.
-+	(FFI_TYPE_SMALL_STRUCT5): Likewise.
-+	(FFI_TYPE_SMALL_STRUCT6): Likewise.
-+	(FFI_TYPE_SMALL_STRUCT7): Likewise.
-+	* src/pa/ffi.c (ROUND_DOWN): Delete.
-+	(fldw, fstw, fldd, fstd): Use '__asm__'.
-+	(ffi_struct_type): Add support for FFI_TYPE_SMALL_STRUCT2,
-+	FFI_TYPE_SMALL_STRUCT4 and FFI_TYPE_SMALL_STRUCT8.
-+	(ffi_prep_args_LINUX): Rename to ffi_prep_args_pa32. Update comment.
-+	Simplify incrementing of stack slot variable. Change type of local
-+	'n' to unsigned int.
-+	(ffi_size_stack_LINUX): Rename to ffi_size_stack_pa32. Handle long
-+	double on PA_HPUX.
-+	(ffi_prep_cif_machdep): Likewise.
-+	(ffi_call): Likewise.
-+	(ffi_closure_inner_LINUX): Rename to ffi_closure_inner_pa32. Change
-+	return type to ffi_status. Simplify incrementing of stack slot
-+	variable. Only copy floating point argument registers when PA_LINUX
-+	is true. Reformat debug statement.
-+	Add support for FFI_TYPE_SMALL_STRUCT2, FFI_TYPE_SMALL_STRUCT4 and
-+	FFI_TYPE_SMALL_STRUCT8.
-+	(ffi_closure_LINUX): Rename to ffi_closure_pa32. Add 'extern' to
-+	declaration.
-+	(ffi_prep_closure): Make linux trampoline conditional on PA_LINUX.
-+	Add nops to cache flush.  Add trampoline for PA_HPUX.
-+	* src/pa/hpux32.S: New file.
-+	* src/pa/linux.S (ffi_call_LINUX): Rename to ffi_call_pa32. Rename
-+	ffi_prep_args_LINUX to ffi_prep_args_pa32.
-+	Localize labels. Add support for 2, 4 and 8-byte small structs. Handle
-+	unaligned destinations in 3, 5, 6 and 7-byte small structs. Order
-+	argument type checks so that common argument types appear first.
-+	(ffi_closure_LINUX): Rename to ffi_closure_pa32. Rename
-+	ffi_closure_inner_LINUX to ffi_closure_inner_pa32.
-+
-+2006-03-24  Alan Modra  <amodra@bigpond.net.au>
-+
-+	* src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX.  Default
-+	for 32-bit using IBM extended double format.  Fix FFI_LAST_ABI.
-+	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of
-+	FFI_TYPE_LONGDOUBLE.
-+	(ffi_prep_args64): Assert using IBM extended double.
-+	(ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type.
-+	Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args.
-+	(ffi_call): Handle FFI_LINUX.
-+	(ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs
-+	gpr3 return pointer as for struct return.  Handle FFI_LINUX
-+	FFI_TYPE_LONGDOUBLE return and args.  Don't increment "nf"
-+	unnecessarily.
-+	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2
-+	for FFI_TYPE_LONGDOUBLE.  Move epilogue insns into case table.
-+	Don't use r6 as pointer to results, instead use sp offset.  Don't
-+	make a special call to load lr with case table address, instead
-+	use offset from previous call.
-+	* src/powerpc/sysv.S (ffi_call_SYSV): Save long double return.
-+	* src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double
-+	return.
-+
-+2006-03-15  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* src/sh64/ffi.c (ffi_prep_cif_machdep): Handle float arguments
-+	passed with FP registers correctly.
-+	(ffi_closure_helper_SYSV): Likewise.
-+	* src/sh64/sysv.S: Likewise.
-+
-+2006-03-01  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/libffi.special/unwindtest.cc (closure_test_fn): Mark cif,
-+	args and userdata unused.
-+	(closure_test_fn1): Mark cif and userdata unused.
-+	(main): Remove unused res.
-+
-+2006-02-28  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/libffi.call/call.exp: Adjust FSF address. Add test runs for
-+	-O2, -O3, -Os and the warning flags -W -Wall.
-+	* testsuite/libffi.special/special.exp: Likewise.
-+	* testsuite/libffi.call/ffitest.h: Add an __UNUSED__ macro to mark
-+	unused parameter unused for gcc or else do nothing.
-+	* testsuite/libffi.special/ffitestcxx.h: Likewise.
-+	* testsuite/libffi.call/cls_12byte.c (cls_struct_12byte_gn): Mark cif
-+	and userdata unused.
-+	* testsuite/libffi.call/cls_16byte.c (cls_struct_16byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_18byte.c (cls_struct_18byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_19byte.c (cls_struct_19byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_1_1byte.c (cls_struct_1_1byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_20byte.c (cls_struct_20byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_20byte1.c (cls_struct_20byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_24byte.c (cls_struct_24byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_2byte.c (cls_struct_2byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_3_1byte.c (cls_struct_3_1byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_3byte1.c (cls_struct_3byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_3byte2.c (cls_struct_3byte_gn1): Likewise.
-+	* testsuite/libffi.call/cls_4_1byte.c (cls_struct_4_1byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_4byte.c (cls_struct_4byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_5_1_byte.c (cls_struct_5byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_5byte.c (cls_struct_5byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_64byte.c (cls_struct_64byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_6_1_byte.c (cls_struct_6byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_6byte.c (cls_struct_6byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_7_1_byte.c (cls_struct_7byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_7byte.c (cls_struct_7byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_8byte.c (cls_struct_8byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_9byte1.c (cls_struct_9byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_9byte2.c (cls_struct_9byte_gn): Likewise.
-+	* testsuite/libffi.call/cls_align_double.c (cls_struct_align_gn):
-+	Likewise.
-+	* testsuite/libffi.call/cls_align_float.c (cls_struct_align_gn):
-+	Likewise.
-+	* testsuite/libffi.call/cls_align_longdouble.c (cls_struct_align_gn):
-+	Likewise.
-+	* testsuite/libffi.call/cls_align_pointer.c (cls_struct_align_fn): Cast
-+	void* to avoid compiler warning.
-+	(main): Likewise.
-+	(cls_struct_align_gn): Mark cif and userdata unused.
-+	* testsuite/libffi.call/cls_align_sint16.c (cls_struct_align_gn):
-+	Likewise.
-+	* testsuite/libffi.call/cls_align_sint32.c (cls_struct_align_gn):
-+	Likewise.
-+	* testsuite/libffi.call/cls_align_sint64.c (cls_struct_align_gn):
-+	Likewise.
-+	* testsuite/libffi.call/cls_align_uint16.c (cls_struct_align_gn):
-+	Likewise.
-+	* testsuite/libffi.call/cls_align_uint32.c (cls_struct_align_gn):
-+	Likewise.
-+	* testsuite/libffi.call/cls_double.c (cls_ret_double_fn): Likewise.
-+	* testsuite/libffi.call/cls_float.c (cls_ret_float_fn): Likewise.
-+	* testsuite/libffi.call/cls_multi_schar.c (test_func_gn): Mark cif and
-+	data unused.
-+	(main): Cast res_call to silence gcc.
-+	* testsuite/libffi.call/cls_multi_sshort.c (test_func_gn): Mark cif and
-+	data unused.
-+	(main): Cast res_call to silence gcc.
-+	* testsuite/libffi.call/cls_multi_sshortchar.c (test_func_gn): Mark cif
-+	and data unused.
-+	(main): Cast res_call to silence gcc.
-+	* testsuite/libffi.call/cls_multi_uchar.c (test_func_gn): Mark cif and
-+	data unused.
-+	(main): Cast res_call to silence gcc.
-+	* testsuite/libffi.call/cls_multi_ushort.c (test_func_gn): Mark cif and
-+	data unused.
-+	(main): Cast res_call to silence gcc.
-+	* testsuite/libffi.call/cls_multi_ushortchar.c (test_func_gn): Mark cif
-+	and data unused.
-+	(main): Cast res_call to silence gcc.
-+	* testsuite/libffi.call/cls_schar.c (cls_ret_schar_fn): Mark cif and
-+	userdata unused.
-+	(cls_ret_schar_fn): Cast printf parameter to silence gcc.
-+	* testsuite/libffi.call/cls_sint.c (cls_ret_sint_fn): Mark cif and
-+	userdata unused.
-+	(cls_ret_sint_fn): Cast printf parameter to silence gcc.
-+	* testsuite/libffi.call/cls_sshort.c (cls_ret_sshort_fn): Mark cif and
-+	userdata unused.
-+	(cls_ret_sshort_fn): Cast printf parameter to silence gcc.
-+	* testsuite/libffi.call/cls_uchar.c (cls_ret_uchar_fn):  Mark cif and
-+	userdata unused.
-+	(cls_ret_uchar_fn): Cast printf parameter to silence gcc.
-+	* testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Mark cif and
-+	userdata unused.
-+	(cls_ret_uint_fn): Cast printf parameter to silence gcc.
-+	* testsuite/libffi.call/cls_ulonglong.c (cls_ret_ulonglong_fn): Mark cif
-+	and userdata unused.
-+	* testsuite/libffi.call/cls_ushort.c (cls_ret_ushort_fn): Mark cif and
-+	userdata unused.
-+	(cls_ret_ushort_fn): Cast printf parameter to silence gcc.
-+	* testsuite/libffi.call/float.c (floating): Remove unused parameter e.
-+	* testsuite/libffi.call/float1.c (main): Remove unused variable i.
-+	Cleanup white spaces.
-+	* testsuite/libffi.call/negint.c (checking): Remove unused variable i.
-+	* testsuite/libffi.call/nested_struct.c (cls_struct_combined_gn): Mark
-+	cif and userdata unused.
-+	* testsuite/libffi.call/nested_struct1.c (cls_struct_combined_gn):
-+	Likewise.
-+	* testsuite/libffi.call/nested_struct10.c (B_gn): Likewise.
-+	* testsuite/libffi.call/nested_struct2.c (B_fn): Adjust printf
-+	formatters to silence gcc.
-+	(B_gn): Mark cif and userdata unused.
-+	* testsuite/libffi.call/nested_struct3.c (B_gn): Mark cif and userdata
-+	unused.
-+	* testsuite/libffi.call/nested_struct4.c: Mention related PR.
-+	(B_gn): Mark cif and userdata unused.
-+	* testsuite/libffi.call/nested_struct5.c (B_gn): Mark cif and userdata
-+	unused.
-+	* testsuite/libffi.call/nested_struct6.c: Mention related PR.
-+	(B_gn): Mark cif and userdata unused.
-+	* testsuite/libffi.call/nested_struct7.c (B_gn): Mark cif and userdata
-+	unused.
-+	* testsuite/libffi.call/nested_struct8.c (B_gn): Likewise.
-+	* testsuite/libffi.call/nested_struct9.c (B_gn): Likewise.
-+	* testsuite/libffi.call/problem1.c (stub): Likewise.
-+	* testsuite/libffi.call/pyobjc-tc.c (main): Cast the result to silence
-+	gcc.
-+	* testsuite/libffi.call/return_fl2.c (return_fl): Add the note mentioned
-+	in the last commit for this test case in the test case itself.
-+	* testsuite/libffi.call/closure_fn0.c (closure_test_fn0): Mark cif as
-+	unused.
-+	* testsuite/libffi.call/closure_fn1.c (closure_test_fn1): Likewise.
-+	* testsuite/libffi.call/closure_fn2.c (closure_test_fn2): Likewise.
-+	* testsuite/libffi.call/closure_fn3.c (closure_test_fn3): Likewise.
-+	* testsuite/libffi.call/closure_fn4.c (closure_test_fn0): Likewise.
-+	* testsuite/libffi.call/closure_fn5.c (closure_test_fn5): Likewise.
-+	* testsuite/libffi.call/closure_fn6.c (closure_test_fn0): Likewise.
-+
-+2006-02-22  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* src/sh/sysv.S: Fix register numbers in the FDE for
-+	ffi_closure_SYSV.
-+
-+2006-02-20  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/libffi.call/return_fl2.c (return_fl): Remove static
-+	declaration to avoid a false negative on ix86. See PR323.
-+
-+2006-02-18  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable
-+	and cast integer to void * if needed.  Update the pointer to
-+	the FP register saved area correctly.
-+
-+2006-02-17  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/libffi.call/nested_struct6.c: XFAIL this test until PR25630
-+	is fixed.
-+	* testsuite/libffi.call/nested_struct4.c: Likewise.
-+
-+2006-02-16  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/libffi.call/return_dbl.c: New test case.
-+	* testsuite/libffi.call/return_dbl1.c: Likewise.
-+	* testsuite/libffi.call/return_dbl2.c: Likewise.
-+	* testsuite/libffi.call/return_fl.c: Likewise.
-+	* testsuite/libffi.call/return_fl1.c: Likewise.
-+	* testsuite/libffi.call/return_fl2.c: Likewise.
-+	* testsuite/libffi.call/return_fl3.c: Likewise.
-+	* testsuite/libffi.call/closure_fn6.c: Likewise.
-+
-+	* testsuite/libffi.call/nested_struct2.c: Remove ffi_type_mylong
-+	definition.
-+	* testsuite/libffi.call/ffitest.h: Add ffi_type_mylong definition
-+	here to be used by other test cases too.
-+
-+	* testsuite/libffi.call/nested_struct10.c: New test case.
-+	* testsuite/libffi.call/nested_struct9.c: Likewise.
-+	* testsuite/libffi.call/nested_struct8.c: Likewise.
-+	* testsuite/libffi.call/nested_struct7.c: Likewise.
-+	* testsuite/libffi.call/nested_struct6.c: Likewise.
-+	* testsuite/libffi.call/nested_struct5.c: Likewise.
-+	* testsuite/libffi.call/nested_struct4.c: Likewise.
-+
-+2006-01-21  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* configure.ac: Enable libffi for sparc64-*-freebsd*.
-+	* configure: Rebuilt.
-+
-+2006-01-18  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* src/powerpc/sysv.S (smst_two_register): Don't call __ashldi3,
-+	instead do the shifting inline.
-+	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't compute %r5
-+	shift count unconditionally.  Simplify load sequences for 1, 2, 3, 4
-+	and 8 byte structs, for the remaining struct sizes don't call
-+	__lshrdi3, instead do the shifting inline.
-+
-+2005-12-07  Thiemo Seufer  <ths@networkno.de>
-+
-+	* src/mips/ffitarget.h: Remove obsolete sgidefs.h include. Add
-+	missing parentheses.
-+	* src/mips/o32.S (ffi_call_O32): Code formatting. Define
-+	and use A3_OFF, FP_OFF, RA_OFF. Micro-optimizations.
-+	(ffi_closure_O32): Likewise, but with newly defined A3_OFF2,
-+	A2_OFF2, A1_OFF2, A0_OFF2, RA_OFF2, FP_OFF2, S0_OFF2, GP_OFF2,
-+	V1_OFF2, V0_OFF2, FA_1_1_OFF2, FA_1_0_OFF2, FA_0_1_OFF2,
-+	FA_0_0_OFF2.
-+	* src/mips/ffi.c (ffi_prep_args): Code formatting. Fix
-+	endianness bugs.
-+	(ffi_prep_closure): Improve trampoline instruction scheduling.
-+	(ffi_closure_mips_inner_O32): Fix endianness bugs.
-+
-+2005-12-03  Alan Modra  <amodra@bigpond.net.au>
-+
-+	* src/powerpc/ffi.c: Formatting.
-+	(ffi_prep_args_SYSV): Avoid possible aliasing problems by using unions.
-+	(ffi_prep_args64): Likewise.
-+
-+2005-09-30  Geoffrey Keating  <geoffk@apple.com>
-+
-+	* testsuite/lib/libffi-dg.exp (libffi_target_compile): For
-+	darwin, use -shared-libgcc not -lgcc_s, and explain why.
-+
-+2005-09-26  Tom Tromey  <tromey@redhat.com>
-+
-+	* testsuite/libffi.call/float1.c (value_type): New typedef.
-+	(CANARY): New define.
-+	(main): Check for result buffer overflow.
-+	* src/powerpc/linux64.S: Handle linux64 long double returns.
-+	* src/powerpc/ffi.c (FLAG_RETURNS_128BITS): New constant.
-+	(ffi_prep_cif_machdep): Handle linux64 long double returns.
-+
-+2005-08-25  Alan Modra  <amodra@bigpond.net.au>
-+
-+	PR target/23404
-+	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Correct placement of stack
-+	homed fp args.
-+	(ffi_status ffi_prep_cif_machdep): Correct stack sizing for same.
-+
-+2005-08-11  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* configure.ac (HAVE_HIDDEN_VISIBILITY_ATTRIBUTE): New test.
-+	(AH_BOTTOM): Add FFI_HIDDEN definition.
-+	* configure: Rebuilt.
-+	* fficonfig.h.in: Rebuilt.
-+	* src/powerpc/ffi.c (hidden): Remove.
-+	(ffi_closure_LINUX64, ffi_prep_args64, ffi_call_LINUX64,
-+	ffi_closure_helper_LINUX64): Use FFI_HIDDEN instead of hidden.
-+	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64,
-+	.ffi_closure_LINUX64): Use FFI_HIDDEN instead of .hidden.
-+	* src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): Remove,
-+	add FFI_HIDDEN to its prototype.
-+	(ffi_closure_SYSV_inner): New.
-+	* src/x86/sysv.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New.
-+	* src/x86/win32.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New.
-+
-+2005-08-10  Alfred M. Szmidt  <ams@gnu.org>
-+
-+	PR libffi/21819:
-+	* configure: Rebuilt.
-+	* configure.ac: Handle i*86-*-gnu*.
-+
-+2005-08-09  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Use
-+	DW_CFA_offset_extended_sf rather than
-+	DW_CFA_GNU_negative_offset_extended.
-+	* src/powerpc/sysv.S (ffi_call_SYSV): Likewise.
-+
-+2005-07-22  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
-+
-+	* src/sh/sysv.S (ffi_call_SYSV): Stop argument popping correctly
-+	on sh3.
-+	(ffi_closure_SYSV): Change the stack layout for sh3 struct argument.
-+	* src/sh/ffi.c (ffi_prep_args): Fix sh3 argument copy, when it is
-+	partially on register.
-+	(ffi_closure_helper_SYSV): Likewise.
-+	(ffi_prep_cif_machdep): Don't set too many cif->flags.
-+
-+2005-07-20  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* src/sh/ffi.c (ffi_call): Handle small structures correctly.
-+	Remove empty line.
-+	* src/sh64/ffi.c (simple_type): Remove.
-+	(return_type): Handle small structures correctly.
-+	(ffi_prep_args): Likewise.
-+	(ffi_call): Likewise.
-+	(ffi_closure_helper_SYSV): Likewise.
-+	* src/sh64/sysv.S (ffi_call_SYSV): Handle 1, 2 and 4-byte return.
-+	Emit position independent code if PIC and remove wrong datalabel
-+	prefixes from EH data.
-+
-+2005-07-19  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* Makefile.am (nodist_libffi_la_SOURCES): Add POWERPC_FREEBSD.
-+	* Makefile.in: Regenerate.
-+	* include/Makefile.in: Likewise.
-+	* testsuite/Makefile.in: Likewise.
-+	* configure.ac: Add POWERPC_FREEBSD rules.
-+	* configure: Regenerate.
-+	* src/powerpc/ffitarget.h: Add POWERPC_FREEBSD rules.
-+	(FFI_SYSV_TYPE_SMALL_STRUCT): Define.
-+	* src/powerpc/ffi.c: Add flags to handle small structure returns
-+	in ffi_call_SYSV.
-+	(ffi_prep_cif_machdep): Handle small structures for SYSV 4 ABI.
-+	Aka FFI_SYSV.
-+	(ffi_closure_helper_SYSV): Likewise.
-+	* src/powerpc/ppc_closure.S: Add return types for small structures.
-+	* src/powerpc/sysv.S: Add bits to handle small structures for
-+	final SYSV 4 ABI.
-+
-+2005-07-10  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/libffi.call/cls_5_1_byte.c: New test file.
-+	* testsuite/libffi.call/cls_6_1_byte.c: Likewise.
-+	* testsuite/libffi.call/cls_7_1_byte.c: Likewise.
-+
-+2005-07-05  Randolph Chung  <tausq@debian.org>
-+
-+	* src/pa/ffi.c (ffi_struct_type): Rename FFI_TYPE_SMALL_STRUCT1
-+	as FFI_TYPE_SMALL_STRUCT3.  Break out handling for 5-7 byte
-+	structures.  Kill compilation warnings.
-+	(ffi_closure_inner_LINUX): Print return values as hex in debug
-+	message.  Rename FFI_TYPE_SMALL_STRUCT1 as FFI_TYPE_SMALL_STRUCT3.
-+	Properly handle 5-7 byte structure returns.
-+	* src/pa/ffitarget.h (FFI_TYPE_SMALL_STRUCT1)
-+	(FFI_TYPE_SMALL_STRUCT2): Remove.
-+	(FFI_TYPE_SMALL_STRUCT3, FFI_TYPE_SMALL_STRUCT5)
-+	(FFI_TYPE_SMALL_STRUCT6, FFI_TYPE_SMALL_STRUCT7): Define.
-+	* src/pa/linux.S: Mark source file as using PA1.1 assembly.
-+	(checksmst1, checksmst2): Remove.
-+	(checksmst3): Optimize handling of 3-byte struct returns.
-+	(checksmst567): Properly handle 5-7 byte struct returns.
-+
-+2005-06-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
-+
-+	PR libgcj/21943
-+	* src/mips/n32.S: Enforce PIC code.
-+	* src/mips/o32.S: Likewise.
-+
-+2005-06-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
-+
-+	* configure.ac: Treat i*86-*-solaris2.10 and up as X86_64.
-+	* configure: Regenerate.
-+
-+2005-06-01  Alan Modra  <amodra@bigpond.net.au>
-+
-+	* src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't use JUMPTARGET
-+	to call ffi_closure_helper_SYSV.  Append @local instead.
-+	* src/powerpc/sysv.S (ffi_call_SYSV): Likewise for ffi_prep_args_SYSV.
-+
-+2005-05-17  Kelley Cook  <kcook@gcc.gnu.org>
-+
-+	* configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS.
-+	Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF.
-+	* Makefile.am (ACLOCAL_AMFLAGS): Remove -I ../config.
-+	* aclocal.m4, configure, fficonfig.h.in, Makefile.in,
-+	include/Makefile.in, testsuite/Makefile.in: Regenerate.
-+
-+2005-05-09  Mike Stump  <mrs@apple.com>
-+
-+	* configure: Regenerate.
-+
-+2005-05-08  Richard Henderson  <rth@redhat.com>
-+
-+	PR libffi/21285
-+	* src/alpha/osf.S: Update unwind into to match code.
-+
-+2005-05-04  Andreas Degert <ad@papyrus-gmbh.de>
-+	    Richard Henderson  <rth@redhat.com>
-+
-+	* src/x86/ffi64.c (ffi_prep_cif_machdep): Save sse-used flag in
-+	bit 11 of flags.
-+	(ffi_call): Mask return type field.  Pass ssecount to ffi_call_unix64.
-+	(ffi_prep_closure): Set carry bit if sse-used flag set.
-+	* src/x86/unix64.S (ffi_call_unix64): Add ssecount argument.
-+	Only load sse registers if ssecount non-zero.
-+	(ffi_closure_unix64): Only save sse registers if carry set on entry.
-+
-+2005-04-29  Ralf Corsepius  <ralf.corsepius@rtems.org>
-+
-+	* configure.ac: Add i*86-*-rtems*, sparc*-*-rtems*,
-+	powerpc-*rtems*, arm*-*-rtems*, sh-*-rtems*.
-+	* configure: Regenerate.
-+
-+2005-04-20  Hans-Peter Nilsson  <hp@axis.com>
-+
-+	* testsuite/lib/libffi-dg.exp (libffi-dg-test-1): In regsub use,
-+	have Tcl8.3-compatible intermediate variable.
-+
-+2005-04-18  Simon Posnjak <simon.posnjak@siol.net>
-+	    Hans-Peter Nilsson  <hp@axis.com>
-+
-+	* Makefile.am: Add CRIS support.
-+	* configure.ac: Likewise.
-+	* Makefile.in, configure, testsuite/Makefile.in,
-+	include/Makefile.in: Regenerate.
-+	* src/cris: New directory.
-+	* src/cris/ffi.c, src/cris/sysv.S, src/cris/ffitarget.h: New files.
-+	* src/prep_cif.c (ffi_prep_cif): Wrap in #ifndef __CRIS__.
-+
-+	* testsuite/lib/libffi-dg.exp (libffi-dg-test-1): Replace \n with
-+	\r?\n in output tests.
-+
-+2005-04-12  Mike Stump  <mrs@apple.com>
-+
-+	* configure: Regenerate.
-+
-+2005-03-30  Hans Boehm  <Hans.Boehm@hp.com>
-+
-+	* src/ia64/ffitarget.h (ffi_arg): Use long long instead of DI.
-+
-+2005-03-30  Steve Ellcey  <sje@cup.hp.com>
-+
-+	* src/ia64/ffitarget.h (ffi_arg) ADD DI attribute.
-+	(ffi_sarg) Ditto.
-+	* src/ia64/unix.S (ffi_closure_unix): Extend gp
-+	to 64 bits in ILP32 mode.
-+	Load 64 bits even for short data.
-+
-+2005-03-23  Mike Stump  <mrs@apple.com>
-+
-+	* src/powerpc/darwin.S: Update for -m64 multilib.
-+	* src/powerpc/darwin_closure.S: Likewise.
-+
-+2005-03-21  Zack Weinberg  <zack@codesourcery.com>
-+
-+	* configure.ac: Do not invoke TL_AC_GCC_VERSION.
-+	Do not set tool_include_dir.
-+	* aclocal.m4, configure, Makefile.in, testsuite/Makefile.in:
-+	Regenerate.
-+	* include/Makefile.am: Set gcc_version and toollibffidir.
-+	* include/Makefile.in: Regenerate.
-+
-+2005-02-22  Andrew Haley  <aph@redhat.com>
-+
-+	* src/powerpc/ffi.c (ffi_prep_cif_machdep): Bump alignment to
-+	odd-numbered register pairs for 64-bit integer types.
-+
-+2005-02-23  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	PR libffi/20104
-+	* testsuite/libffi.call/return_ll1.c: New test case.
-+
-+2005-02-11  Janis Johnson  <janis187@us.ibm.com>
-+
-+	* testsuite/libffi.call/cls_align_longdouble.c: Remove dg-options.
-+	* testsuite/libffi.call/float.c: Ditto.
-+	* testsuite/libffi.call/float2.c: Ditto.
-+	* testsuite/libffi.call/float3.c: Ditto.
-+
-+2005-02-08  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* src/frv/ffitarget.h: Remove PPC stuff which does not belong to frv.
-+
-+2005-01-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
-+
-+	* testsuite/libffi.special/special.exp (cxx_options): Add
-+	-shared-libgcc.
-+
-+2004-12-31  Richard Henderson  <rth@redhat.com>
-+
-+	* src/types.c (FFI_AGGREGATE_TYPEDEF): Remove.
-+	(FFI_TYPEDEF): Rename from FFI_INTEGRAL_TYPEDEF.  Replace size and
-+	offset parameters with a type parameter; deduce size and structure
-+	alignment.  Update all users.
-+
-+2004-12-31  Richard Henderson  <rth@redhat.com>
-+
-+	* src/types.c (FFI_TYPE_POINTER): Define with sizeof.
-+	(FFI_TYPE_LONGDOUBLE): Fix for ia64.
-+	* src/ia64/ffitarget.h (struct ffi_ia64_trampoline_struct): Move
-+	into ffi_prep_closure.
-+	* src/ia64/ia64_flags.h, src/ia64/ffi.c, src/ia64/unix.S: Rewrite
-+	from scratch.
-+
-+2004-12-27  Richard Henderson  <rth@redhat.com>
-+
-+	* src/x86/unix64.S: Fix typo in unwind info.
-+
-+2004-12-25  Richard Henderson  <rth@redhat.com>
-+
-+	* src/x86/ffi64.c (struct register_args): Rename from stackLayout.
-+	(enum x86_64_reg_class): Add X86_64_COMPLEX_X87_CLASS.
-+	(merge_classes): Check for it.
-+	(SSE_CLASS_P): New.
-+	(classify_argument): Pass byte_offset by value; perform all updates
-+	inside struct case.
-+	(examine_argument): Add classes argument; handle
-+	X86_64_COMPLEX_X87_CLASS.
-+	(ffi_prep_args): Merge into ...
-+	(ffi_call): ... here.  Share stack frame with ffi_call_unix64.
-+	(ffi_prep_cif_machdep): Setup cif->flags for proper structure return.
-+	(ffi_fill_return_value): Remove.
-+	(ffi_prep_closure): Remove dead assert.
-+	(ffi_closure_unix64_inner): Rename from ffi_closure_UNIX64_inner.
-+	Rewrite to use struct register_args instead of va_list.  Create
-+	flags for handling structure returns.
-+	* src/x86/unix64.S: Remove dead strings.
-+	(ffi_call_unix64): Rename from ffi_call_UNIX64.  Rewrite to share
-+	stack frame with ffi_call.  Handle structure returns properly.
-+	(float2sse, floatfloat2sse, double2sse): Remove.
-+	(sse2float, sse2double, sse2floatfloat): Remove.
-+	(ffi_closure_unix64): Rename from ffi_closure_UNIX64.  Rewrite
-+	to handle structure returns properly.
-+
-+2004-12-08  David Edelsohn  <edelsohn@gnu.org>
-+
-+	* Makefile.am (AM_MAKEFLAGS): Remove duplicate LIBCFLAGS and
-+	PICFLAG.
-+	* Makefile.in: Regenerated.
-+
-+2004-12-02  Richard Sandiford  <rsandifo@redhat.com>
-+
-+	* configure.ac: Use TL_AC_GCC_VERSION to set gcc_version.
-+	* configure, aclocal.m4, Makefile.in: Regenerate.
-+	* include/Makefile.in, testsuite/Makefile.in: Regenerate.
-+
-+2004-11-29  Kelley Cook  <kcook@gcc.gnu.org>
-+
-+	* configure: Regenerate for libtool change.
-+
-+2004-11-25  Kelley Cook  <kcook@gcc.gnu.org>
-+
-+	* configure: Regenerate for libtool reversion.
-+
-+2004-11-24  Kelley Cook  <kcook@gcc.gnu.org>
-+
-+	* configure: Regenerate for libtool change.
-+
-+2004-11-23  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+	* testsuite/lib/libffi-dg.exp: Use new procs in target-libpath.exp.
-+
-+2004-11-23  Richard Sandiford  <rsandifo@redhat.com>
-+
-+	* src/mips/o32.S (ffi_call_O32, ffi_closure_O32): Use jalr instead
-+	of jal.  Use an absolute encoding for the frame information.
-+
-+2004-11-23  Kelley Cook  <kcook@gcc.gnu.org>
-+
-+	* Makefile.am: Remove no-dependencies.  Add ACLOCAL_AMFLAGS.
-+	* acinclude.m4: Delete logic for sincludes.
-+	* aclocal.m4, Makefile.in, configure: Regenerate.
-+	* include/Makefile: Likewise.
-+	* testsuite/Makefile: Likewise.
-+
-+2004-11-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
-+
-+	* src/sparc/ffi.c (ffi_prep_closure): Align doubles and 64-bit integers
-+	on a 8-byte boundary.
-+	* src/sparc/v8.S (ffi_closure_v8): Reserve frame space for arguments.
-+
-+2004-10-27  Richard Earnshaw  <rearnsha@arm.com>
-+
-+	* src/arm/ffi.c (ffi_prep_cif_machdep): Handle functions that return
-+	long long values.  Round stack allocation to a multiple of 8 bytes
-+	for ATPCS compatibility.
-+	* src/arm/sysv.S (ffi_call_SYSV): Rework to avoid use of APCS register
-+	names.  Handle returning long long types.  Add Thumb and interworking
-+	support.  Improve soft-float code.
-+
-+2004-10-27  Richard Earnshaw  <rearnsha@arm.com>
-+
-+	* testsuite/lib/libffi-db.exp (load_gcc_lib): New function.
-+	(libffi_exit): New function.
-+	(libffi_init): Build the testglue wrapper if needed.
-+
-+2004-10-25  Eric Botcazou  <ebotcazou@libertysurf.fr>
-+
-+	PR other/18138
-+	* testsuite/lib/libffi-dg.exp: Accept more than one multilib libgcc.
-+
-+2004-10-25  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
-+
-+	* src/m32r/libffitarget.h (FFI_CLOSURES): Set to 0.
-+
-+2004-10-20  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* src/sh/sysv.S (ffi_call_SYSV): Don't align for double data.
-+	* testsuite/libffi.call/float3.c: New test case.
-+
-+2004-10-18  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* src/sh/ffi.c (ffi_prep_closure): Set T bit in trampoline for
-+	the function returning a structure pointed with R2.
-+	* src/sh/sysv.S (ffi_closure_SYSV): Use R2 as the pointer to
-+	the structure return value if T bit set.  Emit position
-+	independent code and EH data if PIC.
-+
-+2004-10-13  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>
-+
-+	* Makefile.am: Add m32r support.
-+	* configure.ac: Likewise.
-+	* Makefile.in: Regenerate.
-+	* confiugre: Regenerate.
-+	* src/types.c: Add m32r port to FFI_INTERNAL_TYPEDEF
-+	(uint64, sint64, double, longdouble)
-+	* src/m32r: New directory.
-+	* src/m32r/ffi.c: New file.
-+	* src/m32r/sysv.S: Likewise.
-+	* src/m32r/ffitarget.h: Likewise.
-+
-+2004-10-02  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* testsuite/libffi.call/negint.c: New test case.
-+
-+2004-09-14  H.J. Lu  <hongjiu.lu@intel.com>
-+
-+	PR libgcj/17465
-+	* testsuite/lib/libffi-dg.exp: Don't use global ld_library_path.
-+	Set up LD_LIBRARY_PATH, SHLIB_PATH, LD_LIBRARYN32_PATH,
-+	LD_LIBRARY64_PATH, LD_LIBRARY_PATH_32, LD_LIBRARY_PATH_64 and
-+	DYLD_LIBRARY_PATH.
-+
-+2004-09-05  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/libffi.call/many_win32.c: Remove whitespaces.
-+	* testsuite/libffi.call/promotion.c: Likewise.
-+	* testsuite/libffi.call/return_ll.c: Remove unused var. Cleanup
-+	whitespaces.
-+	* testsuite/libffi.call/return_sc.c: Likewise.
-+	* testsuite/libffi.call/return_uc.c: Likewise.
-+
-+2004-09-05  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* src/powerpc/darwin.S: Fix comments and identation.
-+	* src/powerpc/darwin_closure.S: Likewise.
-+
-+2004-09-02  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* src/powerpc/ffi_darwin.c: Add flag for longdouble return values.
-+	(ffi_prep_args): Handle longdouble arguments.
-+	(ffi_prep_cif_machdep): Set flags for longdouble. Calculate space for
-+	longdouble.
-+	(ffi_closure_helper_DARWIN): Add closure handling for longdouble.
-+	* src/powerpc/darwin.S (_ffi_call_DARWIN): Add handling of longdouble
-+	values.
-+	* src/powerpc/darwin_closure.S (_ffi_closure_ASM): Likewise.
-+	* src/types.c: Defined longdouble size and alignment for darwin.
-+
-+2004-09-02  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* src/powerpc/aix.S: Remove whitespaces.
-+	* src/powerpc/aix_closure.S: Likewise.
-+	* src/powerpc/asm.h: Likewise.
-+	* src/powerpc/ffi.c: Likewise.
-+	* src/powerpc/ffitarget.h: Likewise.
-+	* src/powerpc/linux64.S: Likewise.
-+	* src/powerpc/linux64_closure.S: Likewise.
-+	* src/powerpc/ppc_closure.S: Likewise.
-+	* src/powerpc/sysv.S: Likewise.
-+
-+2004-08-30  Anthony Green  <green@redhat.com>
-+
-+	* Makefile.am: Add frv support.
-+	* Makefile.in, testsuite/Makefile.in: Rebuilt.
-+	* configure.ac: Read configure.host.
-+	* configure.in: Read configure.host.
-+	* configure.host: New file.  frv-elf needs libgloss.
-+	* include/ffi.h.in: Force ffi_closure to have a nice big (8)
-+	alignment.  This is needed to frv and shouldn't harm the others.
-+	* include/ffi_common.h (ALIGN_DOWN): New macro.
-+	* src/frv/ffi.c, src/frv/ffitarget.h, src/frv/eabi.S: New files.
-+
-+2004-08-24  David Daney  <daney@avtrex.com>
-+
-+	* testsuite/libffi.call/closure_fn0.c: Xfail mips64* instead of mips*.
-+	* testsuite/libffi.call/closure_fn1.c: Likewise.
-+	* testsuite/libffi.call/closure_fn2.c  Likewise.
-+	* testsuite/libffi.call/closure_fn3.c: Likewise.
-+	* testsuite/libffi.call/closure_fn4.c: Likewise.
-+	* testsuite/libffi.call/closure_fn5.c: Likewise.
-+	* testsuite/libffi.call/cls_18byte.c: Likewise.
-+	* testsuite/libffi.call/cls_19byte.c: Likewise.
-+	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_20byte.c: Likewise.
-+	* testsuite/libffi.call/cls_20byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_24byte.c: Likewise.
-+	* testsuite/libffi.call/cls_2byte.c: Likewise.
-+	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_3byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_3byte2.c: Likewise.
-+	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_4byte.c: Likewise.
-+	* testsuite/libffi.call/cls_64byte.c: Likewise.
-+	* testsuite/libffi.call/cls_6byte.c: Likewise.
-+	* testsuite/libffi.call/cls_7byte.c: Likewise.
-+	* testsuite/libffi.call/cls_8byte.c: Likewise.
-+	* testsuite/libffi.call/cls_9byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_9byte2.c: Likewise.
-+	* testsuite/libffi.call/cls_align_double.c: Likewise.
-+	* testsuite/libffi.call/cls_align_float.c: Likewise.
-+	* testsuite/libffi.call/cls_align_longdouble.c: Likewise.
-+	* testsuite/libffi.call/cls_align_pointer.c: Likewise.
-+	* testsuite/libffi.call/cls_align_sint16.c: Likewise.
-+	* testsuite/libffi.call/cls_align_sint32.c: Likewise.
-+	* testsuite/libffi.call/cls_align_sint64.c: Likewise.
-+	* testsuite/libffi.call/cls_align_uint16.c: Likewise.
-+	* testsuite/libffi.call/cls_align_uint32.c: Likewise.
-+	* testsuite/libffi.call/cls_align_uint64.c: Likewise.
-+	* testsuite/libffi.call/cls_double.c: Likewise.
-+	* testsuite/libffi.call/cls_float.c: Likewise.
-+	* testsuite/libffi.call/cls_multi_schar.c: Likewise.
-+	* testsuite/libffi.call/cls_multi_sshort.c: Likewise.
-+	* testsuite/libffi.call/cls_multi_sshortchar.c: Likewise.
-+	* testsuite/libffi.call/cls_multi_uchar.c: Likewise.
-+	* testsuite/libffi.call/cls_multi_ushort.c: Likewise.
-+	* testsuite/libffi.call/cls_multi_ushortchar.c: Likewise.
-+	* testsuite/libffi.call/cls_schar.c: Likewise.
-+	* testsuite/libffi.call/cls_sint.c: Likewise.
-+	* testsuite/libffi.call/cls_sshort.c: Likewise.
-+	* testsuite/libffi.call/cls_uchar.c: Likewise.
-+	* testsuite/libffi.call/cls_uint.c: Likewise.
-+	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
-+	* testsuite/libffi.call/cls_ushort.c: Likewise.
-+	* testsuite/libffi.call/nested_struct.c: Likewise.
-+	* testsuite/libffi.call/nested_struct1.c: Likewise.
-+	* testsuite/libffi.call/nested_struct2.c: Likewise.
-+	* testsuite/libffi.call/nested_struct3.c: Likewise.
-+	* testsuite/libffi.call/problem1.c: Likewise.
-+	* testsuite/libffi.special/unwindtest.cc: Likewise.
-+	* testsuite/libffi.call/cls_12byte.c: Likewise and set return value
-+	to zero.
-+	* testsuite/libffi.call/cls_16byte.c: Likewise.
-+	* testsuite/libffi.call/cls_5byte.c: Likewise.
-+
-+2004-08-23  David Daney <daney@avtrex.com>
-+
-+	PR libgcj/13141
-+	* src/mips/ffitarget.h (FFI_O32_SOFT_FLOAT): New ABI.
-+	* src/mips/ffi.c (ffi_prep_args): Fix alignment calculation.
-+	(ffi_prep_cif_machdep): Handle FFI_O32_SOFT_FLOAT floating point
-+	parameters and return types.
-+	(ffi_call): Handle FFI_O32_SOFT_FLOAT ABI.
-+	(ffi_prep_closure): Ditto.
-+	(ffi_closure_mips_inner_O32): Handle FFI_O32_SOFT_FLOAT ABI, fix
-+	alignment calculations.
-+	* src/mips/o32.S (ffi_closure_O32): Don't use floating point
-+	instructions if FFI_O32_SOFT_FLOAT, make stack frame ABI compliant.
-+
-+2004-08-14  Casey Marshall <csm@gnu.org>
-+
-+	* src/mips/ffi.c (ffi_pref_cif_machdep): set `cif->flags' to
-+	contain `FFI_TYPE_UINT64' as return type for any 64-bit
-+	integer (O32 ABI only).
-+	(ffi_prep_closure): new function.
-+	(ffi_closure_mips_inner_O32): new function.
-+	* src/mips/ffitarget.h: Define `FFI_CLOSURES' and
-+	`FFI_TRAMPOLINE_SIZE' appropriately if the ABI is o32.
-+	* src/mips/o32.S (ffi_call_O32): add labels for .eh_frame. Return
-+	64 bit integers correctly.
-+	(ffi_closure_O32): new function.
-+	Added DWARF-2 unwind info for both functions.
-+
-+2004-08-10  Andrew Haley  <aph@redhat.com>
-+
-+	* src/x86/ffi64.c (ffi_prep_args ): 8-align all stack arguments.
-+
-+2004-08-01  Robert Millan  <robertmh@gnu.org>
-+
-+	* configure.ac: Detect knetbsd-gnu and kfreebsd-gnu.
-+	* configure: Regenerate.
-+
-+2004-07-30  Maciej W. Rozycki  <macro@linux-mips.org>
-+
-+	* acinclude.m4 (AC_FUNC_MMAP_BLACKLIST): Check for <sys/mman.h>
-+	and mmap() explicitly instead of relying on preset autoconf cache
-+	variables.
-+	* aclocal.m4: Regenerate.
-+	* configure: Regenerate.
-+
-+2004-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
-+
-+	* src/s390/ffi.c (ffi_prep_args): Fix C aliasing violation.
-+	(ffi_check_float_struct): Remove unused prototype.
-+
-+2004-06-30  Geoffrey Keating  <geoffk@apple.com>
-+
-+	* src/powerpc/ffi_darwin.c (flush_icache): ';' is a comment
-+	character on Darwin, use '\n\t' instead.
-+
-+2004-06-26  Matthias Klose  <doko@debian.org>
-+
-+	* libtool-version: Fix typo in revision/age.
-+
-+2004-06-17  Matthias Klose  <doko@debian.org>
-+
-+	* libtool-version: New.
-+	* Makefile.am (libffi_la_LDFLAGS): Use -version-info for soname.
-+	* Makefile.in: Regenerate.
-+
-+2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
-+
-+	* Makefile.am: Remove useless multilib rules.
-+	* Makefile.in: Regenerate.
-+	* aclocal.m4: Regenerate with automake 1.8.5.
-+	* configure.ac: Remove useless multilib configury.
-+	* configure: Regenerate.
-+
-+2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
-+
-+	* .cvsignore: New file.
-+
-+2004-06-10  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* src/ia64/unix.S (ffi_call_unix): Insert group barrier break
-+	fp_done.
-+	(ffi_closure_UNIX): Fix f14/f15 adjustment if FLOAT_SZ is ever
-+	changed from 8.
-+
-+2004-06-06  Sean McNeil  <sean@mcneil.com>
-+
-+	* configure.ac: Add x86_64-*-freebsd* support.
-+	* configure: Regenerate.
-+
-+2004-04-26  Joe Buck <jbuck@welsh-buck.org>
-+
-+	Bug 15093
-+	* configure.ac: Test for existence of mmap and sys/mman.h before
-+	checking blacklist.  Fix suggested by Jim Wilson.
-+	* configure: Regenerate.
-+
-+2004-04-26  Matt Austern  <austern@apple.com>
-+
-+	* src/powerpc/darwin.S: Go through a non-lazy pointer for initial
-+	FDE location.
-+	* src/powerpc/darwin_closure.S: Likewise.
-+
-+2004-04-24  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/libffi.call/cls_multi_schar.c (main): Fix initialization
-+	error. Reported by Thomas Heller <theller@python.net>.
-+	* testsuite/libffi.call/cls_multi_sshort.c (main): Likewise.
-+	* testsuite/libffi.call/cls_multi_ushort.c (main): Likewise.
-+
-+2004-03-20  Matthias Klose  <doko@debian.org>
-+
-+	* src/pa/linux.S: Fix typo.
-+
-+2004-03-19  Matthias Klose  <doko@debian.org>
-+
-+	* Makefile.am: Update.
-+	* Makefile.in: Regenerate.
-+	* src/pa/ffi.h.in: Remove.
-+	* src/pa/ffitarget.h: New file.
-+
-+2004-02-10  Randolph Chung  <tausq@debian.org>
-+
-+	* Makefile.am: Add PA support.
-+	* Makefile.in: Regenerate.
-+	* include/Makefile.in: Regenerate.
-+	* configure.ac: Add PA target.
-+	* configure: Regenerate.
-+	* src/pa/ffi.c: New file.
-+	* src/pa/ffi.h.in: Add PA support.
-+	* src/pa/linux.S: New file.
-+	* prep_cif.c: Add PA support.
-+
-+2004-03-16  Hosaka Yuji  <hos@tamanegi.org>
-+
-+	* src/types.c: Fix alignment size of X86_WIN32 case int64 and
-+	double.
-+	* src/x86/ffi.c (ffi_prep_args): Replace ecif->cif->rtype->type
-+	with ecif->cif->flags.
-+	(ffi_call, ffi_prep_incoming_args_SYSV): Replace cif->rtype->type
-+	with cif->flags.
-+	(ffi_prep_cif_machdep): Add X86_WIN32 struct case.
-+	(ffi_closure_SYSV): Add 1 or 2-bytes struct case for X86_WIN32.
-+	* src/x86/win32.S (retstruct1b, retstruct2b, sc_retstruct1b,
-+	sc_retstruct2b): Add for 1 or 2-bytes struct case.
-+
-+2004-03-15 Kelley Cook <kcook@gcc.gnu.org>
-+
-+	* configure.in: Rename file to ...
-+	* configure.ac: ... this.
-+	* fficonfig.h.in: Regenerate.
-+	* Makefile.in: Regenerate.
-+	* include/Makefile.in: Regenerate.
-+	* testsuite/Makefile.in: Regenerate.
-+
-+2004-03-12  Matt Austern  <austern@apple.com>
-+
-+	* src/powerpc/darwin.S: Fix EH information so it corresponds to
-+	changes in EH format resulting from addition of linkonce support.
-+	* src/powerpc/darwin_closure.S: Likewise.
-+
-+2004-03-11  Andreas Tobler  <a.tobler@schweiz.ch>
-+	    Paolo Bonzini  <bonzini@gnu.org>
-+
-+	* Makefile.am (AUTOMAKE_OPTIONS): Set them.
-+	Remove VPATH. Remove rules for object files. Remove multilib support.
-+	(AM_CCASFLAGS): Add.
-+	* configure.in (AC_CONFIG_HEADERS): Relace AM_CONFIG_HEADER.
-+	(AC_PREREQ): Bump version to 2.59.
-+	(AC_INIT): Fill with version info and bug address.
-+	(ORIGINAL_LD_FOR_MULTILIBS): Remove.
-+	(AM_ENABLE_MULTILIB): Use this instead of AC_ARG_ENABLE.
-+	De-precious CC so that the right flags are passed down to multilibs.
-+	(AC_MSG_ERROR): Replace obsolete macro AC_ERROR.
-+	(AC_CONFIG_FILES): Replace obsolete macro AC_LINK_FILES.
-+	(AC_OUTPUT): Reorganize the output with AC_CONFIG_COMMANDS.
-+	* configure: Rebuilt.
-+	* aclocal.m4: Likewise.
-+	* Makefile.in, include/Makefile.in, testsuite/Makefile.in: Likewise.
-+	* fficonfig.h.in: Likewise.
-+
-+2004-03-11  Andreas Schwab  <schwab@suse.de>
-+
-+	* src/ia64/ffi.c (ffi_prep_incoming_args_UNIX): Get floating point
-+	arguments from fp registers only for the first 8 parameter slots.
-+	Don't convert a float parameter when passed in memory.
-+
-+2004-03-09  Hans-Peter Nilsson  <hp@axis.com>
-+
-+	* configure: Regenerate for config/accross.m4 correction.
-+
-+2004-02-25  Matt Kraai  <kraai@alumni.cmu.edu>
-+
-+	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Change
-+	ecif->cif->bytes to bytes.
-+	(ffi_prep_cif_machdep): Add braces around nested if statement.
-+
-+2004-02-09  Alan Modra  <amodra@bigpond.net.au>
-+
-+	* src/types.c (pointer): POWERPC64 has 8 byte pointers.
-+
-+	* src/powerpc/ffi.c (ffi_prep_args64): Correct long double handling.
-+	(ffi_closure_helper_LINUX64): Fix typo.
-+	* testsuite/libffi.call/cls_align_longdouble.c: Pass -mlong-double-128
-+	for powerpc64-*-*.
-+	* testsuite/libffi.call/float.c: Likewise.
-+	* testsuite/libffi.call/float2.c: Likewise.
-+
-+2004-02-08  Alan Modra  <amodra@bigpond.net.au>
-+
-+	* src/powerpc/ffi.c (ffi_prep_cif_machdep <FFI_LINUX64>): Correct
-+	long double function return and long double arg handling.
-+	(ffi_closure_helper_LINUX64): Formatting.  Delete unused "ng" var.
-+	Use "end_pfr" instead of "nf".  Correct long double handling.
-+	Localise "temp".
-+	* src/powerpc/linux64.S (ffi_call_LINUX64): Save f2 long double
-+	return value.
-+	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Allocate
-+	space for long double return value.  Adjust stack frame and offsets.
-+	Load f2 long double return.
-+
-+2004-02-07  Alan Modra  <amodra@bigpond.net.au>
-+
-+	* src/types.c: Use 16 byte long double for POWERPC64.
-+
-+2004-01-25  Eric Botcazou  <ebotcazou@libertysurf.fr>
-+
-+	* src/sparc/ffi.c (ffi_prep_args_v9): Shift the parameter array
-+	when the structure return address is passed in %o0.
-+	(ffi_V9_return_struct): Rename into ffi_v9_layout_struct.
-+	(ffi_v9_layout_struct): Align the field following a nested structure
-+	on a word boundary.  Use memmove instead of memcpy.
-+	(ffi_call): Update call to ffi_V9_return_struct.
-+	(ffi_prep_closure): Define 'ctx' only for V8.
-+	(ffi_closure_sparc_inner): Clone into ffi_closure_sparc_inner_v8
-+	and ffi_closure_sparc_inner_v9.
-+	(ffi_closure_sparc_inner_v8): Return long doubles by reference.
-+	Always skip the structure return address.  For structures and long
-+	doubles, copy the argument directly.
-+	(ffi_closure_sparc_inner_v9): Skip the structure return address only
-+	if required.  Shift the maximum floating-point slot accordingly.  For
-+	big structures, copy the argument directly; otherwise, left-justify the
-+	argument and call ffi_v9_layout_struct to lay out the structure on
-+	the stack.
-+	* src/sparc/v8.S: Undef STACKFRAME before defining it.
-+	(ffi_closure_v8): Pass the structure return address.  Update call to
-+	ffi_closure_sparc_inner_v8.  Short-circuit FFI_TYPE_INT handling.
-+	Skip the 'unimp' insn when returning long doubles and structures.
-+	* src/sparc/v9.S: Undef STACKFRAME before defining it.
-+	(ffi_closure_v9): Increase the frame size by 2 words.  Short-circuit
-+	FFI_TYPE_INT handling.  Load structures both in integers and
-+	floating-point registers on return.
-+	* README: Update status of the SPARC port.
-+
-+2004-01-24  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/libffi.call/pyobjc-tc.c (main): Treat result value
-+	as of type ffi_arg.
-+	* testsuite/libffi.call/struct3.c (main): Fix CHECK.
-+
-+2004-01-22  Ulrich Weigand  <uweigand@de.ibm.com>
-+
-+	* testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Treat result
-+	value as of type ffi_arg, not unsigned int.
-+
-+2004-01-21  Michael Ritzert  <ritzert@t-online.de>
-+
-+	* ffi64.c (ffi_prep_args): Cast the RHS of an assignment instead
-+	of the LHS.
-+
-+2004-01-12  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_32 for
-+	Solaris.
-+
-+2004-01-08  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
-+
-+	* testsuite/libffi.call/ffitest.h (allocate_mmap): Cast MAP_FAILED
-+	to void *.
-+
-+2003-12-10  Richard Henderson  <rth@redhat.com>
-+
-+	* testsuite/libffi.call/cls_align_pointer.c: Cast pointers to
-+	size_t instead of int.
-+
-+2003-12-04  Hosaka Yuji  <hos@tamanegi.org>
-+
-+	* testsuite/libffi.call/many_win32.c: Include <float.h>.
-+	* testsuite/libffi.call/many_win32.c (main): Replace variable
-+	int i with unsigned long ul.
-+
-+	* testsuite/libffi.call/cls_align_uint64.c: New test case.
-+	* testsuite/libffi.call/cls_align_sint64.c: Likewise.
-+	* testsuite/libffi.call/cls_align_uint32.c: Likewise.
-+	* testsuite/libffi.call/cls_align_sint32.c: Likewise.
-+	* testsuite/libffi.call/cls_align_uint16.c: Likewise.
-+	* testsuite/libffi.call/cls_align_sint16.c: Likewise.
-+	* testsuite/libffi.call/cls_align_float.c: Likewise.
-+	* testsuite/libffi.call/cls_align_double.c: Likewise.
-+	* testsuite/libffi.call/cls_align_longdouble.c: Likewise.
-+	* testsuite/libffi.call/cls_align_pointer.c: Likewise.
-+
-+2003-12-02  Hosaka Yuji  <hos@tamanegi.org>
-+
-+	PR other/13221
-+	* src/x86/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV):
-+	Align arguments to 32 bits.
-+
-+2003-12-01  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	PR other/13221
-+	* testsuite/libffi.call/cls_multi_sshort.c: New test case.
-+	* testsuite/libffi.call/cls_multi_sshortchar.c: Likewise.
-+	* testsuite/libffi.call/cls_multi_uchar.c: Likewise.
-+	* testsuite/libffi.call/cls_multi_schar.c: Likewise.
-+	* testsuite/libffi.call/cls_multi_ushortchar.c: Likewise.
-+	* testsuite/libffi.call/cls_multi_ushort.c: Likewise.
-+
-+	* testsuite/libffi.special/unwindtest.cc: Cosmetics.
-+
-+2003-11-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
-+
-+	* testsuite/libffi.call/ffitest.h: Include <fcntl.h>.
-+	* testsuite/libffi.special/ffitestcxx.h: Likewise.
-+
-+2003-11-22  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* Makefile.in: Rebuilt.
-+	* configure: Likewise.
-+	* testsuite/libffi.special/unwindtest.cc: Convert the mmap to
-+	the right type.
-+
-+2003-11-21  Andreas Jaeger  <aj@suse.de>
-+	    Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* acinclude.m4: Add AC_FUNC_MMAP_BLACKLIST.
-+	* configure.in: Call AC_FUNC_MMAP_BLACKLIST.
-+	* Makefile.in: Rebuilt.
-+	* aclocal.m4: Likewise.
-+	* configure: Likewise.
-+	* fficonfig.h.in: Likewise.
-+	* testsuite/lib/libffi-dg.exp: Add include dir.
-+	* testsuite/libffi.call/ffitest.h: Add MMAP definitions.
-+	* testsuite/libffi.special/ffitestcxx.h: Likewise.
-+	* testsuite/libffi.call/closure_fn0.c: Use MMAP functionality
-+	for ffi_closure if available.
-+	* testsuite/libffi.call/closure_fn1.c: Likewise.
-+	* testsuite/libffi.call/closure_fn2.c: Likewise.
-+	* testsuite/libffi.call/closure_fn3.c: Likewise.
-+	* testsuite/libffi.call/closure_fn4.c: Likewise.
-+	* testsuite/libffi.call/closure_fn5.c: Likewise.
-+	* testsuite/libffi.call/cls_12byte.c: Likewise.
-+	* testsuite/libffi.call/cls_16byte.c: Likewise.
-+	* testsuite/libffi.call/cls_18byte.c: Likewise.
-+	* testsuite/libffi.call/cls_19byte.c: Likewise.
-+	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_20byte.c: Likewise.
-+	* testsuite/libffi.call/cls_20byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_24byte.c: Likewise.
-+	* testsuite/libffi.call/cls_2byte.c: Likewise.
-+	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_3byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_3byte2.c: Likewise.
-+	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_4byte.c: Likewise.
-+	* testsuite/libffi.call/cls_5byte.c: Likewise.
-+	* testsuite/libffi.call/cls_64byte.c: Likewise.
-+	* testsuite/libffi.call/cls_6byte.c: Likewise.
-+	* testsuite/libffi.call/cls_7byte.c: Likewise.
-+	* testsuite/libffi.call/cls_8byte.c: Likewise.
-+	* testsuite/libffi.call/cls_9byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_9byte2.c: Likewise.
-+	* testsuite/libffi.call/cls_double.c: Likewise.
-+	* testsuite/libffi.call/cls_float.c: Likewise.
-+	* testsuite/libffi.call/cls_schar.c: Likewise.
-+	* testsuite/libffi.call/cls_sint.c: Likewise.
-+	* testsuite/libffi.call/cls_sshort.c: Likewise.
-+	* testsuite/libffi.call/cls_uchar.c: Likewise.
-+	* testsuite/libffi.call/cls_uint.c: Likewise.
-+	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
-+	* testsuite/libffi.call/cls_ushort.c: Likewise.
-+	* testsuite/libffi.call/nested_struct.c: Likewise.
-+	* testsuite/libffi.call/nested_struct1.c: Likewise.
-+	* testsuite/libffi.call/nested_struct2.c: Likewise.
-+	* testsuite/libffi.call/nested_struct3.c: Likewise.
-+	* testsuite/libffi.call/problem1.c: Likewise.
-+	* testsuite/libffi.special/unwindtest.cc: Likewise.
-+
-+2003-11-20  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/lib/libffi-dg.exp: Make the -lgcc_s conditional.
-+
-+2003-11-19  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/lib/libffi-dg.exp: Add DYLD_LIBRARY_PATH for darwin.
-+	Add -lgcc_s to additional flags.
-+
-+2003-11-12  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* configure.in, include/Makefile.am: PR libgcj/11147, install
-+	the ffitarget.h header file in a gcc versioned and target
-+	dependent place.
-+	* configure: Regenerated.
-+	* Makefile.in, include/Makefile.in: Likewise.
-+	* testsuite/Makefile.in: Likewise.
-+
-+2003-11-09  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/libffi.call/closure_fn0.c: Print result and check
-+	with dg-output to make debugging easier.
-+	* testsuite/libffi.call/closure_fn1.c: Likewise.
-+	* testsuite/libffi.call/closure_fn2.c: Likewise.
-+	* testsuite/libffi.call/closure_fn3.c: Likewise.
-+	* testsuite/libffi.call/closure_fn4.c: Likewise.
-+	* testsuite/libffi.call/closure_fn5.c: Likewise.
-+	* testsuite/libffi.call/cls_12byte.c: Likewise.
-+	* testsuite/libffi.call/cls_16byte.c: Likewise.
-+	* testsuite/libffi.call/cls_18byte.c: Likewise.
-+	* testsuite/libffi.call/cls_19byte.c: Likewise.
-+	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_20byte.c: Likewise.
-+	* testsuite/libffi.call/cls_20byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_24byte.c: Likewise.
-+	* testsuite/libffi.call/cls_2byte.c: Likewise.
-+	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_3byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_3byte2.c: Likewise.
-+	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_4byte.c: Likewise.
-+	* testsuite/libffi.call/cls_5byte.c: Likewise.
-+	* testsuite/libffi.call/cls_64byte.c: Likewise.
-+	* testsuite/libffi.call/cls_6byte.c: Likewise.
-+	* testsuite/libffi.call/cls_7byte.c: Likewise.
-+	* testsuite/libffi.call/cls_8byte.c: Likewise.
-+	* testsuite/libffi.call/cls_9byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_9byte2.c: Likewise.
-+	* testsuite/libffi.call/cls_double.c: Likewise.
-+	* testsuite/libffi.call/cls_float.c: Likewise.
-+	* testsuite/libffi.call/cls_schar.c: Likewise.
-+	* testsuite/libffi.call/cls_sint.c: Likewise.
-+	* testsuite/libffi.call/cls_sshort.c: Likewise.
-+	* testsuite/libffi.call/cls_uchar.c: Likewise.
-+	* testsuite/libffi.call/cls_uint.c: Likewise.
-+	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
-+	* testsuite/libffi.call/cls_ushort.c: Likewise.
-+	* testsuite/libffi.call/problem1.c: Likewise.
-+
-+	* testsuite/libffi.special/unwindtest.cc: Make ffi_closure
-+	static.
-+
-+2003-11-08  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/libffi.call/cls_9byte2.c: New test case.
-+	* testsuite/libffi.call/cls_9byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_64byte.c: Likewise.
-+	* testsuite/libffi.call/cls_20byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_19byte.c: Likewise.
-+	* testsuite/libffi.call/cls_18byte.c: Likewise.
-+	* testsuite/libffi.call/closure_fn4.c: Likewise.
-+	* testsuite/libffi.call/closure_fn5.c: Likewise.
-+	* testsuite/libffi.call/cls_schar.c: Likewise.
-+	* testsuite/libffi.call/cls_sint.c: Likewise.
-+	* testsuite/libffi.call/cls_sshort.c: Likewise.
-+	* testsuite/libffi.call/nested_struct2.c: Likewise.
-+	* testsuite/libffi.call/nested_struct3.c: Likewise.
-+
-+2003-11-08  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/libffi.call/cls_double.c: Do a check on the result.
-+	* testsuite/libffi.call/cls_uchar.c: Likewise.
-+	* testsuite/libffi.call/cls_uint.c: Likewise.
-+	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
-+	* testsuite/libffi.call/cls_ushort.c: Likewise.
-+	* testsuite/libffi.call/return_sc.c: Cleanup whitespaces.
-+
-+2003-11-06  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* src/prep_cif.c (ffi_prep_cif): Move the validity check after
-+	the initialization.
-+
-+2003-10-23  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* src/java_raw_api.c (ffi_java_ptrarray_to_raw): Replace
-+	FFI_ASSERT(FALSE) with FFI_ASSERT(0).
-+
-+2003-10-22  David Daney  <ddaney@avtrex.com>
-+
-+	* src/mips/ffitarget.h: Replace undefined UINT32 and friends with
-+	__attribute__((__mode__(__SI__))) and friends.
-+
-+2003-10-22  Andreas Schwab  <schwab@suse.de>
-+
-+	* src/ia64/ffi.c: Replace FALSE/TRUE with false/true.
-+
-+2003-10-21  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* configure.in: AC_LINK_FILES(ffitarget.h).
-+	* configure: Regenerate.
-+	* Makefile.in: Likewise.
-+	* include/Makefile.in: Likewise.
-+	* testsuite/Makefile.in: Likewise.
-+	* fficonfig.h.in: Likewise.
-+
-+2003-10-21  Paolo Bonzini  <bonzini@gnu.org>
-+	    Richard Henderson  <rth@redhat.com>
-+
-+	Avoid that ffi.h includes fficonfig.h.
-+
-+	* Makefile.am (EXTRA_DIST): Include ffitarget.h files
-+	(TARGET_SRC_MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
-+	(TARGET_SRC_MIPS_SGI): Removed.
-+	(MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
-+	(MIPS_SGI): Removed.
-+	(CLEANFILES): Removed.
-+	(mostlyclean-am, clean-am, mostlyclean-sub, clean-sub): New
-+	targets.
-+	* acconfig.h: Removed.
-+	* configure.in: Compute sizeofs only for double and long double.
-+	Use them to define and subst HAVE_LONG_DOUBLE.  Include comments
-+	into AC_DEFINE instead of using acconfig.h.  Create
-+	include/ffitarget.h instead of include/fficonfig.h.  Rename
-+	MIPS_GCC to MIPS_IRIX, drop MIPS_SGI since we are in gcc's tree.
-+	AC_DEFINE EH_FRAME_FLAGS.
-+	* include/Makefile.am (DISTCLEANFILES): New automake macro.
-+	(hack_DATA): Add ffitarget.h.
-+	* include/ffi.h.in: Remove all system specific definitions.
-+	Declare raw API even if it is not installed, why bother?
-+	Use limits.h instead of SIZEOF_* to define ffi_type_*.  Do
-+	not define EH_FRAME_FLAGS, it is in fficonfig.h now.  Include
-+	ffitarget.h instead of fficonfig.h.  Remove ALIGN macro.
-+	(UINT_ARG, INT_ARG): Removed, use ffi_arg and ffi_sarg instead.
-+	* include/ffi_common.h (bool): Do not define.
-+	(ffi_assert): Accept failed assertion.
-+	(ffi_type_test): Return void and accept file/line.
-+	(FFI_ASSERT): Pass stringized failed assertion.
-+	(FFI_ASSERT_AT): New macro.
-+	(FFI_ASSERT_VALID_TYPE): New macro.
-+	(UINT8, SINT8, UINT16, SINT16, UINT32, SINT32,
-+	UINT64, SINT64): Define here with gcc's __attribute__ macro
-+	instead of in ffi.h
-+	(FLOAT32, ALIGN): Define here instead of in ffi.h
-+	* include/ffi-mips.h: Removed.  Its content moved to
-+	src/mips/ffitarget.h after separating assembly and C sections.
-+	* src/alpha/ffi.c, src/alpha/ffi.c, src/java_raw_api.c
-+	src/prep_cif.c, src/raw_api.c, src/ia64/ffi.c,
-+	src/mips/ffi.c, src/mips/n32.S, src/mips/o32.S,
-+	src/mips/ffitarget.h, src/sparc/ffi.c, src/x86/ffi64.c:
-+	SIZEOF_ARG -> FFI_SIZEOF_ARG.
-+	* src/ia64/ffi.c: Include stdbool.h (provided by GCC 2.95+).
-+	* src/debug.c (ffi_assert): Accept stringized failed assertion.
-+	(ffi_type_test): Rewritten.
-+	* src/prep-cif.c (initialize_aggregate, ffi_prep_cif): Call
-+	FFI_ASSERT_VALID_TYPE.
-+	* src/alpha/ffitarget.h, src/arm/ffitarget.h,
-+	src/ia64/ffitarget.h, src/m68k/ffitarget.h,
-+	src/mips/ffitarget.h, src/powerpc/ffitarget.h,
-+	src/s390/ffitarget.h, src/sh/ffitarget.h,
-+	src/sh64/ffitarget.h, src/sparc/ffitarget.h,
-+	src/x86/ffitarget.h: New files.
-+	* src/alpha/osf.S, src/arm/sysv.S, src/ia64/unix.S,
-+	src/m68k/sysv.S, src/mips/n32.S, src/mips/o32.S,
-+	src/powerpc/aix.S, src/powerpc/darwin.S,
-+	src/powerpc/ffi_darwin.c, src/powerpc/linux64.S,
-+	src/powerpc/linux64_closure.S, src/powerpc/ppc_closure.S,
-+	src/powerpc/sysv.S, src/s390/sysv.S, src/sh/sysv.S,
-+	src/sh64/sysv.S, src/sparc/v8.S, src/sparc/v9.S,
-+	src/x86/sysv.S, src/x86/unix64.S, src/x86/win32.S:
-+	include fficonfig.h
-+
-+2003-10-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
-+
-+	* src/mips/ffi.c: Use _ABIN32, _ABIO32 instead of external
-+	_MIPS_SIM_NABI32, _MIPS_SIM_ABI32.
-+
-+2003-10-19  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* src/powerpc/ffi_darwin.c (ffi_prep_args): Declare bytes again.
-+	Used when FFI_DEBUG = 1.
-+
-+2003-10-14  Alan Modra  <amodra@bigpond.net.au>
-+
-+	* src/types.c (double, longdouble): Default POWERPC64 to 8 byte size
-+	and align.
-+
-+2003-10-06  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
-+
-+	* include/ffi_mips.h: Define FFI_MIPS_N32 for N32/N64 ABIs,
-+	FFI_MIPS_O32 for O32 ABI.
-+
-+2003-10-01  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_64 for
-+	SPARC64. Cleanup whitespaces.
-+
-+2003-09-19  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* testsuite/libffi.call/closure_fn0.c: Xfail mips, arm,
-+	strongarm, xscale. Cleanup whitespaces.
-+	* testsuite/libffi.call/closure_fn1.c: Likewise.
-+	* testsuite/libffi.call/closure_fn2.c: Likewise.
-+	* testsuite/libffi.call/closure_fn3.c: Likewise.
-+	* testsuite/libffi.call/cls_12byte.c: Likewise.
-+	* testsuite/libffi.call/cls_16byte.c: Likewise.
-+	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_20byte.c: Likewise.
-+	* testsuite/libffi.call/cls_24byte.c: Likewise.
-+	* testsuite/libffi.call/cls_2byte.c: Likewise.
-+	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_3byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_3byte2.c: Likewise.
-+	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_4byte.c: Likewise.
-+	* testsuite/libffi.call/cls_5byte.c: Likewise.
-+	* testsuite/libffi.call/cls_6byte.c: Likewise.
-+	* testsuite/libffi.call/cls_7byte.c: Likewise.
-+	* testsuite/libffi.call/cls_8byte.c: Likewise.
-+	* testsuite/libffi.call/cls_double.c: Likewise.
-+	* testsuite/libffi.call/cls_float.c: Likewise.
-+	* testsuite/libffi.call/cls_uchar.c: Likewise.
-+	* testsuite/libffi.call/cls_uint.c: Likewise.
-+	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
-+	* testsuite/libffi.call/cls_ushort.c: Likewise.
-+	* testsuite/libffi.call/nested_struct.c: Likewise.
-+	* testsuite/libffi.call/nested_struct1.c: Likewise.
-+	* testsuite/libffi.call/problem1.c: Likewise.
-+	* testsuite/libffi.special/unwindtest.cc: Likewise.
-+	* testsuite/libffi.call/pyobjc-tc.c: Cleanup whitespaces.
-+
-+2003-09-18  David Edelsohn  <edelsohn@gnu.org>
-+
-+	* src/powerpc/aix.S: Cleanup whitespaces.
-+	* src/powerpc/aix_closure.S: Likewise.
-+
-+2003-09-18  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* src/powerpc/darwin.S: Cleanup whitespaces, comment formatting.
-+	* src/powerpc/darwin_closure.S: Likewise.
-+	* src/powerpc/ffi_darwin.c: Likewise.
-+
-+2003-09-18  Andreas Tobler  <a.tobler@schweiz.ch>
-+	    David Edelsohn  <edelsohn@gnu.org>
-+
-+	* src/types.c (double): Add AIX and Darwin to the right TYPEDEF.
-+	* src/powerpc/aix_closure.S: Remove the pointer to the outgoing
-+	parameter stack.
-+	* src/powerpc/darwin_closure.S: Likewise.
-+	* src/powerpc/ffi_darwin.c (ffi_prep_args): Handle structures
-+	according to the Darwin/AIX ABI.
-+	(ffi_prep_cif_machdep): Likewise.
-+	(ffi_closure_helper_DARWIN): Likewise.
-+	Remove the outgoing parameter stack logic. Simplify the evaluation
-+	of the different CASE types.
-+	(ffi_prep_clousure): Avoid the casts on lvalues. Change the branch
-+	statement in the trampoline code.
-+
-+2003-09-18  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* src/sh/ffi.c (ffi_prep_args): Take account into the alignement
-+	for the register size.
-+	(ffi_closure_helper_SYSV): Handle the structure return value
-+	address correctly.
-+	(ffi_closure_helper_SYSV): Return the appropriate type when
-+	the registers are used for the structure return value.
-+	* src/sh/sysv.S (ffi_closure_SYSV): Fix the stack layout for
-+	the 64-bit return value.  Update copyright years.
-+
-+2003-09-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
-+
-+	* testsuite/lib/libffi-dg.exp (libffi_target_compile): Search in
-+	srcdir for ffi_mips.h.
-+
-+2003-09-12  Alan Modra  <amodra@bigpond.net.au>
-+
-+	* src/prep_cif.c (initialize_aggregate): Include tail padding in
-+	structure size.
-+	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Correct
-+	placement of float result.
-+	* testsuite/libffi.special/unwindtest.cc (closure_test_fn1): Correct
-+	cast of "resp" for big-endian 64 bit machines.
-+
-+2003-09-11  Alan Modra  <amodra@bigpond.net.au>
-+
-+	* src/types.c (double, longdouble): Merge identical SH and ARM
-+	typedefs, and add POWERPC64.
-+	* src/powerpc/ffi.c (ffi_prep_args64): Correct next_arg calc for
-+	struct split over gpr and rest.
-+	(ffi_prep_cif_machdep): Correct intarg_count for structures.
-+	* src/powerpc/linux64.S (ffi_call_LINUX64): Fix gpr offsets.
-+
-+2003-09-09  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* src/powerpc/ffi.c (ffi_closure_helper_SYSV) Handle struct
-+	passing correctly.
-+
-+2003-09-09  Alan Modra  <amodra@bigpond.net.au>
-+
-+	* configure: Regenerate.
-+
-+2003-09-04  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* Makefile.am: Remove build rules for ffitest.
-+	* Makefile.in: Rebuilt.
-+
-+2003-09-04  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* src/java_raw_api.c: Include <stdlib.h> to fix compiler warning
-+	about implicit declaration of abort().
-+
-+2003-09-04  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* Makefile.am: Add dejagnu test framework. Fixes PR other/11411.
-+	* Makefile.in: Rebuilt.
-+	* configure.in: Add dejagnu test framework.
-+	* configure: Rebuilt.
-+
-+	* testsuite/Makefile.am: New file.
-+	* testsuite/Makefile.in: Built
-+	* testsuite/lib/libffi-dg.exp: New file.
-+	* testsuite/config/default.exp: Likewise.
-+	* testsuite/libffi.call/call.exp: Likewise.
-+	* testsuite/libffi.call/ffitest.h: Likewise.
-+	* testsuite/libffi.call/closure_fn0.c: Likewise.
-+	* testsuite/libffi.call/closure_fn1.c: Likewise.
-+	* testsuite/libffi.call/closure_fn2.c: Likewise.
-+	* testsuite/libffi.call/closure_fn3.c: Likewise.
-+	* testsuite/libffi.call/cls_1_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_3_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_4_1byte.c: Likewise.
-+	* testsuite/libffi.call/cls_2byte.c: Likewise.
-+	* testsuite/libffi.call/cls_3byte1.c: Likewise.
-+	* testsuite/libffi.call/cls_3byte2.c: Likewise.
-+	* testsuite/libffi.call/cls_4byte.c: Likewise.
-+	* testsuite/libffi.call/cls_5byte.c: Likewise.
-+	* testsuite/libffi.call/cls_6byte.c: Likewise.
-+	* testsuite/libffi.call/cls_7byte.c: Likewise.
-+	* testsuite/libffi.call/cls_8byte.c: Likewise.
-+	* testsuite/libffi.call/cls_12byte.c: Likewise.
-+	* testsuite/libffi.call/cls_16byte.c: Likewise.
-+	* testsuite/libffi.call/cls_20byte.c: Likewise.
-+	* testsuite/libffi.call/cls_24byte.c: Likewise.
-+	* testsuite/libffi.call/cls_double.c: Likewise.
-+	* testsuite/libffi.call/cls_float.c: Likewise.
-+	* testsuite/libffi.call/cls_uchar.c: Likewise.
-+	* testsuite/libffi.call/cls_uint.c: Likewise.
-+	* testsuite/libffi.call/cls_ulonglong.c: Likewise.
-+	* testsuite/libffi.call/cls_ushort.c: Likewise.
-+	* testsuite/libffi.call/float.c: Likewise.
-+	* testsuite/libffi.call/float1.c: Likewise.
-+	* testsuite/libffi.call/float2.c: Likewise.
-+	* testsuite/libffi.call/many.c: Likewise.
-+	* testsuite/libffi.call/many_win32.c: Likewise.
-+	* testsuite/libffi.call/nested_struct.c: Likewise.
-+	* testsuite/libffi.call/nested_struct1.c: Likewise.
-+	* testsuite/libffi.call/pyobjc-tc.c: Likewise.
-+	* testsuite/libffi.call/problem1.c: Likewise.
-+	* testsuite/libffi.call/promotion.c: Likewise.
-+	* testsuite/libffi.call/return_ll.c: Likewise.
-+	* testsuite/libffi.call/return_sc.c: Likewise.
-+	* testsuite/libffi.call/return_uc.c: Likewise.
-+	* testsuite/libffi.call/strlen.c: Likewise.
-+	* testsuite/libffi.call/strlen_win32.c: Likewise.
-+	* testsuite/libffi.call/struct1.c: Likewise.
-+	* testsuite/libffi.call/struct2.c: Likewise.
-+	* testsuite/libffi.call/struct3.c: Likewise.
-+	* testsuite/libffi.call/struct4.c: Likewise.
-+	* testsuite/libffi.call/struct5.c: Likewise.
-+	* testsuite/libffi.call/struct6.c: Likewise.
-+	* testsuite/libffi.call/struct7.c: Likewise.
-+	* testsuite/libffi.call/struct8.c: Likewise.
-+	* testsuite/libffi.call/struct9.c: Likewise.
-+	* testsuite/libffi.special/special.exp: New file.
-+	* testsuite/libffi.special/ffitestcxx.h: Likewise.
-+	* testsuite/libffi.special/unwindtest.cc: Likewise.
-+
-+
-+2003-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* src/sh/ffi.c (OFS_INT16): Set 0 for little endian case.  Update
-+	copyright years.
-+
-+2003-08-02  Alan Modra  <amodra@bigpond.net.au>
-+
-+	* src/powerpc/ffi.c (ffi_prep_args64): Modify for changed gcc
-+	structure passing.
-+	(ffi_closure_helper_LINUX64): Likewise.
-+	* src/powerpc/linux64.S: Remove code writing to parm save area.
-+	* src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Use return
-+	address in lr from ffi_closure_helper_LINUX64 call to calculate
-+	table address.  Optimize function tail.
-+
-+2003-07-28  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* src/sparc/ffi.c: Handle all floating point registers.
-+	* src/sparc/v9.S: Likewise. Fixes second part of PR target/11410.
-+
-+2003-07-11  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
-+
-+	* README: Note that libffi is not part of GCC.  Update the project
-+	URL and status.
-+
-+2003-06-19  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
-+
-+	* src/powerpc/ppc_closure.S: Include ffi.h.
-+
-+2003-06-13  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
-+
-+	* src/x86/sysv.S: Avoid gas-only .uleb128/.sleb128 directives.
-+	Use C style comments.
-+
-+2003-06-13  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
-+
-+	* Makefile.am: Add SHmedia support.  Fix a typo of SH support.
-+	* Makefile.in: Regenerate.
-+	* configure.in (sh64-*-linux*, sh5*-*-linux*): Add target.
-+	* configure: Regenerate.
-+	* include/ffi.h.in: Add SHmedia support.
-+	* src/sh64/ffi.c: New file.
-+	* src/sh64/sysv.S: New file.
-+
-+2003-05-16  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* configure.in (HAVE_RO_EH_FRAME): Check whether .eh_frame section
-+	should be read-only.
-+	* configure: Rebuilt.
-+	* fficonfig.h.in: Rebuilt.
-+	* include/ffi.h.in (EH_FRAME_FLAGS): Define.
-+	* src/alpha/osf.S: Use EH_FRAME_FLAGS.
-+	* src/powerpc/linux64.S: Likewise.
-+	* src/powerpc/linux64_closure.S: Likewise.  Include ffi.h.
-+	* src/powerpc/sysv.S: Use EH_FRAME_FLAGS.  Use pcrel encoding
-+	if -fpic/-fPIC/-mrelocatable.
-+	* src/powerpc/powerpc_closure.S: Likewise.
-+	* src/sparc/v8.S: If HAVE_RO_EH_FRAME is defined, don't include
-+	#write in .eh_frame flags.
-+	* src/sparc/v9.S: Likewise.
-+	* src/x86/unix64.S: Use EH_FRAME_FLAGS.
-+	* src/x86/sysv.S: Likewise.  Use pcrel encoding if -fpic/-fPIC.
-+	* src/s390/sysv.S: Use EH_FRAME_FLAGS.  Include ffi.h.
-+
-+2003-05-07  Jeff Sturm  <jsturm@one-point.com>
-+
-+	Fixes PR bootstrap/10656
-+	* configure.in (HAVE_AS_REGISTER_PSEUDO_OP): Test assembler
-+	support for .register pseudo-op.
-+	* src/sparc/v8.S: Use it.
-+	* fficonfig.h.in: Rebuilt.
-+	* configure: Rebuilt.
-+
-+2003-04-18  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* include/ffi.h.in (POWERPC64): Define if 64-bit.
-+	(enum ffi_abi): Add FFI_LINUX64 on POWERPC.
-+	Make it the default on POWERPC64.
-+	(FFI_TRAMPOLINE_SIZE): Define to 24 on POWERPC64.
-+	* configure.in: Change powerpc-*-linux* into powerpc*-*-linux*.
-+	* configure: Rebuilt.
-+	* src/powerpc/ffi.c (hidden): Define.
-+	(ffi_prep_args_SYSV): Renamed from
-+	ffi_prep_args.  Cast pointers to unsigned long to shut up warnings.
-+	(NUM_GPR_ARG_REGISTERS64, NUM_FPR_ARG_REGISTERS64,
-+	ASM_NEEDS_REGISTERS64): New.
-+	(ffi_prep_args64): New function.
-+	(ffi_prep_cif_machdep): Handle FFI_LINUX64 ABI.
-+	(ffi_call): Likewise.
-+	(ffi_prep_closure): Likewise.
-+	(flush_icache): Surround by #ifndef POWERPC64.
-+	(ffi_dblfl): New union type.
-+	(ffi_closure_helper_SYSV): Use it to avoid aliasing problems.
-+	(ffi_closure_helper_LINUX64): New function.
-+	* src/powerpc/ppc_closure.S: Surround whole file by #ifndef
-+	__powerpc64__.
-+	* src/powerpc/sysv.S: Likewise.
-+	(ffi_call_SYSV): Rename ffi_prep_args to ffi_prep_args_SYSV.
-+	* src/powerpc/linux64.S: New file.
-+	* src/powerpc/linux64_closure.S: New file.
-+	* Makefile.am (EXTRA_DIST): Add src/powerpc/linux64.S and
-+	src/powerpc/linux64_closure.S.
-+	(TARGET_SRC_POWERPC): Likewise.
-+
-+	* src/ffitest.c (closure_test_fn, closure_test_fn1, closure_test_fn2,
-+	closure_test_fn3): Fix result printing on big-endian 64-bit
-+	machines.
-+	(main): Print tst2_arg instead of uninitialized tst2_result.
-+
-+	* src/ffitest.c (main): Hide what closure pointer really points to
-+	from the compiler.
-+
-+2003-04-16  Richard Earnshaw  <rearnsha@arm.com>
-+
-+	* configure.in (arm-*-netbsdelf*): Add configuration.
-+	(configure): Regenerated.
-+
-+2003-04-04  Loren J. Rittle  <ljrittle@acm.org>
-+
-+	* include/Makefile.in: Regenerate.
-+
-+2003-03-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
-+
-+	* libffi/include/ffi.h.in: Define X86 instead of X86_64 in 32
-+	bit mode.
-+	* libffi/src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV):
-+	Receive closure pointer through parameter, read args using
-+	__builtin_dwarf_cfa.
-+	(FFI_INIT_TRAMPOLINE): Send closure reference through eax.
-+
-+2003-03-12  Andreas Schwab  <schwab@suse.de>
-+
-+	* configure.in: Avoid trailing /. in toolexeclibdir.
-+	* configure: Rebuilt.
-+
-+2003-03-03  Andreas Tobler <a.tobler@schweiz.ch>
-+
-+	* src/powerpc/darwin_closure.S: Recode to fit dynamic libraries.
-+
-+2003-02-06  Andreas Tobler <a.tobler@schweiz.ch>
-+
-+	* libffi/src/powerpc/darwin_closure.S:
-+	Fix alignement bug, allocate 8 bytes for the result.
-+	* libffi/src/powerpc/aix_closure.S:
-+	Likewise.
-+	* libffi/src/powerpc/ffi_darwin.c:
-+	Update stackframe description for aix/darwin_closure.S.
-+
-+2003-02-06  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* src/s390/ffi.c (ffi_closure_helper_SYSV): Add hidden visibility
-+	attribute.
-+
-+2003-01-31  Christian Cornelssen  <ccorn@cs.tu-berlin.de>,
-+	    Andreas Schwab  <schwab@suse.de>
-+
-+	* configure.in: Adjust command to source config-ml.in to account
-+	for changes to the libffi_basedir definition.
-+	(libffi_basedir): Remove ${srcdir} from value and include trailing
-+	slash if nonempty.
-+
-+	* configure: Regenerate.
-+
-+2003-01-29  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
-+
-+	* src/powerpc/ppc_closure.S: Recode to fit shared libs.
-+
-+2003-01-28  Andrew Haley  <aph@redhat.com>
-+
-+	* include/ffi.h.in: Enable FFI_CLOSURES for x86_64.
-+	* src/x86/ffi64.c (ffi_prep_closure): New.
-+	(ffi_closure_UNIX64_inner): New.
-+	* src/x86/unix64.S (ffi_closure_UNIX64): New.
-+
-+2003-01-27  Alexandre Oliva  <aoliva@redhat.com>
-+
-+	* configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST.
-+	Remove USE_LIBDIR conditional.
-+	* Makefile.am (toolexecdir, toolexeclibdir): Don't override.
-+	* Makefile.in, configure: Rebuilt.
-+
-+2003-01027  David Edelsohn  <edelsohn@gnu.org>
-+
-+	* Makefile.am (TARGET_SRC_POWERPC_AIX): Fix typo.
-+	* Makefile.in: Regenerate.
-+
-+2003-01-22  Andrew Haley  <aph@redhat.com>
-+
-+	* src/powerpc/darwin.S (_ffi_call_AIX): Add Augmentation size to
-+	unwind info.
-+
-+2003-01-21  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* src/powerpc/darwin.S: Add unwind info.
-+	* src/powerpc/darwin_closure.S: Likewise.
-+
-+2003-01-14  Andrew Haley  <aph@redhat.com>
-+
-+	* src/x86/ffi64.c (ffi_prep_args): Check for void retval.
-+	(ffi_prep_cif_machdep): Likewise.
-+	* src/x86/unix64.S: Add unwind info.
-+
-+2003-01-14  Andreas Jaeger  <aj@suse.de>
-+
-+	* src/ffitest.c (main): Only use ffi_closures if those are
-+	supported.
-+
-+2003-01-13 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+	* libffi/src/ffitest.c
-+	 add closure testcases
-+
-+2003-01-13 Kevin B. Hendricks <khendricks@ivey.uwo.ca>
-+
-+	* libffi/src/powerpc/ffi.c
-+	 fix alignment bug for float (4 byte aligned iso 8 byte)
-+
-+2003-01-09  Geoffrey Keating  <geoffk@apple.com>
-+
-+	* src/powerpc/ffi_darwin.c: Remove RCS version string.
-+	* src/powerpc/darwin.S: Remove RCS version string.
-+
-+2003-01-03  Jeff Sturm  <jsturm@one-point.com>
-+
-+	* include/ffi.h.in: Add closure defines for SPARC, SPARC64.
-+	* src/ffitest.c (main): Use static storage for closure.
-+	* src/sparc/ffi.c (ffi_prep_closure, ffi_closure_sparc_inner): New.
-+	* src/sparc/v8.S (ffi_closure_v8): New.
-+	* src/sparc/v9.S (ffi_closure_v9): New.
-+
-+2002-11-10  Ranjit Mathew <rmathew@hotmail.com>
-+
-+	* include/ffi.h.in: Added FFI_STDCALL ffi_type
-+	  enumeration for X86_WIN32.
-+	* src/x86/win32.S: Added ffi_call_STDCALL function
-+	  definition.
-+	* src/x86/ffi.c (ffi_call/ffi_raw_call): Added
-+	  switch cases for recognising FFI_STDCALL and
-+	  calling ffi_call_STDCALL if target is X86_WIN32.
-+	* src/ffitest.c (my_stdcall_strlen/stdcall_many):
-+	  stdcall versions of the "my_strlen" and "many"
-+	  test functions (for X86_WIN32).
-+	  Added test cases to test stdcall invocation using
-+	  these functions.
-+
-+2002-12-02  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* src/sh/sysv.S: Add DWARF2 unwind info.
-+
-+2002-11-27  Ulrich Weigand  <uweigand@de.ibm.com>
-+
-+	* src/s390/sysv.S (.eh_frame section): Make section read-only.
-+
-+2002-11-26  Jim Wilson  <wilson@redhat.com>
-+
-+	* src/types.c (FFI_TYPE_POINTER): Has size 8 on IA64.
-+
-+2002-11-23  H.J. Lu <hjl@gnu.org>
-+
-+	* acinclude.m4: Add dummy AM_PROG_LIBTOOL.
-+	Include ../config/accross.m4.
-+	* aclocal.m4; Rebuild.
-+	* configure: Likewise.
-+
-+2002-11-15  Ulrich Weigand  <uweigand@de.ibm.com>
-+
-+	* src/s390/sysv.S (.eh_frame section): Adapt to pcrel FDE encoding.
-+
-+2002-11-11  DJ Delorie  <dj@redhat.com>
-+
-+	* configure.in: Look for common files in the right place.
-+
-+2002-10-08  Ulrich Weigand  <uweigand@de.ibm.com>
-+
-+	* src/java_raw_api.c (ffi_java_raw_to_ptrarray): Interpret
-+	raw data as _Jv_word values, not ffi_raw.
-+	(ffi_java_ptrarray_to_raw): Likewise.
-+	(ffi_java_rvalue_to_raw): New function.
-+	(ffi_java_raw_call): Call it.
-+	(ffi_java_raw_to_rvalue): New function.
-+	(ffi_java_translate_args): Call it.
-+	* src/ffitest.c (closure_test_fn): Interpret return value
-+	as ffi_arg, not int.
-+	* src/s390/ffi.c (ffi_prep_cif_machdep): Add missing
-+	FFI_TYPE_POINTER case.
-+	(ffi_closure_helper_SYSV): Likewise.  Also, assume return
-+	values extended to word size.
-+
-+2002-10-02  Andreas Jaeger  <aj@suse.de>
-+
-+	* src/x86/ffi64.c (ffi_prep_cif_machdep): Remove debug output.
-+
-+2002-10-01  Bo Thorsen  <bo@smetana.suse.de>
-+
-+	* include/ffi.h.in: Fix i386 win32 compilation.
-+
-+2002-09-30  Ulrich Weigand  <uweigand@de.ibm.com>
-+
-+	* configure.in: Add s390x-*-linux-* target.
-+	* configure: Regenerate.
-+	* include/ffi.h.in: Define S390X for s390x targets.
-+	(FFI_CLOSURES): Define for s390/s390x.
-+	(FFI_TRAMPOLINE_SIZE): Likewise.
-+	(FFI_NATIVE_RAW_API): Likewise.
-+	* src/prep_cif.c (ffi_prep_cif): Do not compute stack space for s390.
-+	* src/types.c (FFI_TYPE_POINTER): Use 8-byte pointers on s390x.
-+	* src/s390/ffi.c: Major rework of existing code.  Add support for
-+	s390x targets.  Add closure support.
-+	* src/s390/sysv.S: Likewise.
-+
-+2002-09-29  Richard Earnshaw  <rearnsha@arm.com>
-+
-+	* src/arm/sysv.S: Fix typo.
-+
-+2002-09-28  Richard Earnshaw  <rearnsha@arm.com>
-+
-+	* src/arm/sysv.S: If we don't have machine/asm.h and the pre-processor
-+	has defined __USER_LABEL_PREFIX__, then use it in CNAME.
-+	(ffi_call_SYSV): Handle soft-float.
-+
-+2002-09-27  Bo Thorsen  <bo@suse.de>
-+
-+	* include/ffi.h.in: Fix multilib x86-64 support.
-+
-+2002-09-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
-+
-+	* Makefile.am (all-multi): Fix multilib parallel build.
-+
-+2002-07-19  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* configure.in (sh[34]*-*-linux*): Add brackets.
-+	* configure: Regenerate.
-+
-+2002-07-18  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+	* Makefile.am: Add SH support.
-+	* Makefile.in: Regenerate.
-+	* configure.in (sh-*-linux*, sh[34]*-*-linux*): Add target.
-+	* configure: Regenerate.
-+	* include/ffi.h.in: Add SH support.
-+	* src/sh/ffi.c: New file.
-+	* src/sh/sysv.S: New file.
-+	* src/types.c: Add SH support.
-+
-+2002-07-16  Bo Thorsen  <bo@suse.de>
-+
-+	* src/x86/ffi64.c: New file that adds x86-64 support.
-+	* src/x86/unix64.S: New file that handles argument setup for
-+	x86-64.
-+	* src/x86/sysv.S: Don't use this on x86-64.
-+	* src/x86/ffi.c: Don't use this on x86-64.
-+	Remove unused vars.
-+	* src/prep_cif.c (ffi_prep_cif): Don't do stack size calculation
-+	for x86-64.
-+	* src/ffitest.c (struct6): New test that tests a special case in
-+	the x86-64 ABI.
-+	(struct7): Likewise.
-+	(struct8): Likewise.
-+	(struct9): Likewise.
-+	(closure_test_fn): Silence warning about this when it's not used.
-+	(main): Add the new tests.
-+	(main): Fix a couple of wrong casts and silence some compiler warnings.
-+	* include/ffi.h.in: Add x86-64 ABI definition.
-+	* fficonfig.h.in: Regenerate.
-+	* Makefile.am: Add x86-64 support.
-+	* configure.in: Likewise.
-+	* Makefile.in: Regenerate.
-+	* configure: Likewise.
-+
-+2002-06-24  Bo Thorsen  <bo@suse.de>
-+
-+	* src/types.c: Merge settings for similar architectures.
-+	Add x86-64 sizes and alignments.
-+
-+2002-06-23  Bo Thorsen  <bo@suse.de>
-+
-+	* src/arm/ffi.c (ffi_prep_args): Remove unused vars.
-+	* src/sparc/ffi.c (ffi_prep_args_v8): Likewise.
-+	* src/mips/ffi.c (ffi_prep_args): Likewise.
-+	* src/m68k/ffi.c (ffi_prep_args): Likewise.
-+
-+2002-07-18  H.J. Lu  (hjl@gnu.org)
-+
-+	* Makefile.am (TARGET_SRC_MIPS_LINUX): New.
-+	(libffi_la_SOURCES): Support MIPS_LINUX.
-+	(libffi_convenience_la_SOURCES): Likewise.
-+	* Makefile.in: Regenerated.
-+
-+	* configure.in (mips64*-*): Skip.
-+	(mips*-*-linux*): New.
-+	* configure: Regenerated.
-+
-+	* src/mips/ffi.c: Include <sgidefs.h>.
-+
-+2002-06-06  Ulrich Weigand  <uweigand@de.ibm.com>
-+
-+	* src/s390/sysv.S: Save/restore %r6.  Add DWARF-2 unwind info.
-+
-+2002-05-27  Roger Sayle  <roger@eyesopen.com>
-+
-+	* src/x86/ffi.c (ffi_prep_args): Remove reference to avn.
-+
-+2002-05-27  Bo Thorsen  <bo@suse.de>
-+
-+	* src/x86/ffi.c (ffi_prep_args): Remove unused variable and
-+	fix formatting.
-+
-+2002-05-13  Andreas Tobler  <a.tobler@schweiz.ch>
-+
-+	* src/powerpc/ffi_darwin.c (ffi_prep_closure): Declare fd at
-+	beginning of function (for older apple cc).
-+
-+2002-05-08  Alexandre Oliva  <aoliva@redhat.com>
-+
-+	* configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at
-+	script entry, and set LD to it when configuring multilibs.
-+	* configure: Rebuilt.
-+
-+2002-05-05  Jason Thorpe  <thorpej@wasabisystems.com>
-+
-+	* configure.in (sparc64-*-netbsd*): Add target.
-+	(sparc-*-netbsdelf*): Likewise.
-+	* configure: Regenerate.
-+
-+2002-04-28  David S. Miller  <davem@redhat.com>
-+
-+	* configure.in, configure: Fix SPARC test in previous change.
-+
-+2002-04-29  Gerhard Tonn  <GerhardTonn@swol.de>
-+
-+	* Makefile.am: Add Linux for S/390 support.
-+	* Makefile.in: Regenerate.
-+	* configure.in: Add Linux for S/390 support.
-+	* configure: Regenerate.
-+	* include/ffi.h.in: Add Linux for S/390 support.
-+	* src/s390/ffi.c: New file from libffi CVS tree.
-+	* src/s390/sysv.S: New file from libffi CVS tree.
-+
-+2002-04-28  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* configure.in (HAVE_AS_SPARC_UA_PCREL): Check for working
-+	%r_disp32().
-+	* src/sparc/v8.S: Use it.
-+	* src/sparc/v9.S: Likewise.
-+	* fficonfig.h.in: Rebuilt.
-+	* configure: Rebuilt.
-+
-+2002-04-08  Hans Boehm  <Hans_Boehm@hp.com>
-+
-+	* src/java_raw_api.c (ffi_java_raw_size): Handle FFI_TYPE_DOUBLE
-+	correctly.
-+	* src/ia64/unix.S: Add unwind information. Fix comments.
-+	Save sp in a way that's compatible with unwind info.
-+	(ffi_call_unix): Correctly restore sp in all cases.
-+	* src/ia64/ffi.c: Add, fix comments.
-+
-+2002-04-08  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* src/sparc/v8.S: Make .eh_frame dependent on target word size.
-+
-+2002-04-06  Jason Thorpe  <thorpej@wasabisystems.com>
-+
-+	* configure.in (alpha*-*-netbsd*): Add target.
-+	* configure: Regenerate.
-+
-+2002-04-04  Jeff Sturm  <jsturm@one-point.com>
-+
-+	* src/sparc/v8.S: Add unwind info.
-+	* src/sparc/v9.S: Likewise.
-+
-+2002-03-30  Krister Walfridsson  <cato@df.lth.se>
-+
-+	* configure.in: Enable i*86-*-netbsdelf*.
-+	* configure: Rebuilt.
-+
-+2002-03-29  David Billinghurst <David.Billinghurst@riotinto.com>
-+
-+	PR other/2620
-+	* src/mips/n32.s: Delete
-+	* src/mips/o32.s: Delete
-+
-+2002-03-21  Loren J. Rittle  <ljrittle@acm.org>
-+
-+	* configure.in: Enable alpha*-*-freebsd*.
-+	* configure: Rebuilt.
-+
-+2002-03-17  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
-+
-+	* Makefile.am: libfficonvenience -> libffi_convenience.
-+	* Makefile.in: Rebuilt.
-+
-+	* Makefile.am: Define ffitest_OBJECTS.
-+	* Makefile.in: Rebuilt.
-+
-+2002-03-07  Andreas Tobler  <toa@pop.agri.ch>
-+	    David Edelsohn  <edelsohn@gnu.org>
-+
-+	* Makefile.am (EXTRA_DIST): Add Darwin and AIX closure files.
-+	(TARGET_SRC_POWERPC_AIX): Add aix_closure.S.
-+	(TARGET_SRC_POWERPC_DARWIN): Add darwin_closure.S.
-+	* Makefile.in: Regenerate.
-+	* include/ffi.h.in: Add AIX and Darwin closure definitions.
-+	* src/powerpc/ffi_darwin.c (ffi_prep_closure): New function.
-+	(flush_icache, flush_range): New functions.
-+	(ffi_closure_helper_DARWIN): New function.
-+	* src/powerpc/aix_closure.S: New file.
-+	* src/powerpc/darwin_closure.S: New file.
-+
-+2002-02-24  Jeff Sturm  <jsturm@one-point.com>
-+
-+	* include/ffi.h.in: Add typedef for ffi_arg.
-+	* src/ffitest.c (main): Declare rint with ffi_arg.
-+
-+2002-02-21  Andreas Tobler  <toa@pop.agri.ch>
-+
-+	* src/powerpc/ffi_darwin.c (ffi_prep_args): Skip appropriate
-+	number of GPRs for floating-point arguments.
-+
-+2002-01-31  Anthony Green  <green@redhat.com>
-+
-+	* configure: Rebuilt.
-+	* configure.in: Replace CHECK_SIZEOF and endian tests with
-+	cross-compiler friendly macros.
-+	* aclocal.m4 (AC_COMPILE_CHECK_SIZEOF, AC_C_BIGENDIAN_CROSS): New
-+	macros.
-+
-+2002-01-18  David Edelsohn  <edelsohn@gnu.org>
-+
-+	* src/powerpc/darwin.S (_ffi_call_AIX): New.
-+	* src/powerpc/aix.S (ffi_call_DARWIN): New.
-+
-+2002-01-17  David Edelsohn  <edelsohn@gnu.org>
-+
-+	* Makefile.am (EXTRA_DIST): Add Darwin and AIX files.
-+	(TARGET_SRC_POWERPC_AIX): New.
-+	(POWERPC_AIX): New stanza.
-+	* Makefile.in: Regenerate.
-+	* configure.in: Add AIX case.
-+	* configure: Regenerate.
-+	* include/ffi.h.in (ffi_abi): Add FFI_AIX.
-+	* src/powerpc/ffi_darwin.c (ffi_status): Use "long" to scale frame
-+	size.  Fix "long double" support.
-+	(ffi_call): Add FFI_AIX case.
-+	* src/powerpc/aix.S: New.
-+
-+2001-10-09  John Hornkvist  <john@toastedmarshmallow.com>
-+
-+	Implement Darwin PowerPC ABI.
-+	* configure.in: Handle powerpc-*-darwin*.
-+	* Makefile.am: Set source files for POWERPC_DARWIN.
-+	* configure: Rebuilt.
-+	* Makefile.in: Rebuilt.
-+	* include/ffi.h.in: Define FFI_DARWIN and FFI_DEFAULT_ABI for
-+	POWERPC_DARWIN.
-+	* src/powerpc/darwin.S: New file.
-+	* src/powerpc/ffi_darwin.c: New file.
-+
-+2001-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>
-+
-+	* src/x86/ffi.c: Fix spelling error of "separate" as "seperate".
-+
-+2001-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
-+
-+	* src/x86/sysv.S: Avoid gas-only .balign directive.
-+	Use C style comments.
-+
-+2001-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
-+
-+	* src/alpha/ffi.c (ffi_prep_closure): Avoid gas-only mnemonic.
-+	Fixes PR bootstrap/3563.
-+
-+2001-06-26  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
-+
-+	* src/alpha/osf.S (ffi_closure_osf): Use .rdata for ECOFF.
-+
-+2001-06-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
-+
-+	* configure.in: Recognize sparc*-sun-* host.
-+	* configure: Regenerate.
-+
-+2001-06-06  Andrew Haley  <aph@redhat.com>
-+
-+	* src/alpha/osf.S (__FRAME_BEGIN__): Conditionalize for ELF.
-+
-+2001-06-03  Andrew Haley  <aph@redhat.com>
-+
-+	* src/alpha/osf.S: Add unwind info.
-+	* src/powerpc/sysv.S: Add unwind info.
-+	* src/powerpc/ppc_closure.S: Likewise.
-+
-+2000-05-31  Jeff Sturm  <jsturm@one-point.com>
-+
-+	* configure.in: Fix AC_ARG_ENABLE usage.
-+	* configure: Rebuilt.
-+
-+2001-05-06  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
-+
-+	* configure.in: Remove warning about beta code.
-+	* configure: Rebuilt.
-+
-+2001-04-25  Hans Boehm <Hans_Boehm@hp.com>
-+
-+	* src/ia64/unix.S: Restore stack pointer when returning from
-+	ffi_closure_UNIX.
-+	* src/ia64/ffi.c: Fix typo in comment.
-+
-+2001-04-18  Jim Wilson  <wilson@redhat.com>
-+
-+	* src/ia64/unix.S: Delete unnecessary increment and decrement of loc2
-+	to eliminate RAW DV.
-+
-+2001-04-12  Bryce McKinlay  <bryce@albatross.co.nz>
-+
-+	* Makefile.am: Make a libtool convenience library.
-+	* Makefile.in: Rebuilt.
-+
-+2001-03-29  Bryce McKinlay  <bryce@albatross.co.nz>
-+
-+	* configure.in: Use different syntax for subdirectory creation.
-+	* configure: Rebuilt.
-+
-+2001-03-27  Jon Beniston  <jon@beniston.com>
-+
-+	* configure.in: Added X86_WIN32 target (Win32, CygWin, MingW).
-+	* configure: Rebuilt.
-+	* Makefile.am: Added X86_WIN32 target support.
-+	* Makefile.in: Rebuilt.
-+
-+	* include/ffi.h.in: Added X86_WIN32 target support.
-+
-+	* src/ffitest.c: Doesn't run structure tests for X86_WIN32 targets.
-+	* src/types.c: Added X86_WIN32 target support.
-+
-+	* src/x86/win32.S: New file. Based on sysv.S, but with EH
-+	stuff removed and made to work with CygWin's gas.
-+
-+2001-03-26  Bryce McKinlay  <bryce@albatross.co.nz>
-+
-+	* configure.in: Make target subdirectory in build dir.
-+	* Makefile.am: Override suffix based rules to specify correct output
-+	subdirectory.
-+	* Makefile.in: Rebuilt.
-+	* configure: Rebuilt.
-+
-+2001-03-23  Kevin B Hendricks  <khendricks@ivey.uwo.ca>
-+
-+	* src/powerpc/ppc_closure.S: New file.
-+	* src/powerpc/ffi.c (ffi_prep_args): Fixed ABI compatibility bug
-+	involving long long and register pairs.
-+	(ffi_prep_closure): New function.
-+	(flush_icache): Likewise.
-+	(ffi_closure_helper_SYSV): Likewise.
-+	* include/ffi.h.in (FFI_CLOSURES): Define on PPC.
-+	(FFI_TRAMPOLINE_SIZE): Likewise.
-+	(FFI_NATIVE_RAW_API): Likewise.
-+	* Makefile.in: Rebuilt.
-+	* Makefile.am (EXTRA_DIST): Added src/powerpc/ppc_closure.S.
-+	(TARGET_SRC_POWERPC): Likewise.
-+
-+2001-03-19  Tom Tromey  <tromey@redhat.com>
-+
-+	* Makefile.in: Rebuilt.
-+	* Makefile.am (ffitest_LDFLAGS): New macro.
-+
-+2001-03-02  Nick Clifton  <nickc@redhat.com>
-+
-+	* include/ffi.h.in: Remove RCS ident string.
-+	* include/ffi_mips.h: Remove RCS ident string.
-+	* src/debug.c: Remove RCS ident string.
-+	* src/ffitest.c: Remove RCS ident string.
-+	* src/prep_cif.c: Remove RCS ident string.
-+	* src/types.c: Remove RCS ident string.
-+	* src/alpha/ffi.c: Remove RCS ident string.
-+	* src/alpha/osf.S: Remove RCS ident string.
-+	* src/arm/ffi.c: Remove RCS ident string.
-+	* src/arm/sysv.S: Remove RCS ident string.
-+	* src/mips/ffi.c: Remove RCS ident string.
-+	* src/mips/n32.S: Remove RCS ident string.
-+	* src/mips/o32.S: Remove RCS ident string.
-+	* src/sparc/ffi.c: Remove RCS ident string.
-+	* src/sparc/v8.S: Remove RCS ident string.
-+	* src/sparc/v9.S: Remove RCS ident string.
-+	* src/x86/ffi.c: Remove RCS ident string.
-+	* src/x86/sysv.S: Remove RCS ident string.
-+
-+2001-02-08  Joseph S. Myers  <jsm28@cam.ac.uk>
-+
-+	* include/ffi.h.in: Change sourceware.cygnus.com references to
-+	gcc.gnu.org.
-+
-+2000-12-09  Richard Henderson  <rth@redhat.com>
-+
-+	* src/alpha/ffi.c (ffi_call): Simplify struct return test.
-+	(ffi_closure_osf_inner): Index rather than increment avalue
-+	and arg_types.  Give ffi_closure_osf the raw return value type.
-+	* src/alpha/osf.S (ffi_closure_osf): Handle return value type
-+	promotion.
-+
-+2000-12-07  Richard Henderson  <rth@redhat.com>
-+
-+	* src/raw_api.c (ffi_translate_args): Fix typo.
-+	(ffi_prep_closure): Likewise.
-+
-+	* include/ffi.h.in [ALPHA]: Define FFI_CLOSURES and
-+	FFI_TRAMPOLINE_SIZE.
-+	* src/alpha/ffi.c (ffi_prep_cif_machdep): Adjust minimal
-+	cif->bytes for new ffi_call_osf implementation.
-+	(ffi_prep_args): Absorb into ...
-+	(ffi_call): ... here.  Do all stack allocation here and
-+	avoid a callback function.
-+	(ffi_prep_closure, ffi_closure_osf_inner): New.
-+	* src/alpha/osf.S (ffi_call_osf): Reimplement with no callback.
-+	(ffi_closure_osf): New.
-+
-+2000-09-10  Alexandre Oliva  <aoliva@redhat.com>
-+
-+	* config.guess, config.sub, install-sh: Removed.
-+	* ltconfig, ltmain.sh, missing, mkinstalldirs: Likewise.
-+	* Makefile.in: Rebuilt.
-+
-+	* acinclude.m4: Include libtool macros from the top level.
-+	* aclocal.m4, configure: Rebuilt.
-+
-+2000-08-22  Alexandre Oliva  <aoliva@redhat.com>
-+
-+	* configure.in [i*86-*-freebsd*] (TARGET, TARGETDIR): Set.
-+	* configure: Rebuilt.
-+
-+2000-05-11  Scott Bambrough  <scottb@netwinder.org>
-+
-+	* libffi/src/arm/sysv.S (ffi_call_SYSV): Doubles are not saved to
-+	memory correctly.  Use conditional instructions, not branches where
-+	possible.
-+
-+2000-05-04  Tom Tromey  <tromey@cygnus.com>
-+
-+	* configure: Rebuilt.
-+	* configure.in: Match `arm*-*-linux-*'.
-+	From Chris Dornan <cdornan@arm.com>.
-+
-+2000-04-28  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* Makefile.am (SUBDIRS): Define.
-+	(AM_MAKEFLAGS): Likewise.
-+	(Multilib support.): Add section.
-+	* Makefile.in: Rebuilt.
-+	* ltconfig (extra_compiler_flags, extra_compiler_flags_value):
-+	New variables. Set for gcc using -print-multi-lib. Export them
-+	to libtool.
-+	(sparc64-*-linux-gnu*): Use libsuff 64 for search paths.
-+	* ltmain.sh (B|b|V): Don't throw away gcc's -B, -b and -V options
-+	for -shared links.
-+	(extra_compiler_flags_value, extra_compiler_flags): Check these
-+	for extra compiler options which need to be passed down in
-+	compiler_flags.
-+
-+2000-04-16  Anthony Green  <green@redhat.com>
-+
-+	* configure: Rebuilt.
-+	* configure.in: Change i*86-pc-linux* to i*86-*-linux*.
-+
-+2000-04-14  Jakub Jelinek  <jakub@redhat.com>
-+
-+	* include/ffi.h.in (SPARC64): Define for 64bit SPARC builds.
-+	Set SPARC FFI_DEFAULT_ABI based on SPARC64 define.
-+	* src/sparc/ffi.c (ffi_prep_args_v8): Renamed from ffi_prep_args.
-+	Replace all void * sizeofs with sizeof(int).
-+	Only compare type with FFI_TYPE_LONGDOUBLE if LONGDOUBLE is
-+	different than DOUBLE.
-+	Remove FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases (handled elsewhere).
-+	(ffi_prep_args_v9): New function.
-+	(ffi_prep_cif_machdep): Handle V9 ABI and long long on V8.
-+	(ffi_V9_return_struct): New function.
-+	(ffi_call): Handle FFI_V9 ABI from 64bit code and FFI_V8 ABI from
-+	32bit code (not yet cross-arch calls).
-+	* src/sparc/v8.S: Add struct return delay nop.
-+	Handle long long.
-+	* src/sparc/v9.S: New file.
-+	* src/prep_cif.c (ffi_prep_cif): Return structure pointer
-+	is used on sparc64 only for structures larger than 32 bytes.
-+	Pass by reference for structures is done for structure arguments
-+	larger than 16 bytes.
-+	* src/ffitest.c (main): Use 64bit rint on sparc64.
-+	Run long long tests on sparc.
-+	* src/types.c (FFI_TYPE_POINTER): Pointer is 64bit on alpha and
-+	sparc64.
-+	(FFI_TYPE_LONGDOUBLE): long double is 128 bit aligned to 128 bits
-+	on sparc64.
-+	* configure.in (sparc-*-linux*): New supported target.
-+	(sparc64-*-linux*): Likewise.
-+	* configure: Rebuilt.
-+	* Makefile.am: Add v9.S to SPARC files.
-+	* Makefile.in: Likewise.
-+	(LINK): Surround $(CCLD) into double quotes, so that multilib
-+	compiles work correctly.
-+
-+2000-04-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
-+
-+	* configure: Rebuilt.
-+	* configure.in: (i*86-*-solaris*): New libffi target. Patch
-+	proposed by Bryce McKinlay.
-+
-+2000-03-20  Tom Tromey  <tromey@cygnus.com>
-+
-+	* Makefile.in: Hand edit for java_raw_api.lo.
-+
-+2000-03-08  Bryce McKinlay  <bryce@albatross.co.nz>
-+
-+	* config.guess, config.sub: Update from the gcc tree.
-+	Fix for PR libgcj/168.
-+
-+2000-03-03  Tom Tromey  <tromey@cygnus.com>
-+
-+	* Makefile.in: Fixed ia64 by hand.
-+
-+	* configure: Rebuilt.
-+	* configure.in (--enable-multilib): New option.
-+	(libffi_basedir): New subst.
-+	(AC_OUTPUT): Added multilib code.
-+
-+2000-03-02  Tom Tromey  <tromey@cygnus.com>
-+
-+	* Makefile.in: Rebuilt.
-+	* Makefile.am (TARGET_SRC_IA64): Use `ia64', not `alpha', as
-+	directory name.
-+
-+2000-02-25  Hans Boehm <boehm@acm.org>
-+
-+	* src/ia64/ffi.c, src/ia64/ia64_flags.h, src/ia64/unix.S: New
-+	files.
-+	* src/raw_api.c (ffi_translate_args): Fixed typo in argument
-+	list.
-+	(ffi_prep_raw_closure): Use ffi_translate_args, not
-+	ffi_closure_translate.
-+	* src/java_raw_api.c: New file.
-+	* src/ffitest.c (closure_test_fn): New function.
-+	(main): Define `rint' as long long on IA64.  Added new test when
-+	FFI_CLOSURES is defined.
-+	* include/ffi.h.in (ALIGN): Use size_t, not unsigned.
-+	(ffi_abi): Recognize IA64.
-+	(ffi_raw): Added `flt' field.
-+	Added "Java raw API" code.
-+	* configure.in: Recognize ia64.
-+	* Makefile.am (TARGET_SRC_IA64): New macro.
-+	(libffi_la_common_SOURCES): Added java_raw_api.c.
-+	(libffi_la_SOURCES): Define in IA64 case.
-+
-+2000-01-04  Tom Tromey  <tromey@cygnus.com>
-+
-+	* Makefile.in: Rebuilt with newer automake.
-+
-+1999-12-31  Tom Tromey  <tromey@cygnus.com>
-+
-+	* Makefile.am (INCLUDES): Added -I$(top_srcdir)/src.
-+
-+1999-09-01  Tom Tromey  <tromey@cygnus.com>
-+
-+	* include/ffi.h.in: Removed PACKAGE and VERSION defines and
-+	undefs.
-+	* fficonfig.h.in: Rebuilt.
-+	* configure: Rebuilt.
-+	* configure.in: Pass 3rd argument to AM_INIT_AUTOMAKE.
-+	Use AM_PROG_LIBTOOL (automake 1.4 compatibility).
-+	* acconfig.h: Don't #undef PACKAGE or VERSION.
-+
-+1999-08-09  Anthony Green  <green@cygnus.com>
-+
-+	* include/ffi.h.in: Try to work around messy header problem
-+	with PACKAGE and VERSION.
-+
-+	* configure: Rebuilt.
-+	* configure.in: Change version to 2.00-beta.
-+
-+	* fficonfig.h.in: Rebuilt.
-+	* acconfig.h (FFI_NO_STRUCTS, FFI_NO_RAW_API): Define.
-+
-+	* src/x86/ffi.c (ffi_raw_call): Rename.
-+
-+1999-08-02  Kresten Krab Thorup  <krab@dominiq.is.s.u-tokyo.ac.jp>
-+
-+	* src/x86/ffi.c (ffi_closure_SYSV): New function.
-+	(ffi_prep_incoming_args_SYSV): Ditto.
-+	(ffi_prep_closure): Ditto.
-+	(ffi_closure_raw_SYSV): Ditto.
-+	(ffi_prep_raw_closure): More ditto.
-+	(ffi_call_raw): Final ditto.
-+
-+	* include/ffi.h.in: Add definitions for closure and raw API.
-+
-+	* src/x86/ffi.c (ffi_prep_cif_machdep): Added case for
-+	FFI_TYPE_UINT64.
-+
-+	* Makefile.am (libffi_la_common_SOURCES): Added raw_api.c
-+
-+	* src/raw_api.c: New file.
-+
-+	* include/ffi.h.in (ffi_raw): New type.
-+	(UINT_ARG, SINT_ARG): New defines.
-+	(ffi_closure, ffi_raw_closure): New types.
-+	(ffi_prep_closure, ffi_prep_raw_closure): New declarations.
-+
-+	* configure.in: Add check for endianness and sizeof void*.
-+
-+	* src/x86/sysv.S (ffi_call_SYSV): Call fixup routine via argument,
-+	instead of directly.
-+
-+	* configure: Rebuilt.
-+
-+Thu Jul  8 14:28:42 1999  Anthony Green  <green@cygnus.com>
-+
-+	* configure.in: Add x86 and powerpc BeOS configurations.
-+	From Makoto Kato <m_kato@ga2.so-net.ne.jp>.
-+
-+1999-05-09  Anthony Green  <green@cygnus.com>
-+
-+	* configure.in: Add warning about this being beta code.
-+	Remove src/Makefile.am from the picture.
-+	* configure: Rebuilt.
-+
-+	* Makefile.am: Move logic from src/Makefile.am.  Add changes
-+	to support libffi as a target library.
-+	* Makefile.in: Rebuilt.
-+
-+	* aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh:
-+	Upgraded to new autoconf, automake, libtool.
-+
-+	* README: Tweaks.
-+
-+	* LICENSE: Update copyright date.
-+
-+	* src/Makefile.am, src/Makefile.in: Removed.
-+
-+1998-11-29  Anthony Green  <green@cygnus.com>
-+
-+	* include/ChangeLog: Removed.
-+	* src/ChangeLog: Removed.
-+	* src/mips/ChangeLog: Removed.
-+	* src/sparc/ChangeLog: Remboved.
-+	* src/x86/ChangeLog: Removed.
-+
-+	* ChangeLog.v1: Created.
-diff --git a/js/src/ctypes/libffi/ChangeLog.v1 b/js/src/ctypes/libffi/ChangeLog.v1
---- a/js/src/ctypes/libffi/ChangeLog.v1
-+++ b/js/src/ctypes/libffi/ChangeLog.v1
-@@ -1,13 +1,13 @@
- The libffi version 1 ChangeLog archive.
- 
- Version 1 of libffi had per-directory ChangeLogs.  Current and future
- versions have a single ChangeLog file in the root directory.  The
--version 1 ChangeLogs have all been concatonated into this file for
-+version 1 ChangeLogs have all been concatenated into this file for
- future reference only.
- 
- --- libffi ----------------------------------------------------------------
- 
- Mon Oct  5 02:17:50 1998  Anthony Green  <green@cygnus.com>
- 
- 	* configure.in: Boosted rev.
- 	* configure, Makefile.in, aclocal.m4: Rebuilt.
-diff --git a/js/src/ctypes/libffi/LICENSE b/js/src/ctypes/libffi/LICENSE
---- a/js/src/ctypes/libffi/LICENSE
-+++ b/js/src/ctypes/libffi/LICENSE
-@@ -1,21 +1,21 @@
--libffi - Copyright (c) 1996-2009  Anthony Green, Red Hat, Inc and others.  
-+libffi - Copyright (c) 1996-2014  Anthony Green, Red Hat, Inc and others.
- See source files for details.
- 
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- ``Software''), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
- 
--The above copyright notice and this permission notice shall be included
--in all copies or substantial portions of the Software.
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
- 
- THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-diff --git a/js/src/ctypes/libffi/Makefile.am b/js/src/ctypes/libffi/Makefile.am
---- a/js/src/ctypes/libffi/Makefile.am
-+++ b/js/src/ctypes/libffi/Makefile.am
-@@ -1,165 +1,212 @@
- ## Process this with automake to create Makefile.in
- 
- AUTOMAKE_OPTIONS = foreign subdir-objects
- 
-+ACLOCAL_AMFLAGS = -I m4
-+
- SUBDIRS = include testsuite man
- 
--EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \
--	src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \
--	src/arm/ffi.c src/arm/sysv.S src/arm/ffitarget.h \
--	src/avr32/ffi.c src/avr32/sysv.S src/avr32/ffitarget.h \
--	src/cris/ffi.c src/cris/sysv.S src/cris/ffitarget.h \
--	src/ia64/ffi.c src/ia64/ffitarget.h src/ia64/ia64_flags.h \
--	src/ia64/unix.S \
--	src/mips/ffi.c src/mips/n32.S src/mips/o32.S \
--	src/mips/ffitarget.h \
--	src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h \
--	src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \
--	src/powerpc/ffi.c src/powerpc/sysv.S \
--	src/powerpc/linux64.S src/powerpc/linux64_closure.S \
--	src/powerpc/ppc_closure.S src/powerpc/asm.h \
--	src/powerpc/aix.S src/powerpc/darwin.S \
--	src/powerpc/aix_closure.S src/powerpc/darwin_closure.S \
--	src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h \
--	src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h \
--	src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h \
--	src/sh64/ffi.c src/sh64/sysv.S src/sh64/ffitarget.h \
--	src/sparc/v8.S src/sparc/v9.S src/sparc/ffitarget.h \
--	src/sparc/ffi.c src/x86/darwin64.S \
--	src/x86/ffi.c src/x86/sysv.S src/x86/win32.S src/x86/win64.S \
--	src/x86/darwin.S src/x86/freebsd.S \
--	src/x86/ffi64.c src/x86/unix64.S src/x86/ffitarget.h \
--	src/pa/ffitarget.h src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \
--	src/frv/ffi.c src/frv/eabi.S src/frv/ffitarget.h src/dlmalloc.c \
--	libtool-version ChangeLog.libffi m4/libtool.m4 \
--	m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4
-+EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj			\
-+	 src/aarch64/ffi.c src/aarch64/ffitarget.h src/aarch64/sysv.S	\
-+	 src/alpha/ffi.c src/alpha/osf.S			\
-+	 src/alpha/ffitarget.h src/arc/ffi.c src/arc/arcompact.S	\
-+	 src/arc/ffitarget.h src/arm/ffi.c src/arm/sysv.S		\
-+	 src/arm/ffitarget.h src/avr32/ffi.c src/avr32/sysv.S		\
-+	 src/avr32/ffitarget.h src/cris/ffi.c src/cris/sysv.S		\
-+	 src/cris/ffitarget.h src/ia64/ffi.c src/ia64/ffitarget.h	\
-+	 src/ia64/ia64_flags.h src/ia64/unix.S src/mips/ffi.c		\
-+	 src/mips/n32.S src/mips/o32.S src/metag/ffi.c			\
-+	 src/metag/ffitarget.h src/metag/sysv.S src/moxie/ffi.c		\
-+	 src/moxie/ffitarget.h src/moxie/eabi.S src/mips/ffitarget.h	\
-+	 src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h		\
-+	 src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h		\
-+	 src/m88k/ffi.c src/m88k/obsd.S src/m88k/ffitarget.h		\
-+	 src/microblaze/ffi.c src/microblaze/sysv.S			\
-+	 src/microblaze/ffitarget.h					\
-+	 src/nios2/ffi.c src/nios2/ffitarget.h src/nios2/sysv.S		\
-+	 src/powerpc/ffi.c src/powerpc/ffi_powerpc.h			\
-+	 src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c		\
-+	 src/powerpc/sysv.S src/powerpc/linux64.S			\
-+	 src/powerpc/linux64_closure.S src/powerpc/ppc_closure.S	\
-+	 src/powerpc/asm.h src/powerpc/aix.S src/powerpc/darwin.S	\
-+	 src/powerpc/aix_closure.S src/powerpc/darwin_closure.S		\
-+	 src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h		\
-+	 src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h		\
-+	 src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h src/sh64/ffi.c	\
-+	 src/sh64/sysv.S src/sh64/ffitarget.h src/sparc/v8.S		\
-+	 src/sparc/v9.S src/sparc/ffitarget.h src/sparc/ffi.c		\
-+	 src/x86/darwin64.S src/x86/ffi.c src/x86/sysv.S		\
-+	 src/x86/win32.S src/x86/darwin.S src/x86/win64.S		\
-+	 src/x86/freebsd.S src/x86/ffi64.c src/x86/unix64.S		\
-+	 src/x86/ffitarget.h src/pa/ffitarget.h src/pa/ffi.c		\
-+	 src/pa/linux.S src/pa/hpux32.S src/frv/ffi.c src/bfin/ffi.c	\
-+	 src/bfin/ffitarget.h src/bfin/sysv.S src/frv/eabi.S		\
-+	 src/frv/ffitarget.h src/dlmalloc.c src/tile/ffi.c		\
-+	 src/tile/ffitarget.h src/tile/tile.S libtool-version		\
-+	 src/vax/ffi.c src/vax/ffitarget.h src/vax/elfbsd.S		\
-+	 src/xtensa/ffitarget.h src/xtensa/ffi.c src/xtensa/sysv.S	\
-+	 ChangeLog.libffi m4/libtool.m4 m4/lt~obsolete.m4		\
-+	 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4			\
-+	 m4/ltversion.m4 src/arm/gentramp.sh src/debug.c msvcc.sh	\
-+	 generate-darwin-source-and-headers.py				\
-+	 libffi.xcodeproj/project.pbxproj src/arm/trampoline.S		\
-+	 libtool-ldflags ChangeLog.libffi-3.1
- 
- info_TEXINFOS = doc/libffi.texi
- 
- ## ################################################################
- 
- ##
- ## This section is for make and multilib madness.
- ##
- 
- # Work around what appears to be a GNU make bug handling MAKEFLAGS
- # values defined in terms of make variables, as is the case for CC and
- # friends when we are called from the top level Makefile.
- AM_MAKEFLAGS = \
--	"AR_FLAGS=$(AR_FLAGS)" \
--	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
--	"CFLAGS=$(CFLAGS)" \
--	"CXXFLAGS=$(CXXFLAGS)" \
--	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
--	"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
--	"INSTALL=$(INSTALL)" \
--	"INSTALL_DATA=$(INSTALL_DATA)" \
--	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
--	"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
--	"JC1FLAGS=$(JC1FLAGS)" \
--	"LDFLAGS=$(LDFLAGS)" \
--	"LIBCFLAGS=$(LIBCFLAGS)" \
--	"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
--	"MAKE=$(MAKE)" \
--	"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
--	"PICFLAG=$(PICFLAG)" \
--	"PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
--	"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
--	"SHELL=$(SHELL)" \
--	"exec_prefix=$(exec_prefix)" \
--	"infodir=$(infodir)" \
--	"libdir=$(libdir)" \
--	"mandir=$(mandir)" \
--	"prefix=$(prefix)" \
--	"AR=$(AR)" \
--	"AS=$(AS)" \
--	"CC=$(CC)" \
--	"CXX=$(CXX)" \
--	"LD=$(LD)" \
--	"NM=$(NM)" \
--	"RANLIB=$(RANLIB)" \
--	"DESTDIR=$(DESTDIR)"
-+	'AR_FLAGS=$(AR_FLAGS)' \
-+	'CC_FOR_BUILD=$(CC_FOR_BUILD)' \
-+	'CFLAGS=$(CFLAGS)' \
-+	'CXXFLAGS=$(CXXFLAGS)' \
-+	'CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)' \
-+	'CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)' \
-+	'INSTALL=$(INSTALL)' \
-+	'INSTALL_DATA=$(INSTALL_DATA)' \
-+	'INSTALL_PROGRAM=$(INSTALL_PROGRAM)' \
-+	'INSTALL_SCRIPT=$(INSTALL_SCRIPT)' \
-+	'JC1FLAGS=$(JC1FLAGS)' \
-+	'LDFLAGS=$(LDFLAGS)' \
-+	'LIBCFLAGS=$(LIBCFLAGS)' \
-+	'LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)' \
-+	'MAKE=$(MAKE)' \
-+	'MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)' \
-+	'PICFLAG=$(PICFLAG)' \
-+	'PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)' \
-+	'RUNTESTFLAGS=$(RUNTESTFLAGS)' \
-+	'SHELL=$(SHELL)' \
-+	'exec_prefix=$(exec_prefix)' \
-+	'infodir=$(infodir)' \
-+	'libdir=$(libdir)' \
-+	'mandir=$(mandir)' \
-+	'prefix=$(prefix)' \
-+	'AR=$(AR)' \
-+	'AS=$(AS)' \
-+	'CC=$(CC)' \
-+	'CXX=$(CXX)' \
-+	'LD=$(LD)' \
-+	'NM=$(NM)' \
-+	'RANLIB=$(RANLIB)' \
-+	'DESTDIR=$(DESTDIR)'
-+
-+# Subdir rules rely on $(FLAGS_TO_PASS)
-+FLAGS_TO_PASS = $(AM_MAKEFLAGS)
- 
- MAKEOVERRIDES=
- 
--ACLOCAL_AMFLAGS=$(ACLOCAL_AMFLAGS) -I m4
--
--lib_LTLIBRARIES = libffi.la
-+toolexeclib_LTLIBRARIES = libffi.la
- noinst_LTLIBRARIES = libffi_convenience.la
- 
--libffi_la_SOURCES = src/debug.c src/prep_cif.c src/types.c \
-+libffi_la_SOURCES = src/prep_cif.c src/types.c \
- 		src/raw_api.c src/java_raw_api.c src/closures.c
- 
- pkgconfigdir = $(libdir)/pkgconfig
- pkgconfig_DATA = libffi.pc
- 
- nodist_libffi_la_SOURCES =
- 
-+if FFI_DEBUG
-+nodist_libffi_la_SOURCES += src/debug.c
-+endif
-+
- if MIPS
- nodist_libffi_la_SOURCES += src/mips/ffi.c src/mips/o32.S src/mips/n32.S
- endif
-+if BFIN
-+nodist_libffi_la_SOURCES += src/bfin/ffi.c src/bfin/sysv.S
-+endif
- if X86
--nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/sysv.S
-+nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/sysv.S src/x86/win32.S
- endif
- if X86_FREEBSD
--nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/freebsd.S
-+nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/freebsd.S src/x86/win32.S
- endif
- if X86_WIN32
- nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/win32.S
- endif
- if X86_WIN64
- nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/win64.S
- endif
- if X86_DARWIN
- nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/darwin.S src/x86/ffi64.c src/x86/darwin64.S
-+if X86_DARWIN32
-+nodist_libffi_la_SOURCES += src/x86/win32.S
-+endif
- endif
- if SPARC
- nodist_libffi_la_SOURCES += src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S
- endif
- if ALPHA
- nodist_libffi_la_SOURCES += src/alpha/ffi.c src/alpha/osf.S
- endif
- if IA64
- nodist_libffi_la_SOURCES += src/ia64/ffi.c src/ia64/unix.S
- endif
- if M32R
- nodist_libffi_la_SOURCES += src/m32r/sysv.S src/m32r/ffi.c
- endif
- if M68K
- nodist_libffi_la_SOURCES += src/m68k/ffi.c src/m68k/sysv.S
- endif
-+if M88K
-+nodist_libffi_la_SOURCES += src/m88k/ffi.c src/m88k/obsd.S
-+endif
-+if MOXIE
-+nodist_libffi_la_SOURCES += src/moxie/ffi.c src/moxie/eabi.S
-+endif
-+if MICROBLAZE
-+nodist_libffi_la_SOURCES += src/microblaze/ffi.c src/microblaze/sysv.S
-+endif
-+if NIOS2
-+nodist_libffi_la_SOURCES += src/nios2/sysv.S src/nios2/ffi.c
-+endif
- if POWERPC
--nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S
-+nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S
- endif
- if POWERPC_AIX
- nodist_libffi_la_SOURCES += src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S
- endif
- if POWERPC_DARWIN
- nodist_libffi_la_SOURCES += src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S
- endif
- if POWERPC_FREEBSD
--nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S
-+nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/sysv.S src/powerpc/ppc_closure.S
-+endif
-+if AARCH64
-+nodist_libffi_la_SOURCES += src/aarch64/sysv.S src/aarch64/ffi.c
-+endif
-+if ARC
-+nodist_libffi_la_SOURCES += src/arc/arcompact.S src/arc/ffi.c
- endif
- if ARM
- nodist_libffi_la_SOURCES += src/arm/sysv.S src/arm/ffi.c
-+if FFI_EXEC_TRAMPOLINE_TABLE
-+nodist_libffi_la_SOURCES += src/arm/trampoline.S
-+endif
- endif
- if AVR32
- nodist_libffi_la_SOURCES += src/avr32/sysv.S src/avr32/ffi.c
- endif
- if LIBFFI_CRIS
- nodist_libffi_la_SOURCES += src/cris/sysv.S src/cris/ffi.c
- endif
- if FRV
- nodist_libffi_la_SOURCES += src/frv/eabi.S src/frv/ffi.c
- endif
--if MOXIE
--nodist_libffi_la_SOURCES += src/moxie/eabi.S src/moxie/ffi.c
--endif
- if S390
- nodist_libffi_la_SOURCES += src/s390/sysv.S src/s390/ffi.c
- endif
- if X86_64
- nodist_libffi_la_SOURCES += src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S
- endif
- if SH
- nodist_libffi_la_SOURCES += src/sh/sysv.S src/sh/ffi.c
-@@ -168,31 +215,40 @@ if SH64
- nodist_libffi_la_SOURCES += src/sh64/sysv.S src/sh64/ffi.c
- endif
- if PA_LINUX
- nodist_libffi_la_SOURCES += src/pa/linux.S src/pa/ffi.c
- endif
- if PA_HPUX
- nodist_libffi_la_SOURCES += src/pa/hpux32.S src/pa/ffi.c
- endif
-+if TILE
-+nodist_libffi_la_SOURCES += src/tile/tile.S src/tile/ffi.c
-+endif
-+if XTENSA
-+nodist_libffi_la_SOURCES += src/xtensa/sysv.S src/xtensa/ffi.c
-+endif
-+if METAG
-+nodist_libffi_la_SOURCES += src/metag/sysv.S src/metag/ffi.c
-+endif
-+if VAX
-+nodist_libffi_la_SOURCES += src/vax/elfbsd.S src/vax/ffi.c
-+endif
- 
- libffi_convenience_la_SOURCES = $(libffi_la_SOURCES)
- nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
- 
--AM_CFLAGS = -Wall -g -fexceptions
-+LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/libtool-ldflags $(LDFLAGS))
-+
-+AM_CFLAGS =
- if FFI_DEBUG
- # Build debug. Define FFI_DEBUG on the commandline so that, when building with
- # MSVC, it can link against the debug CRT.
- AM_CFLAGS += -DFFI_DEBUG
--else
--# Build opt.
--AM_CFLAGS += -O2
- endif
- 
--libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS)
-+libffi_la_LDFLAGS = -no-undefined -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS)
- 
- AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
- AM_CCASFLAGS = $(AM_CPPFLAGS)
- 
--# No install-html or install-pdf support in automake yet
--.PHONY: install-html install-pdf
--install-html:
--install-pdf:
-+dist-hook:
-+	if [ -d $(top_srcdir)/.git ] ; then git -C $(top_srcdir) log --no-decorate ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog
-diff --git a/js/src/ctypes/libffi/Makefile.in b/js/src/ctypes/libffi/Makefile.in
---- a/js/src/ctypes/libffi/Makefile.in
-+++ b/js/src/ctypes/libffi/Makefile.in
-@@ -1,27 +1,71 @@
--# Makefile.in generated by automake 1.11.1 from Makefile.am.
-+# Makefile.in generated by automake 1.13.4 from Makefile.am.
- # @configure_input@
- 
--# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
--# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
--# Inc.
-+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-+
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- # PARTICULAR PURPOSE.
- 
- @SET_MAKE@
- 
- 
- VPATH = @srcdir@
-+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-+am__make_running_with_option = \
-+  case $${target_option-} in \
-+      ?) ;; \
-+      *) echo "am__make_running_with_option: internal error: invalid" \
-+              "target option '$${target_option-}' specified" >&2; \
-+         exit 1;; \
-+  esac; \
-+  has_opt=no; \
-+  sane_makeflags=$$MAKEFLAGS; \
-+  if $(am__is_gnu_make); then \
-+    sane_makeflags=$$MFLAGS; \
-+  else \
-+    case $$MAKEFLAGS in \
-+      *\\[\ \	]*) \
-+        bs=\\; \
-+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-+    esac; \
-+  fi; \
-+  skip_next=no; \
-+  strip_trailopt () \
-+  { \
-+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-+  }; \
-+  for flg in $$sane_makeflags; do \
-+    test $$skip_next = yes && { skip_next=no; continue; }; \
-+    case $$flg in \
-+      *=*|--*) continue;; \
-+        -*I) strip_trailopt 'I'; skip_next=yes;; \
-+      -*I?*) strip_trailopt 'I';; \
-+        -*O) strip_trailopt 'O'; skip_next=yes;; \
-+      -*O?*) strip_trailopt 'O';; \
-+        -*l) strip_trailopt 'l'; skip_next=yes;; \
-+      -*l?*) strip_trailopt 'l';; \
-+      -[dEDm]) skip_next=yes;; \
-+      -[JT]) skip_next=yes;; \
-+    esac; \
-+    case $$flg in \
-+      *$$target_option*) has_opt=yes; break;; \
-+    esac; \
-+  done; \
-+  test $$has_opt = yes
-+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
- pkgdatadir = $(datadir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
- pkglibdir = $(libdir)/@PACKAGE@
- pkglibexecdir = $(libexecdir)/@PACKAGE@
- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- install_sh_DATA = $(install_sh) -c -m 644
- install_sh_PROGRAM = $(install_sh) -c
- install_sh_SCRIPT = $(install_sh) -c
-@@ -31,56 +75,79 @@ NORMAL_INSTALL = :
- PRE_INSTALL = :
- POST_INSTALL = :
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
- build_triplet = @build@
- host_triplet = @host@
- target_triplet = @target@
--@MIPS_TRUE@am__append_1 = src/mips/ffi.c src/mips/o32.S src/mips/n32.S
--@X86_TRUE@am__append_2 = src/x86/ffi.c src/x86/sysv.S
--@X86_FREEBSD_TRUE@am__append_3 = src/x86/ffi.c src/x86/freebsd.S
--@X86_WIN32_TRUE@am__append_4 = src/x86/ffi.c src/x86/win32.S
--@X86_WIN64_TRUE@am__append_5 = src/x86/ffi.c src/x86/win64.S
--@X86_DARWIN_TRUE@am__append_6 = src/x86/ffi.c src/x86/darwin.S src/x86/ffi64.c src/x86/darwin64.S
--@SPARC_TRUE@am__append_7 = src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S
--@ALPHA_TRUE@am__append_8 = src/alpha/ffi.c src/alpha/osf.S
--@IA64_TRUE@am__append_9 = src/ia64/ffi.c src/ia64/unix.S
--@M32R_TRUE@am__append_10 = src/m32r/sysv.S src/m32r/ffi.c
--@M68K_TRUE@am__append_11 = src/m68k/ffi.c src/m68k/sysv.S
--@POWERPC_TRUE@am__append_12 = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S
--@POWERPC_AIX_TRUE@am__append_13 = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S
--@POWERPC_DARWIN_TRUE@am__append_14 = src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S
--@POWERPC_FREEBSD_TRUE@am__append_15 = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S
--@ARM_TRUE@am__append_16 = src/arm/sysv.S src/arm/ffi.c
--@AVR32_TRUE@am__append_17 = src/avr32/sysv.S src/avr32/ffi.c
--@LIBFFI_CRIS_TRUE@am__append_18 = src/cris/sysv.S src/cris/ffi.c
--@FRV_TRUE@am__append_19 = src/frv/eabi.S src/frv/ffi.c
--@MOXIE_TRUE@am__append_20 = src/moxie/eabi.S src/moxie/ffi.c
--@S390_TRUE@am__append_21 = src/s390/sysv.S src/s390/ffi.c
--@X86_64_TRUE@am__append_22 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S
--@SH_TRUE@am__append_23 = src/sh/sysv.S src/sh/ffi.c
--@SH64_TRUE@am__append_24 = src/sh64/sysv.S src/sh64/ffi.c
--@PA_LINUX_TRUE@am__append_25 = src/pa/linux.S src/pa/ffi.c
--@PA_HPUX_TRUE@am__append_26 = src/pa/hpux32.S src/pa/ffi.c
-+@FFI_DEBUG_TRUE@am__append_1 = src/debug.c
-+@MIPS_TRUE@am__append_2 = src/mips/ffi.c src/mips/o32.S src/mips/n32.S
-+@BFIN_TRUE@am__append_3 = src/bfin/ffi.c src/bfin/sysv.S
-+@X86_TRUE@am__append_4 = src/x86/ffi.c src/x86/sysv.S src/x86/win32.S
-+@X86_FREEBSD_TRUE@am__append_5 = src/x86/ffi.c src/x86/freebsd.S src/x86/win32.S
-+@X86_WIN32_TRUE@am__append_6 = src/x86/ffi.c src/x86/win32.S
-+@X86_WIN64_TRUE@am__append_7 = src/x86/ffi.c src/x86/win64.S
-+@X86_DARWIN_TRUE@am__append_8 = src/x86/ffi.c src/x86/darwin.S src/x86/ffi64.c src/x86/darwin64.S
-+@X86_DARWIN32_TRUE@@X86_DARWIN_TRUE@am__append_9 = src/x86/win32.S
-+@SPARC_TRUE@am__append_10 = src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S
-+@ALPHA_TRUE@am__append_11 = src/alpha/ffi.c src/alpha/osf.S
-+@IA64_TRUE@am__append_12 = src/ia64/ffi.c src/ia64/unix.S
-+@M32R_TRUE@am__append_13 = src/m32r/sysv.S src/m32r/ffi.c
-+@M68K_TRUE@am__append_14 = src/m68k/ffi.c src/m68k/sysv.S
-+@M88K_TRUE@am__append_15 = src/m88k/ffi.c src/m88k/obsd.S
-+@MOXIE_TRUE@am__append_16 = src/moxie/ffi.c src/moxie/eabi.S
-+@MICROBLAZE_TRUE@am__append_17 = src/microblaze/ffi.c src/microblaze/sysv.S
-+@NIOS2_TRUE@am__append_18 = src/nios2/sysv.S src/nios2/ffi.c
-+@POWERPC_TRUE@am__append_19 = src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S
-+@POWERPC_AIX_TRUE@am__append_20 = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S
-+@POWERPC_DARWIN_TRUE@am__append_21 = src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S
-+@POWERPC_FREEBSD_TRUE@am__append_22 = src/powerpc/ffi.c src/powerpc/ffi_sysv.c src/powerpc/sysv.S src/powerpc/ppc_closure.S
-+@AARCH64_TRUE@am__append_23 = src/aarch64/sysv.S src/aarch64/ffi.c
-+@ARC_TRUE@am__append_24 = src/arc/arcompact.S src/arc/ffi.c
-+@ARM_TRUE@am__append_25 = src/arm/sysv.S src/arm/ffi.c
-+@ARM_TRUE@@FFI_EXEC_TRAMPOLINE_TABLE_TRUE@am__append_26 = src/arm/trampoline.S
-+@AVR32_TRUE@am__append_27 = src/avr32/sysv.S src/avr32/ffi.c
-+@LIBFFI_CRIS_TRUE@am__append_28 = src/cris/sysv.S src/cris/ffi.c
-+@FRV_TRUE@am__append_29 = src/frv/eabi.S src/frv/ffi.c
-+@S390_TRUE@am__append_30 = src/s390/sysv.S src/s390/ffi.c
-+@X86_64_TRUE@am__append_31 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S
-+@SH_TRUE@am__append_32 = src/sh/sysv.S src/sh/ffi.c
-+@SH64_TRUE@am__append_33 = src/sh64/sysv.S src/sh64/ffi.c
-+@PA_LINUX_TRUE@am__append_34 = src/pa/linux.S src/pa/ffi.c
-+@PA_HPUX_TRUE@am__append_35 = src/pa/hpux32.S src/pa/ffi.c
-+@TILE_TRUE@am__append_36 = src/tile/tile.S src/tile/ffi.c
-+@XTENSA_TRUE@am__append_37 = src/xtensa/sysv.S src/xtensa/ffi.c
-+@METAG_TRUE@am__append_38 = src/metag/sysv.S src/metag/ffi.c
-+@VAX_TRUE@am__append_39 = src/vax/elfbsd.S src/vax/ffi.c
- # Build debug. Define FFI_DEBUG on the commandline so that, when building with
- # MSVC, it can link against the debug CRT.
--@FFI_DEBUG_TRUE@am__append_27 = -DFFI_DEBUG
--# Build opt.
--@FFI_DEBUG_FALSE@am__append_28 = -O2
-+@FFI_DEBUG_TRUE@am__append_40 = -DFFI_DEBUG
- subdir = .
--DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
--	$(srcdir)/Makefile.in $(srcdir)/doc/stamp-vti \
--	$(srcdir)/doc/version.texi $(srcdir)/fficonfig.h.in \
--	$(srcdir)/libffi.pc.in $(top_srcdir)/configure ChangeLog \
--	compile config.guess config.sub depcomp install-sh ltmain.sh \
--	mdate-sh missing texinfo.tex
-+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-+	$(top_srcdir)/configure $(am__configure_deps) \
-+	$(srcdir)/fficonfig.h.in $(srcdir)/libffi.pc.in depcomp \
-+	mdate-sh $(srcdir)/doc/version.texi $(srcdir)/doc/stamp-vti \
-+	texinfo.tex README compile config.guess config.sub install-sh \
-+	missing ltmain.sh
- ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
--am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-+am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \
-+	$(top_srcdir)/m4/ax_append_flag.m4 \
-+	$(top_srcdir)/m4/ax_cc_maxopt.m4 \
-+	$(top_srcdir)/m4/ax_cflags_warn_all.m4 \
-+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
-+	$(top_srcdir)/m4/ax_compiler_vendor.m4 \
-+	$(top_srcdir)/m4/ax_configure_args.m4 \
-+	$(top_srcdir)/m4/ax_enable_builddir.m4 \
-+	$(top_srcdir)/m4/ax_gcc_archflag.m4 \
-+	$(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
-+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
- 	$(top_srcdir)/configure.ac
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- 	$(ACLOCAL_M4)
- am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
-  configure.lineno config.status.lineno
- mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = fficonfig.h
- CONFIG_CLEAN_FILES = libffi.pc
-@@ -101,149 +168,272 @@ am__nobase_list = $(am__nobase_strip_set
-   sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-   $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-     if (++n[$$2] == $(am__install_max)) \
-       { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-     END { for (dir in files) print dir, files[dir] }'
- am__base_list = \
-   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
--am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(infodir)" \
-+am__uninstall_files_from_dir = { \
-+  test -z "$$files" \
-+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-+         $(am__cd) "$$dir" && rm -f $$files; }; \
-+  }
-+am__installdirs = "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(infodir)" \
- 	"$(DESTDIR)$(pkgconfigdir)"
--LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
-+LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
- libffi_la_LIBADD =
- am__dirstamp = $(am__leading_dot)dirstamp
--am_libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \
--	src/raw_api.lo src/java_raw_api.lo src/closures.lo
--@MIPS_TRUE@am__objects_1 = src/mips/ffi.lo src/mips/o32.lo \
-+am_libffi_la_OBJECTS = src/prep_cif.lo src/types.lo src/raw_api.lo \
-+	src/java_raw_api.lo src/closures.lo
-+@FFI_DEBUG_TRUE@am__objects_1 = src/debug.lo
-+@MIPS_TRUE@am__objects_2 = src/mips/ffi.lo src/mips/o32.lo \
- @MIPS_TRUE@	src/mips/n32.lo
--@X86_TRUE@am__objects_2 = src/x86/ffi.lo src/x86/sysv.lo
--@X86_FREEBSD_TRUE@am__objects_3 = src/x86/ffi.lo src/x86/freebsd.lo
--@X86_WIN32_TRUE@am__objects_4 = src/x86/ffi.lo src/x86/win32.lo
--@X86_WIN64_TRUE@am__objects_5 = src/x86/ffi.lo src/x86/win64.lo
--@X86_DARWIN_TRUE@am__objects_6 = src/x86/ffi.lo src/x86/darwin.lo \
-+@BFIN_TRUE@am__objects_3 = src/bfin/ffi.lo src/bfin/sysv.lo
-+@X86_TRUE@am__objects_4 = src/x86/ffi.lo src/x86/sysv.lo \
-+@X86_TRUE@	src/x86/win32.lo
-+@X86_FREEBSD_TRUE@am__objects_5 = src/x86/ffi.lo src/x86/freebsd.lo \
-+@X86_FREEBSD_TRUE@	src/x86/win32.lo
-+@X86_WIN32_TRUE@am__objects_6 = src/x86/ffi.lo src/x86/win32.lo
-+@X86_WIN64_TRUE@am__objects_7 = src/x86/ffi.lo src/x86/win64.lo
-+@X86_DARWIN_TRUE@am__objects_8 = src/x86/ffi.lo src/x86/darwin.lo \
- @X86_DARWIN_TRUE@	src/x86/ffi64.lo src/x86/darwin64.lo
--@SPARC_TRUE@am__objects_7 = src/sparc/ffi.lo src/sparc/v8.lo \
-+@X86_DARWIN32_TRUE@@X86_DARWIN_TRUE@am__objects_9 = src/x86/win32.lo
-+@SPARC_TRUE@am__objects_10 = src/sparc/ffi.lo src/sparc/v8.lo \
- @SPARC_TRUE@	src/sparc/v9.lo
--@ALPHA_TRUE@am__objects_8 = src/alpha/ffi.lo src/alpha/osf.lo
--@IA64_TRUE@am__objects_9 = src/ia64/ffi.lo src/ia64/unix.lo
--@M32R_TRUE@am__objects_10 = src/m32r/sysv.lo src/m32r/ffi.lo
--@M68K_TRUE@am__objects_11 = src/m68k/ffi.lo src/m68k/sysv.lo
--@POWERPC_TRUE@am__objects_12 = src/powerpc/ffi.lo src/powerpc/sysv.lo \
-+@ALPHA_TRUE@am__objects_11 = src/alpha/ffi.lo src/alpha/osf.lo
-+@IA64_TRUE@am__objects_12 = src/ia64/ffi.lo src/ia64/unix.lo
-+@M32R_TRUE@am__objects_13 = src/m32r/sysv.lo src/m32r/ffi.lo
-+@M68K_TRUE@am__objects_14 = src/m68k/ffi.lo src/m68k/sysv.lo
-+@M88K_TRUE@am__objects_15 = src/m88k/ffi.lo src/m88k/obsd.lo
-+@MOXIE_TRUE@am__objects_16 = src/moxie/ffi.lo src/moxie/eabi.lo
-+@MICROBLAZE_TRUE@am__objects_17 = src/microblaze/ffi.lo \
-+@MICROBLAZE_TRUE@	src/microblaze/sysv.lo
-+@NIOS2_TRUE@am__objects_18 = src/nios2/sysv.lo src/nios2/ffi.lo
-+@POWERPC_TRUE@am__objects_19 = src/powerpc/ffi.lo \
-+@POWERPC_TRUE@	src/powerpc/ffi_sysv.lo \
-+@POWERPC_TRUE@	src/powerpc/ffi_linux64.lo src/powerpc/sysv.lo \
- @POWERPC_TRUE@	src/powerpc/ppc_closure.lo \
- @POWERPC_TRUE@	src/powerpc/linux64.lo \
- @POWERPC_TRUE@	src/powerpc/linux64_closure.lo
--@POWERPC_AIX_TRUE@am__objects_13 = src/powerpc/ffi_darwin.lo \
-+@POWERPC_AIX_TRUE@am__objects_20 = src/powerpc/ffi_darwin.lo \
- @POWERPC_AIX_TRUE@	src/powerpc/aix.lo \
- @POWERPC_AIX_TRUE@	src/powerpc/aix_closure.lo
--@POWERPC_DARWIN_TRUE@am__objects_14 = src/powerpc/ffi_darwin.lo \
-+@POWERPC_DARWIN_TRUE@am__objects_21 = src/powerpc/ffi_darwin.lo \
- @POWERPC_DARWIN_TRUE@	src/powerpc/darwin.lo \
- @POWERPC_DARWIN_TRUE@	src/powerpc/darwin_closure.lo
--@POWERPC_FREEBSD_TRUE@am__objects_15 = src/powerpc/ffi.lo \
-+@POWERPC_FREEBSD_TRUE@am__objects_22 = src/powerpc/ffi.lo \
-+@POWERPC_FREEBSD_TRUE@	src/powerpc/ffi_sysv.lo \
- @POWERPC_FREEBSD_TRUE@	src/powerpc/sysv.lo \
- @POWERPC_FREEBSD_TRUE@	src/powerpc/ppc_closure.lo
--@ARM_TRUE@am__objects_16 = src/arm/sysv.lo src/arm/ffi.lo
--@AVR32_TRUE@am__objects_17 = src/avr32/sysv.lo src/avr32/ffi.lo
--@LIBFFI_CRIS_TRUE@am__objects_18 = src/cris/sysv.lo src/cris/ffi.lo
--@FRV_TRUE@am__objects_19 = src/frv/eabi.lo src/frv/ffi.lo
--@MOXIE_TRUE@am__objects_20 = src/moxie/eabi.lo src/moxie/ffi.lo
--@S390_TRUE@am__objects_21 = src/s390/sysv.lo src/s390/ffi.lo
--@X86_64_TRUE@am__objects_22 = src/x86/ffi64.lo src/x86/unix64.lo \
-+@AARCH64_TRUE@am__objects_23 = src/aarch64/sysv.lo src/aarch64/ffi.lo
-+@ARC_TRUE@am__objects_24 = src/arc/arcompact.lo src/arc/ffi.lo
-+@ARM_TRUE@am__objects_25 = src/arm/sysv.lo src/arm/ffi.lo
-+@ARM_TRUE@@FFI_EXEC_TRAMPOLINE_TABLE_TRUE@am__objects_26 = src/arm/trampoline.lo
-+@AVR32_TRUE@am__objects_27 = src/avr32/sysv.lo src/avr32/ffi.lo
-+@LIBFFI_CRIS_TRUE@am__objects_28 = src/cris/sysv.lo src/cris/ffi.lo
-+@FRV_TRUE@am__objects_29 = src/frv/eabi.lo src/frv/ffi.lo
-+@S390_TRUE@am__objects_30 = src/s390/sysv.lo src/s390/ffi.lo
-+@X86_64_TRUE@am__objects_31 = src/x86/ffi64.lo src/x86/unix64.lo \
- @X86_64_TRUE@	src/x86/ffi.lo src/x86/sysv.lo
--@SH_TRUE@am__objects_23 = src/sh/sysv.lo src/sh/ffi.lo
--@SH64_TRUE@am__objects_24 = src/sh64/sysv.lo src/sh64/ffi.lo
--@PA_LINUX_TRUE@am__objects_25 = src/pa/linux.lo src/pa/ffi.lo
--@PA_HPUX_TRUE@am__objects_26 = src/pa/hpux32.lo src/pa/ffi.lo
-+@SH_TRUE@am__objects_32 = src/sh/sysv.lo src/sh/ffi.lo
-+@SH64_TRUE@am__objects_33 = src/sh64/sysv.lo src/sh64/ffi.lo
-+@PA_LINUX_TRUE@am__objects_34 = src/pa/linux.lo src/pa/ffi.lo
-+@PA_HPUX_TRUE@am__objects_35 = src/pa/hpux32.lo src/pa/ffi.lo
-+@TILE_TRUE@am__objects_36 = src/tile/tile.lo src/tile/ffi.lo
-+@XTENSA_TRUE@am__objects_37 = src/xtensa/sysv.lo src/xtensa/ffi.lo
-+@METAG_TRUE@am__objects_38 = src/metag/sysv.lo src/metag/ffi.lo
-+@VAX_TRUE@am__objects_39 = src/vax/elfbsd.lo src/vax/ffi.lo
- nodist_libffi_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
- 	$(am__objects_3) $(am__objects_4) $(am__objects_5) \
- 	$(am__objects_6) $(am__objects_7) $(am__objects_8) \
- 	$(am__objects_9) $(am__objects_10) $(am__objects_11) \
- 	$(am__objects_12) $(am__objects_13) $(am__objects_14) \
- 	$(am__objects_15) $(am__objects_16) $(am__objects_17) \
- 	$(am__objects_18) $(am__objects_19) $(am__objects_20) \
- 	$(am__objects_21) $(am__objects_22) $(am__objects_23) \
--	$(am__objects_24) $(am__objects_25) $(am__objects_26)
-+	$(am__objects_24) $(am__objects_25) $(am__objects_26) \
-+	$(am__objects_27) $(am__objects_28) $(am__objects_29) \
-+	$(am__objects_30) $(am__objects_31) $(am__objects_32) \
-+	$(am__objects_33) $(am__objects_34) $(am__objects_35) \
-+	$(am__objects_36) $(am__objects_37) $(am__objects_38) \
-+	$(am__objects_39)
- libffi_la_OBJECTS = $(am_libffi_la_OBJECTS) \
- 	$(nodist_libffi_la_OBJECTS)
--libffi_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-+AM_V_lt = $(am__v_lt_@AM_V@)
-+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-+am__v_lt_0 = --silent
-+am__v_lt_1 = 
-+libffi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- 	$(libffi_la_LDFLAGS) $(LDFLAGS) -o $@
- libffi_convenience_la_LIBADD =
--am__objects_27 = src/debug.lo src/prep_cif.lo src/types.lo \
--	src/raw_api.lo src/java_raw_api.lo src/closures.lo
--am_libffi_convenience_la_OBJECTS = $(am__objects_27)
--am__objects_28 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
-+am__objects_40 = src/prep_cif.lo src/types.lo src/raw_api.lo \
-+	src/java_raw_api.lo src/closures.lo
-+am_libffi_convenience_la_OBJECTS = $(am__objects_40)
-+am__objects_41 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
- 	$(am__objects_4) $(am__objects_5) $(am__objects_6) \
- 	$(am__objects_7) $(am__objects_8) $(am__objects_9) \
- 	$(am__objects_10) $(am__objects_11) $(am__objects_12) \
- 	$(am__objects_13) $(am__objects_14) $(am__objects_15) \
- 	$(am__objects_16) $(am__objects_17) $(am__objects_18) \
- 	$(am__objects_19) $(am__objects_20) $(am__objects_21) \
- 	$(am__objects_22) $(am__objects_23) $(am__objects_24) \
--	$(am__objects_25) $(am__objects_26)
--nodist_libffi_convenience_la_OBJECTS = $(am__objects_28)
-+	$(am__objects_25) $(am__objects_26) $(am__objects_27) \
-+	$(am__objects_28) $(am__objects_29) $(am__objects_30) \
-+	$(am__objects_31) $(am__objects_32) $(am__objects_33) \
-+	$(am__objects_34) $(am__objects_35) $(am__objects_36) \
-+	$(am__objects_37) $(am__objects_38) $(am__objects_39)
-+nodist_libffi_convenience_la_OBJECTS = $(am__objects_41)
- libffi_convenience_la_OBJECTS = $(am_libffi_convenience_la_OBJECTS) \
- 	$(nodist_libffi_convenience_la_OBJECTS)
-+AM_V_P = $(am__v_P_@AM_V@)
-+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-+am__v_P_0 = false
-+am__v_P_1 = :
-+AM_V_GEN = $(am__v_GEN_@AM_V@)
-+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-+am__v_GEN_0 = @echo "  GEN     " $@;
-+am__v_GEN_1 = 
-+AM_V_at = $(am__v_at_@AM_V@)
-+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-+am__v_at_0 = @
-+am__v_at_1 = 
- DEFAULT_INCLUDES = -I.@am__isrc@
- depcomp = $(SHELL) $(top_srcdir)/depcomp
- am__depfiles_maybe = depfiles
- am__mv = mv -f
- CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
--LTCPPASCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--	--mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
--	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
-+LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
-+	$(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \
-+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-+	$(AM_CCASFLAGS) $(CCASFLAGS)
-+AM_V_CPPAS = $(am__v_CPPAS_@AM_V@)
-+am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@)
-+am__v_CPPAS_0 = @echo "  CPPAS   " $@;
-+am__v_CPPAS_1 = 
- COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
--	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-+	$(AM_CFLAGS) $(CFLAGS)
-+AM_V_CC = $(am__v_CC_@AM_V@)
-+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-+am__v_CC_0 = @echo "  CC      " $@;
-+am__v_CC_1 = 
- CCLD = $(CC)
--LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
--	$(LDFLAGS) -o $@
-+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-+am__v_CCLD_0 = @echo "  CCLD    " $@;
-+am__v_CCLD_1 = 
- SOURCES = $(libffi_la_SOURCES) $(nodist_libffi_la_SOURCES) \
- 	$(libffi_convenience_la_SOURCES) \
- 	$(nodist_libffi_convenience_la_SOURCES)
- DIST_SOURCES = $(libffi_la_SOURCES) $(libffi_convenience_la_SOURCES)
--INFO_DEPS =
-+AM_V_DVIPS = $(am__v_DVIPS_@AM_V@)
-+am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@)
-+am__v_DVIPS_0 = @echo "  DVIPS   " $@;
-+am__v_DVIPS_1 = 
-+AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@)
-+am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@)
-+am__v_MAKEINFO_0 = @echo "  MAKEINFO" $@;
-+am__v_MAKEINFO_1 = 
-+AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@)
-+am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@)
-+am__v_INFOHTML_0 = @echo "  INFOHTML" $@;
-+am__v_INFOHTML_1 = 
-+AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@)
-+am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@)
-+am__v_TEXI2DVI_0 = @echo "  TEXI2DVI" $@;
-+am__v_TEXI2DVI_1 = 
-+AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@)
-+am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@)
-+am__v_TEXI2PDF_0 = @echo "  TEXI2PDF" $@;
-+am__v_TEXI2PDF_1 = 
-+AM_V_texinfo = $(am__v_texinfo_@AM_V@)
-+am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@)
-+am__v_texinfo_0 = -q
-+am__v_texinfo_1 = 
-+AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
-+am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
-+am__v_texidevnull_0 = > /dev/null
-+am__v_texidevnull_1 = 
-+INFO_DEPS = $(srcdir)/doc/libffi.info
- am__TEXINFO_TEX_DIR = $(srcdir)
- DVIS = doc/libffi.dvi
- PDFS = doc/libffi.pdf
- PSS = doc/libffi.ps
- HTMLS = doc/libffi.html
- TEXINFOS = doc/libffi.texi
- TEXI2DVI = texi2dvi
- TEXI2PDF = $(TEXI2DVI) --pdf --batch
- MAKEINFOHTML = $(MAKEINFO) --html
- AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
- DVIPS = dvips
--RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
--	html-recursive info-recursive install-data-recursive \
--	install-dvi-recursive install-exec-recursive \
--	install-html-recursive install-info-recursive \
--	install-pdf-recursive install-ps-recursive install-recursive \
--	installcheck-recursive installdirs-recursive pdf-recursive \
--	ps-recursive uninstall-recursive
-+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-+	ctags-recursive dvi-recursive html-recursive info-recursive \
-+	install-data-recursive install-dvi-recursive \
-+	install-exec-recursive install-html-recursive \
-+	install-info-recursive install-pdf-recursive \
-+	install-ps-recursive install-recursive installcheck-recursive \
-+	installdirs-recursive pdf-recursive ps-recursive \
-+	tags-recursive uninstall-recursive
-+am__can_run_installinfo = \
-+  case $$AM_UPDATE_INFO_DIR in \
-+    n|no|NO) false;; \
-+    *) (install-info --version) >/dev/null 2>&1;; \
-+  esac
- DATA = $(pkgconfig_DATA)
- RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-   distclean-recursive maintainer-clean-recursive
--AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
--	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
--	distdir dist dist-all distcheck
-+am__recursive_targets = \
-+  $(RECURSIVE_TARGETS) \
-+  $(RECURSIVE_CLEAN_TARGETS) \
-+  $(am__extra_recursive_targets)
-+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-+	cscope distdir dist dist-all distcheck
-+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
-+	$(LISP)fficonfig.h.in
-+# Read a list of newline-separated strings from the standard input,
-+# and print each of them once, without duplicates.  Input order is
-+# *not* preserved.
-+am__uniquify_input = $(AWK) '\
-+  BEGIN { nonempty = 0; } \
-+  { items[$$0] = 1; nonempty = 1; } \
-+  END { if (nonempty) { for (i in items) print i; }; } \
-+'
-+# Make sure the list of sources is unique.  This is necessary because,
-+# e.g., the same source file might be shared among _SOURCES variables
-+# for different programs/libraries.
-+am__define_uniq_tagged_files = \
-+  list='$(am__tagged_files)'; \
-+  unique=`for i in $$list; do \
-+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+  done | $(am__uniquify_input)`
- ETAGS = etags
- CTAGS = ctags
-+CSCOPE = cscope
- DIST_SUBDIRS = $(SUBDIRS)
- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
- distdir = $(PACKAGE)-$(VERSION)
- top_distdir = $(distdir)
- am__remove_distdir = \
--  { test ! -d "$(distdir)" \
--    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
--         && rm -fr "$(distdir)"; }; }
-+  if test -d "$(distdir)"; then \
-+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-+      && rm -rf "$(distdir)" \
-+      || { sleep 5 && rm -rf "$(distdir)"; }; \
-+  else :; fi
-+am__post_remove_distdir = $(am__remove_distdir)
- am__relativize = \
-   dir0=`pwd`; \
-   sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-   sed_rest='s,^[^/]*/*,,'; \
-   sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-   sed_butlast='s,/*[^/]*$$,,'; \
-   while test -n "$$dir1"; do \
-     first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-@@ -261,21 +451,25 @@ am__relativize = \
-         dir0="$$dir0"/"$$first"; \
-       fi; \
-     fi; \
-     dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-   done; \
-   reldir="$$dir2"
- DIST_ARCHIVES = $(distdir).tar.gz
- GZIP_ENV = --best
-+DIST_TARGETS = dist-gzip
- distuninstallcheck_listfiles = find . -type f -print
-+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
-+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
- distcleancheck_listfiles = find . -type f -print
- ACLOCAL = @ACLOCAL@
- ALLOCA = @ALLOCA@
- AMTAR = @AMTAR@
-+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
- AM_LTLDFLAGS = @AM_LTLDFLAGS@
- AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@
- AR = @AR@
- AUTOCONF = @AUTOCONF@
- AUTOHEADER = @AUTOHEADER@
- AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
- CC = @CC@
-@@ -284,75 +478,82 @@ CCASDEPMODE = @CCASDEPMODE@
- CCASFLAGS = @CCASFLAGS@
- CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
- CPP = @CPP@
- CPPFLAGS = @CPPFLAGS@
- CYGPATH_W = @CYGPATH_W@
- DEFS = @DEFS@
- DEPDIR = @DEPDIR@
-+DLLTOOL = @DLLTOOL@
- DSYMUTIL = @DSYMUTIL@
- DUMPBIN = @DUMPBIN@
- ECHO_C = @ECHO_C@
- ECHO_N = @ECHO_N@
- ECHO_T = @ECHO_T@
- EGREP = @EGREP@
- EXEEXT = @EXEEXT@
-+FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@
- FGREP = @FGREP@
- GREP = @GREP@
- HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
-+HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@
- INSTALL = @INSTALL@
- INSTALL_DATA = @INSTALL_DATA@
- INSTALL_PROGRAM = @INSTALL_PROGRAM@
- INSTALL_SCRIPT = @INSTALL_SCRIPT@
- INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
- LD = @LD@
- LDFLAGS = @LDFLAGS@
- LIBOBJS = @LIBOBJS@
- LIBS = @LIBS@
- LIBTOOL = @LIBTOOL@
- LIPO = @LIPO@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
- MAINT = @MAINT@
- MAKEINFO = @MAKEINFO@
-+MANIFEST_TOOL = @MANIFEST_TOOL@
- MKDIR_P = @MKDIR_P@
- NM = @NM@
- NMEDIT = @NMEDIT@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- OTOOL = @OTOOL@
- OTOOL64 = @OTOOL64@
- PACKAGE = @PACKAGE@
- PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
- PACKAGE_NAME = @PACKAGE_NAME@
- PACKAGE_STRING = @PACKAGE_STRING@
- PACKAGE_TARNAME = @PACKAGE_TARNAME@
- PACKAGE_URL = @PACKAGE_URL@
- PACKAGE_VERSION = @PACKAGE_VERSION@
- PATH_SEPARATOR = @PATH_SEPARATOR@
-+PRTDIAG = @PRTDIAG@
- RANLIB = @RANLIB@
- SED = @SED@
- SET_MAKE = @SET_MAKE@
- SHELL = @SHELL@
- STRIP = @STRIP@
- TARGET = @TARGET@
- TARGETDIR = @TARGETDIR@
- VERSION = @VERSION@
- abs_builddir = @abs_builddir@
- abs_srcdir = @abs_srcdir@
- abs_top_builddir = @abs_top_builddir@
- abs_top_srcdir = @abs_top_srcdir@
-+ac_ct_AR = @ac_ct_AR@
- ac_ct_CC = @ac_ct_CC@
- ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
- am__include = @am__include@
- am__leading_dot = @am__leading_dot@
- am__quote = @am__quote@
- am__tar = @am__tar@
- am__untar = @am__untar@
-+ax_enable_builddir_sed = @ax_enable_builddir_sed@
- bindir = @bindir@
- build = @build@
- build_alias = @build_alias@
- build_cpu = @build_cpu@
- build_os = @build_os@
- build_vendor = @build_vendor@
- builddir = @builddir@
- datadir = @datadir@
-@@ -368,69 +569,86 @@ host_vendor = @host_vendor@
- htmldir = @htmldir@
- includedir = @includedir@
- infodir = @infodir@
- install_sh = @install_sh@
- libdir = @libdir@
- libexecdir = @libexecdir@
- localedir = @localedir@
- localstatedir = @localstatedir@
--lt_ECHO = @lt_ECHO@
- mandir = @mandir@
- mkdir_p = @mkdir_p@
- oldincludedir = @oldincludedir@
- pdfdir = @pdfdir@
- prefix = @prefix@
- program_transform_name = @program_transform_name@
- psdir = @psdir@
- sbindir = @sbindir@
- sharedstatedir = @sharedstatedir@
- srcdir = @srcdir@
-+sys_symbol_underscore = @sys_symbol_underscore@
- sysconfdir = @sysconfdir@
- target = @target@
- target_alias = @target_alias@
- target_cpu = @target_cpu@
- target_os = @target_os@
- target_vendor = @target_vendor@
- toolexecdir = @toolexecdir@
- toolexeclibdir = @toolexeclibdir@
- top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- AUTOMAKE_OPTIONS = foreign subdir-objects
-+ACLOCAL_AMFLAGS = -I m4
- SUBDIRS = include testsuite man
--EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \
--	src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \
--	src/arm/ffi.c src/arm/sysv.S src/arm/ffitarget.h \
--	src/avr32/ffi.c src/avr32/sysv.S src/avr32/ffitarget.h \
--	src/cris/ffi.c src/cris/sysv.S src/cris/ffitarget.h \
--	src/ia64/ffi.c src/ia64/ffitarget.h src/ia64/ia64_flags.h \
--	src/ia64/unix.S \
--	src/mips/ffi.c src/mips/n32.S src/mips/o32.S \
--	src/mips/ffitarget.h \
--	src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h \
--	src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \
--	src/powerpc/ffi.c src/powerpc/sysv.S \
--	src/powerpc/linux64.S src/powerpc/linux64_closure.S \
--	src/powerpc/ppc_closure.S src/powerpc/asm.h \
--	src/powerpc/aix.S src/powerpc/darwin.S \
--	src/powerpc/aix_closure.S src/powerpc/darwin_closure.S \
--	src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h \
--	src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h \
--	src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h \
--	src/sh64/ffi.c src/sh64/sysv.S src/sh64/ffitarget.h \
--	src/sparc/v8.S src/sparc/v9.S src/sparc/ffitarget.h \
--	src/sparc/ffi.c src/x86/darwin64.S \
--	src/x86/ffi.c src/x86/sysv.S src/x86/win32.S src/x86/win64.S \
--	src/x86/darwin.S src/x86/freebsd.S \
--	src/x86/ffi64.c src/x86/unix64.S src/x86/ffitarget.h \
--	src/pa/ffitarget.h src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \
--	src/frv/ffi.c src/frv/eabi.S src/frv/ffitarget.h src/dlmalloc.c \
--	libtool-version ChangeLog.libffi m4/libtool.m4 \
--	m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4
-+EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj			\
-+	 src/aarch64/ffi.c src/aarch64/ffitarget.h src/aarch64/sysv.S	\
-+	 src/alpha/ffi.c src/alpha/osf.S			\
-+	 src/alpha/ffitarget.h src/arc/ffi.c src/arc/arcompact.S	\
-+	 src/arc/ffitarget.h src/arm/ffi.c src/arm/sysv.S		\
-+	 src/arm/ffitarget.h src/avr32/ffi.c src/avr32/sysv.S		\
-+	 src/avr32/ffitarget.h src/cris/ffi.c src/cris/sysv.S		\
-+	 src/cris/ffitarget.h src/ia64/ffi.c src/ia64/ffitarget.h	\
-+	 src/ia64/ia64_flags.h src/ia64/unix.S src/mips/ffi.c		\
-+	 src/mips/n32.S src/mips/o32.S src/metag/ffi.c			\
-+	 src/metag/ffitarget.h src/metag/sysv.S src/moxie/ffi.c		\
-+	 src/moxie/ffitarget.h src/moxie/eabi.S src/mips/ffitarget.h	\
-+	 src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h		\
-+	 src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h		\
-+	 src/m88k/ffi.c src/m88k/obsd.S src/m88k/ffitarget.h		\
-+	 src/microblaze/ffi.c src/microblaze/sysv.S			\
-+	 src/microblaze/ffitarget.h					\
-+	 src/nios2/ffi.c src/nios2/ffitarget.h src/nios2/sysv.S		\
-+	 src/powerpc/ffi.c src/powerpc/ffi_powerpc.h			\
-+	 src/powerpc/ffi_sysv.c src/powerpc/ffi_linux64.c		\
-+	 src/powerpc/sysv.S src/powerpc/linux64.S			\
-+	 src/powerpc/linux64_closure.S src/powerpc/ppc_closure.S	\
-+	 src/powerpc/asm.h src/powerpc/aix.S src/powerpc/darwin.S	\
-+	 src/powerpc/aix_closure.S src/powerpc/darwin_closure.S		\
-+	 src/powerpc/ffi_darwin.c src/powerpc/ffitarget.h		\
-+	 src/s390/ffi.c src/s390/sysv.S src/s390/ffitarget.h		\
-+	 src/sh/ffi.c src/sh/sysv.S src/sh/ffitarget.h src/sh64/ffi.c	\
-+	 src/sh64/sysv.S src/sh64/ffitarget.h src/sparc/v8.S		\
-+	 src/sparc/v9.S src/sparc/ffitarget.h src/sparc/ffi.c		\
-+	 src/x86/darwin64.S src/x86/ffi.c src/x86/sysv.S		\
-+	 src/x86/win32.S src/x86/darwin.S src/x86/win64.S		\
-+	 src/x86/freebsd.S src/x86/ffi64.c src/x86/unix64.S		\
-+	 src/x86/ffitarget.h src/pa/ffitarget.h src/pa/ffi.c		\
-+	 src/pa/linux.S src/pa/hpux32.S src/frv/ffi.c src/bfin/ffi.c	\
-+	 src/bfin/ffitarget.h src/bfin/sysv.S src/frv/eabi.S		\
-+	 src/frv/ffitarget.h src/dlmalloc.c src/tile/ffi.c		\
-+	 src/tile/ffitarget.h src/tile/tile.S libtool-version		\
-+	 src/vax/ffi.c src/vax/ffitarget.h src/vax/elfbsd.S		\
-+	 src/xtensa/ffitarget.h src/xtensa/ffi.c src/xtensa/sysv.S	\
-+	 ChangeLog.libffi m4/libtool.m4 m4/lt~obsolete.m4		\
-+	 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4			\
-+	 m4/ltversion.m4 src/arm/gentramp.sh src/debug.c msvcc.sh	\
-+	 generate-darwin-source-and-headers.py				\
-+	 libffi.xcodeproj/project.pbxproj src/arm/trampoline.S		\
-+	 libtool-ldflags ChangeLog.libffi-3.1
- 
- info_TEXINFOS = doc/libffi.texi
- 
- # Work around what appears to be a GNU make bug handling MAKEFLAGS
- # values defined in terms of make variables, as is the case for CC and
- # friends when we are called from the top level Makefile.
- AM_MAKEFLAGS = \
- 	'AR_FLAGS=$(AR_FLAGS)' \
-@@ -462,46 +680,54 @@ AM_MAKEFLAGS = \
- 	'AS=$(AS)' \
- 	'CC=$(CC)' \
- 	'CXX=$(CXX)' \
- 	'LD=$(LD)' \
- 	'NM=$(NM)' \
- 	'RANLIB=$(RANLIB)' \
- 	'DESTDIR=$(DESTDIR)'
- 
-+
-+# Subdir rules rely on $(FLAGS_TO_PASS)
-+FLAGS_TO_PASS = $(AM_MAKEFLAGS)
- MAKEOVERRIDES = 
--ACLOCAL_AMFLAGS = $(ACLOCAL_AMFLAGS) -I m4
--lib_LTLIBRARIES = libffi.la
-+toolexeclib_LTLIBRARIES = libffi.la
- noinst_LTLIBRARIES = libffi_convenience.la
--libffi_la_SOURCES = src/debug.c src/prep_cif.c src/types.c \
-+libffi_la_SOURCES = src/prep_cif.c src/types.c \
- 		src/raw_api.c src/java_raw_api.c src/closures.c
- 
- pkgconfigdir = $(libdir)/pkgconfig
- pkgconfig_DATA = libffi.pc
- nodist_libffi_la_SOURCES = $(am__append_1) $(am__append_2) \
- 	$(am__append_3) $(am__append_4) $(am__append_5) \
- 	$(am__append_6) $(am__append_7) $(am__append_8) \
- 	$(am__append_9) $(am__append_10) $(am__append_11) \
- 	$(am__append_12) $(am__append_13) $(am__append_14) \
- 	$(am__append_15) $(am__append_16) $(am__append_17) \
- 	$(am__append_18) $(am__append_19) $(am__append_20) \
- 	$(am__append_21) $(am__append_22) $(am__append_23) \
--	$(am__append_24) $(am__append_25) $(am__append_26)
-+	$(am__append_24) $(am__append_25) $(am__append_26) \
-+	$(am__append_27) $(am__append_28) $(am__append_29) \
-+	$(am__append_30) $(am__append_31) $(am__append_32) \
-+	$(am__append_33) $(am__append_34) $(am__append_35) \
-+	$(am__append_36) $(am__append_37) $(am__append_38) \
-+	$(am__append_39)
- libffi_convenience_la_SOURCES = $(libffi_la_SOURCES)
- nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
--AM_CFLAGS = -Wall -g -fexceptions $(am__append_27) $(am__append_28)
--libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS)
-+LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/libtool-ldflags $(LDFLAGS))
-+AM_CFLAGS = $(am__append_40)
-+libffi_la_LDFLAGS = -no-undefined -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS)
- AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
- AM_CCASFLAGS = $(AM_CPPFLAGS)
- all: fficonfig.h
- 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
- 
- .SUFFIXES:
- .SUFFIXES: .S .c .dvi .lo .o .obj .ps
--am--refresh:
-+am--refresh: Makefile
- 	@:
- $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
- 	@for dep in $?; do \
- 	  case '$(am__configure_deps)' in \
- 	    *$$dep*) \
- 	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
- 	      $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
- 		&& exit 0; \
-@@ -527,111 +753,125 @@ Makefile: $(srcdir)/Makefile.in $(top_bu
- 
- $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- 	$(am__cd) $(srcdir) && $(AUTOCONF)
- $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- 	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
- $(am__aclocal_m4_deps):
- 
- fficonfig.h: stamp-h1
--	@if test ! -f $@; then \
--	  rm -f stamp-h1; \
--	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
--	else :; fi
-+	@if test ! -f $@; then rm -f stamp-h1; else :; fi
-+	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
- 
- stamp-h1: $(srcdir)/fficonfig.h.in $(top_builddir)/config.status
- 	@rm -f stamp-h1
- 	cd $(top_builddir) && $(SHELL) ./config.status fficonfig.h
- $(srcdir)/fficonfig.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
- 	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
- 	rm -f stamp-h1
- 	touch $@
- 
- distclean-hdr:
- 	-rm -f fficonfig.h stamp-h1
- libffi.pc: $(top_builddir)/config.status $(srcdir)/libffi.pc.in
- 	cd $(top_builddir) && $(SHELL) ./config.status $@
--install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-+
-+clean-noinstLTLIBRARIES:
-+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-+	@list='$(noinst_LTLIBRARIES)'; \
-+	locs=`for p in $$list; do echo $$p; done | \
-+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-+	      sort -u`; \
-+	test -z "$$locs" || { \
-+	  echo rm -f $${locs}; \
-+	  rm -f $${locs}; \
-+	}
-+
-+install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
- 	@$(NORMAL_INSTALL)
--	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
--	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-+	@list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
- 	list2=; for p in $$list; do \
- 	  if test -f $$p; then \
- 	    list2="$$list2 $$p"; \
- 	  else :; fi; \
- 	done; \
- 	test -z "$$list2" || { \
--	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
--	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-+	  echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibdir)'"; \
-+	  $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || exit 1; \
-+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(toolexeclibdir)'"; \
-+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(toolexeclibdir)"; \
- 	}
- 
--uninstall-libLTLIBRARIES:
-+uninstall-toolexeclibLTLIBRARIES:
- 	@$(NORMAL_UNINSTALL)
--	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-+	@list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
- 	for p in $$list; do \
- 	  $(am__strip_dir) \
--	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
--	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \
-+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$f"; \
- 	done
- 
--clean-libLTLIBRARIES:
--	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
--	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
--	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
--	  test "$$dir" != "$$p" || dir=.; \
--	  echo "rm -f \"$${dir}/so_locations\""; \
--	  rm -f "$${dir}/so_locations"; \
--	done
--
--clean-noinstLTLIBRARIES:
--	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
--	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
--	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
--	  test "$$dir" != "$$p" || dir=.; \
--	  echo "rm -f \"$${dir}/so_locations\""; \
--	  rm -f "$${dir}/so_locations"; \
--	done
-+clean-toolexeclibLTLIBRARIES:
-+	-test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES)
-+	@list='$(toolexeclib_LTLIBRARIES)'; \
-+	locs=`for p in $$list; do echo $$p; done | \
-+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-+	      sort -u`; \
-+	test -z "$$locs" || { \
-+	  echo rm -f $${locs}; \
-+	  rm -f $${locs}; \
-+	}
- src/$(am__dirstamp):
- 	@$(MKDIR_P) src
- 	@: > src/$(am__dirstamp)
- src/$(DEPDIR)/$(am__dirstamp):
- 	@$(MKDIR_P) src/$(DEPDIR)
- 	@: > src/$(DEPDIR)/$(am__dirstamp)
--src/debug.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
- src/prep_cif.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
- src/types.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
- src/raw_api.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
- src/java_raw_api.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
- src/closures.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
-+src/debug.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
- src/mips/$(am__dirstamp):
- 	@$(MKDIR_P) src/mips
- 	@: > src/mips/$(am__dirstamp)
- src/mips/$(DEPDIR)/$(am__dirstamp):
- 	@$(MKDIR_P) src/mips/$(DEPDIR)
- 	@: > src/mips/$(DEPDIR)/$(am__dirstamp)
- src/mips/ffi.lo: src/mips/$(am__dirstamp) \
- 	src/mips/$(DEPDIR)/$(am__dirstamp)
- src/mips/o32.lo: src/mips/$(am__dirstamp) \
- 	src/mips/$(DEPDIR)/$(am__dirstamp)
- src/mips/n32.lo: src/mips/$(am__dirstamp) \
- 	src/mips/$(DEPDIR)/$(am__dirstamp)
-+src/bfin/$(am__dirstamp):
-+	@$(MKDIR_P) src/bfin
-+	@: > src/bfin/$(am__dirstamp)
-+src/bfin/$(DEPDIR)/$(am__dirstamp):
-+	@$(MKDIR_P) src/bfin/$(DEPDIR)
-+	@: > src/bfin/$(DEPDIR)/$(am__dirstamp)
-+src/bfin/ffi.lo: src/bfin/$(am__dirstamp) \
-+	src/bfin/$(DEPDIR)/$(am__dirstamp)
-+src/bfin/sysv.lo: src/bfin/$(am__dirstamp) \
-+	src/bfin/$(DEPDIR)/$(am__dirstamp)
- src/x86/$(am__dirstamp):
- 	@$(MKDIR_P) src/x86
- 	@: > src/x86/$(am__dirstamp)
- src/x86/$(DEPDIR)/$(am__dirstamp):
- 	@$(MKDIR_P) src/x86/$(DEPDIR)
- 	@: > src/x86/$(DEPDIR)/$(am__dirstamp)
- src/x86/ffi.lo: src/x86/$(am__dirstamp) \
- 	src/x86/$(DEPDIR)/$(am__dirstamp)
- src/x86/sysv.lo: src/x86/$(am__dirstamp) \
- 	src/x86/$(DEPDIR)/$(am__dirstamp)
-+src/x86/win32.lo: src/x86/$(am__dirstamp) \
-+	src/x86/$(DEPDIR)/$(am__dirstamp)
- src/x86/freebsd.lo: src/x86/$(am__dirstamp) \
- 	src/x86/$(DEPDIR)/$(am__dirstamp)
--src/x86/win32.lo: src/x86/$(am__dirstamp) \
--	src/x86/$(DEPDIR)/$(am__dirstamp)
- src/x86/win64.lo: src/x86/$(am__dirstamp) \
- 	src/x86/$(DEPDIR)/$(am__dirstamp)
- src/x86/darwin.lo: src/x86/$(am__dirstamp) \
- 	src/x86/$(DEPDIR)/$(am__dirstamp)
- src/x86/ffi64.lo: src/x86/$(am__dirstamp) \
- 	src/x86/$(DEPDIR)/$(am__dirstamp)
- src/x86/darwin64.lo: src/x86/$(am__dirstamp) \
- 	src/x86/$(DEPDIR)/$(am__dirstamp)
-@@ -682,24 +922,68 @@ src/m68k/$(am__dirstamp):
- 	@: > src/m68k/$(am__dirstamp)
- src/m68k/$(DEPDIR)/$(am__dirstamp):
- 	@$(MKDIR_P) src/m68k/$(DEPDIR)
- 	@: > src/m68k/$(DEPDIR)/$(am__dirstamp)
- src/m68k/ffi.lo: src/m68k/$(am__dirstamp) \
- 	src/m68k/$(DEPDIR)/$(am__dirstamp)
- src/m68k/sysv.lo: src/m68k/$(am__dirstamp) \
- 	src/m68k/$(DEPDIR)/$(am__dirstamp)
-+src/m88k/$(am__dirstamp):
-+	@$(MKDIR_P) src/m88k
-+	@: > src/m88k/$(am__dirstamp)
-+src/m88k/$(DEPDIR)/$(am__dirstamp):
-+	@$(MKDIR_P) src/m88k/$(DEPDIR)
-+	@: > src/m88k/$(DEPDIR)/$(am__dirstamp)
-+src/m88k/ffi.lo: src/m88k/$(am__dirstamp) \
-+	src/m88k/$(DEPDIR)/$(am__dirstamp)
-+src/m88k/obsd.lo: src/m88k/$(am__dirstamp) \
-+	src/m88k/$(DEPDIR)/$(am__dirstamp)
-+src/moxie/$(am__dirstamp):
-+	@$(MKDIR_P) src/moxie
-+	@: > src/moxie/$(am__dirstamp)
-+src/moxie/$(DEPDIR)/$(am__dirstamp):
-+	@$(MKDIR_P) src/moxie/$(DEPDIR)
-+	@: > src/moxie/$(DEPDIR)/$(am__dirstamp)
-+src/moxie/ffi.lo: src/moxie/$(am__dirstamp) \
-+	src/moxie/$(DEPDIR)/$(am__dirstamp)
-+src/moxie/eabi.lo: src/moxie/$(am__dirstamp) \
-+	src/moxie/$(DEPDIR)/$(am__dirstamp)
-+src/microblaze/$(am__dirstamp):
-+	@$(MKDIR_P) src/microblaze
-+	@: > src/microblaze/$(am__dirstamp)
-+src/microblaze/$(DEPDIR)/$(am__dirstamp):
-+	@$(MKDIR_P) src/microblaze/$(DEPDIR)
-+	@: > src/microblaze/$(DEPDIR)/$(am__dirstamp)
-+src/microblaze/ffi.lo: src/microblaze/$(am__dirstamp) \
-+	src/microblaze/$(DEPDIR)/$(am__dirstamp)
-+src/microblaze/sysv.lo: src/microblaze/$(am__dirstamp) \
-+	src/microblaze/$(DEPDIR)/$(am__dirstamp)
-+src/nios2/$(am__dirstamp):
-+	@$(MKDIR_P) src/nios2
-+	@: > src/nios2/$(am__dirstamp)
-+src/nios2/$(DEPDIR)/$(am__dirstamp):
-+	@$(MKDIR_P) src/nios2/$(DEPDIR)
-+	@: > src/nios2/$(DEPDIR)/$(am__dirstamp)
-+src/nios2/sysv.lo: src/nios2/$(am__dirstamp) \
-+	src/nios2/$(DEPDIR)/$(am__dirstamp)
-+src/nios2/ffi.lo: src/nios2/$(am__dirstamp) \
-+	src/nios2/$(DEPDIR)/$(am__dirstamp)
- src/powerpc/$(am__dirstamp):
- 	@$(MKDIR_P) src/powerpc
- 	@: > src/powerpc/$(am__dirstamp)
- src/powerpc/$(DEPDIR)/$(am__dirstamp):
- 	@$(MKDIR_P) src/powerpc/$(DEPDIR)
- 	@: > src/powerpc/$(DEPDIR)/$(am__dirstamp)
- src/powerpc/ffi.lo: src/powerpc/$(am__dirstamp) \
- 	src/powerpc/$(DEPDIR)/$(am__dirstamp)
-+src/powerpc/ffi_sysv.lo: src/powerpc/$(am__dirstamp) \
-+	src/powerpc/$(DEPDIR)/$(am__dirstamp)
-+src/powerpc/ffi_linux64.lo: src/powerpc/$(am__dirstamp) \
-+	src/powerpc/$(DEPDIR)/$(am__dirstamp)
- src/powerpc/sysv.lo: src/powerpc/$(am__dirstamp) \
- 	src/powerpc/$(DEPDIR)/$(am__dirstamp)
- src/powerpc/ppc_closure.lo: src/powerpc/$(am__dirstamp) \
- 	src/powerpc/$(DEPDIR)/$(am__dirstamp)
- src/powerpc/linux64.lo: src/powerpc/$(am__dirstamp) \
- 	src/powerpc/$(DEPDIR)/$(am__dirstamp)
- src/powerpc/linux64_closure.lo: src/powerpc/$(am__dirstamp) \
- 	src/powerpc/$(DEPDIR)/$(am__dirstamp)
-@@ -708,26 +992,48 @@ src/powerpc/ffi_darwin.lo: src/powerpc/$
- src/powerpc/aix.lo: src/powerpc/$(am__dirstamp) \
- 	src/powerpc/$(DEPDIR)/$(am__dirstamp)
- src/powerpc/aix_closure.lo: src/powerpc/$(am__dirstamp) \
- 	src/powerpc/$(DEPDIR)/$(am__dirstamp)
- src/powerpc/darwin.lo: src/powerpc/$(am__dirstamp) \
- 	src/powerpc/$(DEPDIR)/$(am__dirstamp)
- src/powerpc/darwin_closure.lo: src/powerpc/$(am__dirstamp) \
- 	src/powerpc/$(DEPDIR)/$(am__dirstamp)
-+src/aarch64/$(am__dirstamp):
-+	@$(MKDIR_P) src/aarch64
-+	@: > src/aarch64/$(am__dirstamp)
-+src/aarch64/$(DEPDIR)/$(am__dirstamp):
-+	@$(MKDIR_P) src/aarch64/$(DEPDIR)
-+	@: > src/aarch64/$(DEPDIR)/$(am__dirstamp)
-+src/aarch64/sysv.lo: src/aarch64/$(am__dirstamp) \
-+	src/aarch64/$(DEPDIR)/$(am__dirstamp)
-+src/aarch64/ffi.lo: src/aarch64/$(am__dirstamp) \
-+	src/aarch64/$(DEPDIR)/$(am__dirstamp)
-+src/arc/$(am__dirstamp):
-+	@$(MKDIR_P) src/arc
-+	@: > src/arc/$(am__dirstamp)
-+src/arc/$(DEPDIR)/$(am__dirstamp):
-+	@$(MKDIR_P) src/arc/$(DEPDIR)
-+	@: > src/arc/$(DEPDIR)/$(am__dirstamp)
-+src/arc/arcompact.lo: src/arc/$(am__dirstamp) \
-+	src/arc/$(DEPDIR)/$(am__dirstamp)
-+src/arc/ffi.lo: src/arc/$(am__dirstamp) \
-+	src/arc/$(DEPDIR)/$(am__dirstamp)
- src/arm/$(am__dirstamp):
- 	@$(MKDIR_P) src/arm
- 	@: > src/arm/$(am__dirstamp)
- src/arm/$(DEPDIR)/$(am__dirstamp):
- 	@$(MKDIR_P) src/arm/$(DEPDIR)
- 	@: > src/arm/$(DEPDIR)/$(am__dirstamp)
- src/arm/sysv.lo: src/arm/$(am__dirstamp) \
- 	src/arm/$(DEPDIR)/$(am__dirstamp)
- src/arm/ffi.lo: src/arm/$(am__dirstamp) \
- 	src/arm/$(DEPDIR)/$(am__dirstamp)
-+src/arm/trampoline.lo: src/arm/$(am__dirstamp) \
-+	src/arm/$(DEPDIR)/$(am__dirstamp)
- src/avr32/$(am__dirstamp):
- 	@$(MKDIR_P) src/avr32
- 	@: > src/avr32/$(am__dirstamp)
- src/avr32/$(DEPDIR)/$(am__dirstamp):
- 	@$(MKDIR_P) src/avr32/$(DEPDIR)
- 	@: > src/avr32/$(DEPDIR)/$(am__dirstamp)
- src/avr32/sysv.lo: src/avr32/$(am__dirstamp) \
- 	src/avr32/$(DEPDIR)/$(am__dirstamp)
-@@ -748,26 +1054,16 @@ src/frv/$(am__dirstamp):
- 	@: > src/frv/$(am__dirstamp)
- src/frv/$(DEPDIR)/$(am__dirstamp):
- 	@$(MKDIR_P) src/frv/$(DEPDIR)
- 	@: > src/frv/$(DEPDIR)/$(am__dirstamp)
- src/frv/eabi.lo: src/frv/$(am__dirstamp) \
- 	src/frv/$(DEPDIR)/$(am__dirstamp)
- src/frv/ffi.lo: src/frv/$(am__dirstamp) \
- 	src/frv/$(DEPDIR)/$(am__dirstamp)
--src/moxie/$(am__dirstamp):
--	@$(MKDIR_P) src/moxie
--	@: > src/moxie/$(am__dirstamp)
--src/moxie/$(DEPDIR)/$(am__dirstamp):
--	@$(MKDIR_P) src/moxie/$(DEPDIR)
--	@: > src/moxie/$(DEPDIR)/$(am__dirstamp)
--src/moxie/eabi.lo: src/moxie/$(am__dirstamp) \
--	src/moxie/$(DEPDIR)/$(am__dirstamp)
--src/moxie/ffi.lo: src/moxie/$(am__dirstamp) \
--	src/moxie/$(DEPDIR)/$(am__dirstamp)
- src/s390/$(am__dirstamp):
- 	@$(MKDIR_P) src/s390
- 	@: > src/s390/$(am__dirstamp)
- src/s390/$(DEPDIR)/$(am__dirstamp):
- 	@$(MKDIR_P) src/s390/$(DEPDIR)
- 	@: > src/s390/$(DEPDIR)/$(am__dirstamp)
- src/s390/sysv.lo: src/s390/$(am__dirstamp) \
- 	src/s390/$(DEPDIR)/$(am__dirstamp)
-@@ -800,282 +1096,297 @@ src/pa/$(am__dirstamp):
- src/pa/$(DEPDIR)/$(am__dirstamp):
- 	@$(MKDIR_P) src/pa/$(DEPDIR)
- 	@: > src/pa/$(DEPDIR)/$(am__dirstamp)
- src/pa/linux.lo: src/pa/$(am__dirstamp) \
- 	src/pa/$(DEPDIR)/$(am__dirstamp)
- src/pa/ffi.lo: src/pa/$(am__dirstamp) src/pa/$(DEPDIR)/$(am__dirstamp)
- src/pa/hpux32.lo: src/pa/$(am__dirstamp) \
- 	src/pa/$(DEPDIR)/$(am__dirstamp)
--libffi.la: $(libffi_la_OBJECTS) $(libffi_la_DEPENDENCIES) 
--	$(libffi_la_LINK) -rpath $(libdir) $(libffi_la_OBJECTS) $(libffi_la_LIBADD) $(LIBS)
--libffi_convenience.la: $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_DEPENDENCIES) 
--	$(LINK)  $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_LIBADD) $(LIBS)
-+src/tile/$(am__dirstamp):
-+	@$(MKDIR_P) src/tile
-+	@: > src/tile/$(am__dirstamp)
-+src/tile/$(DEPDIR)/$(am__dirstamp):
-+	@$(MKDIR_P) src/tile/$(DEPDIR)
-+	@: > src/tile/$(DEPDIR)/$(am__dirstamp)
-+src/tile/tile.lo: src/tile/$(am__dirstamp) \
-+	src/tile/$(DEPDIR)/$(am__dirstamp)
-+src/tile/ffi.lo: src/tile/$(am__dirstamp) \
-+	src/tile/$(DEPDIR)/$(am__dirstamp)
-+src/xtensa/$(am__dirstamp):
-+	@$(MKDIR_P) src/xtensa
-+	@: > src/xtensa/$(am__dirstamp)
-+src/xtensa/$(DEPDIR)/$(am__dirstamp):
-+	@$(MKDIR_P) src/xtensa/$(DEPDIR)
-+	@: > src/xtensa/$(DEPDIR)/$(am__dirstamp)
-+src/xtensa/sysv.lo: src/xtensa/$(am__dirstamp) \
-+	src/xtensa/$(DEPDIR)/$(am__dirstamp)
-+src/xtensa/ffi.lo: src/xtensa/$(am__dirstamp) \
-+	src/xtensa/$(DEPDIR)/$(am__dirstamp)
-+src/metag/$(am__dirstamp):
-+	@$(MKDIR_P) src/metag
-+	@: > src/metag/$(am__dirstamp)
-+src/metag/$(DEPDIR)/$(am__dirstamp):
-+	@$(MKDIR_P) src/metag/$(DEPDIR)
-+	@: > src/metag/$(DEPDIR)/$(am__dirstamp)
-+src/metag/sysv.lo: src/metag/$(am__dirstamp) \
-+	src/metag/$(DEPDIR)/$(am__dirstamp)
-+src/metag/ffi.lo: src/metag/$(am__dirstamp) \
-+	src/metag/$(DEPDIR)/$(am__dirstamp)
-+src/vax/$(am__dirstamp):
-+	@$(MKDIR_P) src/vax
-+	@: > src/vax/$(am__dirstamp)
-+src/vax/$(DEPDIR)/$(am__dirstamp):
-+	@$(MKDIR_P) src/vax/$(DEPDIR)
-+	@: > src/vax/$(DEPDIR)/$(am__dirstamp)
-+src/vax/elfbsd.lo: src/vax/$(am__dirstamp) \
-+	src/vax/$(DEPDIR)/$(am__dirstamp)
-+src/vax/ffi.lo: src/vax/$(am__dirstamp) \
-+	src/vax/$(DEPDIR)/$(am__dirstamp)
-+
-+libffi.la: $(libffi_la_OBJECTS) $(libffi_la_DEPENDENCIES) $(EXTRA_libffi_la_DEPENDENCIES) 
-+	$(AM_V_CCLD)$(libffi_la_LINK) -rpath $(toolexeclibdir) $(libffi_la_OBJECTS) $(libffi_la_LIBADD) $(LIBS)
-+
-+libffi_convenience.la: $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_DEPENDENCIES) $(EXTRA_libffi_convenience_la_DEPENDENCIES) 
-+	$(AM_V_CCLD)$(LINK)  $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_LIBADD) $(LIBS)
- 
- mostlyclean-compile:
- 	-rm -f *.$(OBJEXT)
--	-rm -f src/alpha/ffi.$(OBJEXT)
--	-rm -f src/alpha/ffi.lo
--	-rm -f src/alpha/osf.$(OBJEXT)
--	-rm -f src/alpha/osf.lo
--	-rm -f src/arm/ffi.$(OBJEXT)
--	-rm -f src/arm/ffi.lo
--	-rm -f src/arm/sysv.$(OBJEXT)
--	-rm -f src/arm/sysv.lo
--	-rm -f src/avr32/ffi.$(OBJEXT)
--	-rm -f src/avr32/ffi.lo
--	-rm -f src/avr32/sysv.$(OBJEXT)
--	-rm -f src/avr32/sysv.lo
--	-rm -f src/closures.$(OBJEXT)
--	-rm -f src/closures.lo
--	-rm -f src/cris/ffi.$(OBJEXT)
--	-rm -f src/cris/ffi.lo
--	-rm -f src/cris/sysv.$(OBJEXT)
--	-rm -f src/cris/sysv.lo
--	-rm -f src/debug.$(OBJEXT)
--	-rm -f src/debug.lo
--	-rm -f src/frv/eabi.$(OBJEXT)
--	-rm -f src/frv/eabi.lo
--	-rm -f src/frv/ffi.$(OBJEXT)
--	-rm -f src/frv/ffi.lo
--	-rm -f src/ia64/ffi.$(OBJEXT)
--	-rm -f src/ia64/ffi.lo
--	-rm -f src/ia64/unix.$(OBJEXT)
--	-rm -f src/ia64/unix.lo
--	-rm -f src/java_raw_api.$(OBJEXT)
--	-rm -f src/java_raw_api.lo
--	-rm -f src/m32r/ffi.$(OBJEXT)
--	-rm -f src/m32r/ffi.lo
--	-rm -f src/m32r/sysv.$(OBJEXT)
--	-rm -f src/m32r/sysv.lo
--	-rm -f src/m68k/ffi.$(OBJEXT)
--	-rm -f src/m68k/ffi.lo
--	-rm -f src/m68k/sysv.$(OBJEXT)
--	-rm -f src/m68k/sysv.lo
--	-rm -f src/mips/ffi.$(OBJEXT)
--	-rm -f src/mips/ffi.lo
--	-rm -f src/mips/n32.$(OBJEXT)
--	-rm -f src/mips/n32.lo
--	-rm -f src/mips/o32.$(OBJEXT)
--	-rm -f src/mips/o32.lo
--	-rm -f src/moxie/eabi.$(OBJEXT)
--	-rm -f src/moxie/eabi.lo
--	-rm -f src/moxie/ffi.$(OBJEXT)
--	-rm -f src/moxie/ffi.lo
--	-rm -f src/pa/ffi.$(OBJEXT)
--	-rm -f src/pa/ffi.lo
--	-rm -f src/pa/hpux32.$(OBJEXT)
--	-rm -f src/pa/hpux32.lo
--	-rm -f src/pa/linux.$(OBJEXT)
--	-rm -f src/pa/linux.lo
--	-rm -f src/powerpc/aix.$(OBJEXT)
--	-rm -f src/powerpc/aix.lo
--	-rm -f src/powerpc/aix_closure.$(OBJEXT)
--	-rm -f src/powerpc/aix_closure.lo
--	-rm -f src/powerpc/darwin.$(OBJEXT)
--	-rm -f src/powerpc/darwin.lo
--	-rm -f src/powerpc/darwin_closure.$(OBJEXT)
--	-rm -f src/powerpc/darwin_closure.lo
--	-rm -f src/powerpc/ffi.$(OBJEXT)
--	-rm -f src/powerpc/ffi.lo
--	-rm -f src/powerpc/ffi_darwin.$(OBJEXT)
--	-rm -f src/powerpc/ffi_darwin.lo
--	-rm -f src/powerpc/linux64.$(OBJEXT)
--	-rm -f src/powerpc/linux64.lo
--	-rm -f src/powerpc/linux64_closure.$(OBJEXT)
--	-rm -f src/powerpc/linux64_closure.lo
--	-rm -f src/powerpc/ppc_closure.$(OBJEXT)
--	-rm -f src/powerpc/ppc_closure.lo
--	-rm -f src/powerpc/sysv.$(OBJEXT)
--	-rm -f src/powerpc/sysv.lo
--	-rm -f src/prep_cif.$(OBJEXT)
--	-rm -f src/prep_cif.lo
--	-rm -f src/raw_api.$(OBJEXT)
--	-rm -f src/raw_api.lo
--	-rm -f src/s390/ffi.$(OBJEXT)
--	-rm -f src/s390/ffi.lo
--	-rm -f src/s390/sysv.$(OBJEXT)
--	-rm -f src/s390/sysv.lo
--	-rm -f src/sh/ffi.$(OBJEXT)
--	-rm -f src/sh/ffi.lo
--	-rm -f src/sh/sysv.$(OBJEXT)
--	-rm -f src/sh/sysv.lo
--	-rm -f src/sh64/ffi.$(OBJEXT)
--	-rm -f src/sh64/ffi.lo
--	-rm -f src/sh64/sysv.$(OBJEXT)
--	-rm -f src/sh64/sysv.lo
--	-rm -f src/sparc/ffi.$(OBJEXT)
--	-rm -f src/sparc/ffi.lo
--	-rm -f src/sparc/v8.$(OBJEXT)
--	-rm -f src/sparc/v8.lo
--	-rm -f src/sparc/v9.$(OBJEXT)
--	-rm -f src/sparc/v9.lo
--	-rm -f src/types.$(OBJEXT)
--	-rm -f src/types.lo
--	-rm -f src/x86/darwin.$(OBJEXT)
--	-rm -f src/x86/darwin.lo
--	-rm -f src/x86/darwin64.$(OBJEXT)
--	-rm -f src/x86/darwin64.lo
--	-rm -f src/x86/ffi.$(OBJEXT)
--	-rm -f src/x86/ffi.lo
--	-rm -f src/x86/ffi64.$(OBJEXT)
--	-rm -f src/x86/ffi64.lo
--	-rm -f src/x86/freebsd.$(OBJEXT)
--	-rm -f src/x86/freebsd.lo
--	-rm -f src/x86/sysv.$(OBJEXT)
--	-rm -f src/x86/sysv.lo
--	-rm -f src/x86/unix64.$(OBJEXT)
--	-rm -f src/x86/unix64.lo
--	-rm -f src/x86/win32.$(OBJEXT)
--	-rm -f src/x86/win32.lo
--	-rm -f src/x86/win64.$(OBJEXT)
--	-rm -f src/x86/win64.lo
-+	-rm -f src/*.$(OBJEXT)
-+	-rm -f src/*.lo
-+	-rm -f src/aarch64/*.$(OBJEXT)
-+	-rm -f src/aarch64/*.lo
-+	-rm -f src/alpha/*.$(OBJEXT)
-+	-rm -f src/alpha/*.lo
-+	-rm -f src/arc/*.$(OBJEXT)
-+	-rm -f src/arc/*.lo
-+	-rm -f src/arm/*.$(OBJEXT)
-+	-rm -f src/arm/*.lo
-+	-rm -f src/avr32/*.$(OBJEXT)
-+	-rm -f src/avr32/*.lo
-+	-rm -f src/bfin/*.$(OBJEXT)
-+	-rm -f src/bfin/*.lo
-+	-rm -f src/cris/*.$(OBJEXT)
-+	-rm -f src/cris/*.lo
-+	-rm -f src/frv/*.$(OBJEXT)
-+	-rm -f src/frv/*.lo
-+	-rm -f src/ia64/*.$(OBJEXT)
-+	-rm -f src/ia64/*.lo
-+	-rm -f src/m32r/*.$(OBJEXT)
-+	-rm -f src/m32r/*.lo
-+	-rm -f src/m68k/*.$(OBJEXT)
-+	-rm -f src/m68k/*.lo
-+	-rm -f src/m88k/*.$(OBJEXT)
-+	-rm -f src/m88k/*.lo
-+	-rm -f src/metag/*.$(OBJEXT)
-+	-rm -f src/metag/*.lo
-+	-rm -f src/microblaze/*.$(OBJEXT)
-+	-rm -f src/microblaze/*.lo
-+	-rm -f src/mips/*.$(OBJEXT)
-+	-rm -f src/mips/*.lo
-+	-rm -f src/moxie/*.$(OBJEXT)
-+	-rm -f src/moxie/*.lo
-+	-rm -f src/nios2/*.$(OBJEXT)
-+	-rm -f src/nios2/*.lo
-+	-rm -f src/pa/*.$(OBJEXT)
-+	-rm -f src/pa/*.lo
-+	-rm -f src/powerpc/*.$(OBJEXT)
-+	-rm -f src/powerpc/*.lo
-+	-rm -f src/s390/*.$(OBJEXT)
-+	-rm -f src/s390/*.lo
-+	-rm -f src/sh/*.$(OBJEXT)
-+	-rm -f src/sh/*.lo
-+	-rm -f src/sh64/*.$(OBJEXT)
-+	-rm -f src/sh64/*.lo
-+	-rm -f src/sparc/*.$(OBJEXT)
-+	-rm -f src/sparc/*.lo
-+	-rm -f src/tile/*.$(OBJEXT)
-+	-rm -f src/tile/*.lo
-+	-rm -f src/vax/*.$(OBJEXT)
-+	-rm -f src/vax/*.lo
-+	-rm -f src/x86/*.$(OBJEXT)
-+	-rm -f src/x86/*.lo
-+	-rm -f src/xtensa/*.$(OBJEXT)
-+	-rm -f src/xtensa/*.lo
- 
- distclean-compile:
- 	-rm -f *.tab.c
- 
- @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/closures.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/debug.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/java_raw_api.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/prep_cif.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/raw_api.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/types.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/aarch64/$(DEPDIR)/ffi.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/aarch64/$(DEPDIR)/sysv.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/alpha/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/alpha/$(DEPDIR)/osf.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/arc/$(DEPDIR)/arcompact.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/arc/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/sysv.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/trampoline.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/avr32/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/avr32/$(DEPDIR)/sysv.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/bfin/$(DEPDIR)/ffi.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/bfin/$(DEPDIR)/sysv.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/cris/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/cris/$(DEPDIR)/sysv.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/frv/$(DEPDIR)/eabi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/frv/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/ia64/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/ia64/$(DEPDIR)/unix.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/m32r/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/m32r/$(DEPDIR)/sysv.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/m68k/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/m68k/$(DEPDIR)/sysv.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/m88k/$(DEPDIR)/ffi.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/m88k/$(DEPDIR)/obsd.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/metag/$(DEPDIR)/ffi.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/metag/$(DEPDIR)/sysv.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/microblaze/$(DEPDIR)/ffi.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/microblaze/$(DEPDIR)/sysv.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/n32.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/o32.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/eabi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/ffi.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/nios2/$(DEPDIR)/ffi.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/nios2/$(DEPDIR)/sysv.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/hpux32.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/linux.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/aix.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/aix_closure.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/darwin.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/darwin_closure.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi_darwin.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi_linux64.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ffi_sysv.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/linux64.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/linux64_closure.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ppc_closure.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/sysv.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/s390/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/s390/$(DEPDIR)/sysv.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/sh/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/sh/$(DEPDIR)/sysv.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/sh64/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/sh64/$(DEPDIR)/sysv.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/v8.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/sparc/$(DEPDIR)/v9.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/tile/$(DEPDIR)/ffi.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/tile/$(DEPDIR)/tile.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/vax/$(DEPDIR)/elfbsd.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/vax/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/darwin.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/darwin64.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi64.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/freebsd.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/sysv.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/unix64.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win32.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win64.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/xtensa/$(DEPDIR)/ffi.Plo@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@src/xtensa/$(DEPDIR)/sysv.Plo@am__quote@
- 
--%.o: %.S
--@am__fastdepCCAS_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-+.S.o:
-+@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
- @am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
- @am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
--@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCCAS_FALSE@	$(CPPASCOMPILE) -c -o $@ $<
-+@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $<
- 
--%.obj: %.S
--@am__fastdepCCAS_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-+.S.obj:
-+@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
- @am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
- @am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
--@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCCAS_FALSE@	$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-+@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
- 
--%.lo: %.S
--@am__fastdepCCAS_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-+.S.lo:
-+@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
- @am__fastdepCCAS_TRUE@	$(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
- @am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
--@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCCAS_FALSE@	$(LTCPPASCOMPILE) -c -o $@ $<
-+@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(LTCPPASCOMPILE) -c -o $@ $<
- 
--%.o: %.c
--@am__fastdepCC_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-+.c.o:
-+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
- @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
- @am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
--@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@	$(COMPILE) -c -o $@ $<
-+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
- 
--%.obj: %.c
--@am__fastdepCC_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-+.c.obj:
-+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
- @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
- @am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
--@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@	$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
- 
--%.lo: %.c
--@am__fastdepCC_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-+.c.lo:
-+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
- @am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
- @am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
--@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
- 
- mostlyclean-libtool:
- 	-rm -f *.lo
- 
- clean-libtool:
- 	-rm -rf .libs _libs
- 	-rm -rf src/.libs src/_libs
-+	-rm -rf src/aarch64/.libs src/aarch64/_libs
- 	-rm -rf src/alpha/.libs src/alpha/_libs
-+	-rm -rf src/arc/.libs src/arc/_libs
- 	-rm -rf src/arm/.libs src/arm/_libs
- 	-rm -rf src/avr32/.libs src/avr32/_libs
-+	-rm -rf src/bfin/.libs src/bfin/_libs
- 	-rm -rf src/cris/.libs src/cris/_libs
- 	-rm -rf src/frv/.libs src/frv/_libs
- 	-rm -rf src/ia64/.libs src/ia64/_libs
- 	-rm -rf src/m32r/.libs src/m32r/_libs
- 	-rm -rf src/m68k/.libs src/m68k/_libs
-+	-rm -rf src/m88k/.libs src/m88k/_libs
-+	-rm -rf src/metag/.libs src/metag/_libs
-+	-rm -rf src/microblaze/.libs src/microblaze/_libs
- 	-rm -rf src/mips/.libs src/mips/_libs
- 	-rm -rf src/moxie/.libs src/moxie/_libs
-+	-rm -rf src/nios2/.libs src/nios2/_libs
- 	-rm -rf src/pa/.libs src/pa/_libs
- 	-rm -rf src/powerpc/.libs src/powerpc/_libs
- 	-rm -rf src/s390/.libs src/s390/_libs
- 	-rm -rf src/sh/.libs src/sh/_libs
- 	-rm -rf src/sh64/.libs src/sh64/_libs
- 	-rm -rf src/sparc/.libs src/sparc/_libs
-+	-rm -rf src/tile/.libs src/tile/_libs
-+	-rm -rf src/vax/.libs src/vax/_libs
- 	-rm -rf src/x86/.libs src/x86/_libs
-+	-rm -rf src/xtensa/.libs src/xtensa/_libs
- 
- distclean-libtool:
- 	-rm -f libtool config.lt
- doc/$(am__dirstamp):
- 	@$(MKDIR_P) doc
- 	@: > doc/$(am__dirstamp)
- 
- $(srcdir)/doc/libffi.info: doc/libffi.texi $(srcdir)/doc/version.texi
--	restore=: && backupdir="$(am__leading_dot)am$$$$" && \
-+	$(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \
- 	am__cwd=`pwd` && $(am__cd) $(srcdir) && \
- 	rm -rf $$backupdir && mkdir $$backupdir && \
- 	if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
- 	  for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
- 	    if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
- 	  done; \
- 	else :; fi && \
- 	cd "$$am__cwd"; \
-@@ -1087,28 +1398,30 @@ doc/$(am__dirstamp):
- 	else \
- 	  rc=$$?; \
- 	  $(am__cd) $(srcdir) && \
- 	  $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
- 	fi; \
- 	rm -rf $$backupdir; exit $$rc
- 
- doc/libffi.dvi: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
--	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
-+	$(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
- 	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
--	$(TEXI2DVI) -o $@ `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi
-+	$(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \
-+	`test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi
- 
- doc/libffi.pdf: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
--	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
-+	$(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
- 	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
--	$(TEXI2PDF) -o $@ `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi
-+	$(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \
-+	`test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi
- 
- doc/libffi.html: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
--	rm -rf $(@:.html=.htp)
--	if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
-+	$(AM_V_MAKEINFO)rm -rf $(@:.html=.htp)
-+	$(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
- 	 -o $(@:.html=.htp) `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi; \
- 	then \
- 	  rm -rf $@; \
- 	  if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
- 	    mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
- 	else \
- 	  if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
- 	    rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
-@@ -1129,19 +1442,19 @@ doc/libffi.html: doc/libffi.texi $(srcdi
- 	-@rm -f vti.tmp
- 	@cp $(srcdir)/doc/version.texi $@
- 
- mostlyclean-vti:
- 	-rm -f vti.tmp
- 
- maintainer-clean-vti:
- @MAINTAINER_MODE_TRUE@	-rm -f $(srcdir)/doc/stamp-vti $(srcdir)/doc/version.texi
--%.ps: %.dvi
--	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
--	$(DVIPS) -o $@ $<
-+.dvi.ps:
-+	$(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
-+	$(DVIPS) $(AM_V_texinfo) -o $@ $<
- 
- uninstall-dvi-am:
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
- 	for p in $$list; do \
- 	  $(am__strip_dir) \
- 	  echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
- 	  rm -f "$(DESTDIR)$(dvidir)/$$f"; \
-@@ -1153,19 +1466,17 @@ uninstall-html-am:
- 	for p in $$list; do \
- 	  $(am__strip_dir) \
- 	  echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
- 	  rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
- 	done
- 
- uninstall-info-am:
- 	@$(PRE_UNINSTALL)
--	@if test -d '$(DESTDIR)$(infodir)' && \
--	    (install-info --version && \
--	     install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
-+	@if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \
- 	  list='$(INFO_DEPS)'; \
- 	  for file in $$list; do \
- 	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
- 	    echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
- 	    if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
- 	    then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
- 	  done; \
- 	else :; fi
-@@ -1212,184 +1523,155 @@ dist-info: $(INFO_DEPS)
- 	      relfile=`expr "$$file" : "$$d/\(.*\)"`; \
- 	      test -f "$(distdir)/$$relfile" || \
- 		cp -p $$file "$(distdir)/$$relfile"; \
- 	    else :; fi; \
- 	  done; \
- 	done
- 
- mostlyclean-aminfo:
--	-rm -rf libffi.aux libffi.cp libffi.cps libffi.fn libffi.ky libffi.log \
--	  libffi.pg libffi.tmp libffi.toc libffi.tp libffi.vr
-+	-rm -rf doc/libffi.t2d doc/libffi.t2p
- 
- clean-aminfo:
- 	-test -z "doc/libffi.dvi doc/libffi.pdf doc/libffi.ps doc/libffi.html" \
- 	|| rm -rf doc/libffi.dvi doc/libffi.pdf doc/libffi.ps doc/libffi.html
- 
- maintainer-clean-aminfo:
- 	@list='$(INFO_DEPS)'; for i in $$list; do \
- 	  i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
- 	  echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
- 	  rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
- 	done
- install-pkgconfigDATA: $(pkgconfig_DATA)
- 	@$(NORMAL_INSTALL)
--	test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
- 	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
-+	if test -n "$$list"; then \
-+	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
-+	  $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
-+	fi; \
- 	for p in $$list; do \
- 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- 	  echo "$$d$$p"; \
- 	done | $(am__base_list) | \
- 	while read files; do \
- 	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
- 	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
- 	done
- 
- uninstall-pkgconfigDATA:
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
- 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
--	test -n "$$files" || exit 0; \
--	echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
--	cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
-+	dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
- 
- # This directory's subdirectories are mostly independent; you can cd
--# into them and run `make' without going through this Makefile.
--# To change the values of `make' variables: instead of editing Makefiles,
--# (1) if the variable is set in `config.status', edit `config.status'
--#     (which will cause the Makefiles to be regenerated when you run `make');
--# (2) otherwise, pass the desired values on the `make' command line.
--$(RECURSIVE_TARGETS):
--	@fail= failcom='exit 1'; \
--	for f in x $$MAKEFLAGS; do \
--	  case $$f in \
--	    *=* | --[!k]*);; \
--	    *k*) failcom='fail=yes';; \
--	  esac; \
--	done; \
-+# into them and run 'make' without going through this Makefile.
-+# To change the values of 'make' variables: instead of editing Makefiles,
-+# (1) if the variable is set in 'config.status', edit 'config.status'
-+#     (which will cause the Makefiles to be regenerated when you run 'make');
-+# (2) otherwise, pass the desired values on the 'make' command line.
-+$(am__recursive_targets):
-+	@fail=; \
-+	if $(am__make_keepgoing); then \
-+	  failcom='fail=yes'; \
-+	else \
-+	  failcom='exit 1'; \
-+	fi; \
- 	dot_seen=no; \
- 	target=`echo $@ | sed s/-recursive//`; \
--	list='$(SUBDIRS)'; for subdir in $$list; do \
-+	case "$@" in \
-+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-+	  *) list='$(SUBDIRS)' ;; \
-+	esac; \
-+	for subdir in $$list; do \
- 	  echo "Making $$target in $$subdir"; \
- 	  if test "$$subdir" = "."; then \
- 	    dot_seen=yes; \
- 	    local_target="$$target-am"; \
- 	  else \
- 	    local_target="$$target"; \
- 	  fi; \
- 	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- 	  || eval $$failcom; \
- 	done; \
- 	if test "$$dot_seen" = "no"; then \
- 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- 	fi; test -z "$$fail"
- 
--$(RECURSIVE_CLEAN_TARGETS):
--	@fail= failcom='exit 1'; \
--	for f in x $$MAKEFLAGS; do \
--	  case $$f in \
--	    *=* | --[!k]*);; \
--	    *k*) failcom='fail=yes';; \
--	  esac; \
--	done; \
--	dot_seen=no; \
--	case "$@" in \
--	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
--	  *) list='$(SUBDIRS)' ;; \
--	esac; \
--	rev=''; for subdir in $$list; do \
--	  if test "$$subdir" = "."; then :; else \
--	    rev="$$subdir $$rev"; \
--	  fi; \
--	done; \
--	rev="$$rev ."; \
--	target=`echo $@ | sed s/-recursive//`; \
--	for subdir in $$rev; do \
--	  echo "Making $$target in $$subdir"; \
--	  if test "$$subdir" = "."; then \
--	    local_target="$$target-am"; \
--	  else \
--	    local_target="$$target"; \
--	  fi; \
--	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
--	  || eval $$failcom; \
--	done && test -z "$$fail"
--tags-recursive:
--	list='$(SUBDIRS)'; for subdir in $$list; do \
--	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
--	done
--ctags-recursive:
--	list='$(SUBDIRS)'; for subdir in $$list; do \
--	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
--	done
-+ID: $(am__tagged_files)
-+	$(am__define_uniq_tagged_files); mkid -fID $$unique
-+tags: tags-recursive
-+TAGS: tags
- 
--ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
--	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
--	unique=`for i in $$list; do \
--	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
--	  done | \
--	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
--	      END { if (nonempty) { for (i in files) print i; }; }'`; \
--	mkid -fID $$unique
--tags: TAGS
--
--TAGS: tags-recursive $(HEADERS) $(SOURCES) fficonfig.h.in $(TAGS_DEPENDENCIES) \
--		$(TAGS_FILES) $(LISP)
-+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- 	set x; \
- 	here=`pwd`; \
- 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- 	  include_option=--etags-include; \
- 	  empty_fix=.; \
- 	else \
- 	  include_option=--include; \
- 	  empty_fix=; \
- 	fi; \
- 	list='$(SUBDIRS)'; for subdir in $$list; do \
- 	  if test "$$subdir" = .; then :; else \
- 	    test ! -f $$subdir/TAGS || \
- 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
- 	  fi; \
- 	done; \
--	list='$(SOURCES) $(HEADERS) fficonfig.h.in $(LISP) $(TAGS_FILES)'; \
--	unique=`for i in $$list; do \
--	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
--	  done | \
--	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
--	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-+	$(am__define_uniq_tagged_files); \
- 	shift; \
- 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- 	  test -n "$$unique" || unique=$$empty_fix; \
- 	  if test $$# -gt 0; then \
- 	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- 	      "$$@" $$unique; \
- 	  else \
- 	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- 	      $$unique; \
- 	  fi; \
- 	fi
--ctags: CTAGS
--CTAGS: ctags-recursive $(HEADERS) $(SOURCES) fficonfig.h.in $(TAGS_DEPENDENCIES) \
--		$(TAGS_FILES) $(LISP)
--	list='$(SOURCES) $(HEADERS) fficonfig.h.in $(LISP) $(TAGS_FILES)'; \
--	unique=`for i in $$list; do \
--	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
--	  done | \
--	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
--	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-+ctags: ctags-recursive
-+
-+CTAGS: ctags
-+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-+	$(am__define_uniq_tagged_files); \
- 	test -z "$(CTAGS_ARGS)$$unique" \
- 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- 	     $$unique
- 
- GTAGS:
- 	here=`$(am__cd) $(top_builddir) && pwd` \
- 	  && $(am__cd) $(top_srcdir) \
- 	  && gtags -i $(GTAGS_ARGS) "$$here"
-+cscope: cscope.files
-+	test ! -s cscope.files \
-+	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
-+clean-cscope:
-+	-rm -f cscope.files
-+cscope.files: clean-cscope cscopelist
-+cscopelist: cscopelist-recursive
-+
-+cscopelist-am: $(am__tagged_files)
-+	list='$(am__tagged_files)'; \
-+	case "$(srcdir)" in \
-+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-+	  *) sdir=$(subdir)/$(srcdir) ;; \
-+	esac; \
-+	for i in $$list; do \
-+	  if test -f "$$i"; then \
-+	    echo "$(subdir)/$$i"; \
-+	  else \
-+	    echo "$$sdir/$$i"; \
-+	  fi; \
-+	done >> $(top_builddir)/cscope.files
- 
- distclean-tags:
- 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-+	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
- 
- distdir: $(DISTFILES)
- 	$(am__remove_distdir)
- 	test -d "$(distdir)" || mkdir "$(distdir)"
- 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- 	list='$(DISTFILES)'; \
- 	  dist_files=`for file in $$list; do echo $$file; done | \
-@@ -1415,23 +1697,20 @@ distdir: $(DISTFILES)
- 	  else \
- 	    test -f "$(distdir)/$$file" \
- 	    || cp -p $$d/$$file "$(distdir)/$$file" \
- 	    || exit 1; \
- 	  fi; \
- 	done
- 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- 	  if test "$$subdir" = .; then :; else \
--	    test -d "$(distdir)/$$subdir" \
--	    || $(MKDIR_P) "$(distdir)/$$subdir" \
--	    || exit 1; \
--	  fi; \
--	done
--	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
--	  if test "$$subdir" = .; then :; else \
-+	    $(am__make_dryrun) \
-+	      || test -d "$(distdir)/$$subdir" \
-+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
-+	      || exit 1; \
- 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
- 	    $(am__relativize); \
- 	    new_distdir=$$reldir; \
- 	    dir1=$$subdir; dir2="$(top_distdir)"; \
- 	    $(am__relativize); \
- 	    new_top_distdir=$$reldir; \
- 	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
- 	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-@@ -1443,87 +1722,88 @@ distdir: $(DISTFILES)
- 		am__skip_length_check=: \
- 		am__skip_mode_fix=: \
- 	        distdir) \
- 	      || exit 1; \
- 	  fi; \
- 	done
- 	$(MAKE) $(AM_MAKEFLAGS) \
- 	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
--	  dist-info
-+	  dist-info dist-hook
- 	-test -n "$(am__skip_mode_fix)" \
- 	|| find "$(distdir)" -type d ! -perm -755 \
- 		-exec chmod u+rwx,go+rx {} \; -o \
- 	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
- 	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
- 	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
- 	|| chmod -R a+r "$(distdir)"
- dist-gzip: distdir
- 	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
--	$(am__remove_distdir)
-+	$(am__post_remove_distdir)
- 
- dist-bzip2: distdir
--	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
--	$(am__remove_distdir)
-+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
-+	$(am__post_remove_distdir)
- 
--dist-lzma: distdir
--	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
--	$(am__remove_distdir)
-+dist-lzip: distdir
-+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
-+	$(am__post_remove_distdir)
- 
- dist-xz: distdir
--	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
--	$(am__remove_distdir)
-+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
-+	$(am__post_remove_distdir)
- 
- dist-tarZ: distdir
- 	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
--	$(am__remove_distdir)
-+	$(am__post_remove_distdir)
- 
- dist-shar: distdir
- 	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
--	$(am__remove_distdir)
-+	$(am__post_remove_distdir)
- 
- dist-zip: distdir
- 	-rm -f $(distdir).zip
- 	zip -rq $(distdir).zip $(distdir)
--	$(am__remove_distdir)
-+	$(am__post_remove_distdir)
- 
--dist dist-all: distdir
--	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
--	$(am__remove_distdir)
-+dist dist-all:
-+	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
-+	$(am__post_remove_distdir)
- 
- # This target untars the dist file and tries a VPATH configuration.  Then
- # it guarantees that the distribution is self-contained by making another
- # tarfile.
- distcheck: dist
- 	case '$(DIST_ARCHIVES)' in \
- 	*.tar.gz*) \
- 	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
- 	*.tar.bz2*) \
- 	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
--	*.tar.lzma*) \
--	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
-+	*.tar.lz*) \
-+	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
- 	*.tar.xz*) \
- 	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
- 	*.tar.Z*) \
- 	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
- 	*.shar.gz*) \
- 	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
- 	*.zip*) \
- 	  unzip $(distdir).zip ;;\
- 	esac
--	chmod -R a-w $(distdir); chmod a+w $(distdir)
--	mkdir $(distdir)/_build
--	mkdir $(distdir)/_inst
-+	chmod -R a-w $(distdir)
-+	chmod u+w $(distdir)
-+	mkdir $(distdir)/_build $(distdir)/_inst
- 	chmod a-w $(distdir)
- 	test -d $(distdir)/_build || exit 0; \
- 	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
- 	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
- 	  && am__cwd=`pwd` \
- 	  && $(am__cd) $(distdir)/_build \
- 	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
-+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
- 	    $(DISTCHECK_CONFIGURE_FLAGS) \
- 	  && $(MAKE) $(AM_MAKEFLAGS) \
- 	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
- 	  && $(MAKE) $(AM_MAKEFLAGS) check \
- 	  && $(MAKE) $(AM_MAKEFLAGS) install \
- 	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
- 	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
- 	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
-@@ -1537,23 +1817,31 @@ distcheck: dist
- 	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
- 	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
- 	  && rm -rf "$$dc_destdir" \
- 	  && $(MAKE) $(AM_MAKEFLAGS) dist \
- 	  && rm -rf $(DIST_ARCHIVES) \
- 	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
- 	  && cd "$$am__cwd" \
- 	  || exit 1
--	$(am__remove_distdir)
-+	$(am__post_remove_distdir)
- 	@(echo "$(distdir) archives ready for distribution: "; \
- 	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
- 	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
- distuninstallcheck:
--	@$(am__cd) '$(distuninstallcheck_dir)' \
--	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
-+	@test -n '$(distuninstallcheck_dir)' || { \
-+	  echo 'ERROR: trying to run $@ with an empty' \
-+	       '$$(distuninstallcheck_dir)' >&2; \
-+	  exit 1; \
-+	}; \
-+	$(am__cd) '$(distuninstallcheck_dir)' || { \
-+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
-+	  exit 1; \
-+	}; \
-+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
- 	   || { echo "ERROR: files left after uninstall:" ; \
- 	        if test -n "$(DESTDIR)"; then \
- 	          echo "  (check DESTDIR support)"; \
- 	        fi ; \
- 	        $(distuninstallcheck_listfiles) ; \
- 	        exit 1; } >&2
- distcleancheck: distclean
- 	@if test '$(srcdir)' = . ; then \
-@@ -1564,89 +1852,115 @@ distcleancheck: distclean
- 	  || { echo "ERROR: files left in build directory after distclean:" ; \
- 	       $(distcleancheck_listfiles) ; \
- 	       exit 1; } >&2
- check-am: all-am
- check: check-recursive
- all-am: Makefile $(INFO_DEPS) $(LTLIBRARIES) $(DATA) fficonfig.h
- installdirs: installdirs-recursive
- installdirs-am:
--	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(pkgconfigdir)"; do \
-+	for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(pkgconfigdir)"; do \
- 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- 	done
- install: install-recursive
- install-exec: install-exec-recursive
- install-data: install-data-recursive
- uninstall: uninstall-recursive
- 
- install-am: all-am
- 	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
- 
- installcheck: installcheck-recursive
- install-strip:
--	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
--	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
--	  `test -z '$(STRIP)' || \
--	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-+	if test -z '$(STRIP)'; then \
-+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+	      install; \
-+	else \
-+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-+	fi
- mostlyclean-generic:
- 
- clean-generic:
- 
- distclean-generic:
- 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
- 	-rm -f doc/$(am__dirstamp)
- 	-rm -f src/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/$(am__dirstamp)
-+	-rm -f src/aarch64/$(DEPDIR)/$(am__dirstamp)
-+	-rm -f src/aarch64/$(am__dirstamp)
- 	-rm -f src/alpha/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/alpha/$(am__dirstamp)
-+	-rm -f src/arc/$(DEPDIR)/$(am__dirstamp)
-+	-rm -f src/arc/$(am__dirstamp)
- 	-rm -f src/arm/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/arm/$(am__dirstamp)
- 	-rm -f src/avr32/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/avr32/$(am__dirstamp)
-+	-rm -f src/bfin/$(DEPDIR)/$(am__dirstamp)
-+	-rm -f src/bfin/$(am__dirstamp)
- 	-rm -f src/cris/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/cris/$(am__dirstamp)
- 	-rm -f src/frv/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/frv/$(am__dirstamp)
- 	-rm -f src/ia64/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/ia64/$(am__dirstamp)
- 	-rm -f src/m32r/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/m32r/$(am__dirstamp)
- 	-rm -f src/m68k/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/m68k/$(am__dirstamp)
-+	-rm -f src/m88k/$(DEPDIR)/$(am__dirstamp)
-+	-rm -f src/m88k/$(am__dirstamp)
-+	-rm -f src/metag/$(DEPDIR)/$(am__dirstamp)
-+	-rm -f src/metag/$(am__dirstamp)
-+	-rm -f src/microblaze/$(DEPDIR)/$(am__dirstamp)
-+	-rm -f src/microblaze/$(am__dirstamp)
- 	-rm -f src/mips/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/mips/$(am__dirstamp)
- 	-rm -f src/moxie/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/moxie/$(am__dirstamp)
-+	-rm -f src/nios2/$(DEPDIR)/$(am__dirstamp)
-+	-rm -f src/nios2/$(am__dirstamp)
- 	-rm -f src/pa/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/pa/$(am__dirstamp)
- 	-rm -f src/powerpc/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/powerpc/$(am__dirstamp)
- 	-rm -f src/s390/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/s390/$(am__dirstamp)
- 	-rm -f src/sh/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/sh/$(am__dirstamp)
- 	-rm -f src/sh64/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/sh64/$(am__dirstamp)
- 	-rm -f src/sparc/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/sparc/$(am__dirstamp)
-+	-rm -f src/tile/$(DEPDIR)/$(am__dirstamp)
-+	-rm -f src/tile/$(am__dirstamp)
-+	-rm -f src/vax/$(DEPDIR)/$(am__dirstamp)
-+	-rm -f src/vax/$(am__dirstamp)
- 	-rm -f src/x86/$(DEPDIR)/$(am__dirstamp)
- 	-rm -f src/x86/$(am__dirstamp)
-+	-rm -f src/xtensa/$(DEPDIR)/$(am__dirstamp)
-+	-rm -f src/xtensa/$(am__dirstamp)
- 
- maintainer-clean-generic:
- 	@echo "This command is intended for maintainers to use"
- 	@echo "it deletes files that may require special tools to rebuild."
- clean: clean-recursive
- 
--clean-am: clean-aminfo clean-generic clean-libLTLIBRARIES \
--	clean-libtool clean-noinstLTLIBRARIES mostlyclean-am
-+clean-am: clean-aminfo clean-generic clean-libtool \
-+	clean-noinstLTLIBRARIES clean-toolexeclibLTLIBRARIES \
-+	mostlyclean-am
- 
- distclean: distclean-recursive
- 	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
--	-rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR)
-+	-rm -rf src/$(DEPDIR) src/aarch64/$(DEPDIR) src/alpha/$(DEPDIR) src/arc/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/bfin/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/m88k/$(DEPDIR) src/metag/$(DEPDIR) src/microblaze/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/nios2/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/tile/$(DEPDIR) src/vax/$(DEPDIR) src/x86/$(DEPDIR) src/xtensa/$(DEPDIR)
- 	-rm -f Makefile
- distclean-am: clean-am distclean-compile distclean-generic \
- 	distclean-hdr distclean-libtool distclean-tags
- 
- dvi: dvi-recursive
- 
- dvi-am: $(DVIS)
- 
-@@ -1659,56 +1973,68 @@ info: info-recursive
- info-am: $(INFO_DEPS)
- 
- install-data-am: install-info-am install-pkgconfigDATA
- 
- install-dvi: install-dvi-recursive
- 
- install-dvi-am: $(DVIS)
- 	@$(NORMAL_INSTALL)
--	test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
- 	@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
-+	if test -n "$$list"; then \
-+	  echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \
-+	  $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \
-+	fi; \
- 	for p in $$list; do \
- 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- 	  echo "$$d$$p"; \
- 	done | $(am__base_list) | \
- 	while read files; do \
- 	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
- 	  $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
- 	done
--install-exec-am: install-libLTLIBRARIES
-+install-exec-am: install-toolexeclibLTLIBRARIES
-+
-+install-html: install-html-recursive
- 
- install-html-am: $(HTMLS)
- 	@$(NORMAL_INSTALL)
--	test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
- 	@list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
-+	if test -n "$$list"; then \
-+	  echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
-+	  $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
-+	fi; \
- 	for p in $$list; do \
- 	  if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
- 	  $(am__strip_dir) \
--	  if test -d "$$d$$p"; then \
-+	  d2=$$d$$p; \
-+	  if test -d "$$d2"; then \
- 	    echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
- 	    $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
--	    echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
--	    $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
-+	    echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \
-+	    $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
- 	  else \
--	    list2="$$list2 $$d$$p"; \
-+	    list2="$$list2 $$d2"; \
- 	  fi; \
- 	done; \
- 	test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
- 	while read files; do \
- 	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
- 	  $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
- 	done; }
- install-info: install-info-recursive
- 
- install-info-am: $(INFO_DEPS)
- 	@$(NORMAL_INSTALL)
--	test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
- 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- 	list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
-+	if test -n "$$list"; then \
-+	  echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \
-+	  $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \
-+	fi; \
- 	for file in $$list; do \
- 	  case $$file in \
- 	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- 	  esac; \
- 	  if test -f $$file; then d=.; else d=$(srcdir); fi; \
- 	  file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
- 	  for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
- 	               $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
-@@ -1716,57 +2042,64 @@ install-info-am: $(INFO_DEPS)
- 	      echo "$$ifile"; \
- 	    else : ; fi; \
- 	  done; \
- 	done | $(am__base_list) | \
- 	while read files; do \
- 	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
- 	  $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
- 	@$(POST_INSTALL)
--	@if (install-info --version && \
--	     install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
-+	@if $(am__can_run_installinfo); then \
- 	  list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
- 	  for file in $$list; do \
- 	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
- 	    echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
- 	    install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
- 	  done; \
- 	else : ; fi
- install-man:
- 
-+install-pdf: install-pdf-recursive
-+
- install-pdf-am: $(PDFS)
- 	@$(NORMAL_INSTALL)
--	test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
- 	@list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
-+	if test -n "$$list"; then \
-+	  echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \
-+	  $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \
-+	fi; \
- 	for p in $$list; do \
- 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- 	  echo "$$d$$p"; \
- 	done | $(am__base_list) | \
- 	while read files; do \
- 	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
- 	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
- install-ps: install-ps-recursive
- 
- install-ps-am: $(PSS)
- 	@$(NORMAL_INSTALL)
--	test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
- 	@list='$(PSS)'; test -n "$(psdir)" || list=; \
-+	if test -n "$$list"; then \
-+	  echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \
-+	  $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \
-+	fi; \
- 	for p in $$list; do \
- 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- 	  echo "$$d$$p"; \
- 	done | $(am__base_list) | \
- 	while read files; do \
- 	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
- 	  $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
- installcheck-am:
- 
- maintainer-clean: maintainer-clean-recursive
- 	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
- 	-rm -rf $(top_srcdir)/autom4te.cache
--	-rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR)
-+	-rm -rf src/$(DEPDIR) src/aarch64/$(DEPDIR) src/alpha/$(DEPDIR) src/arc/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/bfin/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/m88k/$(DEPDIR) src/metag/$(DEPDIR) src/microblaze/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/nios2/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/tile/$(DEPDIR) src/vax/$(DEPDIR) src/x86/$(DEPDIR) src/xtensa/$(DEPDIR)
- 	-rm -f Makefile
- maintainer-clean-am: distclean-am maintainer-clean-aminfo \
- 	maintainer-clean-generic maintainer-clean-vti
- 
- mostlyclean: mostlyclean-recursive
- 
- mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \
- 	mostlyclean-generic mostlyclean-libtool mostlyclean-vti
-@@ -1775,46 +2108,44 @@ pdf: pdf-recursive
- 
- pdf-am: $(PDFS)
- 
- ps: ps-recursive
- 
- ps-am: $(PSS)
- 
- uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
--	uninstall-libLTLIBRARIES uninstall-pdf-am \
--	uninstall-pkgconfigDATA uninstall-ps-am
-+	uninstall-pdf-am uninstall-pkgconfigDATA uninstall-ps-am \
-+	uninstall-toolexeclibLTLIBRARIES
- 
--.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
--	ctags-recursive install-am install-strip tags-recursive
-+.MAKE: $(am__recursive_targets) all install-am install-strip
- 
--.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
--	all all-am am--refresh check check-am clean clean-aminfo \
--	clean-generic clean-libLTLIBRARIES clean-libtool \
--	clean-noinstLTLIBRARIES ctags ctags-recursive dist dist-all \
--	dist-bzip2 dist-gzip dist-info dist-lzma dist-shar dist-tarZ \
--	dist-xz dist-zip distcheck distclean distclean-compile \
--	distclean-generic distclean-hdr distclean-libtool \
--	distclean-tags distcleancheck distdir distuninstallcheck dvi \
--	dvi-am html html-am info info-am install install-am \
--	install-data install-data-am install-dvi install-dvi-am \
--	install-exec install-exec-am install-html install-html-am \
--	install-info install-info-am install-libLTLIBRARIES \
-+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
-+	am--refresh check check-am clean clean-aminfo clean-cscope \
-+	clean-generic clean-libtool clean-noinstLTLIBRARIES \
-+	clean-toolexeclibLTLIBRARIES cscope cscopelist-am ctags \
-+	ctags-am dist dist-all dist-bzip2 dist-gzip dist-hook \
-+	dist-info dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
-+	distcheck distclean distclean-compile distclean-generic \
-+	distclean-hdr distclean-libtool distclean-tags distcleancheck \
-+	distdir distuninstallcheck dvi dvi-am html html-am info \
-+	info-am install install-am install-data install-data-am \
-+	install-dvi install-dvi-am install-exec install-exec-am \
-+	install-html install-html-am install-info install-info-am \
- 	install-man install-pdf install-pdf-am install-pkgconfigDATA \
--	install-ps install-ps-am install-strip installcheck \
--	installcheck-am installdirs installdirs-am maintainer-clean \
-+	install-ps install-ps-am install-strip \
-+	install-toolexeclibLTLIBRARIES installcheck installcheck-am \
-+	installdirs installdirs-am maintainer-clean \
- 	maintainer-clean-aminfo maintainer-clean-generic \
- 	maintainer-clean-vti mostlyclean mostlyclean-aminfo \
- 	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
--	mostlyclean-vti pdf pdf-am ps ps-am tags tags-recursive \
--	uninstall uninstall-am uninstall-dvi-am uninstall-html-am \
--	uninstall-info-am uninstall-libLTLIBRARIES uninstall-pdf-am \
--	uninstall-pkgconfigDATA uninstall-ps-am
-+	mostlyclean-vti pdf pdf-am ps ps-am tags tags-am uninstall \
-+	uninstall-am uninstall-dvi-am uninstall-html-am \
-+	uninstall-info-am uninstall-pdf-am uninstall-pkgconfigDATA \
-+	uninstall-ps-am uninstall-toolexeclibLTLIBRARIES
- 
- 
--# No install-html or install-pdf support in automake yet
--.PHONY: install-html install-pdf
--install-html:
--install-pdf:
-+dist-hook:
-+	if [ -d $(top_srcdir)/.git ] ; then git -C $(top_srcdir) log --no-decorate ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog
- 
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
-diff --git a/js/src/ctypes/libffi/README b/js/src/ctypes/libffi/README
---- a/js/src/ctypes/libffi/README
-+++ b/js/src/ctypes/libffi/README
-@@ -1,12 +1,12 @@
- Status
- ======
- 
--libffi-3.0.10 was released on XXXXXXXXXX, 2010. Check the libffi web
-+libffi-3.1 was released on TBD.  Check the libffi web
- page for updates: <URL:http://sourceware.org/libffi/>.
- 
- 
- What is libffi?
- ===============
- 
- Compilers for high level languages generate code that follow certain
- conventions. These conventions are necessary, in part, for separate
-@@ -38,70 +38,102 @@ between the two languages.
- 
- Supported Platforms
- ===================
- 
- Libffi has been ported to many different platforms.
- For specific configuration details and testing status, please
- refer to the wiki page here:
- 
-- http://www.moxielogic.org/wiki/index.php?title=Libffi_3.0.10
-+ http://www.moxielogic.org/wiki/index.php?title=Libffi_3.1
- 
- At the time of release, the following basic configurations have been
- tested:
- 
--|--------------+------------------|
--| Architecture | Operating System |
--|--------------+------------------|
--| Alpha        | Linux            |
--| Alpha        | Tru64            |
--| ARM          | Linux            |
--| AVR32        | Linux            |
--| HPPA         | HPUX             |
--| IA-64        | Linux            |
--| MIPS         | IRIX             |
--| MIPS         | Linux            |
--| MIPS64       | Linux            |
--| PowerPC      | Linux            |
--| PowerPC      | Mac OSX          |
--| PowerPC      | FreeBSD          |
--| PowerPC64    | Linux            |
--| S390         | Linux            |
--| S390X        | Linux            |
--| SPARC        | Linux            |
--| SPARC        | Solaris          |
--| SPARC64      | Linux            |
--| SPARC64      | FreeBSD          |
--| X86          | FreeBSD          |
--| X86          | kFreeBSD         |
--| X86          | Linux            |
--| X86          | Mac OSX          |
--| X86          | OpenBSD          |
--| X86          | OS/2             |
--| X86          | Solaris          |
--| X86          | Windows/Cygwin   |
--| X86          | Windows/MingW    |
--| X86-64       | FreeBSD          |
--| X86-64       | Linux            |
--| X86-64       | OpenBSD          |
--| X86-64       | Windows/MingW    |
--|--------------+------------------|
-+|-----------------+------------------+-------------------------|
-+| Architecture    | Operating System | Compiler                |
-+|-----------------+------------------+-------------------------|
-+| AArch64 (ARM64) | iOS              | Clang                   |
-+| AArch64         | Linux            | GCC                     |
-+| Alpha           | Linux            | GCC                     |
-+| Alpha           | Tru64            | GCC                     |
-+| ARC             | Linux            | GCC                     |
-+| ARM             | Linux            | GCC                     |
-+| ARM             | iOS              | GCC                     |
-+| AVR32           | Linux            | GCC                     |
-+| Blackfin        | uClinux          | GCC                     |
-+| HPPA            | HPUX             | GCC                     |
-+| IA-64           | Linux            | GCC                     |
-+| M68K            | FreeMiNT         | GCC                     |
-+| M68K            | Linux            | GCC                     |
-+| M68K            | RTEMS            | GCC                     |
-+| M88K            | OpenBSD/mvme88k  | GCC                     |
-+| Meta            | Linux            | GCC                     |
-+| MicroBlaze      | Linux            | GCC                     |
-+| MIPS            | IRIX             | GCC                     |
-+| MIPS            | Linux            | GCC                     |
-+| MIPS            | RTEMS            | GCC                     |
-+| MIPS64          | Linux            | GCC                     |
-+| Moxie           | Bare metal       | GCC                     |
-+| Nios II         | Linux            | GCC                     |
-+| PowerPC 32-bit  | AIX              | IBM XL C                |
-+| PowerPC 64-bit  | AIX              | IBM XL C                |
-+| PowerPC         | AMIGA            | GCC                     |
-+| PowerPC         | Linux            | GCC                     |
-+| PowerPC         | Mac OSX          | GCC                     |
-+| PowerPC         | FreeBSD          | GCC                     |
-+| PowerPC 64-bit  | FreeBSD          | GCC                     |
-+| PowerPC 64-bit  | Linux ELFv1      | GCC                     |
-+| PowerPC 64-bit  | Linux ELFv2      | GCC                     |
-+| S390            | Linux            | GCC                     |
-+| S390X           | Linux            | GCC                     |
-+| SPARC           | Linux            | GCC                     |
-+| SPARC           | Solaris          | GCC                     |
-+| SPARC           | Solaris          | Oracle Solaris Studio C |
-+| SPARC64         | Linux            | GCC                     |
-+| SPARC64         | FreeBSD          | GCC                     |
-+| SPARC64         | Solaris          | Oracle Solaris Studio C |
-+| TILE-Gx/TILEPro | Linux            | GCC                     |
-+| VAX             | OpenBSD/vax      | GCC                     |
-+| X86             | FreeBSD          | GCC                     |
-+| X86             | GNU HURD         | GCC                     |
-+| X86             | Interix          | GCC                     |
-+| X86             | kFreeBSD         | GCC                     |
-+| X86             | Linux            | GCC                     |
-+| X86             | Mac OSX          | GCC                     |
-+| X86             | OpenBSD          | GCC                     |
-+| X86             | OS/2             | GCC                     |
-+| X86             | Solaris          | GCC                     |
-+| X86             | Solaris          | Oracle Solaris Studio C |
-+| X86             | Windows/Cygwin   | GCC                     |
-+| X86             | Windows/MingW    | GCC                     |
-+| X86-64          | FreeBSD          | GCC                     |
-+| X86-64          | Linux            | GCC                     |
-+| X86-64          | Linux/x32        | GCC                     |
-+| X86-64          | OpenBSD          | GCC                     |
-+| X86-64          | Solaris          | Oracle Solaris Studio C |
-+| X86-64          | Windows/MingW    | GCC                     |
-+| Xtensa          | Linux            | GCC                     |
-+|-----------------+------------------+-------------------------|
- 
- Please send additional platform test results to
- libffi-discuss@sourceware.org and feel free to update the wiki page
- above.
- 
- Installing libffi
- =================
- 
- First you must configure the distribution for your particular
- system. Go to the directory you wish to build libffi in and run the
- "configure" program found in the root directory of the libffi source
- distribution.
- 
-+If you're building libffi directly from version control, configure won't
-+exist yet; run ./autogen.sh first.
-+
- You may want to tell configure where to install the libffi library and
- header files. To do that, use the --prefix configure switch.  Libffi
- will install under /usr/local by default. 
- 
- If you want to enable extra run-time debugging checks use the the
- --enable-debug configure switch. This is useful when your program dies
- mysteriously while using libffi. 
- 
-@@ -117,37 +149,93 @@ wrapper script during configuration like
- path/to/configure CC=path/to/msvcc.sh LD=link CPP=\"cl -nologo -EP\"
- 
- For 64-bit Windows builds, use CC="path/to/msvcc.sh -m64".
- You may also need to specify --build appropriately. When building with MSVC
- under a MingW environment, you may need to remove the line in configure
- that sets 'fix_srcfile_path' to a 'cygpath' command. ('cygpath' is not
- present in MingW, and is not required when using MingW-style paths.)
- 
-+For iOS builds, the 'libffi.xcodeproj' Xcode project is available.
-+
- Configure has many other options. Use "configure --help" to see them all.
- 
- Once configure has finished, type "make". Note that you must be using
--GNU make.  You can ftp GNU make from prep.ai.mit.edu:/pub/gnu.
-+GNU make.  You can ftp GNU make from ftp.gnu.org:/pub/gnu/make .
- 
- To ensure that libffi is working as advertised, type "make check".
- This will require that you have DejaGNU installed.
- 
- To install the library and header files, type "make install".
- 
- 
- History
- =======
- 
--See the ChangeLog files for details.
-+See the git log for details at http://github.com/atgreen/libffi.
- 
--3.0.10 ???-??-??
--        Fix the N64 build on mips-sgi-irix6.5.
-+3.1 TBD
-+        Add AArch64 (ARM64) iOS support.
-+        Add Nios II support.
-+        Add m88k and DEC VAX support.
-+	Add support for stdcall, thiscall, and fastcall on non-Windows
-+	  32-bit x86 targets such as Linux.
-+	Various Android, MIPS N32, x86, FreeBSD and UltraSPARC IIi
-+	  fixes.
-+	Make the testsuite more robust: eliminated several spurious
-+	  failures.
-+	Archive off the manually maintained ChangeLog in favor of git
-+	  log.
-+
-+3.0.13 Mar-17-13
-+	Add Meta support.
-+	Add missing Moxie bits.
-+	Fix stack alignment bug on 32-bit x86.
-+	Build fix for m68000 targets.
-+	Build fix for soft-float Power targets.
-+	Fix the install dir location for some platforms when building
-+	  with GCC (OS X, Solaris).
-+	Fix Cygwin regression.
-+
-+3.0.12 Feb-11-13
-+        Add Moxie support.
-+	Add AArch64 support.
-+	Add Blackfin support.
-+	Add TILE-Gx/TILEPro support.
-+	Add MicroBlaze support.
-+	Add Xtensa support.
-+	Add support for PaX enabled kernels with MPROTECT.
-+	Add support for native vendor compilers on
-+	  Solaris and AIX.
-+	Work around LLVM/GCC interoperability issue on x86_64.
-+
-+3.0.11 Apr-11-12
-+        Lots of build fixes.
-+	Add support for variadic functions (ffi_prep_cif_var).
-+	Add Linux/x32 support.
-+	Add thiscall, fastcall and MSVC cdecl support on Windows.
-+	Add Amiga and newer MacOS support.
-+	Add m68k FreeMiNT support.
-+	Integration with iOS' xcode build tools.
-+	Fix Octeon and MC68881 support.
-+	Fix code pessimizations.
-+
-+3.0.10 Aug-23-11
-+        Add support for Apple's iOS.
-+	Add support for ARM VFP ABI.
-+        Add RTEMS support for MIPS and M68K.
-+	Fix instruction cache clearing problems on
-+	  ARM and SPARC.
-+	Fix the N64 build on mips-sgi-irix6.5.
-+	Enable builds with Microsoft's compiler.
-+	Enable x86 builds with Oracle's Solaris compiler.
-+	Fix support for calling code compiled with Oracle's Sparc
-+	  Solaris compiler.
- 	Testsuite fixes for Tru64 Unix.
--	Enable builds with Microsoft's compiler.
--	Enable x86 builds with Sun's compiler.
-+	Additional platform support.
- 
- 3.0.9 Dec-31-09
-         Add AVR32 and win64 ports.  Add ARM softfp support.
- 	Many fixes for AIX, Solaris, HP-UX, *BSD.
- 	Several PowerPC and x86-64 bug fixes.
- 	Build DLL for windows.
- 
- 3.0.8 Dec-19-08
-@@ -267,50 +355,59 @@ 1.01 Oct-8-96
- 
- 1.00 Oct-7-96
- 	First release. No public announcement.
- 
- 
- Authors & Credits
- =================
- 
--libffi was originally written by Anthony Green <green@redhat.com>.
-+libffi was originally written by Anthony Green <green@moxielogic.com>.
- 
- The developers of the GNU Compiler Collection project have made
- innumerable valuable contributions.  See the ChangeLog file for
- details.
- 
- Some of the ideas behind libffi were inspired by Gianni Mariani's free
- gencall library for Silicon Graphics machines.
- 
- The closure mechanism was designed and implemented by Kresten Krab
- Thorup.
- 
- Major processor architecture ports were contributed by the following
- developers:
- 
-+aarch64		Marcus Shawcroft, James Greenhalgh
- alpha		Richard Henderson
- arm		Raffaele Sena
-+blackfin        Alexandre Keunecke I. de Mendonca
- cris		Simon Posnjak, Hans-Peter Nilsson
- frv		Anthony Green
- ia64		Hans Boehm
- m32r		Kazuhiro Inaoka
- m68k		Andreas Schwab
-+m88k		Miod Vallat
-+microblaze	Nathan Rossi
- mips		Anthony Green, Casey Marshall
- mips64		David Daney
-+moxie		Anthony Green
-+nios ii		Sandra Loosemore
- pa		Randolph Chung, Dave Anglin, Andreas Tobler
- powerpc		Geoffrey Keating, Andreas Tobler, 
- 			 David Edelsohn, John Hornkvist
- powerpc64	Jakub Jelinek
- s390		Gerhard Tonn, Ulrich Weigand
- sh		Kaz Kojima
- sh64		Kaz Kojima
- sparc		Anthony Green, Gordon Irlam
-+tile-gx/tilepro Walter Lee
-+vax		Miod Vallat
- x86		Anthony Green, Jon Beniston
- x86-64		Bo Thorsen
-+xtensa		Chris Zankel
- 
- Jesper Skov and Andrew Haley both did more than their fair share of
- stepping through the code and tracking down bugs.
- 
- Thanks also to Tom Tromey for bug fixes, documentation and
- configuration help.
- 
- Thanks to Jim Blandy, who provided some useful feedback on the libffi
-@@ -318,10 +415,11 @@ interface.
- 
- Andreas Tobler has done a tremendous amount of work on the testsuite.
- 
- Alex Oliva solved the executable page problem for SElinux.
- 
- The list above is almost certainly incomplete and inaccurate.  I'm
- happy to make corrections or additions upon request.
- 
--If you have a problem, or have found a bug, please send a note to
--green@redhat.com.
-+If you have a problem, or have found a bug, please send a note to the
-+author at green@moxielogic.com, or the project mailing list at
-+libffi-discuss@sourceware.org.
-diff --git a/js/src/ctypes/libffi/aclocal.m4 b/js/src/ctypes/libffi/aclocal.m4
---- a/js/src/ctypes/libffi/aclocal.m4
-+++ b/js/src/ctypes/libffi/aclocal.m4
-@@ -1,7390 +1,40 @@
--# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
-+# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
- 
--# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
--# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
-+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-+
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- # PARTICULAR PURPOSE.
- 
-+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
- m4_ifndef([AC_AUTOCONF_VERSION],
-   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
--m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
--[m4_warning([this file was generated for autoconf 2.65.
-+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
-+[m4_warning([this file was generated for autoconf 2.69.
- You have another version of autoconf.  It may work, but is not guaranteed to.
- If you have problems, you may need to regenerate the build system entirely.
--To do so, use the procedure documented by the package, typically `autoreconf'.])])
--
--# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
--#
--#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
--#                 2006, 2007, 2008 Free Software Foundation, Inc.
--#   Written by Gordon Matzigkeit, 1996
--#
--# This file is free software; the Free Software Foundation gives
--# unlimited permission to copy and/or distribute it, with or without
--# modifications, as long as this notice is preserved.
--
--m4_define([_LT_COPYING], [dnl
--#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
--#                 2006, 2007, 2008 Free Software Foundation, Inc.
--#   Written by Gordon Matzigkeit, 1996
--#
--#   This file is part of GNU Libtool.
--#
--# GNU Libtool is free software; you can redistribute it and/or
--# modify it under the terms of the GNU General Public License as
--# published by the Free Software Foundation; either version 2 of
--# the License, or (at your option) any later version.
--#
--# As a special exception to the GNU General Public License,
--# if you distribute this file as part of a program or library that
--# is built using GNU Libtool, you may include this file under the
--# same distribution terms that you use for the rest of that program.
--#
--# GNU Libtool is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
--#
--# You should have received a copy of the GNU General Public License
--# along with GNU Libtool; see the file COPYING.  If not, a copy
--# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
--# obtained by writing to the Free Software Foundation, Inc.,
--# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
--])
--
--# serial 56 LT_INIT
--
--
--# LT_PREREQ(VERSION)
--# ------------------
--# Complain and exit if this libtool version is less that VERSION.
--m4_defun([LT_PREREQ],
--[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
--       [m4_default([$3],
--		   [m4_fatal([Libtool version $1 or higher is required],
--		             63)])],
--       [$2])])
--
--
--# _LT_CHECK_BUILDDIR
--# ------------------
--# Complain if the absolute build directory name contains unusual characters
--m4_defun([_LT_CHECK_BUILDDIR],
--[case `pwd` in
--  *\ * | *\	*)
--    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
--esac
--])
--
--
--# LT_INIT([OPTIONS])
--# ------------------
--AC_DEFUN([LT_INIT],
--[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
--AC_BEFORE([$0], [LT_LANG])dnl
--AC_BEFORE([$0], [LT_OUTPUT])dnl
--AC_BEFORE([$0], [LTDL_INIT])dnl
--m4_require([_LT_CHECK_BUILDDIR])dnl
--
--dnl Autoconf doesn't catch unexpanded LT_ macros by default:
--m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
--m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
--dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
--dnl unless we require an AC_DEFUNed macro:
--AC_REQUIRE([LTOPTIONS_VERSION])dnl
--AC_REQUIRE([LTSUGAR_VERSION])dnl
--AC_REQUIRE([LTVERSION_VERSION])dnl
--AC_REQUIRE([LTOBSOLETE_VERSION])dnl
--m4_require([_LT_PROG_LTMAIN])dnl
--
--dnl Parse OPTIONS
--_LT_SET_OPTIONS([$0], [$1])
--
--# This can be used to rebuild libtool when needed
--LIBTOOL_DEPS="$ltmain"
--
--# Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
--AC_SUBST(LIBTOOL)dnl
--
--_LT_SETUP
--
--# Only expand once:
--m4_define([LT_INIT])
--])# LT_INIT
--
--# Old names:
--AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
--AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
--dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
--
--
--# _LT_CC_BASENAME(CC)
--# -------------------
--# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
--m4_defun([_LT_CC_BASENAME],
--[for cc_temp in $1""; do
--  case $cc_temp in
--    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
--    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
--    \-*) ;;
--    *) break;;
--  esac
--done
--cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
--])
--
--
--# _LT_FILEUTILS_DEFAULTS
--# ----------------------
--# It is okay to use these file commands and assume they have been set
--# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
--m4_defun([_LT_FILEUTILS_DEFAULTS],
--[: ${CP="cp -f"}
--: ${MV="mv -f"}
--: ${RM="rm -f"}
--])# _LT_FILEUTILS_DEFAULTS
--
--
--# _LT_SETUP
--# ---------
--m4_defun([_LT_SETUP],
--[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--AC_REQUIRE([AC_CANONICAL_BUILD])dnl
--_LT_DECL([], [host_alias], [0], [The host system])dnl
--_LT_DECL([], [host], [0])dnl
--_LT_DECL([], [host_os], [0])dnl
--dnl
--_LT_DECL([], [build_alias], [0], [The build system])dnl
--_LT_DECL([], [build], [0])dnl
--_LT_DECL([], [build_os], [0])dnl
--dnl
--AC_REQUIRE([AC_PROG_CC])dnl
--AC_REQUIRE([LT_PATH_LD])dnl
--AC_REQUIRE([LT_PATH_NM])dnl
--dnl
--AC_REQUIRE([AC_PROG_LN_S])dnl
--test -z "$LN_S" && LN_S="ln -s"
--_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
--dnl
--AC_REQUIRE([LT_CMD_MAX_LEN])dnl
--_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
--_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
--dnl
--m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--m4_require([_LT_CHECK_SHELL_FEATURES])dnl
--m4_require([_LT_CMD_RELOAD])dnl
--m4_require([_LT_CHECK_MAGIC_METHOD])dnl
--m4_require([_LT_CMD_OLD_ARCHIVE])dnl
--m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
--
--_LT_CONFIG_LIBTOOL_INIT([
--# See if we are running on zsh, and set the options which allow our
--# commands through without removal of \ escapes INIT.
--if test -n "\${ZSH_VERSION+set}" ; then
--   setopt NO_GLOB_SUBST
--fi
--])
--if test -n "${ZSH_VERSION+set}" ; then
--   setopt NO_GLOB_SUBST
--fi
--
--_LT_CHECK_OBJDIR
--
--m4_require([_LT_TAG_COMPILER])dnl
--_LT_PROG_ECHO_BACKSLASH
--
--case $host_os in
--aix3*)
--  # AIX sometimes has problems with the GCC collect2 program.  For some
--  # reason, if we set the COLLECT_NAMES environment variable, the problems
--  # vanish in a puff of smoke.
--  if test "X${COLLECT_NAMES+set}" != Xset; then
--    COLLECT_NAMES=
--    export COLLECT_NAMES
--  fi
--  ;;
--esac
--
--# Sed substitution that helps us do robust quoting.  It backslashifies
--# metacharacters that are still active within double-quoted strings.
--sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
--
--# Same as above, but do not quote variable references.
--double_quote_subst='s/\([["`\\]]\)/\\\1/g'
--
--# Sed substitution to delay expansion of an escaped shell variable in a
--# double_quote_subst'ed string.
--delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
--
--# Sed substitution to delay expansion of an escaped single quote.
--delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
--
--# Sed substitution to avoid accidental globbing in evaled expressions
--no_glob_subst='s/\*/\\\*/g'
--
--# Global variables:
--ofile=libtool
--can_build_shared=yes
--
--# All known linkers require a `.a' archive for static linking (except MSVC,
--# which needs '.lib').
--libext=a
--
--with_gnu_ld="$lt_cv_prog_gnu_ld"
--
--old_CC="$CC"
--old_CFLAGS="$CFLAGS"
--
--# Set sane defaults for various variables
--test -z "$CC" && CC=cc
--test -z "$LTCC" && LTCC=$CC
--test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
--test -z "$LD" && LD=ld
--test -z "$ac_objext" && ac_objext=o
--
--_LT_CC_BASENAME([$compiler])
--
--# Only perform the check for file, if the check method requires it
--test -z "$MAGIC_CMD" && MAGIC_CMD=file
--case $deplibs_check_method in
--file_magic*)
--  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
--    _LT_PATH_MAGIC
--  fi
--  ;;
--esac
--
--# Use C for the default configuration in the libtool script
--LT_SUPPORTED_TAG([CC])
--_LT_LANG_C_CONFIG
--_LT_LANG_DEFAULT_CONFIG
--_LT_CONFIG_COMMANDS
--])# _LT_SETUP
--
--
--# _LT_PROG_LTMAIN
--# ---------------
--# Note that this code is called both from `configure', and `config.status'
--# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
--# `config.status' has no value for ac_aux_dir unless we are using Automake,
--# so we pass a copy along to make sure it has a sensible value anyway.
--m4_defun([_LT_PROG_LTMAIN],
--[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
--_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
--ltmain="$ac_aux_dir/ltmain.sh"
--])# _LT_PROG_LTMAIN
--
--
--
--# So that we can recreate a full libtool script including additional
--# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
--# in macros and then make a single call at the end using the `libtool'
--# label.
--
--
--# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
--# ----------------------------------------
--# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
--m4_define([_LT_CONFIG_LIBTOOL_INIT],
--[m4_ifval([$1],
--          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
--                     [$1
--])])])
--
--# Initialize.
--m4_define([_LT_OUTPUT_LIBTOOL_INIT])
--
--
--# _LT_CONFIG_LIBTOOL([COMMANDS])
--# ------------------------------
--# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
--m4_define([_LT_CONFIG_LIBTOOL],
--[m4_ifval([$1],
--          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
--                     [$1
--])])])
--
--# Initialize.
--m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
--
--
--# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
--# -----------------------------------------------------
--m4_defun([_LT_CONFIG_SAVE_COMMANDS],
--[_LT_CONFIG_LIBTOOL([$1])
--_LT_CONFIG_LIBTOOL_INIT([$2])
--])
--
--
--# _LT_FORMAT_COMMENT([COMMENT])
--# -----------------------------
--# Add leading comment marks to the start of each line, and a trailing
--# full-stop to the whole comment if one is not present already.
--m4_define([_LT_FORMAT_COMMENT],
--[m4_ifval([$1], [
--m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
--              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
--)])
--
--
--
--
--
--# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
--# -------------------------------------------------------------------
--# CONFIGNAME is the name given to the value in the libtool script.
--# VARNAME is the (base) name used in the configure script.
--# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
--# VARNAME.  Any other value will be used directly.
--m4_define([_LT_DECL],
--[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
--    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
--	[m4_ifval([$1], [$1], [$2])])
--    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
--    m4_ifval([$4],
--	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
--    lt_dict_add_subkey([lt_decl_dict], [$2],
--	[tagged?], [m4_ifval([$5], [yes], [no])])])
--])
--
--
--# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
--# --------------------------------------------------------
--m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
--
--
--# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
--# ------------------------------------------------
--m4_define([lt_decl_tag_varnames],
--[_lt_decl_filter([tagged?], [yes], $@)])
--
--
--# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
--# ---------------------------------------------------------
--m4_define([_lt_decl_filter],
--[m4_case([$#],
--  [0], [m4_fatal([$0: too few arguments: $#])],
--  [1], [m4_fatal([$0: too few arguments: $#: $1])],
--  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
--  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
--  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
--])
--
--
--# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
--# --------------------------------------------------
--m4_define([lt_decl_quote_varnames],
--[_lt_decl_filter([value], [1], $@)])
--
--
--# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
--# ---------------------------------------------------
--m4_define([lt_decl_dquote_varnames],
--[_lt_decl_filter([value], [2], $@)])
--
--
--# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
--# ---------------------------------------------------
--m4_define([lt_decl_varnames_tagged],
--[m4_assert([$# <= 2])dnl
--_$0(m4_quote(m4_default([$1], [[, ]])),
--    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
--    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
--m4_define([_lt_decl_varnames_tagged],
--[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
--
--
--# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
--# ------------------------------------------------
--m4_define([lt_decl_all_varnames],
--[_$0(m4_quote(m4_default([$1], [[, ]])),
--     m4_if([$2], [],
--	   m4_quote(lt_decl_varnames),
--	m4_quote(m4_shift($@))))[]dnl
--])
--m4_define([_lt_decl_all_varnames],
--[lt_join($@, lt_decl_varnames_tagged([$1],
--			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
--])
--
--
--# _LT_CONFIG_STATUS_DECLARE([VARNAME])
--# ------------------------------------
--# Quote a variable value, and forward it to `config.status' so that its
--# declaration there will have the same value as in `configure'.  VARNAME
--# must have a single quote delimited value for this to work.
--m4_define([_LT_CONFIG_STATUS_DECLARE],
--[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
--
--
--# _LT_CONFIG_STATUS_DECLARATIONS
--# ------------------------------
--# We delimit libtool config variables with single quotes, so when
--# we write them to config.status, we have to be sure to quote all
--# embedded single quotes properly.  In configure, this macro expands
--# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
--#
--#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
--m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
--[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
--    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
--
--
--# _LT_LIBTOOL_TAGS
--# ----------------
--# Output comment and list of tags supported by the script
--m4_defun([_LT_LIBTOOL_TAGS],
--[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
--available_tags="_LT_TAGS"dnl
--])
--
--
--# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
--# -----------------------------------
--# Extract the dictionary values for VARNAME (optionally with TAG) and
--# expand to a commented shell variable setting:
--#
--#    # Some comment about what VAR is for.
--#    visible_name=$lt_internal_name
--m4_define([_LT_LIBTOOL_DECLARE],
--[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
--					   [description])))[]dnl
--m4_pushdef([_libtool_name],
--    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
--m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
--    [0], [_libtool_name=[$]$1],
--    [1], [_libtool_name=$lt_[]$1],
--    [2], [_libtool_name=$lt_[]$1],
--    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
--m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
--])
--
--
--# _LT_LIBTOOL_CONFIG_VARS
--# -----------------------
--# Produce commented declarations of non-tagged libtool config variables
--# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
--# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
--# section) are produced by _LT_LIBTOOL_TAG_VARS.
--m4_defun([_LT_LIBTOOL_CONFIG_VARS],
--[m4_foreach([_lt_var],
--    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
--    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
--
--
--# _LT_LIBTOOL_TAG_VARS(TAG)
--# -------------------------
--m4_define([_LT_LIBTOOL_TAG_VARS],
--[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
--    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
--
--
--# _LT_TAGVAR(VARNAME, [TAGNAME])
--# ------------------------------
--m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
--
--
--# _LT_CONFIG_COMMANDS
--# -------------------
--# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
--# variables for single and double quote escaping we saved from calls
--# to _LT_DECL, we can put quote escaped variables declarations
--# into `config.status', and then the shell code to quote escape them in
--# for loops in `config.status'.  Finally, any additional code accumulated
--# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
--m4_defun([_LT_CONFIG_COMMANDS],
--[AC_PROVIDE_IFELSE([LT_OUTPUT],
--	dnl If the libtool generation code has been placed in $CONFIG_LT,
--	dnl instead of duplicating it all over again into config.status,
--	dnl then we will have config.status run $CONFIG_LT later, so it
--	dnl needs to know what name is stored there:
--        [AC_CONFIG_COMMANDS([libtool],
--            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
--    dnl If the libtool generation code is destined for config.status,
--    dnl expand the accumulated commands and init code now:
--    [AC_CONFIG_COMMANDS([libtool],
--        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
--])#_LT_CONFIG_COMMANDS
--
--
--# Initialize.
--m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
--[
--
--# The HP-UX ksh and POSIX shell print the target directory to stdout
--# if CDPATH is set.
--(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
--
--sed_quote_subst='$sed_quote_subst'
--double_quote_subst='$double_quote_subst'
--delay_variable_subst='$delay_variable_subst'
--_LT_CONFIG_STATUS_DECLARATIONS
--LTCC='$LTCC'
--LTCFLAGS='$LTCFLAGS'
--compiler='$compiler_DEFAULT'
--
--# Quote evaled strings.
--for var in lt_decl_all_varnames([[ \
--]], lt_decl_quote_varnames); do
--    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
--    *[[\\\\\\\`\\"\\\$]]*)
--      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
--      ;;
--    *)
--      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
--      ;;
--    esac
--done
--
--# Double-quote double-evaled strings.
--for var in lt_decl_all_varnames([[ \
--]], lt_decl_dquote_varnames); do
--    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
--    *[[\\\\\\\`\\"\\\$]]*)
--      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
--      ;;
--    *)
--      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
--      ;;
--    esac
--done
--
--# Fix-up fallback echo if it was mangled by the above quoting rules.
--case \$lt_ECHO in
--*'\\\[$]0 --fallback-echo"')dnl "
--  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
--  ;;
--esac
--
--_LT_OUTPUT_LIBTOOL_INIT
--])
--
--
--# LT_OUTPUT
--# ---------
--# This macro allows early generation of the libtool script (before
--# AC_OUTPUT is called), incase it is used in configure for compilation
--# tests.
--AC_DEFUN([LT_OUTPUT],
--[: ${CONFIG_LT=./config.lt}
--AC_MSG_NOTICE([creating $CONFIG_LT])
--cat >"$CONFIG_LT" <<_LTEOF
--#! $SHELL
--# Generated by $as_me.
--# Run this file to recreate a libtool stub with the current configuration.
--
--lt_cl_silent=false
--SHELL=\${CONFIG_SHELL-$SHELL}
--_LTEOF
--
--cat >>"$CONFIG_LT" <<\_LTEOF
--AS_SHELL_SANITIZE
--_AS_PREPARE
--
--exec AS_MESSAGE_FD>&1
--exec AS_MESSAGE_LOG_FD>>config.log
--{
--  echo
--  AS_BOX([Running $as_me.])
--} >&AS_MESSAGE_LOG_FD
--
--lt_cl_help="\
--\`$as_me' creates a local libtool stub from the current configuration,
--for use in further configure time tests before the real libtool is
--generated.
--
--Usage: $[0] [[OPTIONS]]
--
--  -h, --help      print this help, then exit
--  -V, --version   print version number, then exit
--  -q, --quiet     do not print progress messages
--  -d, --debug     don't remove temporary files
--
--Report bugs to <bug-libtool@gnu.org>."
--
--lt_cl_version="\
--m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
--m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
--configured by $[0], generated by m4_PACKAGE_STRING.
--
--Copyright (C) 2008 Free Software Foundation, Inc.
--This config.lt script is free software; the Free Software Foundation
--gives unlimited permision to copy, distribute and modify it."
--
--while test $[#] != 0
--do
--  case $[1] in
--    --version | --v* | -V )
--      echo "$lt_cl_version"; exit 0 ;;
--    --help | --h* | -h )
--      echo "$lt_cl_help"; exit 0 ;;
--    --debug | --d* | -d )
--      debug=: ;;
--    --quiet | --q* | --silent | --s* | -q )
--      lt_cl_silent=: ;;
--
--    -*) AC_MSG_ERROR([unrecognized option: $[1]
--Try \`$[0] --help' for more information.]) ;;
--
--    *) AC_MSG_ERROR([unrecognized argument: $[1]
--Try \`$[0] --help' for more information.]) ;;
--  esac
--  shift
--done
--
--if $lt_cl_silent; then
--  exec AS_MESSAGE_FD>/dev/null
--fi
--_LTEOF
--
--cat >>"$CONFIG_LT" <<_LTEOF
--_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
--_LTEOF
--
--cat >>"$CONFIG_LT" <<\_LTEOF
--AC_MSG_NOTICE([creating $ofile])
--_LT_OUTPUT_LIBTOOL_COMMANDS
--AS_EXIT(0)
--_LTEOF
--chmod +x "$CONFIG_LT"
--
--# configure is writing to config.log, but config.lt does its own redirection,
--# appending to config.log, which fails on DOS, as config.log is still kept
--# open by configure.  Here we exec the FD to /dev/null, effectively closing
--# config.log, so it can be properly (re)opened and appended to by config.lt.
--if test "$no_create" != yes; then
--  lt_cl_success=:
--  test "$silent" = yes &&
--    lt_config_lt_args="$lt_config_lt_args --quiet"
--  exec AS_MESSAGE_LOG_FD>/dev/null
--  $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
--  exec AS_MESSAGE_LOG_FD>>config.log
--  $lt_cl_success || AS_EXIT(1)
--fi
--])# LT_OUTPUT
--
--
--# _LT_CONFIG(TAG)
--# ---------------
--# If TAG is the built-in tag, create an initial libtool script with a
--# default configuration from the untagged config vars.  Otherwise add code
--# to config.status for appending the configuration named by TAG from the
--# matching tagged config vars.
--m4_defun([_LT_CONFIG],
--[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--_LT_CONFIG_SAVE_COMMANDS([
--  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
--  m4_if(_LT_TAG, [C], [
--    # See if we are running on zsh, and set the options which allow our
--    # commands through without removal of \ escapes.
--    if test -n "${ZSH_VERSION+set}" ; then
--      setopt NO_GLOB_SUBST
--    fi
--
--    cfgfile="${ofile}T"
--    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
--    $RM "$cfgfile"
--
--    cat <<_LT_EOF >> "$cfgfile"
--#! $SHELL
--
--# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
--# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
--# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
--# NOTE: Changes made to this file will be lost: look at ltmain.sh.
--#
--_LT_COPYING
--_LT_LIBTOOL_TAGS
--
--# ### BEGIN LIBTOOL CONFIG
--_LT_LIBTOOL_CONFIG_VARS
--_LT_LIBTOOL_TAG_VARS
--# ### END LIBTOOL CONFIG
--
--_LT_EOF
--
--  case $host_os in
--  aix3*)
--    cat <<\_LT_EOF >> "$cfgfile"
--# AIX sometimes has problems with the GCC collect2 program.  For some
--# reason, if we set the COLLECT_NAMES environment variable, the problems
--# vanish in a puff of smoke.
--if test "X${COLLECT_NAMES+set}" != Xset; then
--  COLLECT_NAMES=
--  export COLLECT_NAMES
--fi
--_LT_EOF
--    ;;
--  esac
--
--  _LT_PROG_LTMAIN
--
--  # We use sed instead of cat because bash on DJGPP gets confused if
--  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
--  # text mode, it properly converts lines to CR/LF.  This bash problem
--  # is reportedly fixed, but why not run on old versions too?
--  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
--    || (rm -f "$cfgfile"; exit 1)
--
--  _LT_PROG_XSI_SHELLFNS
--
--  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
--    || (rm -f "$cfgfile"; exit 1)
--
--  mv -f "$cfgfile" "$ofile" ||
--    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
--  chmod +x "$ofile"
--],
--[cat <<_LT_EOF >> "$ofile"
--
--dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
--dnl in a comment (ie after a #).
--# ### BEGIN LIBTOOL TAG CONFIG: $1
--_LT_LIBTOOL_TAG_VARS(_LT_TAG)
--# ### END LIBTOOL TAG CONFIG: $1
--_LT_EOF
--])dnl /m4_if
--],
--[m4_if([$1], [], [
--    PACKAGE='$PACKAGE'
--    VERSION='$VERSION'
--    TIMESTAMP='$TIMESTAMP'
--    RM='$RM'
--    ofile='$ofile'], [])
--])dnl /_LT_CONFIG_SAVE_COMMANDS
--])# _LT_CONFIG
--
--
--# LT_SUPPORTED_TAG(TAG)
--# ---------------------
--# Trace this macro to discover what tags are supported by the libtool
--# --tag option, using:
--#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
--AC_DEFUN([LT_SUPPORTED_TAG], [])
--
--
--# C support is built-in for now
--m4_define([_LT_LANG_C_enabled], [])
--m4_define([_LT_TAGS], [])
--
--
--# LT_LANG(LANG)
--# -------------
--# Enable libtool support for the given language if not already enabled.
--AC_DEFUN([LT_LANG],
--[AC_BEFORE([$0], [LT_OUTPUT])dnl
--m4_case([$1],
--  [C],			[_LT_LANG(C)],
--  [C++],		[_LT_LANG(CXX)],
--  [Java],		[_LT_LANG(GCJ)],
--  [Fortran 77],		[_LT_LANG(F77)],
--  [Fortran],		[_LT_LANG(FC)],
--  [Windows Resource],	[_LT_LANG(RC)],
--  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
--    [_LT_LANG($1)],
--    [m4_fatal([$0: unsupported language: "$1"])])])dnl
--])# LT_LANG
--
--
--# _LT_LANG(LANGNAME)
--# ------------------
--m4_defun([_LT_LANG],
--[m4_ifdef([_LT_LANG_]$1[_enabled], [],
--  [LT_SUPPORTED_TAG([$1])dnl
--  m4_append([_LT_TAGS], [$1 ])dnl
--  m4_define([_LT_LANG_]$1[_enabled], [])dnl
--  _LT_LANG_$1_CONFIG($1)])dnl
--])# _LT_LANG
--
--
--# _LT_LANG_DEFAULT_CONFIG
--# -----------------------
--m4_defun([_LT_LANG_DEFAULT_CONFIG],
--[AC_PROVIDE_IFELSE([AC_PROG_CXX],
--  [LT_LANG(CXX)],
--  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
--
--AC_PROVIDE_IFELSE([AC_PROG_F77],
--  [LT_LANG(F77)],
--  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
--
--AC_PROVIDE_IFELSE([AC_PROG_FC],
--  [LT_LANG(FC)],
--  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
--
--dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
--dnl pulling things in needlessly.
--AC_PROVIDE_IFELSE([AC_PROG_GCJ],
--  [LT_LANG(GCJ)],
--  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
--    [LT_LANG(GCJ)],
--    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
--      [LT_LANG(GCJ)],
--      [m4_ifdef([AC_PROG_GCJ],
--	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
--       m4_ifdef([A][M_PROG_GCJ],
--	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
--       m4_ifdef([LT_PROG_GCJ],
--	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
--
--AC_PROVIDE_IFELSE([LT_PROG_RC],
--  [LT_LANG(RC)],
--  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
--])# _LT_LANG_DEFAULT_CONFIG
--
--# Obsolete macros:
--AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
--AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
--AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
--AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
--dnl AC_DEFUN([AC_LIBTOOL_F77], [])
--dnl AC_DEFUN([AC_LIBTOOL_FC], [])
--dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
--
--
--# _LT_TAG_COMPILER
--# ----------------
--m4_defun([_LT_TAG_COMPILER],
--[AC_REQUIRE([AC_PROG_CC])dnl
--
--_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
--_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
--_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
--_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
--
--# If no C compiler was specified, use CC.
--LTCC=${LTCC-"$CC"}
--
--# If no C compiler flags were specified, use CFLAGS.
--LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
--
--# Allow CC to be a program name with arguments.
--compiler=$CC
--])# _LT_TAG_COMPILER
--
--
--# _LT_COMPILER_BOILERPLATE
--# ------------------------
--# Check for compiler boilerplate output or warnings with
--# the simple compiler test code.
--m4_defun([_LT_COMPILER_BOILERPLATE],
--[m4_require([_LT_DECL_SED])dnl
--ac_outfile=conftest.$ac_objext
--echo "$lt_simple_compile_test_code" >conftest.$ac_ext
--eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
--_lt_compiler_boilerplate=`cat conftest.err`
--$RM conftest*
--])# _LT_COMPILER_BOILERPLATE
--
--
--# _LT_LINKER_BOILERPLATE
--# ----------------------
--# Check for linker boilerplate output or warnings with
--# the simple link test code.
--m4_defun([_LT_LINKER_BOILERPLATE],
--[m4_require([_LT_DECL_SED])dnl
--ac_outfile=conftest.$ac_objext
--echo "$lt_simple_link_test_code" >conftest.$ac_ext
--eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
--_lt_linker_boilerplate=`cat conftest.err`
--$RM -r conftest*
--])# _LT_LINKER_BOILERPLATE
--
--# _LT_REQUIRED_DARWIN_CHECKS
--# -------------------------
--m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
--  case $host_os in
--    rhapsody* | darwin*)
--    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
--    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
--    AC_CHECK_TOOL([LIPO], [lipo], [:])
--    AC_CHECK_TOOL([OTOOL], [otool], [:])
--    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
--    _LT_DECL([], [DSYMUTIL], [1],
--      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
--    _LT_DECL([], [NMEDIT], [1],
--      [Tool to change global to local symbols on Mac OS X])
--    _LT_DECL([], [LIPO], [1],
--      [Tool to manipulate fat objects and archives on Mac OS X])
--    _LT_DECL([], [OTOOL], [1],
--      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
--    _LT_DECL([], [OTOOL64], [1],
--      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
--
--    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
--      [lt_cv_apple_cc_single_mod=no
--      if test -z "${LT_MULTI_MODULE}"; then
--	# By default we will add the -single_module flag. You can override
--	# by either setting the environment variable LT_MULTI_MODULE
--	# non-empty at configure time, or by adding -multi_module to the
--	# link flags.
--	rm -rf libconftest.dylib*
--	echo "int foo(void){return 1;}" > conftest.c
--	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
---dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
--	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
--        _lt_result=$?
--	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
--	  lt_cv_apple_cc_single_mod=yes
--	else
--	  cat conftest.err >&AS_MESSAGE_LOG_FD
--	fi
--	rm -rf libconftest.dylib*
--	rm -f conftest.*
--      fi])
--    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
--      [lt_cv_ld_exported_symbols_list],
--      [lt_cv_ld_exported_symbols_list=no
--      save_LDFLAGS=$LDFLAGS
--      echo "_main" > conftest.sym
--      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
--      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
--	[lt_cv_ld_exported_symbols_list=yes],
--	[lt_cv_ld_exported_symbols_list=no])
--	LDFLAGS="$save_LDFLAGS"
--    ])
--    case $host_os in
--    rhapsody* | darwin1.[[012]])
--      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
--    darwin1.*)
--      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
--    darwin*) # darwin 5.x on
--      # if running on 10.5 or later, the deployment target defaults
--      # to the OS version, if on x86, and 10.4, the deployment
--      # target defaults to 10.4. Don't you love it?
--      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
--	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
--	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
--	10.[[012]]*)
--	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
--	10.*)
--	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
--      esac
--    ;;
--  esac
--    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
--      _lt_dar_single_mod='$single_module'
--    fi
--    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
--      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
--    else
--      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
--    fi
--    if test "$DSYMUTIL" != ":"; then
--      _lt_dsymutil='~$DSYMUTIL $lib || :'
--    else
--      _lt_dsymutil=
--    fi
--    ;;
--  esac
--])
--
--
--# _LT_DARWIN_LINKER_FEATURES
--# --------------------------
--# Checks for linker and compiler features on darwin
--m4_defun([_LT_DARWIN_LINKER_FEATURES],
--[
--  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
--  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
--  _LT_TAGVAR(hardcode_direct, $1)=no
--  _LT_TAGVAR(hardcode_automatic, $1)=yes
--  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
--  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
--  _LT_TAGVAR(link_all_deplibs, $1)=yes
--  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
--  case $cc_basename in
--     ifort*) _lt_dar_can_shared=yes ;;
--     *) _lt_dar_can_shared=$GCC ;;
--  esac
--  if test "$_lt_dar_can_shared" = "yes"; then
--    output_verbose_link_cmd=echo
--    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
--    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
--    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
--    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
--    m4_if([$1], [CXX],
--[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
--      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
--      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
--    fi
--],[])
--  else
--  _LT_TAGVAR(ld_shlibs, $1)=no
--  fi
--])
--
--# _LT_SYS_MODULE_PATH_AIX
--# -----------------------
--# Links a minimal program and checks the executable
--# for the system default hardcoded library path. In most cases,
--# this is /usr/lib:/lib, but when the MPI compilers are used
--# the location of the communication and MPI libs are included too.
--# If we don't find anything, use the default library path according
--# to the aix ld manual.
--m4_defun([_LT_SYS_MODULE_PATH_AIX],
--[m4_require([_LT_DECL_SED])dnl
--AC_LINK_IFELSE(AC_LANG_PROGRAM,[
--lt_aix_libpath_sed='
--    /Import File Strings/,/^$/ {
--	/^0/ {
--	    s/^0  *\(.*\)$/\1/
--	    p
--	}
--    }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
--  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi],[])
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
--])# _LT_SYS_MODULE_PATH_AIX
--
--
--# _LT_SHELL_INIT(ARG)
--# -------------------
--m4_define([_LT_SHELL_INIT],
--[ifdef([AC_DIVERSION_NOTICE],
--	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
--	 [AC_DIVERT_PUSH(NOTICE)])
--$1
--AC_DIVERT_POP
--])# _LT_SHELL_INIT
--
--
--# _LT_PROG_ECHO_BACKSLASH
--# -----------------------
--# Add some code to the start of the generated configure script which
--# will find an echo command which doesn't interpret backslashes.
--m4_defun([_LT_PROG_ECHO_BACKSLASH],
--[_LT_SHELL_INIT([
--# Check that we are running under the correct shell.
--SHELL=${CONFIG_SHELL-/bin/sh}
--
--case X$lt_ECHO in
--X*--fallback-echo)
--  # Remove one level of quotation (which was required for Make).
--  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
--  ;;
--esac
--
--ECHO=${lt_ECHO-echo}
--if test "X[$]1" = X--no-reexec; then
--  # Discard the --no-reexec flag, and continue.
--  shift
--elif test "X[$]1" = X--fallback-echo; then
--  # Avoid inline document here, it may be left over
--  :
--elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
--  # Yippee, $ECHO works!
--  :
--else
--  # Restart under the correct shell.
--  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
--fi
--
--if test "X[$]1" = X--fallback-echo; then
--  # used as fallback echo
--  shift
--  cat <<_LT_EOF
--[$]*
--_LT_EOF
--  exit 0
--fi
--
--# The HP-UX ksh and POSIX shell print the target directory to stdout
--# if CDPATH is set.
--(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
--
--if test -z "$lt_ECHO"; then
--  if test "X${echo_test_string+set}" != Xset; then
--    # find a string as large as possible, as long as the shell can cope with it
--    for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
--      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
--      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
--	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
--      then
--        break
--      fi
--    done
--  fi
--
--  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
--     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
--     test "X$echo_testing_string" = "X$echo_test_string"; then
--    :
--  else
--    # The Solaris, AIX, and Digital Unix default echo programs unquote
--    # backslashes.  This makes it impossible to quote backslashes using
--    #   echo "$something" | sed 's/\\/\\\\/g'
--    #
--    # So, first we look for a working echo in the user's PATH.
--
--    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
--    for dir in $PATH /usr/ucb; do
--      IFS="$lt_save_ifs"
--      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
--         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
--         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
--         test "X$echo_testing_string" = "X$echo_test_string"; then
--        ECHO="$dir/echo"
--        break
--      fi
--    done
--    IFS="$lt_save_ifs"
--
--    if test "X$ECHO" = Xecho; then
--      # We didn't find a better echo, so look for alternatives.
--      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
--         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
--         test "X$echo_testing_string" = "X$echo_test_string"; then
--        # This shell has a builtin print -r that does the trick.
--        ECHO='print -r'
--      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
--	   test "X$CONFIG_SHELL" != X/bin/ksh; then
--        # If we have ksh, try running configure again with it.
--        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
--        export ORIGINAL_CONFIG_SHELL
--        CONFIG_SHELL=/bin/ksh
--        export CONFIG_SHELL
--        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
--      else
--        # Try using printf.
--        ECHO='printf %s\n'
--        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
--	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
--	   test "X$echo_testing_string" = "X$echo_test_string"; then
--	  # Cool, printf works
--	  :
--        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
--	     test "X$echo_testing_string" = 'X\t' &&
--	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
--	     test "X$echo_testing_string" = "X$echo_test_string"; then
--	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
--	  export CONFIG_SHELL
--	  SHELL="$CONFIG_SHELL"
--	  export SHELL
--	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
--        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
--	     test "X$echo_testing_string" = 'X\t' &&
--	     echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
--	     test "X$echo_testing_string" = "X$echo_test_string"; then
--	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
--        else
--	  # maybe with a smaller string...
--	  prev=:
--
--	  for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
--	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
--	    then
--	      break
--	    fi
--	    prev="$cmd"
--	  done
--
--	  if test "$prev" != 'sed 50q "[$]0"'; then
--	    echo_test_string=`eval $prev`
--	    export echo_test_string
--	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
--	  else
--	    # Oops.  We lost completely, so just stick with echo.
--	    ECHO=echo
--	  fi
--        fi
--      fi
--    fi
--  fi
--fi
--
--# Copy echo and quote the copy suitably for passing to libtool from
--# the Makefile, instead of quoting the original, which is used later.
--lt_ECHO=$ECHO
--if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
--   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
--fi
--
--AC_SUBST(lt_ECHO)
--])
--_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
--_LT_DECL([], [ECHO], [1],
--    [An echo program that does not interpret backslashes])
--])# _LT_PROG_ECHO_BACKSLASH
--
--
--# _LT_ENABLE_LOCK
--# ---------------
--m4_defun([_LT_ENABLE_LOCK],
--[AC_ARG_ENABLE([libtool-lock],
--  [AS_HELP_STRING([--disable-libtool-lock],
--    [avoid locking (might break parallel builds)])])
--test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
--
--# Some flags need to be propagated to the compiler or linker for good
--# libtool support.
--case $host in
--ia64-*-hpux*)
--  # Find out which ABI we are using.
--  echo 'int i;' > conftest.$ac_ext
--  if AC_TRY_EVAL(ac_compile); then
--    case `/usr/bin/file conftest.$ac_objext` in
--      *ELF-32*)
--	HPUX_IA64_MODE="32"
--	;;
--      *ELF-64*)
--	HPUX_IA64_MODE="64"
--	;;
--    esac
--  fi
--  rm -rf conftest*
--  ;;
--*-*-irix6*)
--  # Find out which ABI we are using.
--  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
--  if AC_TRY_EVAL(ac_compile); then
--    if test "$lt_cv_prog_gnu_ld" = yes; then
--      case `/usr/bin/file conftest.$ac_objext` in
--	*32-bit*)
--	  LD="${LD-ld} -melf32bsmip"
--	  ;;
--	*N32*)
--	  LD="${LD-ld} -melf32bmipn32"
--	  ;;
--	*64-bit*)
--	  LD="${LD-ld} -melf64bmip"
--	;;
--      esac
--    else
--      case `/usr/bin/file conftest.$ac_objext` in
--	*32-bit*)
--	  LD="${LD-ld} -32"
--	  ;;
--	*N32*)
--	  LD="${LD-ld} -n32"
--	  ;;
--	*64-bit*)
--	  LD="${LD-ld} -64"
--	  ;;
--      esac
--    fi
--  fi
--  rm -rf conftest*
--  ;;
--
--x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
--s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
--  # Find out which ABI we are using.
--  echo 'int i;' > conftest.$ac_ext
--  if AC_TRY_EVAL(ac_compile); then
--    case `/usr/bin/file conftest.o` in
--      *32-bit*)
--	case $host in
--	  x86_64-*kfreebsd*-gnu)
--	    LD="${LD-ld} -m elf_i386_fbsd"
--	    ;;
--	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
--	    ;;
--	  powerpc64le-*linux*)
--	    LD="${LD-ld} -m elf32lppclinux"
--	    ;;
--	  powerpc64-*linux*)
--	    LD="${LD-ld} -m elf32ppclinux"
--	    ;;
--	  s390x-*linux*)
--	    LD="${LD-ld} -m elf_s390"
--	    ;;
--	  sparc64-*linux*)
--	    LD="${LD-ld} -m elf32_sparc"
--	    ;;
--	esac
--	;;
--      *64-bit*)
--	case $host in
--	  x86_64-*kfreebsd*-gnu)
--	    LD="${LD-ld} -m elf_x86_64_fbsd"
--	    ;;
--	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_x86_64"
--	    ;;
--	  powerpcle-*linux*)
--	    LD="${LD-ld} -m elf64lppc"
--	    ;;
--	  powerpc-*linux*)
--	    LD="${LD-ld} -m elf64ppc"
--	    ;;
--	  s390*-*linux*|s390*-*tpf*)
--	    LD="${LD-ld} -m elf64_s390"
--	    ;;
--	  sparc*-*linux*)
--	    LD="${LD-ld} -m elf64_sparc"
--	    ;;
--	esac
--	;;
--    esac
--  fi
--  rm -rf conftest*
--  ;;
--
--*-*-sco3.2v5*)
--  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
--  SAVE_CFLAGS="$CFLAGS"
--  CFLAGS="$CFLAGS -belf"
--  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
--    [AC_LANG_PUSH(C)
--     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
--     AC_LANG_POP])
--  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
--    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
--    CFLAGS="$SAVE_CFLAGS"
--  fi
--  ;;
--sparc*-*solaris*)
--  # Find out which ABI we are using.
--  echo 'int i;' > conftest.$ac_ext
--  if AC_TRY_EVAL(ac_compile); then
--    case `/usr/bin/file conftest.o` in
--    *64-bit*)
--      case $lt_cv_prog_gnu_ld in
--      yes*) LD="${LD-ld} -m elf64_sparc" ;;
--      *)
--	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
--	  LD="${LD-ld} -64"
--	fi
--	;;
--      esac
--      ;;
--    esac
--  fi
--  rm -rf conftest*
--  ;;
--esac
--
--need_locks="$enable_libtool_lock"
--])# _LT_ENABLE_LOCK
--
--
--# _LT_CMD_OLD_ARCHIVE
--# -------------------
--m4_defun([_LT_CMD_OLD_ARCHIVE],
--[AC_CHECK_TOOL(AR, ar, false)
--test -z "$AR" && AR=ar
--test -z "$AR_FLAGS" && AR_FLAGS=cru
--_LT_DECL([], [AR], [1], [The archiver])
--_LT_DECL([], [AR_FLAGS], [1])
--
--AC_CHECK_TOOL(STRIP, strip, :)
--test -z "$STRIP" && STRIP=:
--_LT_DECL([], [STRIP], [1], [A symbol stripping program])
--
--AC_CHECK_TOOL(RANLIB, ranlib, :)
--test -z "$RANLIB" && RANLIB=:
--_LT_DECL([], [RANLIB], [1],
--    [Commands used to install an old-style archive])
--
--# Determine commands to create old-style static archives.
--old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
--old_postinstall_cmds='chmod 644 $oldlib'
--old_postuninstall_cmds=
--
--if test -n "$RANLIB"; then
--  case $host_os in
--  openbsd*)
--    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
--    ;;
--  *)
--    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
--    ;;
--  esac
--  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
--fi
--_LT_DECL([], [old_postinstall_cmds], [2])
--_LT_DECL([], [old_postuninstall_cmds], [2])
--_LT_TAGDECL([], [old_archive_cmds], [2],
--    [Commands used to build an old-style archive])
--])# _LT_CMD_OLD_ARCHIVE
--
--
--# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
--#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
--# ----------------------------------------------------------------
--# Check whether the given compiler option works
--AC_DEFUN([_LT_COMPILER_OPTION],
--[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--m4_require([_LT_DECL_SED])dnl
--AC_CACHE_CHECK([$1], [$2],
--  [$2=no
--   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
--   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
--   lt_compiler_flag="$3"
--   # Insert the option either (1) after the last *FLAGS variable, or
--   # (2) before a word containing "conftest.", or (3) at the end.
--   # Note that $ac_compile itself does not contain backslashes and begins
--   # with a dollar sign (not a hyphen), so the echo should work correctly.
--   # The option is referenced via a variable to avoid confusing sed.
--   lt_compile=`echo "$ac_compile" | $SED \
--   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
--   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
--   -e 's:$: $lt_compiler_flag:'`
--   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
--   (eval "$lt_compile" 2>conftest.err)
--   ac_status=$?
--   cat conftest.err >&AS_MESSAGE_LOG_FD
--   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
--   if (exit $ac_status) && test -s "$ac_outfile"; then
--     # The compiler can only warn and ignore the option if not recognized
--     # So say no if there are warnings other than the usual output.
--     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
--     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
--     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
--       $2=yes
--     fi
--   fi
--   $RM conftest*
--])
--
--if test x"[$]$2" = xyes; then
--    m4_if([$5], , :, [$5])
--else
--    m4_if([$6], , :, [$6])
--fi
--])# _LT_COMPILER_OPTION
--
--# Old name:
--AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
--
--
--# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
--#                  [ACTION-SUCCESS], [ACTION-FAILURE])
--# ----------------------------------------------------
--# Check whether the given linker option works
--AC_DEFUN([_LT_LINKER_OPTION],
--[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--m4_require([_LT_DECL_SED])dnl
--AC_CACHE_CHECK([$1], [$2],
--  [$2=no
--   save_LDFLAGS="$LDFLAGS"
--   LDFLAGS="$LDFLAGS $3"
--   echo "$lt_simple_link_test_code" > conftest.$ac_ext
--   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
--     # The linker can only warn and ignore the option if not recognized
--     # So say no if there are warnings
--     if test -s conftest.err; then
--       # Append any errors to the config.log.
--       cat conftest.err 1>&AS_MESSAGE_LOG_FD
--       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
--       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
--       if diff conftest.exp conftest.er2 >/dev/null; then
--         $2=yes
--       fi
--     else
--       $2=yes
--     fi
--   fi
--   $RM -r conftest*
--   LDFLAGS="$save_LDFLAGS"
--])
--
--if test x"[$]$2" = xyes; then
--    m4_if([$4], , :, [$4])
--else
--    m4_if([$5], , :, [$5])
--fi
--])# _LT_LINKER_OPTION
--
--# Old name:
--AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
--
--
--# LT_CMD_MAX_LEN
--#---------------
--AC_DEFUN([LT_CMD_MAX_LEN],
--[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--# find the maximum length of command line arguments
--AC_MSG_CHECKING([the maximum length of command line arguments])
--AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
--  i=0
--  teststring="ABCD"
--
--  case $build_os in
--  msdosdjgpp*)
--    # On DJGPP, this test can blow up pretty badly due to problems in libc
--    # (any single argument exceeding 2000 bytes causes a buffer overrun
--    # during glob expansion).  Even if it were fixed, the result of this
--    # check would be larger than it should be.
--    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
--    ;;
--
--  gnu*)
--    # Under GNU Hurd, this test is not required because there is
--    # no limit to the length of command line arguments.
--    # Libtool will interpret -1 as no limit whatsoever
--    lt_cv_sys_max_cmd_len=-1;
--    ;;
--
--  cygwin* | mingw* | cegcc*)
--    # On Win9x/ME, this test blows up -- it succeeds, but takes
--    # about 5 minutes as the teststring grows exponentially.
--    # Worse, since 9x/ME are not pre-emptively multitasking,
--    # you end up with a "frozen" computer, even though with patience
--    # the test eventually succeeds (with a max line length of 256k).
--    # Instead, let's just punt: use the minimum linelength reported by
--    # all of the supported platforms: 8192 (on NT/2K/XP).
--    lt_cv_sys_max_cmd_len=8192;
--    ;;
--
--  amigaos*)
--    # On AmigaOS with pdksh, this test takes hours, literally.
--    # So we just punt and use a minimum line length of 8192.
--    lt_cv_sys_max_cmd_len=8192;
--    ;;
--
--  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
--    # This has been around since 386BSD, at least.  Likely further.
--    if test -x /sbin/sysctl; then
--      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
--    elif test -x /usr/sbin/sysctl; then
--      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
--    else
--      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
--    fi
--    # And add a safety zone
--    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
--    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
--    ;;
--
--  interix*)
--    # We know the value 262144 and hardcode it with a safety zone (like BSD)
--    lt_cv_sys_max_cmd_len=196608
--    ;;
--
--  osf*)
--    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
--    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
--    # nice to cause kernel panics so lets avoid the loop below.
--    # First set a reasonable default.
--    lt_cv_sys_max_cmd_len=16384
--    #
--    if test -x /sbin/sysconfig; then
--      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
--        *1*) lt_cv_sys_max_cmd_len=-1 ;;
--      esac
--    fi
--    ;;
--  sco3.2v5*)
--    lt_cv_sys_max_cmd_len=102400
--    ;;
--  sysv5* | sco5v6* | sysv4.2uw2*)
--    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
--    if test -n "$kargmax"; then
--      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
--    else
--      lt_cv_sys_max_cmd_len=32768
--    fi
--    ;;
--  *)
--    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
--    if test -n "$lt_cv_sys_max_cmd_len"; then
--      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
--      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
--    else
--      # Make teststring a little bigger before we do anything with it.
--      # a 1K string should be a reasonable start.
--      for i in 1 2 3 4 5 6 7 8 ; do
--        teststring=$teststring$teststring
--      done
--      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
--      # If test is not a shell built-in, we'll probably end up computing a
--      # maximum length that is only half of the actual maximum length, but
--      # we can't tell.
--      while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
--	         = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
--	      test $i != 17 # 1/2 MB should be enough
--      do
--        i=`expr $i + 1`
--        teststring=$teststring$teststring
--      done
--      # Only check the string length outside the loop.
--      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
--      teststring=
--      # Add a significant safety factor because C++ compilers can tack on
--      # massive amounts of additional arguments before passing them to the
--      # linker.  It appears as though 1/2 is a usable value.
--      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
--    fi
--    ;;
--  esac
--])
--if test -n $lt_cv_sys_max_cmd_len ; then
--  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
--else
--  AC_MSG_RESULT(none)
--fi
--max_cmd_len=$lt_cv_sys_max_cmd_len
--_LT_DECL([], [max_cmd_len], [0],
--    [What is the maximum length of a command?])
--])# LT_CMD_MAX_LEN
--
--# Old name:
--AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
--
--
--# _LT_HEADER_DLFCN
--# ----------------
--m4_defun([_LT_HEADER_DLFCN],
--[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
--])# _LT_HEADER_DLFCN
--
--
--# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
--#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
--# ----------------------------------------------------------------
--m4_defun([_LT_TRY_DLOPEN_SELF],
--[m4_require([_LT_HEADER_DLFCN])dnl
--if test "$cross_compiling" = yes; then :
--  [$4]
--else
--  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
--  lt_status=$lt_dlunknown
--  cat > conftest.$ac_ext <<_LT_EOF
--[#line __oline__ "configure"
--#include "confdefs.h"
--
--#if HAVE_DLFCN_H
--#include <dlfcn.h>
--#endif
--
--#include <stdio.h>
--
--#ifdef RTLD_GLOBAL
--#  define LT_DLGLOBAL		RTLD_GLOBAL
--#else
--#  ifdef DL_GLOBAL
--#    define LT_DLGLOBAL		DL_GLOBAL
--#  else
--#    define LT_DLGLOBAL		0
--#  endif
--#endif
--
--/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
--   find out it does not work in some platform. */
--#ifndef LT_DLLAZY_OR_NOW
--#  ifdef RTLD_LAZY
--#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
--#  else
--#    ifdef DL_LAZY
--#      define LT_DLLAZY_OR_NOW		DL_LAZY
--#    else
--#      ifdef RTLD_NOW
--#        define LT_DLLAZY_OR_NOW	RTLD_NOW
--#      else
--#        ifdef DL_NOW
--#          define LT_DLLAZY_OR_NOW	DL_NOW
--#        else
--#          define LT_DLLAZY_OR_NOW	0
--#        endif
--#      endif
--#    endif
--#  endif
--#endif
--
--void fnord() { int i=42;}
--int main ()
--{
--  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
--  int status = $lt_dlunknown;
--
--  if (self)
--    {
--      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
--      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
--      /* dlclose (self); */
--    }
--  else
--    puts (dlerror ());
--
--  return status;
--}]
--_LT_EOF
--  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
--    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
--    lt_status=$?
--    case x$lt_status in
--      x$lt_dlno_uscore) $1 ;;
--      x$lt_dlneed_uscore) $2 ;;
--      x$lt_dlunknown|x*) $3 ;;
--    esac
--  else :
--    # compilation failed
--    $3
--  fi
--fi
--rm -fr conftest*
--])# _LT_TRY_DLOPEN_SELF
--
--
--# LT_SYS_DLOPEN_SELF
--# ------------------
--AC_DEFUN([LT_SYS_DLOPEN_SELF],
--[m4_require([_LT_HEADER_DLFCN])dnl
--if test "x$enable_dlopen" != xyes; then
--  enable_dlopen=unknown
--  enable_dlopen_self=unknown
--  enable_dlopen_self_static=unknown
--else
--  lt_cv_dlopen=no
--  lt_cv_dlopen_libs=
--
--  case $host_os in
--  beos*)
--    lt_cv_dlopen="load_add_on"
--    lt_cv_dlopen_libs=
--    lt_cv_dlopen_self=yes
--    ;;
--
--  mingw* | pw32* | cegcc*)
--    lt_cv_dlopen="LoadLibrary"
--    lt_cv_dlopen_libs=
--    ;;
--
--  cygwin*)
--    lt_cv_dlopen="dlopen"
--    lt_cv_dlopen_libs=
--    ;;
--
--  darwin*)
--  # if libdl is installed we need to link against it
--    AC_CHECK_LIB([dl], [dlopen],
--		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
--    lt_cv_dlopen="dyld"
--    lt_cv_dlopen_libs=
--    lt_cv_dlopen_self=yes
--    ])
--    ;;
--
--  *)
--    AC_CHECK_FUNC([shl_load],
--	  [lt_cv_dlopen="shl_load"],
--      [AC_CHECK_LIB([dld], [shl_load],
--	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
--	[AC_CHECK_FUNC([dlopen],
--	      [lt_cv_dlopen="dlopen"],
--	  [AC_CHECK_LIB([dl], [dlopen],
--		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
--	    [AC_CHECK_LIB([svld], [dlopen],
--		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
--	      [AC_CHECK_LIB([dld], [dld_link],
--		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
--	      ])
--	    ])
--	  ])
--	])
--      ])
--    ;;
--  esac
--
--  if test "x$lt_cv_dlopen" != xno; then
--    enable_dlopen=yes
--  else
--    enable_dlopen=no
--  fi
--
--  case $lt_cv_dlopen in
--  dlopen)
--    save_CPPFLAGS="$CPPFLAGS"
--    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
--
--    save_LDFLAGS="$LDFLAGS"
--    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
--
--    save_LIBS="$LIBS"
--    LIBS="$lt_cv_dlopen_libs $LIBS"
--
--    AC_CACHE_CHECK([whether a program can dlopen itself],
--	  lt_cv_dlopen_self, [dnl
--	  _LT_TRY_DLOPEN_SELF(
--	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
--	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
--    ])
--
--    if test "x$lt_cv_dlopen_self" = xyes; then
--      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
--      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
--	  lt_cv_dlopen_self_static, [dnl
--	  _LT_TRY_DLOPEN_SELF(
--	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
--	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
--      ])
--    fi
--
--    CPPFLAGS="$save_CPPFLAGS"
--    LDFLAGS="$save_LDFLAGS"
--    LIBS="$save_LIBS"
--    ;;
--  esac
--
--  case $lt_cv_dlopen_self in
--  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
--  *) enable_dlopen_self=unknown ;;
--  esac
--
--  case $lt_cv_dlopen_self_static in
--  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
--  *) enable_dlopen_self_static=unknown ;;
--  esac
--fi
--_LT_DECL([dlopen_support], [enable_dlopen], [0],
--	 [Whether dlopen is supported])
--_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
--	 [Whether dlopen of programs is supported])
--_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
--	 [Whether dlopen of statically linked programs is supported])
--])# LT_SYS_DLOPEN_SELF
--
--# Old name:
--AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
--
--
--# _LT_COMPILER_C_O([TAGNAME])
--# ---------------------------
--# Check to see if options -c and -o are simultaneously supported by compiler.
--# This macro does not hard code the compiler like AC_PROG_CC_C_O.
--m4_defun([_LT_COMPILER_C_O],
--[m4_require([_LT_DECL_SED])dnl
--m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--m4_require([_LT_TAG_COMPILER])dnl
--AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
--  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
--  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
--   $RM -r conftest 2>/dev/null
--   mkdir conftest
--   cd conftest
--   mkdir out
--   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
--
--   lt_compiler_flag="-o out/conftest2.$ac_objext"
--   # Insert the option either (1) after the last *FLAGS variable, or
--   # (2) before a word containing "conftest.", or (3) at the end.
--   # Note that $ac_compile itself does not contain backslashes and begins
--   # with a dollar sign (not a hyphen), so the echo should work correctly.
--   lt_compile=`echo "$ac_compile" | $SED \
--   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
--   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
--   -e 's:$: $lt_compiler_flag:'`
--   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
--   (eval "$lt_compile" 2>out/conftest.err)
--   ac_status=$?
--   cat out/conftest.err >&AS_MESSAGE_LOG_FD
--   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
--   if (exit $ac_status) && test -s out/conftest2.$ac_objext
--   then
--     # The compiler can only warn and ignore the option if not recognized
--     # So say no if there are warnings
--     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
--     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
--     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
--       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
--     fi
--   fi
--   chmod u+w . 2>&AS_MESSAGE_LOG_FD
--   $RM conftest*
--   # SGI C++ compiler will create directory out/ii_files/ for
--   # template instantiation
--   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
--   $RM out/* && rmdir out
--   cd ..
--   $RM -r conftest
--   $RM conftest*
--])
--_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
--	[Does compiler simultaneously support -c and -o options?])
--])# _LT_COMPILER_C_O
--
--
--# _LT_COMPILER_FILE_LOCKS([TAGNAME])
--# ----------------------------------
--# Check to see if we can do hard links to lock some files if needed
--m4_defun([_LT_COMPILER_FILE_LOCKS],
--[m4_require([_LT_ENABLE_LOCK])dnl
--m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--_LT_COMPILER_C_O([$1])
--
--hard_links="nottested"
--if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
--  # do not overwrite the value of need_locks provided by the user
--  AC_MSG_CHECKING([if we can lock with hard links])
--  hard_links=yes
--  $RM conftest*
--  ln conftest.a conftest.b 2>/dev/null && hard_links=no
--  touch conftest.a
--  ln conftest.a conftest.b 2>&5 || hard_links=no
--  ln conftest.a conftest.b 2>/dev/null && hard_links=no
--  AC_MSG_RESULT([$hard_links])
--  if test "$hard_links" = no; then
--    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
--    need_locks=warn
--  fi
--else
--  need_locks=no
--fi
--_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
--])# _LT_COMPILER_FILE_LOCKS
--
--
--# _LT_CHECK_OBJDIR
--# ----------------
--m4_defun([_LT_CHECK_OBJDIR],
--[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
--[rm -f .libs 2>/dev/null
--mkdir .libs 2>/dev/null
--if test -d .libs; then
--  lt_cv_objdir=.libs
--else
--  # MS-DOS does not allow filenames that begin with a dot.
--  lt_cv_objdir=_libs
--fi
--rmdir .libs 2>/dev/null])
--objdir=$lt_cv_objdir
--_LT_DECL([], [objdir], [0],
--         [The name of the directory that contains temporary libtool files])dnl
--m4_pattern_allow([LT_OBJDIR])dnl
--AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
--  [Define to the sub-directory in which libtool stores uninstalled libraries.])
--])# _LT_CHECK_OBJDIR
--
--
--# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
--# --------------------------------------
--# Check hardcoding attributes.
--m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
--[AC_MSG_CHECKING([how to hardcode library paths into programs])
--_LT_TAGVAR(hardcode_action, $1)=
--if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
--   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
--   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
--
--  # We can hardcode non-existent directories.
--  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
--     # If the only mechanism to avoid hardcoding is shlibpath_var, we
--     # have to relink, otherwise we might link with an installed library
--     # when we should be linking with a yet-to-be-installed one
--     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
--     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
--    # Linking always hardcodes the temporary library directory.
--    _LT_TAGVAR(hardcode_action, $1)=relink
--  else
--    # We can link without hardcoding, and we can hardcode nonexisting dirs.
--    _LT_TAGVAR(hardcode_action, $1)=immediate
--  fi
--else
--  # We cannot hardcode anything, or else we can only hardcode existing
--  # directories.
--  _LT_TAGVAR(hardcode_action, $1)=unsupported
--fi
--AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
--
--if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
--   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
--  # Fast installation is not supported
--  enable_fast_install=no
--elif test "$shlibpath_overrides_runpath" = yes ||
--     test "$enable_shared" = no; then
--  # Fast installation is not necessary
--  enable_fast_install=needless
--fi
--_LT_TAGDECL([], [hardcode_action], [0],
--    [How to hardcode a shared library path into an executable])
--])# _LT_LINKER_HARDCODE_LIBPATH
--
--
--# _LT_CMD_STRIPLIB
--# ----------------
--m4_defun([_LT_CMD_STRIPLIB],
--[m4_require([_LT_DECL_EGREP])
--striplib=
--old_striplib=
--AC_MSG_CHECKING([whether stripping libraries is possible])
--if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
--  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
--  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
--  AC_MSG_RESULT([yes])
--else
--# FIXME - insert some real tests, host_os isn't really good enough
--  case $host_os in
--  darwin*)
--    if test -n "$STRIP" ; then
--      striplib="$STRIP -x"
--      old_striplib="$STRIP -S"
--      AC_MSG_RESULT([yes])
--    else
--      AC_MSG_RESULT([no])
--    fi
--    ;;
--  *)
--    AC_MSG_RESULT([no])
--    ;;
--  esac
--fi
--_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
--_LT_DECL([], [striplib], [1])
--])# _LT_CMD_STRIPLIB
--
--
--# _LT_SYS_DYNAMIC_LINKER([TAG])
--# -----------------------------
--# PORTME Fill in your ld.so characteristics
--m4_defun([_LT_SYS_DYNAMIC_LINKER],
--[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--m4_require([_LT_DECL_EGREP])dnl
--m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--m4_require([_LT_DECL_OBJDUMP])dnl
--m4_require([_LT_DECL_SED])dnl
--AC_MSG_CHECKING([dynamic linker characteristics])
--m4_if([$1],
--	[], [
--if test "$GCC" = yes; then
--  case $host_os in
--    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
--    *) lt_awk_arg="/^libraries:/" ;;
--  esac
--  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
--  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
--    # if the path contains ";" then we assume it to be the separator
--    # otherwise default to the standard path separator (i.e. ":") - it is
--    # assumed that no part of a normal pathname contains ";" but that should
--    # okay in the real world where ";" in dirpaths is itself problematic.
--    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
--  else
--    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
--  fi
--  # Ok, now we have the path, separated by spaces, we can step through it
--  # and add multilib dir if necessary.
--  lt_tmp_lt_search_path_spec=
--  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
--  for lt_sys_path in $lt_search_path_spec; do
--    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
--      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
--    else
--      test -d "$lt_sys_path" && \
--	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
--    fi
--  done
--  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
--BEGIN {RS=" "; FS="/|\n";} {
--  lt_foo="";
--  lt_count=0;
--  for (lt_i = NF; lt_i > 0; lt_i--) {
--    if ($lt_i != "" && $lt_i != ".") {
--      if ($lt_i == "..") {
--        lt_count++;
--      } else {
--        if (lt_count == 0) {
--          lt_foo="/" $lt_i lt_foo;
--        } else {
--          lt_count--;
--        }
--      }
--    }
--  }
--  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
--  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
--}'`
--  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
--else
--  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
--fi])
--library_names_spec=
--libname_spec='lib$name'
--soname_spec=
--shrext_cmds=".so"
--postinstall_cmds=
--postuninstall_cmds=
--finish_cmds=
--finish_eval=
--shlibpath_var=
--shlibpath_overrides_runpath=unknown
--version_type=none
--dynamic_linker="$host_os ld.so"
--sys_lib_dlsearch_path_spec="/lib /usr/lib"
--need_lib_prefix=unknown
--hardcode_into_libs=no
--
--# when you set need_version to no, make sure it does not cause -set_version
--# flags to be left without arguments
--need_version=unknown
--
--case $host_os in
--aix3*)
--  version_type=linux
--  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
--  shlibpath_var=LIBPATH
--
--  # AIX 3 has no versioning support, so we append a major version to the name.
--  soname_spec='${libname}${release}${shared_ext}$major'
--  ;;
--
--aix[[4-9]]*)
--  version_type=linux
--  need_lib_prefix=no
--  need_version=no
--  hardcode_into_libs=yes
--  if test "$host_cpu" = ia64; then
--    # AIX 5 supports IA64
--    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
--    shlibpath_var=LD_LIBRARY_PATH
--  else
--    # With GCC up to 2.95.x, collect2 would create an import file
--    # for dependence libraries.  The import file would start with
--    # the line `#! .'.  This would cause the generated library to
--    # depend on `.', always an invalid library.  This was fixed in
--    # development snapshots of GCC prior to 3.0.
--    case $host_os in
--      aix4 | aix4.[[01]] | aix4.[[01]].*)
--      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
--	   echo ' yes '
--	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
--	:
--      else
--	can_build_shared=no
--      fi
--      ;;
--    esac
--    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
--    # soname into executable. Probably we can add versioning support to
--    # collect2, so additional links can be useful in future.
--    if test "$aix_use_runtimelinking" = yes; then
--      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
--      # instead of lib<name>.a to let people know that these are not
--      # typical AIX shared libraries.
--      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--    else
--      # We preserve .a as extension for shared libraries through AIX4.2
--      # and later when we are not doing run time linking.
--      library_names_spec='${libname}${release}.a $libname.a'
--      soname_spec='${libname}${release}${shared_ext}$major'
--    fi
--    shlibpath_var=LIBPATH
--  fi
--  ;;
--
--amigaos*)
--  case $host_cpu in
--  powerpc)
--    # Since July 2007 AmigaOS4 officially supports .so libraries.
--    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
--    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--    ;;
--  m68k)
--    library_names_spec='$libname.ixlibrary $libname.a'
--    # Create ${libname}_ixlibrary.a entries in /sys/libs.
--    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
--    ;;
--  esac
--  ;;
--
--beos*)
--  library_names_spec='${libname}${shared_ext}'
--  dynamic_linker="$host_os ld.so"
--  shlibpath_var=LIBRARY_PATH
--  ;;
--
--bsdi[[45]]*)
--  version_type=linux
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
--  shlibpath_var=LD_LIBRARY_PATH
--  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
--  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
--  # the default ld.so.conf also contains /usr/contrib/lib and
--  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
--  # libtool to hard-code these into programs
--  ;;
--
--cygwin* | mingw* | pw32* | cegcc*)
--  version_type=windows
--  shrext_cmds=".dll"
--  need_version=no
--  need_lib_prefix=no
--
--  case $GCC,$host_os in
--  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
--    library_names_spec='$libname.dll.a'
--    # DLL is installed to $(libdir)/../bin by postinstall_cmds
--    postinstall_cmds='base_file=`basename \${file}`~
--      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
--      dldir=$destdir/`dirname \$dlpath`~
--      test -d \$dldir || mkdir -p \$dldir~
--      $install_prog $dir/$dlname \$dldir/$dlname~
--      chmod a+x \$dldir/$dlname~
--      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
--        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
--      fi'
--    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
--      dlpath=$dir/\$dldll~
--       $RM \$dlpath'
--    shlibpath_overrides_runpath=yes
--
--    case $host_os in
--    cygwin*)
--      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
--      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
--      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
--      ;;
--    mingw* | cegcc*)
--      # MinGW DLLs use traditional 'lib' prefix
--      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
--      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
--      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
--        # It is most probably a Windows format PATH printed by
--        # mingw gcc, but we are running on Cygwin. Gcc prints its search
--        # path with ; separators, and with drive letters. We can handle the
--        # drive letters (cygwin fileutils understands them), so leave them,
--        # especially as we might pass files found there to a mingw objdump,
--        # which wouldn't understand a cygwinified path. Ahh.
--        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
--      else
--        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
--      fi
--      ;;
--    pw32*)
--      # pw32 DLLs use 'pw' prefix rather than 'lib'
--      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
--      ;;
--    esac
--    ;;
--
--  *)
--    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
--    ;;
--  esac
--  dynamic_linker='Win32 ld.exe'
--  # FIXME: first we should search . and the directory the executable is in
--  shlibpath_var=PATH
--  ;;
--
--darwin* | rhapsody*)
--  dynamic_linker="$host_os dyld"
--  version_type=darwin
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
--  soname_spec='${libname}${release}${major}$shared_ext'
--  shlibpath_overrides_runpath=yes
--  shlibpath_var=DYLD_LIBRARY_PATH
--  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
--m4_if([$1], [],[
--  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
--  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
--  ;;
--
--dgux*)
--  version_type=linux
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  ;;
--
--freebsd1*)
--  dynamic_linker=no
--  ;;
--
--freebsd* | dragonfly*)
--  # DragonFly does not have aout.  When/if they implement a new
--  # versioning mechanism, adjust this.
--  if test -x /usr/bin/objformat; then
--    objformat=`/usr/bin/objformat`
--  else
--    case $host_os in
--    freebsd[[123]]*) objformat=aout ;;
--    *) objformat=elf ;;
--    esac
--  fi
--  version_type=freebsd-$objformat
--  case $version_type in
--    freebsd-elf*)
--      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
--      need_version=no
--      need_lib_prefix=no
--      ;;
--    freebsd-*)
--      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
--      need_version=yes
--      ;;
--  esac
--  shlibpath_var=LD_LIBRARY_PATH
--  case $host_os in
--  freebsd2*)
--    shlibpath_overrides_runpath=yes
--    ;;
--  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
--    shlibpath_overrides_runpath=yes
--    hardcode_into_libs=yes
--    ;;
--  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
--  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
--    shlibpath_overrides_runpath=no
--    hardcode_into_libs=yes
--    ;;
--  *) # from 4.6 on, and DragonFly
--    shlibpath_overrides_runpath=yes
--    hardcode_into_libs=yes
--    ;;
--  esac
--  ;;
--
--gnu*)
--  version_type=linux
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  hardcode_into_libs=yes
--  ;;
--
--hpux9* | hpux10* | hpux11*)
--  # Give a soname corresponding to the major version so that dld.sl refuses to
--  # link against other versions.
--  version_type=sunos
--  need_lib_prefix=no
--  need_version=no
--  case $host_cpu in
--  ia64*)
--    shrext_cmds='.so'
--    hardcode_into_libs=yes
--    dynamic_linker="$host_os dld.so"
--    shlibpath_var=LD_LIBRARY_PATH
--    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
--    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--    soname_spec='${libname}${release}${shared_ext}$major'
--    if test "X$HPUX_IA64_MODE" = X32; then
--      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
--    else
--      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
--    fi
--    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
--    ;;
--  hppa*64*)
--    shrext_cmds='.sl'
--    hardcode_into_libs=yes
--    dynamic_linker="$host_os dld.sl"
--    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
--    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
--    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--    soname_spec='${libname}${release}${shared_ext}$major'
--    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
--    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
--    ;;
--  *)
--    shrext_cmds='.sl'
--    dynamic_linker="$host_os dld.sl"
--    shlibpath_var=SHLIB_PATH
--    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
--    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--    soname_spec='${libname}${release}${shared_ext}$major'
--    ;;
--  esac
--  # HP-UX runs *really* slowly unless shared libraries are mode 555.
--  postinstall_cmds='chmod 555 $lib'
--  ;;
--
--interix[[3-9]]*)
--  version_type=linux
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=no
--  hardcode_into_libs=yes
--  ;;
--
--irix5* | irix6* | nonstopux*)
--  case $host_os in
--    nonstopux*) version_type=nonstopux ;;
--    *)
--	if test "$lt_cv_prog_gnu_ld" = yes; then
--		version_type=linux
--	else
--		version_type=irix
--	fi ;;
--  esac
--  need_lib_prefix=no
--  need_version=no
--  soname_spec='${libname}${release}${shared_ext}$major'
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
--  case $host_os in
--  irix5* | nonstopux*)
--    libsuff= shlibsuff=
--    ;;
--  *)
--    case $LD in # libtool.m4 will add one of these switches to LD
--    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
--      libsuff= shlibsuff= libmagic=32-bit;;
--    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
--      libsuff=32 shlibsuff=N32 libmagic=N32;;
--    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
--      libsuff=64 shlibsuff=64 libmagic=64-bit;;
--    *) libsuff= shlibsuff= libmagic=never-match;;
--    esac
--    ;;
--  esac
--  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
--  shlibpath_overrides_runpath=no
--  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
--  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
--  hardcode_into_libs=yes
--  ;;
--
--# No shared lib support for Linux oldld, aout, or coff.
--linux*oldld* | linux*aout* | linux*coff*)
--  dynamic_linker=no
--  ;;
--
--# This must be Linux ELF.
--linux* | k*bsd*-gnu)
--  version_type=linux
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=no
--  # Some binutils ld are patched to set DT_RUNPATH
--  save_LDFLAGS=$LDFLAGS
--  save_libdir=$libdir
--  eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
--       LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
--  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
--    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
--       [shlibpath_overrides_runpath=yes])])
--  LDFLAGS=$save_LDFLAGS
--  libdir=$save_libdir
--
--  # This implies no fast_install, which is unacceptable.
--  # Some rework will be needed to allow for fast_install
--  # before this can be enabled.
--  hardcode_into_libs=yes
--
--  # Add ABI-specific directories to the system library path.
--  sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
--
--  # Append ld.so.conf contents to the search path
--  if test -f /etc/ld.so.conf; then
--    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
--    sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
--  fi
--
--  # We used to test for /lib/ld.so.1 and disable shared libraries on
--  # powerpc, because MkLinux only supported shared libraries with the
--  # GNU dynamic linker.  Since this was broken with cross compilers,
--  # most powerpc-linux boxes support dynamic linking these days and
--  # people can always --disable-shared, the test was removed, and we
--  # assume the GNU/Linux dynamic linker is in use.
--  dynamic_linker='GNU/Linux ld.so'
--  ;;
--
--netbsd*)
--  version_type=sunos
--  need_lib_prefix=no
--  need_version=no
--  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
--    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
--    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
--    dynamic_linker='NetBSD (a.out) ld.so'
--  else
--    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
--    soname_spec='${libname}${release}${shared_ext}$major'
--    dynamic_linker='NetBSD ld.elf_so'
--  fi
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=yes
--  hardcode_into_libs=yes
--  ;;
--
--newsos6)
--  version_type=linux
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=yes
--  ;;
--
--*nto* | *qnx*)
--  version_type=qnx
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=no
--  hardcode_into_libs=yes
--  dynamic_linker='ldqnx.so'
--  ;;
--
--openbsd*)
--  version_type=sunos
--  sys_lib_dlsearch_path_spec="/usr/lib"
--  need_lib_prefix=no
--  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
--  case $host_os in
--    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
--    *)				need_version=no  ;;
--  esac
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
--  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
--  shlibpath_var=LD_LIBRARY_PATH
--  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
--    case $host_os in
--      openbsd2.[[89]] | openbsd2.[[89]].*)
--	shlibpath_overrides_runpath=no
--	;;
--      *)
--	shlibpath_overrides_runpath=yes
--	;;
--      esac
--  else
--    shlibpath_overrides_runpath=yes
--  fi
--  ;;
--
--os2*)
--  libname_spec='$name'
--  shrext_cmds=".dll"
--  need_lib_prefix=no
--  library_names_spec='$libname${shared_ext} $libname.a'
--  dynamic_linker='OS/2 ld.exe'
--  shlibpath_var=LIBPATH
--  ;;
--
--osf3* | osf4* | osf5*)
--  version_type=osf
--  need_lib_prefix=no
--  need_version=no
--  soname_spec='${libname}${release}${shared_ext}$major'
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  shlibpath_var=LD_LIBRARY_PATH
--  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
--  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
--  ;;
--
--rdos*)
--  dynamic_linker=no
--  ;;
--
--solaris*)
--  version_type=linux
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=yes
--  hardcode_into_libs=yes
--  # ldd complains unless libraries are executable
--  postinstall_cmds='chmod +x $lib'
--  ;;
--
--sunos4*)
--  version_type=sunos
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
--  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=yes
--  if test "$with_gnu_ld" = yes; then
--    need_lib_prefix=no
--  fi
--  need_version=yes
--  ;;
--
--sysv4 | sysv4.3*)
--  version_type=linux
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  case $host_vendor in
--    sni)
--      shlibpath_overrides_runpath=no
--      need_lib_prefix=no
--      runpath_var=LD_RUN_PATH
--      ;;
--    siemens)
--      need_lib_prefix=no
--      ;;
--    motorola)
--      need_lib_prefix=no
--      need_version=no
--      shlibpath_overrides_runpath=no
--      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
--      ;;
--  esac
--  ;;
--
--sysv4*MP*)
--  if test -d /usr/nec ;then
--    version_type=linux
--    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
--    soname_spec='$libname${shared_ext}.$major'
--    shlibpath_var=LD_LIBRARY_PATH
--  fi
--  ;;
--
--sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
--  version_type=freebsd-elf
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=yes
--  hardcode_into_libs=yes
--  if test "$with_gnu_ld" = yes; then
--    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
--  else
--    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
--    case $host_os in
--      sco3.2v5*)
--        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
--	;;
--    esac
--  fi
--  sys_lib_dlsearch_path_spec='/usr/lib'
--  ;;
--
--tpf*)
--  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
--  version_type=linux
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=no
--  hardcode_into_libs=yes
--  ;;
--
--uts4*)
--  version_type=linux
--  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
--  soname_spec='${libname}${release}${shared_ext}$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  ;;
--
--*)
--  dynamic_linker=no
--  ;;
--esac
--AC_MSG_RESULT([$dynamic_linker])
--test "$dynamic_linker" = no && can_build_shared=no
--
--variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
--if test "$GCC" = yes; then
--  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
--fi
--
--if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
--  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
--fi
--if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
--  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
--fi
--
--_LT_DECL([], [variables_saved_for_relink], [1],
--    [Variables whose values should be saved in libtool wrapper scripts and
--    restored at link time])
--_LT_DECL([], [need_lib_prefix], [0],
--    [Do we need the "lib" prefix for modules?])
--_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
--_LT_DECL([], [version_type], [0], [Library versioning type])
--_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
--_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
--_LT_DECL([], [shlibpath_overrides_runpath], [0],
--    [Is shlibpath searched before the hard-coded library search path?])
--_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
--_LT_DECL([], [library_names_spec], [1],
--    [[List of archive names.  First name is the real one, the rest are links.
--    The last name is the one that the linker finds with -lNAME]])
--_LT_DECL([], [soname_spec], [1],
--    [[The coded name of the library, if different from the real name]])
--_LT_DECL([], [postinstall_cmds], [2],
--    [Command to use after installation of a shared archive])
--_LT_DECL([], [postuninstall_cmds], [2],
--    [Command to use after uninstallation of a shared archive])
--_LT_DECL([], [finish_cmds], [2],
--    [Commands used to finish a libtool library installation in a directory])
--_LT_DECL([], [finish_eval], [1],
--    [[As "finish_cmds", except a single script fragment to be evaled but
--    not shown]])
--_LT_DECL([], [hardcode_into_libs], [0],
--    [Whether we should hardcode library paths into libraries])
--_LT_DECL([], [sys_lib_search_path_spec], [2],
--    [Compile-time system search path for libraries])
--_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
--    [Run-time system search path for libraries])
--])# _LT_SYS_DYNAMIC_LINKER
--
--
--# _LT_PATH_TOOL_PREFIX(TOOL)
--# --------------------------
--# find a file program which can recognize shared library
--AC_DEFUN([_LT_PATH_TOOL_PREFIX],
--[m4_require([_LT_DECL_EGREP])dnl
--AC_MSG_CHECKING([for $1])
--AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
--[case $MAGIC_CMD in
--[[\\/*] |  ?:[\\/]*])
--  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
--  ;;
--*)
--  lt_save_MAGIC_CMD="$MAGIC_CMD"
--  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
--dnl $ac_dummy forces splitting on constant user-supplied paths.
--dnl POSIX.2 word splitting is done only on the output of word expansions,
--dnl not every word.  This closes a longstanding sh security hole.
--  ac_dummy="m4_if([$2], , $PATH, [$2])"
--  for ac_dir in $ac_dummy; do
--    IFS="$lt_save_ifs"
--    test -z "$ac_dir" && ac_dir=.
--    if test -f $ac_dir/$1; then
--      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
--      if test -n "$file_magic_test_file"; then
--	case $deplibs_check_method in
--	"file_magic "*)
--	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
--	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
--	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
--	    $EGREP "$file_magic_regex" > /dev/null; then
--	    :
--	  else
--	    cat <<_LT_EOF 1>&2
--
--*** Warning: the command libtool uses to detect shared libraries,
--*** $file_magic_cmd, produces output that libtool cannot recognize.
--*** The result is that libtool may fail to recognize shared libraries
--*** as such.  This will affect the creation of libtool libraries that
--*** depend on shared libraries, but programs linked with such libtool
--*** libraries will work regardless of this problem.  Nevertheless, you
--*** may want to report the problem to your system manager and/or to
--*** bug-libtool@gnu.org
--
--_LT_EOF
--	  fi ;;
--	esac
--      fi
--      break
--    fi
--  done
--  IFS="$lt_save_ifs"
--  MAGIC_CMD="$lt_save_MAGIC_CMD"
--  ;;
--esac])
--MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
--if test -n "$MAGIC_CMD"; then
--  AC_MSG_RESULT($MAGIC_CMD)
--else
--  AC_MSG_RESULT(no)
--fi
--_LT_DECL([], [MAGIC_CMD], [0],
--	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
--])# _LT_PATH_TOOL_PREFIX
--
--# Old name:
--AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
--
--
--# _LT_PATH_MAGIC
--# --------------
--# find a file program which can recognize a shared library
--m4_defun([_LT_PATH_MAGIC],
--[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
--if test -z "$lt_cv_path_MAGIC_CMD"; then
--  if test -n "$ac_tool_prefix"; then
--    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
--  else
--    MAGIC_CMD=:
--  fi
--fi
--])# _LT_PATH_MAGIC
--
--
--# LT_PATH_LD
--# ----------
--# find the pathname to the GNU or non-GNU linker
--AC_DEFUN([LT_PATH_LD],
--[AC_REQUIRE([AC_PROG_CC])dnl
--AC_REQUIRE([AC_CANONICAL_HOST])dnl
--AC_REQUIRE([AC_CANONICAL_BUILD])dnl
--m4_require([_LT_DECL_SED])dnl
--m4_require([_LT_DECL_EGREP])dnl
--
--AC_ARG_WITH([gnu-ld],
--    [AS_HELP_STRING([--with-gnu-ld],
--	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
--    [test "$withval" = no || with_gnu_ld=yes],
--    [with_gnu_ld=no])dnl
--
--ac_prog=ld
--if test "$GCC" = yes; then
--  # Check if gcc -print-prog-name=ld gives a path.
--  AC_MSG_CHECKING([for ld used by $CC])
--  case $host in
--  *-*-mingw*)
--    # gcc leaves a trailing carriage return which upsets mingw
--    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
--  *)
--    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
--  esac
--  case $ac_prog in
--    # Accept absolute paths.
--    [[\\/]]* | ?:[[\\/]]*)
--      re_direlt='/[[^/]][[^/]]*/\.\./'
--      # Canonicalize the pathname of ld
--      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
--      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
--	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
--      done
--      test -z "$LD" && LD="$ac_prog"
--      ;;
--  "")
--    # If it fails, then pretend we aren't using GCC.
--    ac_prog=ld
--    ;;
--  *)
--    # If it is relative, then search for the first ld in PATH.
--    with_gnu_ld=unknown
--    ;;
--  esac
--elif test "$with_gnu_ld" = yes; then
--  AC_MSG_CHECKING([for GNU ld])
--else
--  AC_MSG_CHECKING([for non-GNU ld])
--fi
--AC_CACHE_VAL(lt_cv_path_LD,
--[if test -z "$LD"; then
--  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
--  for ac_dir in $PATH; do
--    IFS="$lt_save_ifs"
--    test -z "$ac_dir" && ac_dir=.
--    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
--      lt_cv_path_LD="$ac_dir/$ac_prog"
--      # Check to see if the program is GNU ld.  I'd rather use --version,
--      # but apparently some variants of GNU ld only accept -v.
--      # Break only if it was the GNU/non-GNU ld that we prefer.
--      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
--      *GNU* | *'with BFD'*)
--	test "$with_gnu_ld" != no && break
--	;;
--      *)
--	test "$with_gnu_ld" != yes && break
--	;;
--      esac
--    fi
--  done
--  IFS="$lt_save_ifs"
--else
--  lt_cv_path_LD="$LD" # Let the user override the test with a path.
--fi])
--LD="$lt_cv_path_LD"
--if test -n "$LD"; then
--  AC_MSG_RESULT($LD)
--else
--  AC_MSG_RESULT(no)
--fi
--test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
--_LT_PATH_LD_GNU
--AC_SUBST([LD])
--
--_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
--])# LT_PATH_LD
--
--# Old names:
--AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
--AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AM_PROG_LD], [])
--dnl AC_DEFUN([AC_PROG_LD], [])
--
--
--# _LT_PATH_LD_GNU
--#- --------------
--m4_defun([_LT_PATH_LD_GNU],
--[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
--[# I'd rather use --version here, but apparently some GNU lds only accept -v.
--case `$LD -v 2>&1 </dev/null` in
--*GNU* | *'with BFD'*)
--  lt_cv_prog_gnu_ld=yes
--  ;;
--*)
--  lt_cv_prog_gnu_ld=no
--  ;;
--esac])
--with_gnu_ld=$lt_cv_prog_gnu_ld
--])# _LT_PATH_LD_GNU
--
--
--# _LT_CMD_RELOAD
--# --------------
--# find reload flag for linker
--#   -- PORTME Some linkers may need a different reload flag.
--m4_defun([_LT_CMD_RELOAD],
--[AC_CACHE_CHECK([for $LD option to reload object files],
--  lt_cv_ld_reload_flag,
--  [lt_cv_ld_reload_flag='-r'])
--reload_flag=$lt_cv_ld_reload_flag
--case $reload_flag in
--"" | " "*) ;;
--*) reload_flag=" $reload_flag" ;;
--esac
--reload_cmds='$LD$reload_flag -o $output$reload_objs'
--case $host_os in
--  darwin*)
--    if test "$GCC" = yes; then
--      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
--    else
--      reload_cmds='$LD$reload_flag -o $output$reload_objs'
--    fi
--    ;;
--esac
--_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
--_LT_DECL([], [reload_cmds], [2])dnl
--])# _LT_CMD_RELOAD
--
--
--# _LT_CHECK_MAGIC_METHOD
--# ----------------------
--# how to check for library dependencies
--#  -- PORTME fill in with the dynamic library characteristics
--m4_defun([_LT_CHECK_MAGIC_METHOD],
--[m4_require([_LT_DECL_EGREP])
--m4_require([_LT_DECL_OBJDUMP])
--AC_CACHE_CHECK([how to recognize dependent libraries],
--lt_cv_deplibs_check_method,
--[lt_cv_file_magic_cmd='$MAGIC_CMD'
--lt_cv_file_magic_test_file=
--lt_cv_deplibs_check_method='unknown'
--# Need to set the preceding variable on all platforms that support
--# interlibrary dependencies.
--# 'none' -- dependencies not supported.
--# `unknown' -- same as none, but documents that we really don't know.
--# 'pass_all' -- all dependencies passed with no checks.
--# 'test_compile' -- check by making test program.
--# 'file_magic [[regex]]' -- check by looking for files in library path
--# which responds to the $file_magic_cmd with a given extended regex.
--# If you have `file' or equivalent on your system and you're not sure
--# whether `pass_all' will *always* work, you probably want this one.
--
--case $host_os in
--aix[[4-9]]*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--beos*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--bsdi[[45]]*)
--  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
--  lt_cv_file_magic_cmd='/usr/bin/file -L'
--  lt_cv_file_magic_test_file=/shlib/libc.so
--  ;;
--
--cygwin*)
--  # func_win32_libid is a shell function defined in ltmain.sh
--  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
--  lt_cv_file_magic_cmd='func_win32_libid'
--  ;;
--
--mingw* | pw32*)
--  # Base MSYS/MinGW do not provide the 'file' command needed by
--  # func_win32_libid shell function, so use a weaker test based on 'objdump',
--  # unless we find 'file', for example because we are cross-compiling.
--  if ( file / ) >/dev/null 2>&1; then
--    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
--    lt_cv_file_magic_cmd='func_win32_libid'
--  else
--    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
--    lt_cv_file_magic_cmd='$OBJDUMP -f'
--  fi
--  ;;
--
--cegcc)
--  # use the weaker test based on 'objdump'. See mingw*.
--  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
--  lt_cv_file_magic_cmd='$OBJDUMP -f'
--  ;;
--
--darwin* | rhapsody*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--freebsd* | dragonfly*)
--  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
--    case $host_cpu in
--    i*86 )
--      # Not sure whether the presence of OpenBSD here was a mistake.
--      # Let's accept both of them until this is cleared up.
--      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
--      lt_cv_file_magic_cmd=/usr/bin/file
--      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
--      ;;
--    esac
--  else
--    lt_cv_deplibs_check_method=pass_all
--  fi
--  ;;
--
--gnu*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--hpux10.20* | hpux11*)
--  lt_cv_file_magic_cmd=/usr/bin/file
--  case $host_cpu in
--  ia64*)
--    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
--    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
--    ;;
--  hppa*64*)
--    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
--    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
--    ;;
--  *)
--    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
--    lt_cv_file_magic_test_file=/usr/lib/libc.sl
--    ;;
--  esac
--  ;;
--
--interix[[3-9]]*)
--  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
--  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
--  ;;
--
--irix5* | irix6* | nonstopux*)
--  case $LD in
--  *-32|*"-32 ") libmagic=32-bit;;
--  *-n32|*"-n32 ") libmagic=N32;;
--  *-64|*"-64 ") libmagic=64-bit;;
--  *) libmagic=never-match;;
--  esac
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--# This must be Linux ELF.
--linux* | k*bsd*-gnu)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--netbsd*)
--  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
--    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
--  else
--    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
--  fi
--  ;;
--
--newos6*)
--  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
--  lt_cv_file_magic_cmd=/usr/bin/file
--  lt_cv_file_magic_test_file=/usr/lib/libnls.so
--  ;;
--
--*nto* | *qnx*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--openbsd*)
--  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
--    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
--  else
--    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
--  fi
--  ;;
--
--osf3* | osf4* | osf5*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--rdos*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--solaris*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--
--sysv4 | sysv4.3*)
--  case $host_vendor in
--  motorola)
--    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
--    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
--    ;;
--  ncr)
--    lt_cv_deplibs_check_method=pass_all
--    ;;
--  sequent)
--    lt_cv_file_magic_cmd='/bin/file'
--    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
--    ;;
--  sni)
--    lt_cv_file_magic_cmd='/bin/file'
--    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
--    lt_cv_file_magic_test_file=/lib/libc.so
--    ;;
--  siemens)
--    lt_cv_deplibs_check_method=pass_all
--    ;;
--  pc)
--    lt_cv_deplibs_check_method=pass_all
--    ;;
--  esac
--  ;;
--
--tpf*)
--  lt_cv_deplibs_check_method=pass_all
--  ;;
--esac
--])
--file_magic_cmd=$lt_cv_file_magic_cmd
--deplibs_check_method=$lt_cv_deplibs_check_method
--test -z "$deplibs_check_method" && deplibs_check_method=unknown
--
--_LT_DECL([], [deplibs_check_method], [1],
--    [Method to check whether dependent libraries are shared objects])
--_LT_DECL([], [file_magic_cmd], [1],
--    [Command to use when deplibs_check_method == "file_magic"])
--])# _LT_CHECK_MAGIC_METHOD
--
--
--# LT_PATH_NM
--# ----------
--# find the pathname to a BSD- or MS-compatible name lister
--AC_DEFUN([LT_PATH_NM],
--[AC_REQUIRE([AC_PROG_CC])dnl
--AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
--[if test -n "$NM"; then
--  # Let the user override the test.
--  lt_cv_path_NM="$NM"
--else
--  lt_nm_to_check="${ac_tool_prefix}nm"
--  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
--    lt_nm_to_check="$lt_nm_to_check nm"
--  fi
--  for lt_tmp_nm in $lt_nm_to_check; do
--    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
--    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
--      IFS="$lt_save_ifs"
--      test -z "$ac_dir" && ac_dir=.
--      tmp_nm="$ac_dir/$lt_tmp_nm"
--      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
--	# Check to see if the nm accepts a BSD-compat flag.
--	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
--	#   nm: unknown option "B" ignored
--	# Tru64's nm complains that /dev/null is an invalid object file
--	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
--	*/dev/null* | *'Invalid file or object type'*)
--	  lt_cv_path_NM="$tmp_nm -B"
--	  break
--	  ;;
--	*)
--	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
--	  */dev/null*)
--	    lt_cv_path_NM="$tmp_nm -p"
--	    break
--	    ;;
--	  *)
--	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
--	    continue # so that we can try to find one that supports BSD flags
--	    ;;
--	  esac
--	  ;;
--	esac
--      fi
--    done
--    IFS="$lt_save_ifs"
--  done
--  : ${lt_cv_path_NM=no}
--fi])
--if test "$lt_cv_path_NM" != "no"; then
--  NM="$lt_cv_path_NM"
--else
--  # Didn't find any BSD compatible name lister, look for dumpbin.
--  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
--  AC_SUBST([DUMPBIN])
--  if test "$DUMPBIN" != ":"; then
--    NM="$DUMPBIN"
--  fi
--fi
--test -z "$NM" && NM=nm
--AC_SUBST([NM])
--_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
--
--AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
--  [lt_cv_nm_interface="BSD nm"
--  echo "int some_variable = 0;" > conftest.$ac_ext
--  (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
--  (eval "$ac_compile" 2>conftest.err)
--  cat conftest.err >&AS_MESSAGE_LOG_FD
--  (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
--  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
--  cat conftest.err >&AS_MESSAGE_LOG_FD
--  (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
--  cat conftest.out >&AS_MESSAGE_LOG_FD
--  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
--    lt_cv_nm_interface="MS dumpbin"
--  fi
--  rm -f conftest*])
--])# LT_PATH_NM
--
--# Old names:
--AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
--AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AM_PROG_NM], [])
--dnl AC_DEFUN([AC_PROG_NM], [])
--
--
--# LT_LIB_M
--# --------
--# check for math library
--AC_DEFUN([LT_LIB_M],
--[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--LIBM=
--case $host in
--*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
--  # These system don't have libm, or don't need it
--  ;;
--*-ncr-sysv4.3*)
--  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
--  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
--  ;;
--*)
--  AC_CHECK_LIB(m, cos, LIBM="-lm")
--  ;;
--esac
--AC_SUBST([LIBM])
--])# LT_LIB_M
--
--# Old name:
--AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_CHECK_LIBM], [])
--
--
--# _LT_COMPILER_NO_RTTI([TAGNAME])
--# -------------------------------
--m4_defun([_LT_COMPILER_NO_RTTI],
--[m4_require([_LT_TAG_COMPILER])dnl
--
--_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
--
--if test "$GCC" = yes; then
--  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
--
--  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
--    lt_cv_prog_compiler_rtti_exceptions,
--    [-fno-rtti -fno-exceptions], [],
--    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
--fi
--_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
--	[Compiler flag to turn off builtin functions])
--])# _LT_COMPILER_NO_RTTI
--
--
--# _LT_CMD_GLOBAL_SYMBOLS
--# ----------------------
--m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
--[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--AC_REQUIRE([AC_PROG_CC])dnl
--AC_REQUIRE([LT_PATH_NM])dnl
--AC_REQUIRE([LT_PATH_LD])dnl
--m4_require([_LT_DECL_SED])dnl
--m4_require([_LT_DECL_EGREP])dnl
--m4_require([_LT_TAG_COMPILER])dnl
--
--# Check for command to grab the raw symbol name followed by C symbol from nm.
--AC_MSG_CHECKING([command to parse $NM output from $compiler object])
--AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
--[
--# These are sane defaults that work on at least a few old systems.
--# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
--
--# Character class describing NM global symbol codes.
--symcode='[[BCDEGRST]]'
--
--# Regexp to match symbols that can be accessed directly from C.
--sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
--
--# Define system-specific variables.
--case $host_os in
--aix*)
--  symcode='[[BCDT]]'
--  ;;
--cygwin* | mingw* | pw32* | cegcc*)
--  symcode='[[ABCDGISTW]]'
--  ;;
--hpux*)
--  if test "$host_cpu" = ia64; then
--    symcode='[[ABCDEGRST]]'
--  fi
--  ;;
--irix* | nonstopux*)
--  symcode='[[BCDEGRST]]'
--  ;;
--osf*)
--  symcode='[[BCDEGQRST]]'
--  ;;
--solaris*)
--  symcode='[[BDRT]]'
--  ;;
--sco3.2v5*)
--  symcode='[[DT]]'
--  ;;
--sysv4.2uw2*)
--  symcode='[[DT]]'
--  ;;
--sysv5* | sco5v6* | unixware* | OpenUNIX*)
--  symcode='[[ABDT]]'
--  ;;
--sysv4)
--  symcode='[[DFNSTU]]'
--  ;;
--esac
--
--# If we're using GNU nm, then use its standard symbol codes.
--case `$NM -V 2>&1` in
--*GNU* | *'with BFD'*)
--  symcode='[[ABCDGIRSTW]]' ;;
--esac
--
--# Transform an extracted symbol line into a proper C declaration.
--# Some systems (esp. on ia64) link data and code symbols differently,
--# so use this general approach.
--lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
--
--# Transform an extracted symbol line into symbol name and symbol address
--lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
--lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
--
--# Handle CRLF in mingw tool chain
--opt_cr=
--case $build_os in
--mingw*)
--  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
--  ;;
--esac
--
--# Try without a prefix underscore, then with it.
--for ac_symprfx in "" "_"; do
--
--  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
--  symxfrm="\\1 $ac_symprfx\\2 \\2"
--
--  # Write the raw and C identifiers.
--  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
--    # Fake it for dumpbin and say T for any non-static function
--    # and D for any global variable.
--    # Also find C++ and __fastcall symbols from MSVC++,
--    # which start with @ or ?.
--    lt_cv_sys_global_symbol_pipe="$AWK ['"\
--"     {last_section=section; section=\$ 3};"\
--"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
--"     \$ 0!~/External *\|/{next};"\
--"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
--"     {if(hide[section]) next};"\
--"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
--"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
--"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
--"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
--"     ' prfx=^$ac_symprfx]"
--  else
--    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
--  fi
--
--  # Check to see that the pipe works correctly.
--  pipe_works=no
--
--  rm -f conftest*
--  cat > conftest.$ac_ext <<_LT_EOF
--#ifdef __cplusplus
--extern "C" {
--#endif
--char nm_test_var;
--void nm_test_func(void);
--void nm_test_func(void){}
--#ifdef __cplusplus
--}
--#endif
--int main(){nm_test_var='a';nm_test_func();return(0);}
--_LT_EOF
--
--  if AC_TRY_EVAL(ac_compile); then
--    # Now try to grab the symbols.
--    nlist=conftest.nm
--    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
--      # Try sorting and uniquifying the output.
--      if sort "$nlist" | uniq > "$nlist"T; then
--	mv -f "$nlist"T "$nlist"
--      else
--	rm -f "$nlist"T
--      fi
--
--      # Make sure that we snagged all the symbols we need.
--      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
--	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
--	  cat <<_LT_EOF > conftest.$ac_ext
--#ifdef __cplusplus
--extern "C" {
--#endif
--
--_LT_EOF
--	  # Now generate the symbol file.
--	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
--
--	  cat <<_LT_EOF >> conftest.$ac_ext
--
--/* The mapping between symbol names and symbols.  */
--const struct {
--  const char *name;
--  void       *address;
--}
--lt__PROGRAM__LTX_preloaded_symbols[[]] =
--{
--  { "@PROGRAM@", (void *) 0 },
--_LT_EOF
--	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
--	  cat <<\_LT_EOF >> conftest.$ac_ext
--  {0, (void *) 0}
--};
--
--/* This works around a problem in FreeBSD linker */
--#ifdef FREEBSD_WORKAROUND
--static const void *lt_preloaded_setup() {
--  return lt__PROGRAM__LTX_preloaded_symbols;
--}
--#endif
--
--#ifdef __cplusplus
--}
--#endif
--_LT_EOF
--	  # Now try linking the two files.
--	  mv conftest.$ac_objext conftstm.$ac_objext
--	  lt_save_LIBS="$LIBS"
--	  lt_save_CFLAGS="$CFLAGS"
--	  LIBS="conftstm.$ac_objext"
--	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
--	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
--	    pipe_works=yes
--	  fi
--	  LIBS="$lt_save_LIBS"
--	  CFLAGS="$lt_save_CFLAGS"
--	else
--	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
--	fi
--      else
--	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
--      fi
--    else
--      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
--    fi
--  else
--    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
--    cat conftest.$ac_ext >&5
--  fi
--  rm -rf conftest* conftst*
--
--  # Do not use the global_symbol_pipe unless it works.
--  if test "$pipe_works" = yes; then
--    break
--  else
--    lt_cv_sys_global_symbol_pipe=
--  fi
--done
--])
--if test -z "$lt_cv_sys_global_symbol_pipe"; then
--  lt_cv_sys_global_symbol_to_cdecl=
--fi
--if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
--  AC_MSG_RESULT(failed)
--else
--  AC_MSG_RESULT(ok)
--fi
--
--_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
--    [Take the output of nm and produce a listing of raw symbols and C names])
--_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
--    [Transform the output of nm in a proper C declaration])
--_LT_DECL([global_symbol_to_c_name_address],
--    [lt_cv_sys_global_symbol_to_c_name_address], [1],
--    [Transform the output of nm in a C name address pair])
--_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
--    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
--    [Transform the output of nm in a C name address pair when lib prefix is needed])
--]) # _LT_CMD_GLOBAL_SYMBOLS
--
--
--# _LT_COMPILER_PIC([TAGNAME])
--# ---------------------------
--m4_defun([_LT_COMPILER_PIC],
--[m4_require([_LT_TAG_COMPILER])dnl
--_LT_TAGVAR(lt_prog_compiler_wl, $1)=
--_LT_TAGVAR(lt_prog_compiler_pic, $1)=
--_LT_TAGVAR(lt_prog_compiler_static, $1)=
--
--AC_MSG_CHECKING([for $compiler option to produce PIC])
--m4_if([$1], [CXX], [
--  # C++ specific cases for pic, static, wl, etc.
--  if test "$GXX" = yes; then
--    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
--
--    case $host_os in
--    aix*)
--      # All AIX code is PIC.
--      if test "$host_cpu" = ia64; then
--	# AIX 5 now supports IA64 processor
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      fi
--      ;;
--
--    amigaos*)
--      case $host_cpu in
--      powerpc)
--            # see comment about AmigaOS4 .so support
--            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--        ;;
--      m68k)
--            # FIXME: we need at least 68020 code to build shared libraries, but
--            # adding the `-m68020' flag to GCC prevents building anything better,
--            # like `-m68040'.
--            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
--        ;;
--      esac
--      ;;
--
--    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
--      # PIC is the default for these OSes.
--      ;;
--    mingw* | cygwin* | os2* | pw32* | cegcc*)
--      # This hack is so that the source file can tell whether it is being
--      # built for inclusion in a dll (and should export symbols for example).
--      # Although the cygwin gcc ignores -fPIC, still need this for old-style
--      # (--disable-auto-import) libraries
--      m4_if([$1], [GCJ], [],
--	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
--      ;;
--    darwin* | rhapsody*)
--      # PIC is the default on this platform
--      # Common symbols not allowed in MH_DYLIB files
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
--      ;;
--    *djgpp*)
--      # DJGPP does not support shared libraries at all
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
--      ;;
--    interix[[3-9]]*)
--      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
--      # Instead, we relocate shared libraries at runtime.
--      ;;
--    sysv4*MP*)
--      if test -d /usr/nec; then
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
--      fi
--      ;;
--    hpux*)
--      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
--      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
--      # sets the default TLS model and affects inlining.
--      case $host_cpu in
--      hppa*64*)
--	;;
--      *)
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--	;;
--      esac
--      ;;
--    *qnx* | *nto*)
--      # QNX uses GNU C++, but need to define -shared option too, otherwise
--      # it will coredump.
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
--      ;;
--    *)
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--      ;;
--    esac
--  else
--    case $host_os in
--      aix[[4-9]]*)
--	# All AIX code is PIC.
--	if test "$host_cpu" = ia64; then
--	  # AIX 5 now supports IA64 processor
--	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	else
--	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
--	fi
--	;;
--      chorus*)
--	case $cc_basename in
--	cxch68*)
--	  # Green Hills C++ Compiler
--	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
--	  ;;
--	esac
--	;;
--      dgux*)
--	case $cc_basename in
--	  ec++*)
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	    ;;
--	  ghcx*)
--	    # Green Hills C++ Compiler
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      freebsd* | dragonfly*)
--	# FreeBSD uses GNU C++
--	;;
--      hpux9* | hpux10* | hpux11*)
--	case $cc_basename in
--	  CC*)
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
--	    if test "$host_cpu" != ia64; then
--	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
--	    fi
--	    ;;
--	  aCC*)
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
--	    case $host_cpu in
--	    hppa*64*|ia64*)
--	      # +Z the default
--	      ;;
--	    *)
--	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
--	      ;;
--	    esac
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      interix*)
--	# This is c89, which is MS Visual C++ (no shared libs)
--	# Anyone wants to do a port?
--	;;
--      irix5* | irix6* | nonstopux*)
--	case $cc_basename in
--	  CC*)
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
--	    # CC pic flag -KPIC is the default.
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      linux* | k*bsd*-gnu)
--	case $cc_basename in
--	  KCC*)
--	    # KAI C++ Compiler
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--	    ;;
--	  ecpc* )
--	    # old Intel C++ for x86_64 which still supported -KPIC.
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
--	    ;;
--	  icpc* )
--	    # Intel C++, used to be incompatible with GCC.
--	    # ICC 10 doesn't accept -KPIC any more.
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
--	    ;;
--	  pgCC* | pgcpp*)
--	    # Portland Group C++ compiler
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	    ;;
--	  cxx*)
--	    # Compaq C++
--	    # Make sure the PIC flag is empty.  It appears that all Alpha
--	    # Linux and Compaq Tru64 Unix objects are PIC.
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
--	    ;;
--	  xlc* | xlC*)
--	    # IBM XL 8.0 on PPC
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
--	    ;;
--	  *)
--	    case `$CC -V 2>&1 | sed 5q` in
--	    *Sun\ C*)
--	      # Sun C++ 5.9
--	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
--	      ;;
--	    esac
--	    ;;
--	esac
--	;;
--      lynxos*)
--	;;
--      m88k*)
--	;;
--      mvs*)
--	case $cc_basename in
--	  cxx*)
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      netbsd*)
--	;;
--      *qnx* | *nto*)
--        # QNX uses GNU C++, but need to define -shared option too, otherwise
--        # it will coredump.
--        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
--        ;;
--      osf3* | osf4* | osf5*)
--	case $cc_basename in
--	  KCC*)
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
--	    ;;
--	  RCC*)
--	    # Rational C++ 2.4.1
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
--	    ;;
--	  cxx*)
--	    # Digital/Compaq C++
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    # Make sure the PIC flag is empty.  It appears that all Alpha
--	    # Linux and Compaq Tru64 Unix objects are PIC.
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      psos*)
--	;;
--      solaris*)
--	case $cc_basename in
--	  CC*)
--	    # Sun C++ 4.2, 5.x and Centerline C++
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
--	    ;;
--	  gcx*)
--	    # Green Hills C++ Compiler
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      sunos4*)
--	case $cc_basename in
--	  CC*)
--	    # Sun C++ 4.x
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	    ;;
--	  lcc*)
--	    # Lucid
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
--	case $cc_basename in
--	  CC*)
--	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	    ;;
--	esac
--	;;
--      tandem*)
--	case $cc_basename in
--	  NCC*)
--	    # NonStop-UX NCC 3.20
--	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	    ;;
--	  *)
--	    ;;
--	esac
--	;;
--      vxworks*)
--	;;
--      *)
--	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
--	;;
--    esac
--  fi
--],
--[
--  if test "$GCC" = yes; then
--    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
--
--    case $host_os in
--      aix*)
--      # All AIX code is PIC.
--      if test "$host_cpu" = ia64; then
--	# AIX 5 now supports IA64 processor
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      fi
--      ;;
--
--    amigaos*)
--      case $host_cpu in
--      powerpc)
--            # see comment about AmigaOS4 .so support
--            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--        ;;
--      m68k)
--            # FIXME: we need at least 68020 code to build shared libraries, but
--            # adding the `-m68020' flag to GCC prevents building anything better,
--            # like `-m68040'.
--            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
--        ;;
--      esac
--      ;;
--
--    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
--      # PIC is the default for these OSes.
--      ;;
--
--    mingw* | cygwin* | pw32* | os2* | cegcc*)
--      # This hack is so that the source file can tell whether it is being
--      # built for inclusion in a dll (and should export symbols for example).
--      # Although the cygwin gcc ignores -fPIC, still need this for old-style
--      # (--disable-auto-import) libraries
--      m4_if([$1], [GCJ], [],
--	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
--      ;;
--
--    darwin* | rhapsody*)
--      # PIC is the default on this platform
--      # Common symbols not allowed in MH_DYLIB files
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
--      ;;
--
--    hpux*)
--      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
--      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
--      # sets the default TLS model and affects inlining.
--      case $host_cpu in
--      hppa*64*)
--	# +Z the default
--	;;
--      *)
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--	;;
--      esac
--      ;;
--
--    interix[[3-9]]*)
--      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
--      # Instead, we relocate shared libraries at runtime.
--      ;;
--
--    msdosdjgpp*)
--      # Just because we use GCC doesn't mean we suddenly get shared libraries
--      # on systems that don't support them.
--      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
--      enable_shared=no
--      ;;
--
--    *nto* | *qnx*)
--      # QNX uses GNU C++, but need to define -shared option too, otherwise
--      # it will coredump.
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
--      ;;
--
--    sysv4*MP*)
--      if test -d /usr/nec; then
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
--      fi
--      ;;
--
--    *)
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--      ;;
--    esac
--  else
--    # PORTME Check for flag to pass linker flags through the system compiler.
--    case $host_os in
--    aix*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--      if test "$host_cpu" = ia64; then
--	# AIX 5 now supports IA64 processor
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      else
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
--      fi
--      ;;
--
--    mingw* | cygwin* | pw32* | os2* | cegcc*)
--      # This hack is so that the source file can tell whether it is being
--      # built for inclusion in a dll (and should export symbols for example).
--      m4_if([$1], [GCJ], [],
--	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
--      ;;
--
--    hpux9* | hpux10* | hpux11*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
--      # not for PA HP-UX.
--      case $host_cpu in
--      hppa*64*|ia64*)
--	# +Z the default
--	;;
--      *)
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
--	;;
--      esac
--      # Is there a better lt_prog_compiler_static that works with the bundled CC?
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
--      ;;
--
--    irix5* | irix6* | nonstopux*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--      # PIC (with -KPIC) is the default.
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
--      ;;
--
--    linux* | k*bsd*-gnu)
--      case $cc_basename in
--      # old Intel for x86_64 which still supported -KPIC.
--      ecc*)
--	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
--        ;;
--      # icc used to be incompatible with GCC.
--      # ICC 10 doesn't accept -KPIC any more.
--      icc* | ifort*)
--	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
--        ;;
--      # Lahey Fortran 8.1.
--      lf95*)
--	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
--	;;
--      pgcc* | pgf77* | pgf90* | pgf95*)
--        # Portland Group compilers (*not* the Pentium gcc compiler,
--	# which looks to be a dead project)
--	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--        ;;
--      ccc*)
--        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--        # All Alpha code is PIC.
--        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
--        ;;
--      xl*)
--	# IBM XL C 8.0/Fortran 10.1 on PPC
--	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
--	;;
--      *)
--	case `$CC -V 2>&1 | sed 5q` in
--	*Sun\ C*)
--	  # Sun C 5.9
--	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--	  ;;
--	*Sun\ F*)
--	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
--	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
--	  ;;
--	esac
--	;;
--      esac
--      ;;
--
--    newsos6)
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      ;;
--
--    *nto* | *qnx*)
--      # QNX uses GNU C++, but need to define -shared option too, otherwise
--      # it will coredump.
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
--      ;;
--
--    osf3* | osf4* | osf5*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--      # All OSF/1 code is PIC.
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
--      ;;
--
--    rdos*)
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
--      ;;
--
--    solaris*)
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      case $cc_basename in
--      f77* | f90* | f95*)
--	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
--      *)
--	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
--      esac
--      ;;
--
--    sunos4*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      ;;
--
--    sysv4 | sysv4.2uw2* | sysv4.3*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      ;;
--
--    sysv4*MP*)
--      if test -d /usr/nec ;then
--	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
--	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      fi
--      ;;
--
--    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      ;;
--
--    unicos*)
--      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
--      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
--      ;;
--
--    uts4*)
--      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
--      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--      ;;
--
--    *)
--      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
--      ;;
--    esac
--  fi
--])
--case $host_os in
--  # For platforms which do not support PIC, -DPIC is meaningless:
--  *djgpp*)
--    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
--    ;;
--  *)
--    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
--    ;;
--esac
--AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
--_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
--	[How to pass a linker flag through the compiler])
--
--#
--# Check to make sure the PIC flag actually works.
--#
--if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
--  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
--    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
--    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
--    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
--     "" | " "*) ;;
--     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
--     esac],
--    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
--     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
--fi
--_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
--	[Additional compiler flags for building library objects])
--
--#
--# Check to make sure the static flag actually works.
--#
--wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
--_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
--  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
--  $lt_tmp_static_flag,
--  [],
--  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
--_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
--	[Compiler flag to prevent dynamic linking])
--])# _LT_COMPILER_PIC
--
--
--# _LT_LINKER_SHLIBS([TAGNAME])
--# ----------------------------
--# See if the linker supports building shared libraries.
--m4_defun([_LT_LINKER_SHLIBS],
--[AC_REQUIRE([LT_PATH_LD])dnl
--AC_REQUIRE([LT_PATH_NM])dnl
--m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--m4_require([_LT_DECL_EGREP])dnl
--m4_require([_LT_DECL_SED])dnl
--m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
--m4_require([_LT_TAG_COMPILER])dnl
--AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
--m4_if([$1], [CXX], [
--  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
--  case $host_os in
--  aix[[4-9]]*)
--    # If we're using GNU nm, then we don't want the "-C" option.
--    # -C means demangle to AIX nm, but means don't demangle with GNU nm
--    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
--      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
--    else
--      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
--    fi
--    ;;
--  pw32*)
--    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
--  ;;
--  cygwin* | mingw* | cegcc*)
--    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
--  ;;
--  *)
--    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
--  ;;
--  esac
--  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
--], [
--  runpath_var=
--  _LT_TAGVAR(allow_undefined_flag, $1)=
--  _LT_TAGVAR(always_export_symbols, $1)=no
--  _LT_TAGVAR(archive_cmds, $1)=
--  _LT_TAGVAR(archive_expsym_cmds, $1)=
--  _LT_TAGVAR(compiler_needs_object, $1)=no
--  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
--  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
--  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
--  _LT_TAGVAR(hardcode_automatic, $1)=no
--  _LT_TAGVAR(hardcode_direct, $1)=no
--  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
--  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
--  _LT_TAGVAR(hardcode_libdir_separator, $1)=
--  _LT_TAGVAR(hardcode_minus_L, $1)=no
--  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
--  _LT_TAGVAR(inherit_rpath, $1)=no
--  _LT_TAGVAR(link_all_deplibs, $1)=unknown
--  _LT_TAGVAR(module_cmds, $1)=
--  _LT_TAGVAR(module_expsym_cmds, $1)=
--  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
--  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
--  _LT_TAGVAR(thread_safe_flag_spec, $1)=
--  _LT_TAGVAR(whole_archive_flag_spec, $1)=
--  # include_expsyms should be a list of space-separated symbols to be *always*
--  # included in the symbol list
--  _LT_TAGVAR(include_expsyms, $1)=
--  # exclude_expsyms can be an extended regexp of symbols to exclude
--  # it will be wrapped by ` (' and `)$', so one must not match beginning or
--  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
--  # as well as any symbol that contains `d'.
--  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
--  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
--  # platforms (ab)use it in PIC code, but their linkers get confused if
--  # the symbol is explicitly referenced.  Since portable code cannot
--  # rely on this symbol name, it's probably fine to never include it in
--  # preloaded symbol tables.
--  # Exclude shared library initialization/finalization symbols.
--dnl Note also adjust exclude_expsyms for C++ above.
--  extract_expsyms_cmds=
--
--  case $host_os in
--  cygwin* | mingw* | pw32* | cegcc*)
--    # FIXME: the MSVC++ port hasn't been tested in a loooong time
--    # When not using gcc, we currently assume that we are using
--    # Microsoft Visual C++.
--    if test "$GCC" != yes; then
--      with_gnu_ld=no
--    fi
--    ;;
--  interix*)
--    # we just hope/assume this is gcc and not c89 (= MSVC++)
--    with_gnu_ld=yes
--    ;;
--  openbsd*)
--    with_gnu_ld=no
--    ;;
--  esac
--
--  _LT_TAGVAR(ld_shlibs, $1)=yes
--  if test "$with_gnu_ld" = yes; then
--    # If archive_cmds runs LD, not CC, wlarc should be empty
--    wlarc='${wl}'
--
--    # Set some defaults for GNU ld with shared library support. These
--    # are reset later if shared libraries are not supported. Putting them
--    # here allows them to be overridden if necessary.
--    runpath_var=LD_RUN_PATH
--    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
--    # ancient GNU ld didn't support --whole-archive et. al.
--    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
--      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
--    else
--      _LT_TAGVAR(whole_archive_flag_spec, $1)=
--    fi
--    supports_anon_versioning=no
--    case `$LD -v 2>&1` in
--      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
--      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
--      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
--      *\ 2.11.*) ;; # other 2.11 versions
--      *) supports_anon_versioning=yes ;;
--    esac
--
--    # See if GNU ld supports shared libraries.
--    case $host_os in
--    aix[[3-9]]*)
--      # On AIX/PPC, the GNU linker is very broken
--      if test "$host_cpu" != ia64; then
--	_LT_TAGVAR(ld_shlibs, $1)=no
--	cat <<_LT_EOF 1>&2
--
--*** Warning: the GNU linker, at least up to release 2.9.1, is reported
--*** to be unable to reliably create shared libraries on AIX.
--*** Therefore, libtool is disabling shared libraries support.  If you
--*** really care for shared libraries, you may want to modify your PATH
--*** so that a non-GNU linker is found, and then restart.
--
--_LT_EOF
--      fi
--      ;;
--
--    amigaos*)
--      case $host_cpu in
--      powerpc)
--            # see comment about AmigaOS4 .so support
--            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--            _LT_TAGVAR(archive_expsym_cmds, $1)=''
--        ;;
--      m68k)
--            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
--            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--            _LT_TAGVAR(hardcode_minus_L, $1)=yes
--        ;;
--      esac
--      ;;
--
--    beos*)
--      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
--	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
--	# support --undefined.  This deserves some investigation.  FIXME
--	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--      else
--	_LT_TAGVAR(ld_shlibs, $1)=no
--      fi
--      ;;
--
--    cygwin* | mingw* | pw32* | cegcc*)
--      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
--      # as there is no search path for DLLs.
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--      _LT_TAGVAR(always_export_symbols, $1)=no
--      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
--      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
--
--      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
--        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
--	# If the export-symbols file already is a .def file (1st line
--	# is EXPORTS), use it as is; otherwise, prepend...
--	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
--	  cp $export_symbols $output_objdir/$soname.def;
--	else
--	  echo EXPORTS > $output_objdir/$soname.def;
--	  cat $export_symbols >> $output_objdir/$soname.def;
--	fi~
--	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
--      else
--	_LT_TAGVAR(ld_shlibs, $1)=no
--      fi
--      ;;
--
--    interix[[3-9]]*)
--      _LT_TAGVAR(hardcode_direct, $1)=no
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
--      # Instead, shared libraries are loaded at an image base (0x10000000 by
--      # default) and relocated if they conflict, which is a slow very memory
--      # consuming and fragmenting process.  To avoid this, we pick a random,
--      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
--      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
--      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
--      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
--      ;;
--
--    gnu* | linux* | tpf* | k*bsd*-gnu)
--      tmp_diet=no
--      if test "$host_os" = linux-dietlibc; then
--	case $cc_basename in
--	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
--	esac
--      fi
--      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
--	 && test "$tmp_diet" = no
--      then
--	tmp_addflag=
--	tmp_sharedflag='-shared'
--	case $cc_basename,$host_cpu in
--        pgcc*)				# Portland Group C compiler
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
--	  tmp_addflag=' $pic_flag'
--	  ;;
--	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
--	  tmp_addflag=' $pic_flag -Mnomain' ;;
--	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
--	  tmp_addflag=' -i_dynamic' ;;
--	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
--	  tmp_addflag=' -i_dynamic -nofor_main' ;;
--	ifc* | ifort*)			# Intel Fortran compiler
--	  tmp_addflag=' -nofor_main' ;;
--	lf95*)				# Lahey Fortran 8.1
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
--	  tmp_sharedflag='--shared' ;;
--	xl[[cC]]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
--	  tmp_sharedflag='-qmkshrobj'
--	  tmp_addflag= ;;
--	esac
--	case `$CC -V 2>&1 | sed 5q` in
--	*Sun\ C*)			# Sun C 5.9
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
--	  _LT_TAGVAR(compiler_needs_object, $1)=yes
--	  tmp_sharedflag='-G' ;;
--	*Sun\ F*)			# Sun Fortran 8.3
--	  tmp_sharedflag='-G' ;;
--	esac
--	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--
--        if test "x$supports_anon_versioning" = xyes; then
--          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
--	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
--	    echo "local: *; };" >> $output_objdir/$libname.ver~
--	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
--        fi
--
--	case $cc_basename in
--	xlf*)
--	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
--	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
--	  if test "x$supports_anon_versioning" = xyes; then
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
--	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
--	      echo "local: *; };" >> $output_objdir/$libname.ver~
--	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
--	  fi
--	  ;;
--	esac
--      else
--        _LT_TAGVAR(ld_shlibs, $1)=no
--      fi
--      ;;
--
--    netbsd*)
--      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
--	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
--	wlarc=
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--      fi
--      ;;
--
--    solaris*)
--      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
--	_LT_TAGVAR(ld_shlibs, $1)=no
--	cat <<_LT_EOF 1>&2
--
--*** Warning: The releases 2.8.* of the GNU linker cannot reliably
--*** create shared libraries on Solaris systems.  Therefore, libtool
--*** is disabling shared libraries support.  We urge you to upgrade GNU
--*** binutils to release 2.9.1 or newer.  Another option is to modify
--*** your PATH or compiler configuration so that the native linker is
--*** used, and then restart.
--
--_LT_EOF
--      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--      else
--	_LT_TAGVAR(ld_shlibs, $1)=no
--      fi
--      ;;
--
--    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
--      case `$LD -v 2>&1` in
--        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
--	_LT_TAGVAR(ld_shlibs, $1)=no
--	cat <<_LT_EOF 1>&2
--
--*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
--*** reliably create shared libraries on SCO systems.  Therefore, libtool
--*** is disabling shared libraries support.  We urge you to upgrade GNU
--*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
--*** your PATH or compiler configuration so that the native linker is
--*** used, and then restart.
--
--_LT_EOF
--	;;
--	*)
--	  # For security reasons, it is highly recommended that you always
--	  # use absolute paths for naming shared libraries, and exclude the
--	  # DT_RUNPATH tag from executables and libraries.  But doing so
--	  # requires that you compile everything twice, which is a pain.
--	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--	  else
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	  fi
--	;;
--      esac
--      ;;
--
--    sunos4*)
--      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
--      wlarc=
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    *)
--      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--      else
--	_LT_TAGVAR(ld_shlibs, $1)=no
--      fi
--      ;;
--    esac
--
--    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
--      runpath_var=
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
--      _LT_TAGVAR(whole_archive_flag_spec, $1)=
--    fi
--  else
--    # PORTME fill in a description of your system's linker (not GNU ld)
--    case $host_os in
--    aix3*)
--      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--      _LT_TAGVAR(always_export_symbols, $1)=yes
--      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
--      # Note: this linker hardcodes the directories in LIBPATH if there
--      # are no directories specified by -L.
--      _LT_TAGVAR(hardcode_minus_L, $1)=yes
--      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
--	# Neither direct hardcoding nor static linking is supported with a
--	# broken collect2.
--	_LT_TAGVAR(hardcode_direct, $1)=unsupported
--      fi
--      ;;
--
--    aix[[4-9]]*)
--      if test "$host_cpu" = ia64; then
--	# On IA64, the linker does run time linking by default, so we don't
--	# have to do anything special.
--	aix_use_runtimelinking=no
--	exp_sym_flag='-Bexport'
--	no_entry_flag=""
--      else
--	# If we're using GNU nm, then we don't want the "-C" option.
--	# -C means demangle to AIX nm, but means don't demangle with GNU nm
--	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
--	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
--	else
--	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
--	fi
--	aix_use_runtimelinking=no
--
--	# Test if we are trying to use run time linking or normal
--	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
--	# need to do runtime linking.
--	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
--	  for ld_flag in $LDFLAGS; do
--	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
--	    aix_use_runtimelinking=yes
--	    break
--	  fi
--	  done
--	  ;;
--	esac
--
--	exp_sym_flag='-bexport'
--	no_entry_flag='-bnoentry'
--      fi
--
--      # When large executables or shared objects are built, AIX ld can
--      # have problems creating the table of contents.  If linking a library
--      # or program results in "error TOC overflow" add -mminimal-toc to
--      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
--      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
--
--      _LT_TAGVAR(archive_cmds, $1)=''
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
--      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
--      _LT_TAGVAR(link_all_deplibs, $1)=yes
--      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
--
--      if test "$GCC" = yes; then
--	case $host_os in aix4.[[012]]|aix4.[[012]].*)
--	# We only want to do this on AIX 4.2 and lower, the check
--	# below for broken collect2 doesn't work under 4.3+
--	  collect2name=`${CC} -print-prog-name=collect2`
--	  if test -f "$collect2name" &&
--	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
--	  then
--	  # We have reworked collect2
--	  :
--	  else
--	  # We have old collect2
--	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
--	  # It fails to find uninstalled libraries when the uninstalled
--	  # path is not listed in the libpath.  Setting hardcode_minus_L
--	  # to unsupported forces relinking
--	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
--	  fi
--	  ;;
--	esac
--	shared_flag='-shared'
--	if test "$aix_use_runtimelinking" = yes; then
--	  shared_flag="$shared_flag "'${wl}-G'
--	fi
--      else
--	# not using gcc
--	if test "$host_cpu" = ia64; then
--	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
--	# chokes on -Wl,-G. The following line is correct:
--	  shared_flag='-G'
--	else
--	  if test "$aix_use_runtimelinking" = yes; then
--	    shared_flag='${wl}-G'
--	  else
--	    shared_flag='${wl}-bM:SRE'
--	  fi
--	fi
--      fi
--
--      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
--      # It seems that -bexpall does not export symbols beginning with
--      # underscore (_), so it is better to generate a list of symbols to export.
--      _LT_TAGVAR(always_export_symbols, $1)=yes
--      if test "$aix_use_runtimelinking" = yes; then
--	# Warning - without using the other runtime loading flags (-brtl),
--	# -berok will link without error, but may produce a broken library.
--	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
--        # Determine the default libpath from the value encoded in an
--        # empty executable.
--        _LT_SYS_MODULE_PATH_AIX
--        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
--        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
--      else
--	if test "$host_cpu" = ia64; then
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
--	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
--	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
--	else
--	 # Determine the default libpath from the value encoded in an
--	 # empty executable.
--	 _LT_SYS_MODULE_PATH_AIX
--	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
--	  # Warning - without using the other run time loading flags,
--	  # -berok will link without error, but may produce a broken library.
--	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
--	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
--	  # Exported symbols can be pulled into shared objects from archives
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
--	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
--	  # This is similar to how AIX traditionally builds its shared libraries.
--	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
--	fi
--      fi
--      ;;
--
--    amigaos*)
--      case $host_cpu in
--      powerpc)
--            # see comment about AmigaOS4 .so support
--            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--            _LT_TAGVAR(archive_expsym_cmds, $1)=''
--        ;;
--      m68k)
--            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
--            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--            _LT_TAGVAR(hardcode_minus_L, $1)=yes
--        ;;
--      esac
--      ;;
--
--    bsdi[[45]]*)
--      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
--      ;;
--
--    cygwin* | mingw* | pw32* | cegcc*)
--      # When not using gcc, we currently assume that we are using
--      # Microsoft Visual C++.
--      # hardcode_libdir_flag_spec is actually meaningless, as there is
--      # no search path for DLLs.
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
--      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--      # Tell ltmain to make .lib files, not .a files.
--      libext=lib
--      # Tell ltmain to make .dll files, not .so files.
--      shrext_cmds=".dll"
--      # FIXME: Setting linknames here is a bad hack.
--      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
--      # The linker will automatically build a .lib file if we build a DLL.
--      _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
--      # FIXME: Should let the user specify the lib program.
--      _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
--      _LT_TAGVAR(fix_srcfile_path, $1)=''
--      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
--      ;;
--
--    darwin* | rhapsody*)
--      _LT_DARWIN_LINKER_FEATURES($1)
--      ;;
--
--    dgux*)
--      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    freebsd1*)
--      _LT_TAGVAR(ld_shlibs, $1)=no
--      ;;
--
--    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
--    # support.  Future versions do this automatically, but an explicit c++rt0.o
--    # does not break anything, and helps significantly (at the cost of a little
--    # extra space).
--    freebsd2.2*)
--      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
--    freebsd2*)
--      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_minus_L, $1)=yes
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
--    freebsd* | dragonfly*)
--      _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    hpux9*)
--      if test "$GCC" = yes; then
--	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
--      fi
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
--      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--
--      # hardcode_minus_L: Not really in the search PATH,
--      # but as the default location of the library.
--      _LT_TAGVAR(hardcode_minus_L, $1)=yes
--      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--      ;;
--
--    hpux10*)
--      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
--      fi
--      if test "$with_gnu_ld" = no; then
--	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
--	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
--	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
--	_LT_TAGVAR(hardcode_direct, $1)=yes
--	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
--	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--	# hardcode_minus_L: Not really in the search PATH,
--	# but as the default location of the library.
--	_LT_TAGVAR(hardcode_minus_L, $1)=yes
--      fi
--      ;;
--
--    hpux11*)
--      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
--	case $host_cpu in
--	hppa*64*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
--	  ;;
--	ia64*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
--	  ;;
--	*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
--	  ;;
--	esac
--      else
--	case $host_cpu in
--	hppa*64*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
--	  ;;
--	ia64*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
--	  ;;
--	*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
--	  ;;
--	esac
--      fi
--      if test "$with_gnu_ld" = no; then
--	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
--	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
--
--	case $host_cpu in
--	hppa*64*|ia64*)
--	  _LT_TAGVAR(hardcode_direct, $1)=no
--	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	  ;;
--	*)
--	  _LT_TAGVAR(hardcode_direct, $1)=yes
--	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
--	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--
--	  # hardcode_minus_L: Not really in the search PATH,
--	  # but as the default location of the library.
--	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
--	  ;;
--	esac
--      fi
--      ;;
--
--    irix5* | irix6* | nonstopux*)
--      if test "$GCC" = yes; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--	# Try to use the -exported_symbol ld option, if it does not
--	# work, assume that -exports_file does not work either and
--	# implicitly export all symbols.
--        save_LDFLAGS="$LDFLAGS"
--        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
--        AC_LINK_IFELSE(int foo(void) {},
--          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
--        )
--        LDFLAGS="$save_LDFLAGS"
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
--      fi
--      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--      _LT_TAGVAR(inherit_rpath, $1)=yes
--      _LT_TAGVAR(link_all_deplibs, $1)=yes
--      ;;
--
--    netbsd*)
--      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
--	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
--      fi
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    newsos6)
--      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    *nto* | *qnx*)
--      ;;
--
--    openbsd*)
--      if test -f /usr/libexec/ld.so; then
--	_LT_TAGVAR(hardcode_direct, $1)=yes
--	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
--	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
--	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--	else
--	  case $host_os in
--	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
--	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
--	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--	     ;;
--	   *)
--	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
--	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--	     ;;
--	  esac
--	fi
--      else
--	_LT_TAGVAR(ld_shlibs, $1)=no
--      fi
--      ;;
--
--    os2*)
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--      _LT_TAGVAR(hardcode_minus_L, $1)=yes
--      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
--      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
--      ;;
--
--    osf3*)
--      if test "$GCC" = yes; then
--	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--      else
--	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
--      fi
--      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--      ;;
--
--    osf4* | osf5*)	# as osf3* with the addition of -msym flag
--      if test "$GCC" = yes; then
--	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--      else
--	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
--	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
--
--	# Both c and cxx compiler support -rpath directly
--	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
--      fi
--      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
--      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--      ;;
--
--    solaris*)
--      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
--      if test "$GCC" = yes; then
--	wlarc='${wl}'
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
--	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
--      else
--	case `$CC -V 2>&1` in
--	*"Compilers 5.0"*)
--	  wlarc=''
--	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
--	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
--	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
--	  ;;
--	*)
--	  wlarc='${wl}'
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
--	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
--	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
--	  ;;
--	esac
--      fi
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      case $host_os in
--      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
--      *)
--	# The compiler driver will combine and reorder linker options,
--	# but understands `-z linker_flag'.  GCC discards it without `$wl',
--	# but is careful enough not to reorder.
--	# Supported since Solaris 2.6 (maybe 2.5.1?)
--	if test "$GCC" = yes; then
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
--	else
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
--	fi
--	;;
--      esac
--      _LT_TAGVAR(link_all_deplibs, $1)=yes
--      ;;
--
--    sunos4*)
--      if test "x$host_vendor" = xsequent; then
--	# Use $CC to link under sequent, because it throws in some extra .o
--	# files that make .init and .fini sections work.
--	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
--      fi
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--      _LT_TAGVAR(hardcode_direct, $1)=yes
--      _LT_TAGVAR(hardcode_minus_L, $1)=yes
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    sysv4)
--      case $host_vendor in
--	sni)
--	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
--	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
--	;;
--	siemens)
--	  ## LD is ld it makes a PLAMLIB
--	  ## CC just makes a GrossModule.
--	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
--	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
--	  _LT_TAGVAR(hardcode_direct, $1)=no
--        ;;
--	motorola)
--	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
--	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
--	;;
--      esac
--      runpath_var='LD_RUN_PATH'
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    sysv4.3*)
--      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
--      ;;
--
--    sysv4*MP*)
--      if test -d /usr/nec; then
--	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
--	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	runpath_var=LD_RUN_PATH
--	hardcode_runpath_var=yes
--	_LT_TAGVAR(ld_shlibs, $1)=yes
--      fi
--      ;;
--
--    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
--      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
--      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      runpath_var='LD_RUN_PATH'
--
--      if test "$GCC" = yes; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--      fi
--      ;;
--
--    sysv5* | sco3.2v5* | sco5v6*)
--      # Note: We can NOT use -z defs as we might desire, because we do not
--      # link with -lc, and that would cause any symbols used from libc to
--      # always be unresolved, which means just about no library would
--      # ever link correctly.  If we're not using GNU ld we use -z text
--      # though, which does catch some bad symbols but isn't as heavy-handed
--      # as -z defs.
--      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
--      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
--      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
--      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
--      _LT_TAGVAR(link_all_deplibs, $1)=yes
--      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
--      runpath_var='LD_RUN_PATH'
--
--      if test "$GCC" = yes; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--      else
--	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--      fi
--      ;;
--
--    uts4*)
--      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      ;;
--
--    *)
--      _LT_TAGVAR(ld_shlibs, $1)=no
--      ;;
--    esac
--
--    if test x$host_vendor = xsni; then
--      case $host in
--      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
--	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
--	;;
--      esac
--    fi
--  fi
--])
--AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
--test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
--
--_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
--
--_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
--_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
--_LT_DECL([], [extract_expsyms_cmds], [2],
--    [The commands to extract the exported symbol list from a shared archive])
--
--#
--# Do we need to explicitly link libc?
--#
--case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
--x|xyes)
--  # Assume -lc should be added
--  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
--
--  if test "$enable_shared" = yes && test "$GCC" = yes; then
--    case $_LT_TAGVAR(archive_cmds, $1) in
--    *'~'*)
--      # FIXME: we may have to deal with multi-command sequences.
--      ;;
--    '$CC '*)
--      # Test whether the compiler implicitly links with -lc since on some
--      # systems, -lgcc has to come before -lc. If gcc already passes -lc
--      # to ld, don't add -lc before -lgcc.
--      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
--      $RM conftest*
--      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
--
--      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
--        soname=conftest
--        lib=conftest
--        libobjs=conftest.$ac_objext
--        deplibs=
--        wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
--	pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
--        compiler_flags=-v
--        linker_flags=-v
--        verstring=
--        output_objdir=.
--        libname=conftest
--        lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
--        _LT_TAGVAR(allow_undefined_flag, $1)=
--        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
--        then
--	  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
--        else
--	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
--        fi
--        _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
--      else
--        cat conftest.err 1>&5
--      fi
--      $RM conftest*
--      AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
--      ;;
--    esac
--  fi
--  ;;
--esac
--
--_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
--    [Whether or not to add -lc for building shared libraries])
--_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
--    [enable_shared_with_static_runtimes], [0],
--    [Whether or not to disallow shared libs when runtime libs are static])
--_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
--    [Compiler flag to allow reflexive dlopens])
--_LT_TAGDECL([], [whole_archive_flag_spec], [1],
--    [Compiler flag to generate shared objects directly from archives])
--_LT_TAGDECL([], [compiler_needs_object], [1],
--    [Whether the compiler copes with passing no objects directly])
--_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
--    [Create an old-style archive from a shared archive])
--_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
--    [Create a temporary old-style archive to link instead of a shared archive])
--_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
--_LT_TAGDECL([], [archive_expsym_cmds], [2])
--_LT_TAGDECL([], [module_cmds], [2],
--    [Commands used to build a loadable module if different from building
--    a shared archive.])
--_LT_TAGDECL([], [module_expsym_cmds], [2])
--_LT_TAGDECL([], [with_gnu_ld], [1],
--    [Whether we are building with GNU ld or not])
--_LT_TAGDECL([], [allow_undefined_flag], [1],
--    [Flag that allows shared libraries with undefined symbols to be built])
--_LT_TAGDECL([], [no_undefined_flag], [1],
--    [Flag that enforces no undefined symbols])
--_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
--    [Flag to hardcode $libdir into a binary during linking.
--    This must work even if $libdir does not exist])
--_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
--    [[If ld is used when linking, flag to hardcode $libdir into a binary
--    during linking.  This must work even if $libdir does not exist]])
--_LT_TAGDECL([], [hardcode_libdir_separator], [1],
--    [Whether we need a single "-rpath" flag with a separated argument])
--_LT_TAGDECL([], [hardcode_direct], [0],
--    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
--    DIR into the resulting binary])
--_LT_TAGDECL([], [hardcode_direct_absolute], [0],
--    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
--    DIR into the resulting binary and the resulting library dependency is
--    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
--    library is relocated])
--_LT_TAGDECL([], [hardcode_minus_L], [0],
--    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
--    into the resulting binary])
--_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
--    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
--    into the resulting binary])
--_LT_TAGDECL([], [hardcode_automatic], [0],
--    [Set to "yes" if building a shared library automatically hardcodes DIR
--    into the library and all subsequent libraries and executables linked
--    against it])
--_LT_TAGDECL([], [inherit_rpath], [0],
--    [Set to yes if linker adds runtime paths of dependent libraries
--    to runtime path list])
--_LT_TAGDECL([], [link_all_deplibs], [0],
--    [Whether libtool must link a program against all its dependency libraries])
--_LT_TAGDECL([], [fix_srcfile_path], [1],
--    [Fix the shell variable $srcfile for the compiler])
--_LT_TAGDECL([], [always_export_symbols], [0],
--    [Set to "yes" if exported symbols are required])
--_LT_TAGDECL([], [export_symbols_cmds], [2],
--    [The commands to list exported symbols])
--_LT_TAGDECL([], [exclude_expsyms], [1],
--    [Symbols that should not be listed in the preloaded symbols])
--_LT_TAGDECL([], [include_expsyms], [1],
--    [Symbols that must always be exported])
--_LT_TAGDECL([], [prelink_cmds], [2],
--    [Commands necessary for linking programs (against libraries) with templates])
--_LT_TAGDECL([], [file_list_spec], [1],
--    [Specify filename containing input files])
--dnl FIXME: Not yet implemented
--dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
--dnl    [Compiler flag to generate thread safe objects])
--])# _LT_LINKER_SHLIBS
--
--
--# _LT_LANG_C_CONFIG([TAG])
--# ------------------------
--# Ensure that the configuration variables for a C compiler are suitably
--# defined.  These variables are subsequently used by _LT_CONFIG to write
--# the compiler configuration to `libtool'.
--m4_defun([_LT_LANG_C_CONFIG],
--[m4_require([_LT_DECL_EGREP])dnl
--lt_save_CC="$CC"
--AC_LANG_PUSH(C)
--
--# Source file extension for C test sources.
--ac_ext=c
--
--# Object file extension for compiled C test sources.
--objext=o
--_LT_TAGVAR(objext, $1)=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code="int some_variable = 0;"
--
--# Code to be used in simple link tests
--lt_simple_link_test_code='int main(){return(0);}'
--
--_LT_TAG_COMPILER
--# Save the default compiler, since it gets overwritten when the other
--# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
--compiler_DEFAULT=$CC
--
--# save warnings/boilerplate of simple test code
--_LT_COMPILER_BOILERPLATE
--_LT_LINKER_BOILERPLATE
--
--if test -n "$compiler"; then
--  _LT_COMPILER_NO_RTTI($1)
--  _LT_COMPILER_PIC($1)
--  _LT_COMPILER_C_O($1)
--  _LT_COMPILER_FILE_LOCKS($1)
--  _LT_LINKER_SHLIBS($1)
--  _LT_SYS_DYNAMIC_LINKER($1)
--  _LT_LINKER_HARDCODE_LIBPATH($1)
--  LT_SYS_DLOPEN_SELF
--  _LT_CMD_STRIPLIB
--
--  # Report which library types will actually be built
--  AC_MSG_CHECKING([if libtool supports shared libraries])
--  AC_MSG_RESULT([$can_build_shared])
--
--  AC_MSG_CHECKING([whether to build shared libraries])
--  test "$can_build_shared" = "no" && enable_shared=no
--
--  # On AIX, shared libraries and static libraries use the same namespace, and
--  # are all built from PIC.
--  case $host_os in
--  aix3*)
--    test "$enable_shared" = yes && enable_static=no
--    if test -n "$RANLIB"; then
--      archive_cmds="$archive_cmds~\$RANLIB \$lib"
--      postinstall_cmds='$RANLIB $lib'
--    fi
--    ;;
--
--  aix[[4-9]]*)
--    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
--      test "$enable_shared" = yes && enable_static=no
--    fi
--    ;;
--  esac
--  AC_MSG_RESULT([$enable_shared])
--
--  AC_MSG_CHECKING([whether to build static libraries])
--  # Make sure either enable_shared or enable_static is yes.
--  test "$enable_shared" = yes || enable_static=yes
--  AC_MSG_RESULT([$enable_static])
--
--  _LT_CONFIG($1)
--fi
--AC_LANG_POP
--CC="$lt_save_CC"
--])# _LT_LANG_C_CONFIG
--
--
--# _LT_PROG_CXX
--# ------------
--# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
--# compiler, we have our own version here.
--m4_defun([_LT_PROG_CXX],
--[
--pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
--AC_PROG_CXX
--if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
--    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
--    (test "X$CXX" != "Xg++"))) ; then
--  AC_PROG_CXXCPP
--else
--  _lt_caught_CXX_error=yes
--fi
--popdef([AC_MSG_ERROR])
--])# _LT_PROG_CXX
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([_LT_PROG_CXX], [])
--
--
--# _LT_LANG_CXX_CONFIG([TAG])
--# --------------------------
--# Ensure that the configuration variables for a C++ compiler are suitably
--# defined.  These variables are subsequently used by _LT_CONFIG to write
--# the compiler configuration to `libtool'.
--m4_defun([_LT_LANG_CXX_CONFIG],
--[AC_REQUIRE([_LT_PROG_CXX])dnl
--m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--m4_require([_LT_DECL_EGREP])dnl
--
--AC_LANG_PUSH(C++)
--_LT_TAGVAR(archive_cmds_need_lc, $1)=no
--_LT_TAGVAR(allow_undefined_flag, $1)=
--_LT_TAGVAR(always_export_symbols, $1)=no
--_LT_TAGVAR(archive_expsym_cmds, $1)=
--_LT_TAGVAR(compiler_needs_object, $1)=no
--_LT_TAGVAR(export_dynamic_flag_spec, $1)=
--_LT_TAGVAR(hardcode_direct, $1)=no
--_LT_TAGVAR(hardcode_direct_absolute, $1)=no
--_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
--_LT_TAGVAR(hardcode_libdir_separator, $1)=
--_LT_TAGVAR(hardcode_minus_L, $1)=no
--_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
--_LT_TAGVAR(hardcode_automatic, $1)=no
--_LT_TAGVAR(inherit_rpath, $1)=no
--_LT_TAGVAR(module_cmds, $1)=
--_LT_TAGVAR(module_expsym_cmds, $1)=
--_LT_TAGVAR(link_all_deplibs, $1)=unknown
--_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
--_LT_TAGVAR(no_undefined_flag, $1)=
--_LT_TAGVAR(whole_archive_flag_spec, $1)=
--_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
--
--# Source file extension for C++ test sources.
--ac_ext=cpp
--
--# Object file extension for compiled C++ test sources.
--objext=o
--_LT_TAGVAR(objext, $1)=$objext
--
--# No sense in running all these tests if we already determined that
--# the CXX compiler isn't working.  Some variables (like enable_shared)
--# are currently assumed to apply to all compilers on this platform,
--# and will be corrupted by setting them based on a non-working compiler.
--if test "$_lt_caught_CXX_error" != yes; then
--  # Code to be used in simple compile tests
--  lt_simple_compile_test_code="int some_variable = 0;"
--
--  # Code to be used in simple link tests
--  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
--
--  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
--  _LT_TAG_COMPILER
--
--  # save warnings/boilerplate of simple test code
--  _LT_COMPILER_BOILERPLATE
--  _LT_LINKER_BOILERPLATE
--
--  # Allow CC to be a program name with arguments.
--  lt_save_CC=$CC
--  lt_save_LD=$LD
--  lt_save_GCC=$GCC
--  GCC=$GXX
--  lt_save_with_gnu_ld=$with_gnu_ld
--  lt_save_path_LD=$lt_cv_path_LD
--  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
--    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
--  else
--    $as_unset lt_cv_prog_gnu_ld
--  fi
--  if test -n "${lt_cv_path_LDCXX+set}"; then
--    lt_cv_path_LD=$lt_cv_path_LDCXX
--  else
--    $as_unset lt_cv_path_LD
--  fi
--  test -z "${LDCXX+set}" || LD=$LDCXX
--  CC=${CXX-"c++"}
--  compiler=$CC
--  _LT_TAGVAR(compiler, $1)=$CC
--  _LT_CC_BASENAME([$compiler])
--
--  if test -n "$compiler"; then
--    # We don't want -fno-exception when compiling C++ code, so set the
--    # no_builtin_flag separately
--    if test "$GXX" = yes; then
--      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
--    else
--      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
--    fi
--
--    if test "$GXX" = yes; then
--      # Set up default GNU C++ configuration
--
--      LT_PATH_LD
--
--      # Check if GNU C++ uses GNU ld as the underlying linker, since the
--      # archiving commands below assume that GNU ld is being used.
--      if test "$with_gnu_ld" = yes; then
--        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
--        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--
--        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
--
--        # If archive_cmds runs LD, not CC, wlarc should be empty
--        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
--        #     investigate it a little bit more. (MM)
--        wlarc='${wl}'
--
--        # ancient GNU ld didn't support --whole-archive et. al.
--        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
--	  $GREP 'no-whole-archive' > /dev/null; then
--          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
--        else
--          _LT_TAGVAR(whole_archive_flag_spec, $1)=
--        fi
--      else
--        with_gnu_ld=no
--        wlarc=
--
--        # A generic and very simple default shared library creation
--        # command for GNU C++ for the case where it uses the native
--        # linker, instead of GNU ld.  If possible, this setting should
--        # overridden to take advantage of the native linker features on
--        # the platform it is being used on.
--        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
--      fi
--
--      # Commands to make compiler produce verbose output that lists
--      # what "hidden" libraries, object files and flags are used when
--      # linking a shared library.
--      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
--
--    else
--      GXX=no
--      with_gnu_ld=no
--      wlarc=
--    fi
--
--    # PORTME: fill in a description of your system's C++ link characteristics
--    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
--    _LT_TAGVAR(ld_shlibs, $1)=yes
--    case $host_os in
--      aix3*)
--        # FIXME: insert proper C++ library support
--        _LT_TAGVAR(ld_shlibs, $1)=no
--        ;;
--      aix[[4-9]]*)
--        if test "$host_cpu" = ia64; then
--          # On IA64, the linker does run time linking by default, so we don't
--          # have to do anything special.
--          aix_use_runtimelinking=no
--          exp_sym_flag='-Bexport'
--          no_entry_flag=""
--        else
--          aix_use_runtimelinking=no
--
--          # Test if we are trying to use run time linking or normal
--          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
--          # need to do runtime linking.
--          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
--	    for ld_flag in $LDFLAGS; do
--	      case $ld_flag in
--	      *-brtl*)
--	        aix_use_runtimelinking=yes
--	        break
--	        ;;
--	      esac
--	    done
--	    ;;
--          esac
--
--          exp_sym_flag='-bexport'
--          no_entry_flag='-bnoentry'
--        fi
--
--        # When large executables or shared objects are built, AIX ld can
--        # have problems creating the table of contents.  If linking a library
--        # or program results in "error TOC overflow" add -mminimal-toc to
--        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
--        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
--
--        _LT_TAGVAR(archive_cmds, $1)=''
--        _LT_TAGVAR(hardcode_direct, $1)=yes
--        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
--        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
--        _LT_TAGVAR(link_all_deplibs, $1)=yes
--        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
--
--        if test "$GXX" = yes; then
--          case $host_os in aix4.[[012]]|aix4.[[012]].*)
--          # We only want to do this on AIX 4.2 and lower, the check
--          # below for broken collect2 doesn't work under 4.3+
--	  collect2name=`${CC} -print-prog-name=collect2`
--	  if test -f "$collect2name" &&
--	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
--	  then
--	    # We have reworked collect2
--	    :
--	  else
--	    # We have old collect2
--	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
--	    # It fails to find uninstalled libraries when the uninstalled
--	    # path is not listed in the libpath.  Setting hardcode_minus_L
--	    # to unsupported forces relinking
--	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
--	  fi
--          esac
--          shared_flag='-shared'
--	  if test "$aix_use_runtimelinking" = yes; then
--	    shared_flag="$shared_flag "'${wl}-G'
--	  fi
--        else
--          # not using gcc
--          if test "$host_cpu" = ia64; then
--	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
--	  # chokes on -Wl,-G. The following line is correct:
--	  shared_flag='-G'
--          else
--	    if test "$aix_use_runtimelinking" = yes; then
--	      shared_flag='${wl}-G'
--	    else
--	      shared_flag='${wl}-bM:SRE'
--	    fi
--          fi
--        fi
--
--        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
--        # It seems that -bexpall does not export symbols beginning with
--        # underscore (_), so it is better to generate a list of symbols to
--	# export.
--        _LT_TAGVAR(always_export_symbols, $1)=yes
--        if test "$aix_use_runtimelinking" = yes; then
--          # Warning - without using the other runtime loading flags (-brtl),
--          # -berok will link without error, but may produce a broken library.
--          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
--          # Determine the default libpath from the value encoded in an empty
--          # executable.
--          _LT_SYS_MODULE_PATH_AIX
--          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
--
--          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
--        else
--          if test "$host_cpu" = ia64; then
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
--	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
--	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
--          else
--	    # Determine the default libpath from the value encoded in an
--	    # empty executable.
--	    _LT_SYS_MODULE_PATH_AIX
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
--	    # Warning - without using the other run time loading flags,
--	    # -berok will link without error, but may produce a broken library.
--	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
--	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
--	    # Exported symbols can be pulled into shared objects from archives
--	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
--	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
--	    # This is similar to how AIX traditionally builds its shared
--	    # libraries.
--	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
--          fi
--        fi
--        ;;
--
--      beos*)
--	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
--	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
--	  # support --undefined.  This deserves some investigation.  FIXME
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	else
--	  _LT_TAGVAR(ld_shlibs, $1)=no
--	fi
--	;;
--
--      chorus*)
--        case $cc_basename in
--          *)
--	  # FIXME: insert proper C++ library support
--	  _LT_TAGVAR(ld_shlibs, $1)=no
--	  ;;
--        esac
--        ;;
--
--      cygwin* | mingw* | pw32* | cegcc*)
--        # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
--        # as there is no search path for DLLs.
--        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--        _LT_TAGVAR(always_export_symbols, $1)=no
--        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
--
--        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
--          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
--          # If the export-symbols file already is a .def file (1st line
--          # is EXPORTS), use it as is; otherwise, prepend...
--          _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
--	    cp $export_symbols $output_objdir/$soname.def;
--          else
--	    echo EXPORTS > $output_objdir/$soname.def;
--	    cat $export_symbols >> $output_objdir/$soname.def;
--          fi~
--          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
--        else
--          _LT_TAGVAR(ld_shlibs, $1)=no
--        fi
--        ;;
--      darwin* | rhapsody*)
--        _LT_DARWIN_LINKER_FEATURES($1)
--	;;
--
--      dgux*)
--        case $cc_basename in
--          ec++*)
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--          ghcx*)
--	    # Green Hills C++ Compiler
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--          *)
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--        esac
--        ;;
--
--      freebsd[[12]]*)
--        # C++ shared libraries reported to be fairly broken before
--	# switch to ELF
--        _LT_TAGVAR(ld_shlibs, $1)=no
--        ;;
--
--      freebsd-elf*)
--        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
--        ;;
--
--      freebsd* | dragonfly*)
--        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
--        # conventions
--        _LT_TAGVAR(ld_shlibs, $1)=yes
--        ;;
--
--      gnu*)
--        ;;
--
--      hpux9*)
--        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
--        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--        _LT_TAGVAR(hardcode_direct, $1)=yes
--        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
--				             # but as the default
--				             # location of the library.
--
--        case $cc_basename in
--          CC*)
--            # FIXME: insert proper C++ library support
--            _LT_TAGVAR(ld_shlibs, $1)=no
--            ;;
--          aCC*)
--            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
--            # Commands to make compiler produce verbose output that lists
--            # what "hidden" libraries, object files and flags are used when
--            # linking a shared library.
--            #
--            # There doesn't appear to be a way to prevent this compiler from
--            # explicitly linking system object files so we need to strip them
--            # from the output so that they don't get included in the library
--            # dependencies.
--            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
--            ;;
--          *)
--            if test "$GXX" = yes; then
--              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
--            else
--              # FIXME: insert proper C++ library support
--              _LT_TAGVAR(ld_shlibs, $1)=no
--            fi
--            ;;
--        esac
--        ;;
--
--      hpux10*|hpux11*)
--        if test $with_gnu_ld = no; then
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
--	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--
--          case $host_cpu in
--            hppa*64*|ia64*)
--              ;;
--            *)
--	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--              ;;
--          esac
--        fi
--        case $host_cpu in
--          hppa*64*|ia64*)
--            _LT_TAGVAR(hardcode_direct, $1)=no
--            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--            ;;
--          *)
--            _LT_TAGVAR(hardcode_direct, $1)=yes
--            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
--            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
--					         # but as the default
--					         # location of the library.
--            ;;
--        esac
--
--        case $cc_basename in
--          CC*)
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--          aCC*)
--	    case $host_cpu in
--	      hppa*64*)
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	        ;;
--	      ia64*)
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	        ;;
--	      *)
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	        ;;
--	    esac
--	    # Commands to make compiler produce verbose output that lists
--	    # what "hidden" libraries, object files and flags are used when
--	    # linking a shared library.
--	    #
--	    # There doesn't appear to be a way to prevent this compiler from
--	    # explicitly linking system object files so we need to strip them
--	    # from the output so that they don't get included in the library
--	    # dependencies.
--	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
--	    ;;
--          *)
--	    if test "$GXX" = yes; then
--	      if test $with_gnu_ld = no; then
--	        case $host_cpu in
--	          hppa*64*)
--	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	            ;;
--	          ia64*)
--	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	            ;;
--	          *)
--	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	            ;;
--	        esac
--	      fi
--	    else
--	      # FIXME: insert proper C++ library support
--	      _LT_TAGVAR(ld_shlibs, $1)=no
--	    fi
--	    ;;
--        esac
--        ;;
--
--      interix[[3-9]]*)
--	_LT_TAGVAR(hardcode_direct, $1)=no
--	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
--	# Instead, shared libraries are loaded at an image base (0x10000000 by
--	# default) and relocated if they conflict, which is a slow very memory
--	# consuming and fragmenting process.  To avoid this, we pick a random,
--	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
--	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
--	;;
--      irix5* | irix6*)
--        case $cc_basename in
--          CC*)
--	    # SGI C++
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
--
--	    # Archives containing C++ object files must be created using
--	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
--	    # necessary to make sure instantiated templates are included
--	    # in the archive.
--	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
--	    ;;
--          *)
--	    if test "$GXX" = yes; then
--	      if test "$with_gnu_ld" = no; then
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--	      else
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
--	      fi
--	    fi
--	    _LT_TAGVAR(link_all_deplibs, $1)=yes
--	    ;;
--        esac
--        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--        _LT_TAGVAR(inherit_rpath, $1)=yes
--        ;;
--
--      linux* | k*bsd*-gnu)
--        case $cc_basename in
--          KCC*)
--	    # Kuck and Associates, Inc. (KAI) C++ Compiler
--
--	    # KCC will only create a shared library if the output file
--	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
--	    # to its proper name (with version) after linking.
--	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
--	    # Commands to make compiler produce verbose output that lists
--	    # what "hidden" libraries, object files and flags are used when
--	    # linking a shared library.
--	    #
--	    # There doesn't appear to be a way to prevent this compiler from
--	    # explicitly linking system object files so we need to strip them
--	    # from the output so that they don't get included in the library
--	    # dependencies.
--	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
--
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
--
--	    # Archives containing C++ object files must be created using
--	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
--	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
--	    ;;
--	  icpc* | ecpc* )
--	    # Intel C++
--	    with_gnu_ld=yes
--	    # version 8.0 and above of icpc choke on multiply defined symbols
--	    # if we add $predep_objects and $postdep_objects, however 7.1 and
--	    # earlier do not add the objects themselves.
--	    case `$CC -V 2>&1` in
--	      *"Version 7."*)
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
--		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--		;;
--	      *)  # Version 8.0 or newer
--	        tmp_idyn=
--	        case $host_cpu in
--		  ia64*) tmp_idyn=' -i_dynamic';;
--		esac
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--		;;
--	    esac
--	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
--	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
--	    ;;
--          pgCC* | pgcpp*)
--            # Portland Group C++ compiler
--	    case `$CC -V` in
--	    *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
--	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
--		rm -rf $tpldir~
--		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
--		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
--	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
--		rm -rf $tpldir~
--		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
--		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
--		$RANLIB $oldlib'
--	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
--		rm -rf $tpldir~
--		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
--		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
--	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
--		rm -rf $tpldir~
--		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
--		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
--	      ;;
--	    *) # Version 6 will use weak symbols
--	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
--	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
--	      ;;
--	    esac
--
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
--	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
--	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
--            ;;
--	  cxx*)
--	    # Compaq C++
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
--
--	    runpath_var=LD_RUN_PATH
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
--	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--
--	    # Commands to make compiler produce verbose output that lists
--	    # what "hidden" libraries, object files and flags are used when
--	    # linking a shared library.
--	    #
--	    # There doesn't appear to be a way to prevent this compiler from
--	    # explicitly linking system object files so we need to strip them
--	    # from the output so that they don't get included in the library
--	    # dependencies.
--	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
--	    ;;
--	  xl*)
--	    # IBM XL 8.0 on PPC, with GNU ld
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	    if test "x$supports_anon_versioning" = xyes; then
--	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
--		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
--		echo "local: *; };" >> $output_objdir/$libname.ver~
--		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
--	    fi
--	    ;;
--	  *)
--	    case `$CC -V 2>&1 | sed 5q` in
--	    *Sun\ C*)
--	      # Sun C++ 5.9
--	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
--	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
--	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
--	      _LT_TAGVAR(compiler_needs_object, $1)=yes
--
--	      # Not sure whether something based on
--	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
--	      # would be better.
--	      output_verbose_link_cmd='echo'
--
--	      # Archives containing C++ object files must be created using
--	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
--	      # necessary to make sure instantiated templates are included
--	      # in the archive.
--	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
--	      ;;
--	    esac
--	    ;;
--	esac
--	;;
--
--      lynxos*)
--        # FIXME: insert proper C++ library support
--	_LT_TAGVAR(ld_shlibs, $1)=no
--	;;
--
--      m88k*)
--        # FIXME: insert proper C++ library support
--        _LT_TAGVAR(ld_shlibs, $1)=no
--	;;
--
--      mvs*)
--        case $cc_basename in
--          cxx*)
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--	  *)
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--	esac
--	;;
--
--      netbsd*)
--        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
--	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
--	  wlarc=
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--	  _LT_TAGVAR(hardcode_direct, $1)=yes
--	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	fi
--	# Workaround some broken pre-1.5 toolchains
--	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
--	;;
--
--      *nto* | *qnx*)
--        _LT_TAGVAR(ld_shlibs, $1)=yes
--	;;
--
--      openbsd2*)
--        # C++ shared libraries are fairly broken
--	_LT_TAGVAR(ld_shlibs, $1)=no
--	;;
--
--      openbsd*)
--	if test -f /usr/libexec/ld.so; then
--	  _LT_TAGVAR(hardcode_direct, $1)=yes
--	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
--	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
--	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
--	  fi
--	  output_verbose_link_cmd=echo
--	else
--	  _LT_TAGVAR(ld_shlibs, $1)=no
--	fi
--	;;
--
--      osf3* | osf4* | osf5*)
--        case $cc_basename in
--          KCC*)
--	    # Kuck and Associates, Inc. (KAI) C++ Compiler
--
--	    # KCC will only create a shared library if the output file
--	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
--	    # to its proper name (with version) after linking.
--	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
--
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
--	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--
--	    # Archives containing C++ object files must be created using
--	    # the KAI C++ compiler.
--	    case $host in
--	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
--	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
--	    esac
--	    ;;
--          RCC*)
--	    # Rational C++ 2.4.1
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--          cxx*)
--	    case $host in
--	      osf3*)
--	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
--	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--		;;
--	      *)
--	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
--	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
--	          echo "-hidden">> $lib.exp~
--	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
--	          $RM $lib.exp'
--	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
--		;;
--	    esac
--
--	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--
--	    # Commands to make compiler produce verbose output that lists
--	    # what "hidden" libraries, object files and flags are used when
--	    # linking a shared library.
--	    #
--	    # There doesn't appear to be a way to prevent this compiler from
--	    # explicitly linking system object files so we need to strip them
--	    # from the output so that they don't get included in the library
--	    # dependencies.
--	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
--	    ;;
--	  *)
--	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
--	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
--	      case $host in
--	        osf3*)
--	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--		  ;;
--	        *)
--	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
--		  ;;
--	      esac
--
--	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
--	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
--
--	      # Commands to make compiler produce verbose output that lists
--	      # what "hidden" libraries, object files and flags are used when
--	      # linking a shared library.
--	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
--
--	    else
--	      # FIXME: insert proper C++ library support
--	      _LT_TAGVAR(ld_shlibs, $1)=no
--	    fi
--	    ;;
--        esac
--        ;;
--
--      psos*)
--        # FIXME: insert proper C++ library support
--        _LT_TAGVAR(ld_shlibs, $1)=no
--        ;;
--
--      sunos4*)
--        case $cc_basename in
--          CC*)
--	    # Sun C++ 4.x
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--          lcc*)
--	    # Lucid
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--          *)
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--        esac
--        ;;
--
--      solaris*)
--        case $cc_basename in
--          CC*)
--	    # Sun C++ 4.2, 5.x and Centerline C++
--            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
--	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
--	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
--
--	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	    case $host_os in
--	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
--	      *)
--		# The compiler driver will combine and reorder linker options,
--		# but understands `-z linker_flag'.
--	        # Supported since Solaris 2.6 (maybe 2.5.1?)
--		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
--	        ;;
--	    esac
--	    _LT_TAGVAR(link_all_deplibs, $1)=yes
--
--	    output_verbose_link_cmd='echo'
--
--	    # Archives containing C++ object files must be created using
--	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
--	    # necessary to make sure instantiated templates are included
--	    # in the archive.
--	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
--	    ;;
--          gcx*)
--	    # Green Hills C++ Compiler
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
--
--	    # The C++ compiler must be used to create the archive.
--	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
--	    ;;
--          *)
--	    # GNU C++ compiler with Solaris linker
--	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
--	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
--	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
--	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
--		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
--
--	        # Commands to make compiler produce verbose output that lists
--	        # what "hidden" libraries, object files and flags are used when
--	        # linking a shared library.
--	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
--	      else
--	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
--	        # platform.
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
--	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
--		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
--
--	        # Commands to make compiler produce verbose output that lists
--	        # what "hidden" libraries, object files and flags are used when
--	        # linking a shared library.
--	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
--	      fi
--
--	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
--	      case $host_os in
--		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
--		*)
--		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
--		  ;;
--	      esac
--	    fi
--	    ;;
--        esac
--        ;;
--
--    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
--      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
--      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
--      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--      runpath_var='LD_RUN_PATH'
--
--      case $cc_basename in
--        CC*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	  ;;
--	*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	  ;;
--      esac
--      ;;
--
--      sysv5* | sco3.2v5* | sco5v6*)
--	# Note: We can NOT use -z defs as we might desire, because we do not
--	# link with -lc, and that would cause any symbols used from libc to
--	# always be unresolved, which means just about no library would
--	# ever link correctly.  If we're not using GNU ld we use -z text
--	# though, which does catch some bad symbols but isn't as heavy-handed
--	# as -z defs.
--	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
--	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
--	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
--	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
--	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
--	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
--	_LT_TAGVAR(link_all_deplibs, $1)=yes
--	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
--	runpath_var='LD_RUN_PATH'
--
--	case $cc_basename in
--          CC*)
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	    ;;
--	  *)
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
--	    ;;
--	esac
--      ;;
--
--      tandem*)
--        case $cc_basename in
--          NCC*)
--	    # NonStop-UX NCC 3.20
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--          *)
--	    # FIXME: insert proper C++ library support
--	    _LT_TAGVAR(ld_shlibs, $1)=no
--	    ;;
--        esac
--        ;;
--
--      vxworks*)
--        # FIXME: insert proper C++ library support
--        _LT_TAGVAR(ld_shlibs, $1)=no
--        ;;
--
--      *)
--        # FIXME: insert proper C++ library support
--        _LT_TAGVAR(ld_shlibs, $1)=no
--        ;;
--    esac
--
--    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
--    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
--
--    _LT_TAGVAR(GCC, $1)="$GXX"
--    _LT_TAGVAR(LD, $1)="$LD"
--
--    ## CAVEAT EMPTOR:
--    ## There is no encapsulation within the following macros, do not change
--    ## the running order or otherwise move them around unless you know exactly
--    ## what you are doing...
--    _LT_SYS_HIDDEN_LIBDEPS($1)
--    _LT_COMPILER_PIC($1)
--    _LT_COMPILER_C_O($1)
--    _LT_COMPILER_FILE_LOCKS($1)
--    _LT_LINKER_SHLIBS($1)
--    _LT_SYS_DYNAMIC_LINKER($1)
--    _LT_LINKER_HARDCODE_LIBPATH($1)
--
--    _LT_CONFIG($1)
--  fi # test -n "$compiler"
--
--  CC=$lt_save_CC
--  LDCXX=$LD
--  LD=$lt_save_LD
--  GCC=$lt_save_GCC
--  with_gnu_ld=$lt_save_with_gnu_ld
--  lt_cv_path_LDCXX=$lt_cv_path_LD
--  lt_cv_path_LD=$lt_save_path_LD
--  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
--  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
--fi # test "$_lt_caught_CXX_error" != yes
--
--AC_LANG_POP
--])# _LT_LANG_CXX_CONFIG
--
--
--# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
--# ---------------------------------
--# Figure out "hidden" library dependencies from verbose
--# compiler output when linking a shared library.
--# Parse the compiler output and extract the necessary
--# objects, libraries and library flags.
--m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
--[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--# Dependencies to place before and after the object being linked:
--_LT_TAGVAR(predep_objects, $1)=
--_LT_TAGVAR(postdep_objects, $1)=
--_LT_TAGVAR(predeps, $1)=
--_LT_TAGVAR(postdeps, $1)=
--_LT_TAGVAR(compiler_lib_search_path, $1)=
--
--dnl we can't use the lt_simple_compile_test_code here,
--dnl because it contains code intended for an executable,
--dnl not a library.  It's possible we should let each
--dnl tag define a new lt_????_link_test_code variable,
--dnl but it's only used here...
--m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
--int a;
--void foo (void) { a = 0; }
--_LT_EOF
--], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
--class Foo
--{
--public:
--  Foo (void) { a = 0; }
--private:
--  int a;
--};
--_LT_EOF
--], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
--      subroutine foo
--      implicit none
--      integer*4 a
--      a=0
--      return
--      end
--_LT_EOF
--], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
--      subroutine foo
--      implicit none
--      integer a
--      a=0
--      return
--      end
--_LT_EOF
--], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
--public class foo {
--  private int a;
--  public void bar (void) {
--    a = 0;
--  }
--};
--_LT_EOF
--])
--dnl Parse the compiler output and extract the necessary
--dnl objects, libraries and library flags.
--if AC_TRY_EVAL(ac_compile); then
--  # Parse the compiler output and extract the necessary
--  # objects, libraries and library flags.
--
--  # Sentinel used to keep track of whether or not we are before
--  # the conftest object file.
--  pre_test_object_deps_done=no
--
--  for p in `eval "$output_verbose_link_cmd"`; do
--    case $p in
--
--    -L* | -R* | -l*)
--       # Some compilers place space between "-{L,R}" and the path.
--       # Remove the space.
--       if test $p = "-L" ||
--          test $p = "-R"; then
--	 prev=$p
--	 continue
--       else
--	 prev=
--       fi
--
--       if test "$pre_test_object_deps_done" = no; then
--	 case $p in
--	 -L* | -R*)
--	   # Internal compiler library paths should come after those
--	   # provided the user.  The postdeps already come after the
--	   # user supplied libs so there is no need to process them.
--	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
--	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
--	   else
--	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
--	   fi
--	   ;;
--	 # The "-l" case would never come before the object being
--	 # linked, so don't bother handling this case.
--	 esac
--       else
--	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
--	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
--	 else
--	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
--	 fi
--       fi
--       ;;
--
--    *.$objext)
--       # This assumes that the test object file only shows up
--       # once in the compiler output.
--       if test "$p" = "conftest.$objext"; then
--	 pre_test_object_deps_done=yes
--	 continue
--       fi
--
--       if test "$pre_test_object_deps_done" = no; then
--	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
--	   _LT_TAGVAR(predep_objects, $1)="$p"
--	 else
--	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
--	 fi
--       else
--	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
--	   _LT_TAGVAR(postdep_objects, $1)="$p"
--	 else
--	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
--	 fi
--       fi
--       ;;
--
--    *) ;; # Ignore the rest.
--
--    esac
--  done
--
--  # Clean up.
--  rm -f a.out a.exe
--else
--  echo "libtool.m4: error: problem compiling $1 test program"
--fi
--
--$RM -f confest.$objext
--
--# PORTME: override above test on systems where it is broken
--m4_if([$1], [CXX],
--[case $host_os in
--interix[[3-9]]*)
--  # Interix 3.5 installs completely hosed .la files for C++, so rather than
--  # hack all around it, let's just trust "g++" to DTRT.
--  _LT_TAGVAR(predep_objects,$1)=
--  _LT_TAGVAR(postdep_objects,$1)=
--  _LT_TAGVAR(postdeps,$1)=
--  ;;
--
--linux*)
--  case `$CC -V 2>&1 | sed 5q` in
--  *Sun\ C*)
--    # Sun C++ 5.9
--
--    # The more standards-conforming stlport4 library is
--    # incompatible with the Cstd library. Avoid specifying
--    # it if it's in CXXFLAGS. Ignore libCrun as
--    # -library=stlport4 depends on it.
--    case " $CXX $CXXFLAGS " in
--    *" -library=stlport4 "*)
--      solaris_use_stlport4=yes
--      ;;
--    esac
--
--    if test "$solaris_use_stlport4" != yes; then
--      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
--    fi
--    ;;
--  esac
--  ;;
--
--solaris*)
--  case $cc_basename in
--  CC*)
--    # The more standards-conforming stlport4 library is
--    # incompatible with the Cstd library. Avoid specifying
--    # it if it's in CXXFLAGS. Ignore libCrun as
--    # -library=stlport4 depends on it.
--    case " $CXX $CXXFLAGS " in
--    *" -library=stlport4 "*)
--      solaris_use_stlport4=yes
--      ;;
--    esac
--
--    # Adding this requires a known-good setup of shared libraries for
--    # Sun compiler versions before 5.6, else PIC objects from an old
--    # archive will be linked into the output, leading to subtle bugs.
--    if test "$solaris_use_stlport4" != yes; then
--      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
--    fi
--    ;;
--  esac
--  ;;
--esac
--])
--
--case " $_LT_TAGVAR(postdeps, $1) " in
--*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
--esac
-- _LT_TAGVAR(compiler_lib_search_dirs, $1)=
--if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
-- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
--fi
--_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
--    [The directories searched by this compiler when creating a shared library])
--_LT_TAGDECL([], [predep_objects], [1],
--    [Dependencies to place before and after the objects being linked to
--    create a shared library])
--_LT_TAGDECL([], [postdep_objects], [1])
--_LT_TAGDECL([], [predeps], [1])
--_LT_TAGDECL([], [postdeps], [1])
--_LT_TAGDECL([], [compiler_lib_search_path], [1],
--    [The library search path used internally by the compiler when linking
--    a shared library])
--])# _LT_SYS_HIDDEN_LIBDEPS
--
--
--# _LT_PROG_F77
--# ------------
--# Since AC_PROG_F77 is broken, in that it returns the empty string
--# if there is no fortran compiler, we have our own version here.
--m4_defun([_LT_PROG_F77],
--[
--pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
--AC_PROG_F77
--if test -z "$F77" || test "X$F77" = "Xno"; then
--  _lt_disable_F77=yes
--fi
--popdef([AC_MSG_ERROR])
--])# _LT_PROG_F77
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([_LT_PROG_F77], [])
--
--
--# _LT_LANG_F77_CONFIG([TAG])
--# --------------------------
--# Ensure that the configuration variables for a Fortran 77 compiler are
--# suitably defined.  These variables are subsequently used by _LT_CONFIG
--# to write the compiler configuration to `libtool'.
--m4_defun([_LT_LANG_F77_CONFIG],
--[AC_REQUIRE([_LT_PROG_F77])dnl
--AC_LANG_PUSH(Fortran 77)
--
--_LT_TAGVAR(archive_cmds_need_lc, $1)=no
--_LT_TAGVAR(allow_undefined_flag, $1)=
--_LT_TAGVAR(always_export_symbols, $1)=no
--_LT_TAGVAR(archive_expsym_cmds, $1)=
--_LT_TAGVAR(export_dynamic_flag_spec, $1)=
--_LT_TAGVAR(hardcode_direct, $1)=no
--_LT_TAGVAR(hardcode_direct_absolute, $1)=no
--_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
--_LT_TAGVAR(hardcode_libdir_separator, $1)=
--_LT_TAGVAR(hardcode_minus_L, $1)=no
--_LT_TAGVAR(hardcode_automatic, $1)=no
--_LT_TAGVAR(inherit_rpath, $1)=no
--_LT_TAGVAR(module_cmds, $1)=
--_LT_TAGVAR(module_expsym_cmds, $1)=
--_LT_TAGVAR(link_all_deplibs, $1)=unknown
--_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
--_LT_TAGVAR(no_undefined_flag, $1)=
--_LT_TAGVAR(whole_archive_flag_spec, $1)=
--_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
--
--# Source file extension for f77 test sources.
--ac_ext=f
--
--# Object file extension for compiled f77 test sources.
--objext=o
--_LT_TAGVAR(objext, $1)=$objext
--
--# No sense in running all these tests if we already determined that
--# the F77 compiler isn't working.  Some variables (like enable_shared)
--# are currently assumed to apply to all compilers on this platform,
--# and will be corrupted by setting them based on a non-working compiler.
--if test "$_lt_disable_F77" != yes; then
--  # Code to be used in simple compile tests
--  lt_simple_compile_test_code="\
--      subroutine t
--      return
--      end
--"
--
--  # Code to be used in simple link tests
--  lt_simple_link_test_code="\
--      program t
--      end
--"
--
--  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
--  _LT_TAG_COMPILER
--
--  # save warnings/boilerplate of simple test code
--  _LT_COMPILER_BOILERPLATE
--  _LT_LINKER_BOILERPLATE
--
--  # Allow CC to be a program name with arguments.
--  lt_save_CC="$CC"
--  lt_save_GCC=$GCC
--  CC=${F77-"f77"}
--  compiler=$CC
--  _LT_TAGVAR(compiler, $1)=$CC
--  _LT_CC_BASENAME([$compiler])
--  GCC=$G77
--  if test -n "$compiler"; then
--    AC_MSG_CHECKING([if libtool supports shared libraries])
--    AC_MSG_RESULT([$can_build_shared])
--
--    AC_MSG_CHECKING([whether to build shared libraries])
--    test "$can_build_shared" = "no" && enable_shared=no
--
--    # On AIX, shared libraries and static libraries use the same namespace, and
--    # are all built from PIC.
--    case $host_os in
--      aix3*)
--        test "$enable_shared" = yes && enable_static=no
--        if test -n "$RANLIB"; then
--          archive_cmds="$archive_cmds~\$RANLIB \$lib"
--          postinstall_cmds='$RANLIB $lib'
--        fi
--        ;;
--      aix[[4-9]]*)
--	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
--	  test "$enable_shared" = yes && enable_static=no
--	fi
--        ;;
--    esac
--    AC_MSG_RESULT([$enable_shared])
--
--    AC_MSG_CHECKING([whether to build static libraries])
--    # Make sure either enable_shared or enable_static is yes.
--    test "$enable_shared" = yes || enable_static=yes
--    AC_MSG_RESULT([$enable_static])
--
--    _LT_TAGVAR(GCC, $1)="$G77"
--    _LT_TAGVAR(LD, $1)="$LD"
--
--    ## CAVEAT EMPTOR:
--    ## There is no encapsulation within the following macros, do not change
--    ## the running order or otherwise move them around unless you know exactly
--    ## what you are doing...
--    _LT_COMPILER_PIC($1)
--    _LT_COMPILER_C_O($1)
--    _LT_COMPILER_FILE_LOCKS($1)
--    _LT_LINKER_SHLIBS($1)
--    _LT_SYS_DYNAMIC_LINKER($1)
--    _LT_LINKER_HARDCODE_LIBPATH($1)
--
--    _LT_CONFIG($1)
--  fi # test -n "$compiler"
--
--  GCC=$lt_save_GCC
--  CC="$lt_save_CC"
--fi # test "$_lt_disable_F77" != yes
--
--AC_LANG_POP
--])# _LT_LANG_F77_CONFIG
--
--
--# _LT_PROG_FC
--# -----------
--# Since AC_PROG_FC is broken, in that it returns the empty string
--# if there is no fortran compiler, we have our own version here.
--m4_defun([_LT_PROG_FC],
--[
--pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
--AC_PROG_FC
--if test -z "$FC" || test "X$FC" = "Xno"; then
--  _lt_disable_FC=yes
--fi
--popdef([AC_MSG_ERROR])
--])# _LT_PROG_FC
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([_LT_PROG_FC], [])
--
--
--# _LT_LANG_FC_CONFIG([TAG])
--# -------------------------
--# Ensure that the configuration variables for a Fortran compiler are
--# suitably defined.  These variables are subsequently used by _LT_CONFIG
--# to write the compiler configuration to `libtool'.
--m4_defun([_LT_LANG_FC_CONFIG],
--[AC_REQUIRE([_LT_PROG_FC])dnl
--AC_LANG_PUSH(Fortran)
--
--_LT_TAGVAR(archive_cmds_need_lc, $1)=no
--_LT_TAGVAR(allow_undefined_flag, $1)=
--_LT_TAGVAR(always_export_symbols, $1)=no
--_LT_TAGVAR(archive_expsym_cmds, $1)=
--_LT_TAGVAR(export_dynamic_flag_spec, $1)=
--_LT_TAGVAR(hardcode_direct, $1)=no
--_LT_TAGVAR(hardcode_direct_absolute, $1)=no
--_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
--_LT_TAGVAR(hardcode_libdir_separator, $1)=
--_LT_TAGVAR(hardcode_minus_L, $1)=no
--_LT_TAGVAR(hardcode_automatic, $1)=no
--_LT_TAGVAR(inherit_rpath, $1)=no
--_LT_TAGVAR(module_cmds, $1)=
--_LT_TAGVAR(module_expsym_cmds, $1)=
--_LT_TAGVAR(link_all_deplibs, $1)=unknown
--_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
--_LT_TAGVAR(no_undefined_flag, $1)=
--_LT_TAGVAR(whole_archive_flag_spec, $1)=
--_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
--
--# Source file extension for fc test sources.
--ac_ext=${ac_fc_srcext-f}
--
--# Object file extension for compiled fc test sources.
--objext=o
--_LT_TAGVAR(objext, $1)=$objext
--
--# No sense in running all these tests if we already determined that
--# the FC compiler isn't working.  Some variables (like enable_shared)
--# are currently assumed to apply to all compilers on this platform,
--# and will be corrupted by setting them based on a non-working compiler.
--if test "$_lt_disable_FC" != yes; then
--  # Code to be used in simple compile tests
--  lt_simple_compile_test_code="\
--      subroutine t
--      return
--      end
--"
--
--  # Code to be used in simple link tests
--  lt_simple_link_test_code="\
--      program t
--      end
--"
--
--  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
--  _LT_TAG_COMPILER
--
--  # save warnings/boilerplate of simple test code
--  _LT_COMPILER_BOILERPLATE
--  _LT_LINKER_BOILERPLATE
--
--  # Allow CC to be a program name with arguments.
--  lt_save_CC="$CC"
--  lt_save_GCC=$GCC
--  CC=${FC-"f95"}
--  compiler=$CC
--  GCC=$ac_cv_fc_compiler_gnu
--
--  _LT_TAGVAR(compiler, $1)=$CC
--  _LT_CC_BASENAME([$compiler])
--
--  if test -n "$compiler"; then
--    AC_MSG_CHECKING([if libtool supports shared libraries])
--    AC_MSG_RESULT([$can_build_shared])
--
--    AC_MSG_CHECKING([whether to build shared libraries])
--    test "$can_build_shared" = "no" && enable_shared=no
--
--    # On AIX, shared libraries and static libraries use the same namespace, and
--    # are all built from PIC.
--    case $host_os in
--      aix3*)
--        test "$enable_shared" = yes && enable_static=no
--        if test -n "$RANLIB"; then
--          archive_cmds="$archive_cmds~\$RANLIB \$lib"
--          postinstall_cmds='$RANLIB $lib'
--        fi
--        ;;
--      aix[[4-9]]*)
--	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
--	  test "$enable_shared" = yes && enable_static=no
--	fi
--        ;;
--    esac
--    AC_MSG_RESULT([$enable_shared])
--
--    AC_MSG_CHECKING([whether to build static libraries])
--    # Make sure either enable_shared or enable_static is yes.
--    test "$enable_shared" = yes || enable_static=yes
--    AC_MSG_RESULT([$enable_static])
--
--    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
--    _LT_TAGVAR(LD, $1)="$LD"
--
--    ## CAVEAT EMPTOR:
--    ## There is no encapsulation within the following macros, do not change
--    ## the running order or otherwise move them around unless you know exactly
--    ## what you are doing...
--    _LT_SYS_HIDDEN_LIBDEPS($1)
--    _LT_COMPILER_PIC($1)
--    _LT_COMPILER_C_O($1)
--    _LT_COMPILER_FILE_LOCKS($1)
--    _LT_LINKER_SHLIBS($1)
--    _LT_SYS_DYNAMIC_LINKER($1)
--    _LT_LINKER_HARDCODE_LIBPATH($1)
--
--    _LT_CONFIG($1)
--  fi # test -n "$compiler"
--
--  GCC=$lt_save_GCC
--  CC="$lt_save_CC"
--fi # test "$_lt_disable_FC" != yes
--
--AC_LANG_POP
--])# _LT_LANG_FC_CONFIG
--
--
--# _LT_LANG_GCJ_CONFIG([TAG])
--# --------------------------
--# Ensure that the configuration variables for the GNU Java Compiler compiler
--# are suitably defined.  These variables are subsequently used by _LT_CONFIG
--# to write the compiler configuration to `libtool'.
--m4_defun([_LT_LANG_GCJ_CONFIG],
--[AC_REQUIRE([LT_PROG_GCJ])dnl
--AC_LANG_SAVE
--
--# Source file extension for Java test sources.
--ac_ext=java
--
--# Object file extension for compiled Java test sources.
--objext=o
--_LT_TAGVAR(objext, $1)=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code="class foo {}"
--
--# Code to be used in simple link tests
--lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
--
--# ltmain only uses $CC for tagged configurations so make sure $CC is set.
--_LT_TAG_COMPILER
--
--# save warnings/boilerplate of simple test code
--_LT_COMPILER_BOILERPLATE
--_LT_LINKER_BOILERPLATE
--
--# Allow CC to be a program name with arguments.
--lt_save_CC="$CC"
--lt_save_GCC=$GCC
--GCC=yes
--CC=${GCJ-"gcj"}
--compiler=$CC
--_LT_TAGVAR(compiler, $1)=$CC
--_LT_TAGVAR(LD, $1)="$LD"
--_LT_CC_BASENAME([$compiler])
--
--# GCJ did not exist at the time GCC didn't implicitly link libc in.
--_LT_TAGVAR(archive_cmds_need_lc, $1)=no
--
--_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
--
--if test -n "$compiler"; then
--  _LT_COMPILER_NO_RTTI($1)
--  _LT_COMPILER_PIC($1)
--  _LT_COMPILER_C_O($1)
--  _LT_COMPILER_FILE_LOCKS($1)
--  _LT_LINKER_SHLIBS($1)
--  _LT_LINKER_HARDCODE_LIBPATH($1)
--
--  _LT_CONFIG($1)
--fi
--
--AC_LANG_RESTORE
--
--GCC=$lt_save_GCC
--CC="$lt_save_CC"
--])# _LT_LANG_GCJ_CONFIG
--
--
--# _LT_LANG_RC_CONFIG([TAG])
--# -------------------------
--# Ensure that the configuration variables for the Windows resource compiler
--# are suitably defined.  These variables are subsequently used by _LT_CONFIG
--# to write the compiler configuration to `libtool'.
--m4_defun([_LT_LANG_RC_CONFIG],
--[AC_REQUIRE([LT_PROG_RC])dnl
--AC_LANG_SAVE
--
--# Source file extension for RC test sources.
--ac_ext=rc
--
--# Object file extension for compiled RC test sources.
--objext=o
--_LT_TAGVAR(objext, $1)=$objext
--
--# Code to be used in simple compile tests
--lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
--
--# Code to be used in simple link tests
--lt_simple_link_test_code="$lt_simple_compile_test_code"
--
--# ltmain only uses $CC for tagged configurations so make sure $CC is set.
--_LT_TAG_COMPILER
--
--# save warnings/boilerplate of simple test code
--_LT_COMPILER_BOILERPLATE
--_LT_LINKER_BOILERPLATE
--
--# Allow CC to be a program name with arguments.
--lt_save_CC="$CC"
--lt_save_GCC=$GCC
--GCC=
--CC=${RC-"windres"}
--compiler=$CC
--_LT_TAGVAR(compiler, $1)=$CC
--_LT_CC_BASENAME([$compiler])
--_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
--
--if test -n "$compiler"; then
--  :
--  _LT_CONFIG($1)
--fi
--
--GCC=$lt_save_GCC
--AC_LANG_RESTORE
--CC="$lt_save_CC"
--])# _LT_LANG_RC_CONFIG
--
--
--# LT_PROG_GCJ
--# -----------
--AC_DEFUN([LT_PROG_GCJ],
--[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
--  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
--    [AC_CHECK_TOOL(GCJ, gcj,)
--      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
--      AC_SUBST(GCJFLAGS)])])[]dnl
--])
--
--# Old name:
--AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
--
--
--# LT_PROG_RC
--# ----------
--AC_DEFUN([LT_PROG_RC],
--[AC_CHECK_TOOL(RC, windres,)
--])
--
--# Old name:
--AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([LT_AC_PROG_RC], [])
--
--
--# _LT_DECL_EGREP
--# --------------
--# If we don't have a new enough Autoconf to choose the best grep
--# available, choose the one first in the user's PATH.
--m4_defun([_LT_DECL_EGREP],
--[AC_REQUIRE([AC_PROG_EGREP])dnl
--AC_REQUIRE([AC_PROG_FGREP])dnl
--test -z "$GREP" && GREP=grep
--_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
--_LT_DECL([], [EGREP], [1], [An ERE matcher])
--_LT_DECL([], [FGREP], [1], [A literal string matcher])
--dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
--AC_SUBST([GREP])
--])
--
--
--# _LT_DECL_OBJDUMP
--# --------------
--# If we don't have a new enough Autoconf to choose the best objdump
--# available, choose the one first in the user's PATH.
--m4_defun([_LT_DECL_OBJDUMP],
--[AC_CHECK_TOOL(OBJDUMP, objdump, false)
--test -z "$OBJDUMP" && OBJDUMP=objdump
--_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
--AC_SUBST([OBJDUMP])
--])
--
--
--# _LT_DECL_SED
--# ------------
--# Check for a fully-functional sed program, that truncates
--# as few characters as possible.  Prefer GNU sed if found.
--m4_defun([_LT_DECL_SED],
--[AC_PROG_SED
--test -z "$SED" && SED=sed
--Xsed="$SED -e 1s/^X//"
--_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
--_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
--    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
--])# _LT_DECL_SED
--
--m4_ifndef([AC_PROG_SED], [
--# NOTE: This macro has been submitted for inclusion into   #
--#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
--#  a released version of Autoconf we should remove this    #
--#  macro and use it instead.                               #
--
--m4_defun([AC_PROG_SED],
--[AC_MSG_CHECKING([for a sed that does not truncate output])
--AC_CACHE_VAL(lt_cv_path_SED,
--[# Loop through the user's path and test for sed and gsed.
--# Then use that list of sed's as ones to test for truncation.
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
--  IFS=$as_save_IFS
--  test -z "$as_dir" && as_dir=.
--  for lt_ac_prog in sed gsed; do
--    for ac_exec_ext in '' $ac_executable_extensions; do
--      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
--        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
--      fi
--    done
--  done
--done
--IFS=$as_save_IFS
--lt_ac_max=0
--lt_ac_count=0
--# Add /usr/xpg4/bin/sed as it is typically found on Solaris
--# along with /bin/sed that truncates output.
--for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
--  test ! -f $lt_ac_sed && continue
--  cat /dev/null > conftest.in
--  lt_ac_count=0
--  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
--  # Check for GNU sed and select it if it is found.
--  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
--    lt_cv_path_SED=$lt_ac_sed
--    break
--  fi
--  while true; do
--    cat conftest.in conftest.in >conftest.tmp
--    mv conftest.tmp conftest.in
--    cp conftest.in conftest.nl
--    echo >>conftest.nl
--    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
--    cmp -s conftest.out conftest.nl || break
--    # 10000 chars as input seems more than enough
--    test $lt_ac_count -gt 10 && break
--    lt_ac_count=`expr $lt_ac_count + 1`
--    if test $lt_ac_count -gt $lt_ac_max; then
--      lt_ac_max=$lt_ac_count
--      lt_cv_path_SED=$lt_ac_sed
--    fi
--  done
--done
--])
--SED=$lt_cv_path_SED
--AC_SUBST([SED])
--AC_MSG_RESULT([$SED])
--])#AC_PROG_SED
--])#m4_ifndef
--
--# Old name:
--AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([LT_AC_PROG_SED], [])
--
--
--# _LT_CHECK_SHELL_FEATURES
--# ------------------------
--# Find out whether the shell is Bourne or XSI compatible,
--# or has some other useful features.
--m4_defun([_LT_CHECK_SHELL_FEATURES],
--[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
--# Try some XSI features
--xsi_shell=no
--( _lt_dummy="a/b/c"
--  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
--      = c,a/b,, \
--    && eval 'test $(( 1 + 1 )) -eq 2 \
--    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
--  && xsi_shell=yes
--AC_MSG_RESULT([$xsi_shell])
--_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
--
--AC_MSG_CHECKING([whether the shell understands "+="])
--lt_shell_append=no
--( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
--    >/dev/null 2>&1 \
--  && lt_shell_append=yes
--AC_MSG_RESULT([$lt_shell_append])
--_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
--
--if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
--  lt_unset=unset
--else
--  lt_unset=false
--fi
--_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
--
--# test EBCDIC or ASCII
--case `echo X|tr X '\101'` in
-- A) # ASCII based system
--    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
--  lt_SP2NL='tr \040 \012'
--  lt_NL2SP='tr \015\012 \040\040'
--  ;;
-- *) # EBCDIC based system
--  lt_SP2NL='tr \100 \n'
--  lt_NL2SP='tr \r\n \100\100'
--  ;;
--esac
--_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
--_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
--])# _LT_CHECK_SHELL_FEATURES
--
--
--# _LT_PROG_XSI_SHELLFNS
--# ---------------------
--# Bourne and XSI compatible variants of some useful shell functions.
--m4_defun([_LT_PROG_XSI_SHELLFNS],
--[case $xsi_shell in
--  yes)
--    cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
--  case ${1} in
--    */*) func_dirname_result="${1%/*}${2}" ;;
--    *  ) func_dirname_result="${3}" ;;
--  esac
--}
--
--# func_basename file
--func_basename ()
--{
--  func_basename_result="${1##*/}"
--}
--
--# func_dirname_and_basename file append nondir_replacement
--# perform func_basename and func_dirname in a single function
--# call:
--#   dirname:  Compute the dirname of FILE.  If nonempty,
--#             add APPEND to the result, otherwise set result
--#             to NONDIR_REPLACEMENT.
--#             value returned in "$func_dirname_result"
--#   basename: Compute filename of FILE.
--#             value retuned in "$func_basename_result"
--# Implementation must be kept synchronized with func_dirname
--# and func_basename. For efficiency, we do not delegate to
--# those functions but instead duplicate the functionality here.
--func_dirname_and_basename ()
--{
--  case ${1} in
--    */*) func_dirname_result="${1%/*}${2}" ;;
--    *  ) func_dirname_result="${3}" ;;
--  esac
--  func_basename_result="${1##*/}"
--}
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--func_stripname ()
--{
--  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
--  # positional parameters, so assign one to ordinary parameter first.
--  func_stripname_result=${3}
--  func_stripname_result=${func_stripname_result#"${1}"}
--  func_stripname_result=${func_stripname_result%"${2}"}
--}
--
--# func_opt_split
--func_opt_split ()
--{
--  func_opt_split_opt=${1%%=*}
--  func_opt_split_arg=${1#*=}
--}
--
--# func_lo2o object
--func_lo2o ()
--{
--  case ${1} in
--    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
--    *)    func_lo2o_result=${1} ;;
--  esac
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
--  func_xform_result=${1%.*}.lo
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
--  func_arith_result=$(( $[*] ))
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
--  func_len_result=${#1}
--}
--
--_LT_EOF
--    ;;
--  *) # Bourne compatible functions.
--    cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
--  # Extract subdirectory from the argument.
--  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
--  if test "X$func_dirname_result" = "X${1}"; then
--    func_dirname_result="${3}"
--  else
--    func_dirname_result="$func_dirname_result${2}"
--  fi
--}
--
--# func_basename file
--func_basename ()
--{
--  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
--}
--
--dnl func_dirname_and_basename
--dnl A portable version of this function is already defined in general.m4sh
--dnl so there is no need for it here.
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--# func_strip_suffix prefix name
--func_stripname ()
--{
--  case ${2} in
--    .*) func_stripname_result=`$ECHO "X${3}" \
--           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
--    *)  func_stripname_result=`$ECHO "X${3}" \
--           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
--  esac
--}
--
--# sed scripts:
--my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
--my_sed_long_arg='1s/^-[[^=]]*=//'
--
--# func_opt_split
--func_opt_split ()
--{
--  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
--  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
--}
--
--# func_lo2o object
--func_lo2o ()
--{
--  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
--  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
--  func_arith_result=`expr "$[@]"`
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
--  func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
--}
--
--_LT_EOF
--esac
--
--case $lt_shell_append in
--  yes)
--    cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
--  eval "$[1]+=\$[2]"
--}
--_LT_EOF
--    ;;
--  *)
--    cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
--  eval "$[1]=\$$[1]\$[2]"
--}
--
--_LT_EOF
--    ;;
--  esac
--])
-+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
- 
- # ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*-
- #
--#   Copyright (C) 1999-2006, 2007, 2008 Free Software Foundation, Inc.
-+#   Copyright (C) 1999-2006, 2007, 2008, 2011 Free Software Foundation, Inc.
- #   Written by Thomas Tanner, 1999
- #
- # This file is free software; the Free Software Foundation gives
- # unlimited permission to copy and/or distribute it, with or without
- # modifications, as long as this notice is preserved.
- 
--# serial 17 LTDL_INIT
-+# serial 18 LTDL_INIT
- 
- # LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE])
- # ------------------------------------------
- # DIRECTORY contains the libltdl sources.  It is okay to call this
- # function multiple times, as long as the same DIRECTORY is always given.
- AC_DEFUN([LT_CONFIG_LTDL_DIR],
- [AC_BEFORE([$0], [LTDL_INIT])
- _$0($*)
-@@ -7774,20 +424,26 @@ m4_ifset([AH_HEADER],
- AC_SUBST([LT_CONFIG_H])
- 
- AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h],
- 	[], [], [AC_INCLUDES_DEFAULT])
- 
- AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])])
- AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])])
- 
-+m4_pattern_allow([LT_LIBEXT])dnl
- AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension])
- 
-+name=
-+eval "lt_libprefix=\"$libname_spec\""
-+m4_pattern_allow([LT_LIBPREFIX])dnl
-+AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix])
-+
- name=ltdl
--LTDLOPEN=`eval "\\$ECHO \"$libname_spec\""`
-+eval "LTDLOPEN=\"$libname_spec\""
- AC_SUBST([LTDLOPEN])
- ])# _LTDL_SETUP
- 
- 
- # _LT_ENABLE_INSTALL
- # ------------------
- m4_define([_LT_ENABLE_INSTALL],
- [AC_ARG_ENABLE([ltdl-install],
-@@ -7834,17 +490,17 @@ AC_CACHE_CHECK([whether deplibs are load
-   darwin*)
-     # Assuming the user has installed a libdl from somewhere, this is true
-     # If you are looking for one http://www.opendarwin.org/projects/dlcompat
-     lt_cv_sys_dlopen_deplibs=yes
-     ;;
-   freebsd* | dragonfly*)
-     lt_cv_sys_dlopen_deplibs=yes
-     ;;
--  gnu* | linux* | k*bsd*-gnu)
-+  gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu)
-     # GNU and its variants, using gnu ld.so (Glibc)
-     lt_cv_sys_dlopen_deplibs=yes
-     ;;
-   hpux10*|hpux11*)
-     lt_cv_sys_dlopen_deplibs=yes
-     ;;
-   interix*)
-     lt_cv_sys_dlopen_deplibs=yes
-@@ -7914,22 +570,29 @@ dnl AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS
- # -----------------
- AC_DEFUN([LT_SYS_MODULE_EXT],
- [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
- AC_CACHE_CHECK([which extension is used for runtime loadable modules],
-   [libltdl_cv_shlibext],
- [
- module=yes
- eval libltdl_cv_shlibext=$shrext_cmds
-+module=no
-+eval libltdl_cv_shrext=$shrext_cmds
-   ])
- if test -n "$libltdl_cv_shlibext"; then
-   m4_pattern_allow([LT_MODULE_EXT])dnl
-   AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"],
-     [Define to the extension used for runtime loadable modules, say, ".so".])
- fi
-+if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then
-+  m4_pattern_allow([LT_SHARED_EXT])dnl
-+  AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"],
-+    [Define to the shared library suffix, say, ".dylib".])
-+fi
- ])# LT_SYS_MODULE_EXT
- 
- # Old name:
- AU_ALIAS([AC_LTDL_SHLIBEXT], [LT_SYS_MODULE_EXT])
- dnl aclocal-1.4 backwards compatibility:
- dnl AC_DEFUN([AC_LTDL_SHLIBEXT], [])
- 
- 
-@@ -8170,689 +833,83 @@ if test x"$libltdl_cv_need_uscore" = xye
- fi
- ])# LT_FUNC_DLSYM_USCORE
- 
- # Old name:
- AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE])
- dnl aclocal-1.4 backwards compatibility:
- dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], [])
- 
--# Helper functions for option handling.                    -*- Autoconf -*-
--#
--#   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
--#   Written by Gary V. Vaughan, 2004
--#
--# This file is free software; the Free Software Foundation gives
--# unlimited permission to copy and/or distribute it, with or without
--# modifications, as long as this notice is preserved.
--
--# serial 6 ltoptions.m4
--
--# This is to help aclocal find these macros, as it can't see m4_define.
--AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
--
--
--# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
--# ------------------------------------------
--m4_define([_LT_MANGLE_OPTION],
--[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
--
--
--# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
--# ---------------------------------------
--# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
--# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
--# saved as a flag.
--m4_define([_LT_SET_OPTION],
--[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
--m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
--        _LT_MANGLE_DEFUN([$1], [$2]),
--    [m4_warning([Unknown $1 option `$2'])])[]dnl
--])
--
--
--# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
--# ------------------------------------------------------------
--# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
--m4_define([_LT_IF_OPTION],
--[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
--
--
--# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
--# -------------------------------------------------------
--# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
--# are set.
--m4_define([_LT_UNLESS_OPTIONS],
--[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
--	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
--		      [m4_define([$0_found])])])[]dnl
--m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
--])[]dnl
--])
--
--
--# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
--# ----------------------------------------
--# OPTION-LIST is a space-separated list of Libtool options associated
--# with MACRO-NAME.  If any OPTION has a matching handler declared with
--# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
--# the unknown option and exit.
--m4_defun([_LT_SET_OPTIONS],
--[# Set options
--m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
--    [_LT_SET_OPTION([$1], _LT_Option)])
--
--m4_if([$1],[LT_INIT],[
--  dnl
--  dnl Simply set some default values (i.e off) if boolean options were not
--  dnl specified:
--  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
--  ])
--  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
--  ])
--  dnl
--  dnl If no reference was made to various pairs of opposing options, then
--  dnl we run the default mode handler for the pair.  For example, if neither
--  dnl `shared' nor `disable-shared' was passed, we enable building of shared
--  dnl archives by default:
--  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
--  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
--  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
--  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
--  		   [_LT_ENABLE_FAST_INSTALL])
--  ])
--])# _LT_SET_OPTIONS
--
--
--
--# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
--# -----------------------------------------
--m4_define([_LT_MANGLE_DEFUN],
--[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
--
--
--# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
--# -----------------------------------------------
--m4_define([LT_OPTION_DEFINE],
--[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
--])# LT_OPTION_DEFINE
--
--
--# dlopen
--# ------
--LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
--])
--
--AU_DEFUN([AC_LIBTOOL_DLOPEN],
--[_LT_SET_OPTION([LT_INIT], [dlopen])
--AC_DIAGNOSE([obsolete],
--[$0: Remove this warning and the call to _LT_SET_OPTION when you
--put the `dlopen' option into LT_INIT's first parameter.])
--])
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
--
--
--# win32-dll
--# ---------
--# Declare package support for building win32 dll's.
--LT_OPTION_DEFINE([LT_INIT], [win32-dll],
--[enable_win32_dll=yes
--
--case $host in
--*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
--  AC_CHECK_TOOL(AS, as, false)
--  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
--  AC_CHECK_TOOL(OBJDUMP, objdump, false)
--  ;;
--esac
--
--test -z "$AS" && AS=as
--_LT_DECL([], [AS],      [0], [Assembler program])dnl
--
--test -z "$DLLTOOL" && DLLTOOL=dlltool
--_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
--
--test -z "$OBJDUMP" && OBJDUMP=objdump
--_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
--])# win32-dll
--
--AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
--[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--_LT_SET_OPTION([LT_INIT], [win32-dll])
--AC_DIAGNOSE([obsolete],
--[$0: Remove this warning and the call to _LT_SET_OPTION when you
--put the `win32-dll' option into LT_INIT's first parameter.])
--])
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
--
--
--# _LT_ENABLE_SHARED([DEFAULT])
--# ----------------------------
--# implement the --enable-shared flag, and supports the `shared' and
--# `disable-shared' LT_INIT options.
--# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
--m4_define([_LT_ENABLE_SHARED],
--[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
--AC_ARG_ENABLE([shared],
--    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
--	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
--    [p=${PACKAGE-default}
--    case $enableval in
--    yes) enable_shared=yes ;;
--    no) enable_shared=no ;;
--    *)
--      enable_shared=no
--      # Look at the argument we got.  We use all the common list separators.
--      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
--      for pkg in $enableval; do
--	IFS="$lt_save_ifs"
--	if test "X$pkg" = "X$p"; then
--	  enable_shared=yes
--	fi
--      done
--      IFS="$lt_save_ifs"
--      ;;
--    esac],
--    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
--
--    _LT_DECL([build_libtool_libs], [enable_shared], [0],
--	[Whether or not to build shared libraries])
--])# _LT_ENABLE_SHARED
--
--LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
--LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
--
--# Old names:
--AC_DEFUN([AC_ENABLE_SHARED],
--[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
--])
--
--AC_DEFUN([AC_DISABLE_SHARED],
--[_LT_SET_OPTION([LT_INIT], [disable-shared])
--])
--
--AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
--AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AM_ENABLE_SHARED], [])
--dnl AC_DEFUN([AM_DISABLE_SHARED], [])
--
--
--
--# _LT_ENABLE_STATIC([DEFAULT])
--# ----------------------------
--# implement the --enable-static flag, and support the `static' and
--# `disable-static' LT_INIT options.
--# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
--m4_define([_LT_ENABLE_STATIC],
--[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
--AC_ARG_ENABLE([static],
--    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
--	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
--    [p=${PACKAGE-default}
--    case $enableval in
--    yes) enable_static=yes ;;
--    no) enable_static=no ;;
--    *)
--     enable_static=no
--      # Look at the argument we got.  We use all the common list separators.
--      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
--      for pkg in $enableval; do
--	IFS="$lt_save_ifs"
--	if test "X$pkg" = "X$p"; then
--	  enable_static=yes
--	fi
--      done
--      IFS="$lt_save_ifs"
--      ;;
--    esac],
--    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
--
--    _LT_DECL([build_old_libs], [enable_static], [0],
--	[Whether or not to build static libraries])
--])# _LT_ENABLE_STATIC
--
--LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
--LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
--
--# Old names:
--AC_DEFUN([AC_ENABLE_STATIC],
--[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
--])
--
--AC_DEFUN([AC_DISABLE_STATIC],
--[_LT_SET_OPTION([LT_INIT], [disable-static])
--])
--
--AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
--AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AM_ENABLE_STATIC], [])
--dnl AC_DEFUN([AM_DISABLE_STATIC], [])
--
--
--
--# _LT_ENABLE_FAST_INSTALL([DEFAULT])
--# ----------------------------------
--# implement the --enable-fast-install flag, and support the `fast-install'
--# and `disable-fast-install' LT_INIT options.
--# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
--m4_define([_LT_ENABLE_FAST_INSTALL],
--[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
--AC_ARG_ENABLE([fast-install],
--    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
--    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
--    [p=${PACKAGE-default}
--    case $enableval in
--    yes) enable_fast_install=yes ;;
--    no) enable_fast_install=no ;;
--    *)
--      enable_fast_install=no
--      # Look at the argument we got.  We use all the common list separators.
--      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
--      for pkg in $enableval; do
--	IFS="$lt_save_ifs"
--	if test "X$pkg" = "X$p"; then
--	  enable_fast_install=yes
--	fi
--      done
--      IFS="$lt_save_ifs"
--      ;;
--    esac],
--    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
--
--_LT_DECL([fast_install], [enable_fast_install], [0],
--	 [Whether or not to optimize for fast installation])dnl
--])# _LT_ENABLE_FAST_INSTALL
--
--LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
--LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
--
--# Old names:
--AU_DEFUN([AC_ENABLE_FAST_INSTALL],
--[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
--AC_DIAGNOSE([obsolete],
--[$0: Remove this warning and the call to _LT_SET_OPTION when you put
--the `fast-install' option into LT_INIT's first parameter.])
--])
--
--AU_DEFUN([AC_DISABLE_FAST_INSTALL],
--[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
--AC_DIAGNOSE([obsolete],
--[$0: Remove this warning and the call to _LT_SET_OPTION when you put
--the `disable-fast-install' option into LT_INIT's first parameter.])
--])
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
--dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
--
--
--# _LT_WITH_PIC([MODE])
--# --------------------
--# implement the --with-pic flag, and support the `pic-only' and `no-pic'
--# LT_INIT options.
--# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
--m4_define([_LT_WITH_PIC],
--[AC_ARG_WITH([pic],
--    [AS_HELP_STRING([--with-pic],
--	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
--    [pic_mode="$withval"],
--    [pic_mode=default])
--
--test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
--
--_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
--])# _LT_WITH_PIC
--
--LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
--LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
--
--# Old name:
--AU_DEFUN([AC_LIBTOOL_PICMODE],
--[_LT_SET_OPTION([LT_INIT], [pic-only])
--AC_DIAGNOSE([obsolete],
--[$0: Remove this warning and the call to _LT_SET_OPTION when you
--put the `pic-only' option into LT_INIT's first parameter.])
--])
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
--
--
--m4_define([_LTDL_MODE], [])
--LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
--		 [m4_define([_LTDL_MODE], [nonrecursive])])
--LT_OPTION_DEFINE([LTDL_INIT], [recursive],
--		 [m4_define([_LTDL_MODE], [recursive])])
--LT_OPTION_DEFINE([LTDL_INIT], [subproject],
--		 [m4_define([_LTDL_MODE], [subproject])])
--
--m4_define([_LTDL_TYPE], [])
--LT_OPTION_DEFINE([LTDL_INIT], [installable],
--		 [m4_define([_LTDL_TYPE], [installable])])
--LT_OPTION_DEFINE([LTDL_INIT], [convenience],
--		 [m4_define([_LTDL_TYPE], [convenience])])
--
--# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
--#
--# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
--# Written by Gary V. Vaughan, 2004
--#
--# This file is free software; the Free Software Foundation gives
--# unlimited permission to copy and/or distribute it, with or without
--# modifications, as long as this notice is preserved.
--
--# serial 6 ltsugar.m4
--
--# This is to help aclocal find these macros, as it can't see m4_define.
--AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
--
--
--# lt_join(SEP, ARG1, [ARG2...])
--# -----------------------------
--# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
--# associated separator.
--# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
--# versions in m4sugar had bugs.
--m4_define([lt_join],
--[m4_if([$#], [1], [],
--       [$#], [2], [[$2]],
--       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
--m4_define([_lt_join],
--[m4_if([$#$2], [2], [],
--       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
--
--
--# lt_car(LIST)
--# lt_cdr(LIST)
--# ------------
--# Manipulate m4 lists.
--# These macros are necessary as long as will still need to support
--# Autoconf-2.59 which quotes differently.
--m4_define([lt_car], [[$1]])
--m4_define([lt_cdr],
--[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
--       [$#], 1, [],
--       [m4_dquote(m4_shift($@))])])
--m4_define([lt_unquote], $1)
--
--
--# lt_append(MACRO-NAME, STRING, [SEPARATOR])
--# ------------------------------------------
--# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
--# Note that neither SEPARATOR nor STRING are expanded; they are appended
--# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
--# No SEPARATOR is output if MACRO-NAME was previously undefined (different
--# than defined and empty).
--#
--# This macro is needed until we can rely on Autoconf 2.62, since earlier
--# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
--m4_define([lt_append],
--[m4_define([$1],
--	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
--
--
--
--# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
--# ----------------------------------------------------------
--# Produce a SEP delimited list of all paired combinations of elements of
--# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
--# has the form PREFIXmINFIXSUFFIXn.
--# Needed until we can rely on m4_combine added in Autoconf 2.62.
--m4_define([lt_combine],
--[m4_if(m4_eval([$# > 3]), [1],
--       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
--[[m4_foreach([_Lt_prefix], [$2],
--	     [m4_foreach([_Lt_suffix],
--		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
--	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
--
--
--# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
--# -----------------------------------------------------------------------
--# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
--# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
--m4_define([lt_if_append_uniq],
--[m4_ifdef([$1],
--	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
--		 [lt_append([$1], [$2], [$3])$4],
--		 [$5])],
--	  [lt_append([$1], [$2], [$3])$4])])
--
--
--# lt_dict_add(DICT, KEY, VALUE)
--# -----------------------------
--m4_define([lt_dict_add],
--[m4_define([$1($2)], [$3])])
--
--
--# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
--# --------------------------------------------
--m4_define([lt_dict_add_subkey],
--[m4_define([$1($2:$3)], [$4])])
--
--
--# lt_dict_fetch(DICT, KEY, [SUBKEY])
--# ----------------------------------
--m4_define([lt_dict_fetch],
--[m4_ifval([$3],
--	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
--    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
--
--
--# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
--# -----------------------------------------------------------------
--m4_define([lt_if_dict_fetch],
--[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
--	[$5],
--    [$6])])
--
--
--# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
--# --------------------------------------------------------------
--m4_define([lt_dict_filter],
--[m4_if([$5], [], [],
--  [lt_join(m4_quote(m4_default([$4], [[, ]])),
--           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
--		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
--])
--
--# ltversion.m4 -- version numbers			-*- Autoconf -*-
--#
--#   Copyright (C) 2004 Free Software Foundation, Inc.
--#   Written by Scott James Remnant, 2004
--#
--# This file is free software; the Free Software Foundation gives
--# unlimited permission to copy and/or distribute it, with or without
--# modifications, as long as this notice is preserved.
--
--# Generated from ltversion.in.
--
--# serial 3017 ltversion.m4
--# This file is part of GNU Libtool
--
--m4_define([LT_PACKAGE_VERSION], [2.2.6b])
--m4_define([LT_PACKAGE_REVISION], [1.3017])
--
--AC_DEFUN([LTVERSION_VERSION],
--[macro_version='2.2.6b'
--macro_revision='1.3017'
--_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
--_LT_DECL(, macro_revision, 0)
--])
--
--# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
--#
--#   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
--#   Written by Scott James Remnant, 2004.
--#
--# This file is free software; the Free Software Foundation gives
--# unlimited permission to copy and/or distribute it, with or without
--# modifications, as long as this notice is preserved.
--
--# serial 4 lt~obsolete.m4
--
--# These exist entirely to fool aclocal when bootstrapping libtool.
--#
--# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
--# which have later been changed to m4_define as they aren't part of the
--# exported API, or moved to Autoconf or Automake where they belong.
--#
--# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
--# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
--# using a macro with the same name in our local m4/libtool.m4 it'll
--# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
--# and doesn't know about Autoconf macros at all.)
--#
--# So we provide this file, which has a silly filename so it's always
--# included after everything else.  This provides aclocal with the
--# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
--# because those macros already exist, or will be overwritten later.
--# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
--#
--# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
--# Yes, that means every name once taken will need to remain here until
--# we give up compatibility with versions before 1.7, at which point
--# we need to keep only those names which we still refer to.
--
--# This is to help aclocal find these macros, as it can't see m4_define.
--AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
--
--m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
--m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
--m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
--m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
--m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
--m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
--m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
--m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
--m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
--m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
--m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
--m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
--m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
--m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
--m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
--m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
--m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
--m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
--m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
--m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
--m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
--m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
--m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
--m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
--m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
--m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
--m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
--m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
--m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
--m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
--m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
--m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
--m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
--m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
--m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
--m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
--m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
--m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
--m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
--m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
--m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
--m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
--m4_ifndef([AC_LIBTOOL_RC],		[AC_DEFUN([AC_LIBTOOL_RC])])
--m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
--m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
--m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
--m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
--m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
--m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
--m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
--m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
--m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
--m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
--m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
--m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
--
--# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
-+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
- # AM_AUTOMAKE_VERSION(VERSION)
- # ----------------------------
- # Automake X.Y traces this macro to ensure aclocal.m4 has been
- # generated from the m4 files accompanying Automake X.Y.
- # (This private macro should not be called outside this file.)
- AC_DEFUN([AM_AUTOMAKE_VERSION],
--[am__api_version='1.11'
-+[am__api_version='1.13'
- dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
- dnl require some minimum version.  Point them to the right macro.
--m4_if([$1], [1.11.1], [],
-+m4_if([$1], [1.13.4], [],
-       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
- ])
- 
- # _AM_AUTOCONF_VERSION(VERSION)
- # -----------------------------
- # aclocal traces this macro to find the Autoconf version.
- # This is a private macro too.  Using m4_define simplifies
- # the logic in aclocal, which can simply ignore this definition.
- m4_define([_AM_AUTOCONF_VERSION], [])
- 
- # AM_SET_CURRENT_AUTOMAKE_VERSION
- # -------------------------------
- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
- # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
--[AM_AUTOMAKE_VERSION([1.11.1])dnl
-+[AM_AUTOMAKE_VERSION([1.13.4])dnl
- m4_ifndef([AC_AUTOCONF_VERSION],
-   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
- _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
- 
- # Figure out how to run the assembler.                      -*- Autoconf -*-
- 
--# Copyright (C) 2001, 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
-+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--# serial 5
--
- # AM_PROG_AS
- # ----------
- AC_DEFUN([AM_PROG_AS],
- [# By default we simply use the C compiler to build assembly code.
- AC_REQUIRE([AC_PROG_CC])
- test "${CCAS+set}" = set || CCAS=$CC
- test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
- AC_ARG_VAR([CCAS],      [assembler compiler command (defaults to CC)])
- AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)])
- _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl
- ])
- 
- # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
- 
--# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
-+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
- # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
--# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
--# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
-+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
-+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
- #
- # Of course, Automake must honor this variable whenever it calls a
- # tool from the auxiliary directory.  The problem is that $srcdir (and
- # therefore $ac_aux_dir as well) can be either absolute or relative,
- # depending on how configure is run.  This is pretty annoying, since
- # it makes $ac_aux_dir quite unusable in subdirectories: in the top
- # source directory, any form will work fine, but in subdirectories a
- # relative path needs to be adjusted first.
-@@ -8861,17 +918,17 @@ AC_ARG_VAR([CCASFLAGS], [assembler compi
- #    fails when called from a subdirectory if $ac_aux_dir is relative
- # $top_srcdir/$ac_aux_dir/missing
- #    fails if $ac_aux_dir is absolute,
- #    fails when called from a subdirectory in a VPATH build with
- #          a relative $ac_aux_dir
- #
- # The reason of the latter failure is that $top_srcdir and $ac_aux_dir
- # are both prefixed by $srcdir.  In an in-source build this is usually
--# harmless because $srcdir is `.', but things will broke when you
-+# harmless because $srcdir is '.', but things will broke when you
- # start a VPATH build or use an absolute $srcdir.
- #
- # So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
- # iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
- #   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
- # and then we would define $MISSING as
- #   MISSING="\${SHELL} $am_aux_dir/missing"
- # This will work as long as MISSING is not called from configure, because
-@@ -8887,32 +944,29 @@ AC_DEFUN([AM_AUX_DIR_EXPAND],
- [dnl Rely on autoconf to set up CDPATH properly.
- AC_PREREQ([2.50])dnl
- # expand $ac_aux_dir to an absolute path
- am_aux_dir=`cd $ac_aux_dir && pwd`
- ])
- 
- # AM_CONDITIONAL                                            -*- Autoconf -*-
- 
--# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
--# Free Software Foundation, Inc.
-+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--# serial 9
--
- # AM_CONDITIONAL(NAME, SHELL-CONDITION)
- # -------------------------------------
- # Define a conditional.
- AC_DEFUN([AM_CONDITIONAL],
--[AC_PREREQ(2.52)dnl
-- ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
--	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-+[AC_PREREQ([2.52])dnl
-+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
- AC_SUBST([$1_TRUE])dnl
- AC_SUBST([$1_FALSE])dnl
- _AM_SUBST_NOTMAKE([$1_TRUE])dnl
- _AM_SUBST_NOTMAKE([$1_FALSE])dnl
- m4_define([_AM_COND_VALUE_$1], [$2])dnl
- if $2; then
-   $1_TRUE=
-   $1_FALSE='#'
-@@ -8921,63 +975,63 @@ else
-   $1_FALSE=
- fi
- AC_CONFIG_COMMANDS_PRE(
- [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-   AC_MSG_ERROR([[conditional "$1" was never defined.
- Usually this means the macro was only invoked conditionally.]])
- fi])])
- 
--# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
--# Free Software Foundation, Inc.
-+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--# serial 10
- 
--# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
-+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
- # written in clear, in which case automake, when reading aclocal.m4,
- # will think it sees a *use*, and therefore will trigger all it's
- # C support machinery.  Also note that it means that autoscan, seeing
- # CC etc. in the Makefile, will ask for an AC_PROG_CC use...
- 
- 
- # _AM_DEPENDENCIES(NAME)
- # ----------------------
- # See how the compiler implements dependency checking.
--# NAME is "CC", "CXX", "GCJ", or "OBJC".
-+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
- # We try a few techniques and use that to set a single cache variable.
- #
- # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
- # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
- # dependency, and given that the user is not expected to run this macro,
- # just rely on AC_PROG_CC.
- AC_DEFUN([_AM_DEPENDENCIES],
- [AC_REQUIRE([AM_SET_DEPDIR])dnl
- AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
- AC_REQUIRE([AM_MAKE_INCLUDE])dnl
- AC_REQUIRE([AM_DEP_TRACK])dnl
- 
--ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
--       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
--       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
--       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
--       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
--                   [depcc="$$1"   am_compiler_list=])
-+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
-+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
-+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
-+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
-+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-+                    [depcc="$$1"   am_compiler_list=])
- 
- AC_CACHE_CHECK([dependency style of $depcc],
-                [am_cv_$1_dependencies_compiler_type],
- [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-   # We make a subdir and do the tests there.  Otherwise we can end up
-   # making bogus files that we don't know about and never remove.  For
-   # instance it was reported that on HP-UX the gcc test will end up
--  # making a dummy file named `D' -- because `-MD' means `put the output
--  # in D'.
-+  # making a dummy file named 'D' -- because '-MD' means "put the output
-+  # in D".
-+  rm -rf conftest.dir
-   mkdir conftest.dir
-   # Copy depcomp to subdir because otherwise we won't find it if we're
-   # using a relative directory.
-   cp "$am_depcomp" conftest.dir
-   cd conftest.dir
-   # We will build objects and dependencies in a subdirectory because
-   # it helps to detect inapplicable dependency modes.  For instance
-   # both Tru64's cc and ICC support -MD to output dependencies as a
-@@ -9006,44 +1060,44 @@ AC_CACHE_CHECK([dependency style of $dep
-     # we should not choose a depcomp mode which is confused by this.
-     #
-     # We need to recreate these files for each test, as the compiler may
-     # overwrite some of them when testing with obscure command lines.
-     # This happens at least with the AIX C compiler.
-     : > sub/conftest.c
-     for i in 1 2 3 4 5 6; do
-       echo '#include "conftst'$i'.h"' >> sub/conftest.c
--      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
--      # Solaris 8's {/usr,}/bin/sh.
--      touch sub/conftst$i.h
-+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-+      # Solaris 10 /bin/sh.
-+      echo '/* dummy */' > sub/conftst$i.h
-     done
-     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
- 
--    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-     # mode.  It turns out that the SunPro C++ compiler does not properly
--    # handle `-M -o', and we need to detect this.  Also, some Intel
--    # versions had trouble with output in subdirs
-+    # handle '-M -o', and we need to detect this.  Also, some Intel
-+    # versions had trouble with output in subdirs.
-     am__obj=sub/conftest.${OBJEXT-o}
-     am__minus_obj="-o $am__obj"
-     case $depmode in
-     gcc)
-       # This depmode causes a compiler race in universal mode.
-       test "$am__universal" = false || continue
-       ;;
-     nosideeffect)
--      # after this tag, mechanisms are not by side-effect, so they'll
--      # only be used when explicitly requested
-+      # After this tag, mechanisms are not by side-effect, so they'll
-+      # only be used when explicitly requested.
-       if test "x$enable_dependency_tracking" = xyes; then
- 	continue
-       else
- 	break
-       fi
-       ;;
--    msvisualcpp | msvcmsys)
--      # This compiler won't grok `-c -o', but also, the minuso test has
-+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-+      # This compiler won't grok '-c -o', but also, the minuso test has
-       # not run yet.  These depmodes are late enough in the game, and
-       # so weak that their functioning should not be impacted.
-       am__obj=conftest.${OBJEXT-o}
-       am__minus_obj=
-       ;;
-     none) break ;;
-     esac
-     if depmode=$depmode \
-@@ -9081,93 +1135,96 @@ AM_CONDITIONAL([am__fastdep$1], [
-   test "x$enable_dependency_tracking" != xno \
-   && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
- ])
- 
- 
- # AM_SET_DEPDIR
- # -------------
- # Choose a directory name for dependency files.
--# This macro is AC_REQUIREd in _AM_DEPENDENCIES
-+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
- AC_DEFUN([AM_SET_DEPDIR],
- [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
- ])
- 
- 
- # AM_DEP_TRACK
- # ------------
- AC_DEFUN([AM_DEP_TRACK],
--[AC_ARG_ENABLE(dependency-tracking,
--[  --disable-dependency-tracking  speeds up one-time build
--  --enable-dependency-tracking   do not reject slow dependency extractors])
-+[AC_ARG_ENABLE([dependency-tracking], [dnl
-+AS_HELP_STRING(
-+  [--enable-dependency-tracking],
-+  [do not reject slow dependency extractors])
-+AS_HELP_STRING(
-+  [--disable-dependency-tracking],
-+  [speeds up one-time build])])
- if test "x$enable_dependency_tracking" != xno; then
-   am_depcomp="$ac_aux_dir/depcomp"
-   AMDEPBACKSLASH='\'
-+  am__nodep='_no'
- fi
- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
- AC_SUBST([AMDEPBACKSLASH])dnl
- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-+AC_SUBST([am__nodep])dnl
-+_AM_SUBST_NOTMAKE([am__nodep])dnl
- ])
- 
- # Generate code to set up dependency tracking.              -*- Autoconf -*-
- 
--# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
--# Free Software Foundation, Inc.
-+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--#serial 5
- 
- # _AM_OUTPUT_DEPENDENCY_COMMANDS
- # ------------------------------
- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
- [{
--  # Autoconf 2.62 quotes --file arguments for eval, but not when files
-+  # Older Autoconf quotes --file arguments for eval, but not when files
-   # are listed without --file.  Let's play safe and only enable the eval
-   # if we detect the quoting.
-   case $CONFIG_FILES in
-   *\'*) eval set x "$CONFIG_FILES" ;;
-   *)   set x $CONFIG_FILES ;;
-   esac
-   shift
-   for mf
-   do
-     # Strip MF so we end up with the name of the file.
-     mf=`echo "$mf" | sed -e 's/:.*$//'`
-     # Check whether this is an Automake generated Makefile or not.
--    # We used to match only the files named `Makefile.in', but
-+    # We used to match only the files named 'Makefile.in', but
-     # some people rename them; so instead we look at the file content.
-     # Grep'ing the first line is not enough: some people post-process
-     # each Makefile.in and add a new line on top of each file to say so.
-     # Grep'ing the whole file is not good either: AIX grep has a line
-     # limit of 2048, but all sed's we know have understand at least 4000.
-     if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-       dirpart=`AS_DIRNAME("$mf")`
-     else
-       continue
-     fi
-     # Extract the definition of DEPDIR, am__include, and am__quote
--    # from the Makefile without running `make'.
-+    # from the Makefile without running 'make'.
-     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-     test -z "$DEPDIR" && continue
-     am__include=`sed -n 's/^am__include = //p' < "$mf"`
--    test -z "am__include" && continue
-+    test -z "$am__include" && continue
-     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
--    # When using ansi2knr, U may be empty or an underscore; expand it
--    U=`sed -n 's/^U = //p' < "$mf"`
-     # Find all dependency output files, they are included files with
-     # $(DEPDIR) in their names.  We invoke sed twice because it is the
-     # simplest approach to changing $(DEPDIR) to its actual value in the
-     # expansion.
-     for file in `sed -n "
-       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
--	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-       # Make sure the directory exists.
-       test -f "$dirpart/$file" && continue
-       fdir=`AS_DIRNAME(["$file"])`
-       AS_MKDIR_P([$dirpart/$fdir])
-       # echo "creating $dirpart/$file"
-       echo '# dummy' > "$dirpart/$file"
-     done
-   done
-@@ -9175,51 +1232,48 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS
- ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
- 
- 
- # AM_OUTPUT_DEPENDENCY_COMMANDS
- # -----------------------------
- # This macro should only be invoked once -- use via AC_REQUIRE.
- #
- # This code is only required when automatic dependency tracking
--# is enabled.  FIXME.  This creates each `.P' file that we will
-+# is enabled.  FIXME.  This creates each '.P' file that we will
- # need in order to bootstrap the dependency handling code.
- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
- [AC_CONFIG_COMMANDS([depfiles],
-      [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-      [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
- ])
- 
- # Do all the work for Automake.                             -*- Autoconf -*-
- 
--# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
--# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
-+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--# serial 16
--
- # This macro actually does too much.  Some checks are only needed if
- # your package does certain things.  But this isn't really a big deal.
- 
- # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
- # AM_INIT_AUTOMAKE([OPTIONS])
- # -----------------------------------------------
- # The call with PACKAGE and VERSION arguments is the old style
- # call (pre autoconf-2.50), which is being phased out.  PACKAGE
- # and VERSION should now be passed to AC_INIT and removed from
- # the call to AM_INIT_AUTOMAKE.
- # We support both call styles for the transition.  After
- # the next Automake release, Autoconf can make the AC_INIT
- # arguments mandatory, and then we can depend on a new Autoconf
- # release and drop the old call support.
- AC_DEFUN([AM_INIT_AUTOMAKE],
--[AC_PREREQ([2.62])dnl
-+[AC_PREREQ([2.65])dnl
- dnl Autoconf wants to disallow AM_ names.  We explicitly allow
- dnl the ones we care about.
- m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
- AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
- AC_REQUIRE([AC_PROG_INSTALL])dnl
- if test "`cd $srcdir && pwd`" != "`pwd`"; then
-   # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-   # is not polluted with repeated "-I."
-@@ -9238,73 +1292,86 @@ if test -z "$CYGPATH_W"; then
-     CYGPATH_W=echo
-   fi
- fi
- AC_SUBST([CYGPATH_W])
- 
- # Define the identity of the package.
- dnl Distinguish between old-style and new-style calls.
- m4_ifval([$2],
--[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
-+[AC_DIAGNOSE([obsolete],
-+             [$0: two- and three-arguments forms are deprecated.])
-+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
-  AC_SUBST([PACKAGE], [$1])dnl
-  AC_SUBST([VERSION], [$2])],
- [_AM_SET_OPTIONS([$1])dnl
- dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
--m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
-+m4_if(
-+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
-+  [ok:ok],,
-   [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
-  AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
-  AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
- 
- _AM_IF_OPTION([no-define],,
--[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
-- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
-+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
-+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
- 
- # Some tools Automake needs.
- AC_REQUIRE([AM_SANITY_CHECK])dnl
- AC_REQUIRE([AC_ARG_PROGRAM])dnl
--AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
--AM_MISSING_PROG(AUTOCONF, autoconf)
--AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
--AM_MISSING_PROG(AUTOHEADER, autoheader)
--AM_MISSING_PROG(MAKEINFO, makeinfo)
-+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-+AM_MISSING_PROG([AUTOCONF], [autoconf])
-+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-+AM_MISSING_PROG([AUTOHEADER], [autoheader])
-+AM_MISSING_PROG([MAKEINFO], [makeinfo])
- AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
- AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
--AC_REQUIRE([AM_PROG_MKDIR_P])dnl
-+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-+# For better backward compatibility.  To be removed once Automake 1.9.x
-+# dies out for good.  For more background, see:
-+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
- # We need awk for the "check" target.  The system "awk" is bad on
- # some platforms.
- AC_REQUIRE([AC_PROG_AWK])dnl
- AC_REQUIRE([AC_PROG_MAKE_SET])dnl
- AC_REQUIRE([AM_SET_LEADING_DOT])dnl
- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
- 	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
- 			     [_AM_PROG_TAR([v7])])])
- _AM_IF_OPTION([no-dependencies],,
- [AC_PROVIDE_IFELSE([AC_PROG_CC],
--		  [_AM_DEPENDENCIES(CC)],
--		  [define([AC_PROG_CC],
--			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-+		  [_AM_DEPENDENCIES([CC])],
-+		  [m4_define([AC_PROG_CC],
-+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
- AC_PROVIDE_IFELSE([AC_PROG_CXX],
--		  [_AM_DEPENDENCIES(CXX)],
--		  [define([AC_PROG_CXX],
--			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
-+		  [_AM_DEPENDENCIES([CXX])],
-+		  [m4_define([AC_PROG_CXX],
-+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
- AC_PROVIDE_IFELSE([AC_PROG_OBJC],
--		  [_AM_DEPENDENCIES(OBJC)],
--		  [define([AC_PROG_OBJC],
--			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
-+		  [_AM_DEPENDENCIES([OBJC])],
-+		  [m4_define([AC_PROG_OBJC],
-+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
-+		  [_AM_DEPENDENCIES([OBJCXX])],
-+		  [m4_define([AC_PROG_OBJCXX],
-+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
- ])
--_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
--dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
--dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
--dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
-+AC_REQUIRE([AM_SILENT_RULES])dnl
-+dnl The testsuite driver may need to know about EXEEXT, so add the
-+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
-+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
- AC_CONFIG_COMMANDS_PRE(dnl
- [m4_provide_if([_AM_COMPILER_EXEEXT],
-   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
- ])
- 
--dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
-+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
- dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
- dnl mangled by Autoconf and run in a shell conditional statement.
- m4_define([_AC_COMPILER_EXEEXT],
- m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
- 
- 
- # When config.status generates a header, we must update the stamp-h file.
- # This file resides in the same directory as the config header
-@@ -9322,17 +1389,17 @@ for _am_header in $config_headers :; do
-     $_am_arg | $_am_arg:* )
-       break ;;
-     * )
-       _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-   esac
- done
- echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
- 
--# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
-+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
- # AM_PROG_INSTALL_SH
- # ------------------
- # Define $install_sh.
-@@ -9341,89 +1408,81 @@ AC_DEFUN([AM_PROG_INSTALL_SH],
- if test x"${install_sh}" != xset; then
-   case $am_aux_dir in
-   *\ * | *\	*)
-     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-   *)
-     install_sh="\${SHELL} $am_aux_dir/install-sh"
-   esac
- fi
--AC_SUBST(install_sh)])
-+AC_SUBST([install_sh])])
- 
--# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
-+# Copyright (C) 2003-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--# serial 2
--
- # Check whether the underlying file-system supports filenames
- # with a leading dot.  For instance MS-DOS doesn't.
- AC_DEFUN([AM_SET_LEADING_DOT],
- [rm -rf .tst 2>/dev/null
- mkdir .tst 2>/dev/null
- if test -d .tst; then
-   am__leading_dot=.
- else
-   am__leading_dot=_
- fi
- rmdir .tst 2>/dev/null
- AC_SUBST([am__leading_dot])])
- 
- # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
- # From Jim Meyering
- 
--# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
--# Free Software Foundation, Inc.
-+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--# serial 5
--
- # AM_MAINTAINER_MODE([DEFAULT-MODE])
- # ----------------------------------
- # Control maintainer-specific portions of Makefiles.
--# Default is to disable them, unless `enable' is passed literally.
--# For symmetry, `disable' may be passed as well.  Anyway, the user
-+# Default is to disable them, unless 'enable' is passed literally.
-+# For symmetry, 'disable' may be passed as well.  Anyway, the user
- # can override the default with the --enable/--disable switch.
- AC_DEFUN([AM_MAINTAINER_MODE],
- [m4_case(m4_default([$1], [disable]),
-        [enable], [m4_define([am_maintainer_other], [disable])],
-        [disable], [m4_define([am_maintainer_other], [enable])],
-        [m4_define([am_maintainer_other], [enable])
-         m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
--AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
-+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
-   dnl maintainer-mode's default is 'disable' unless 'enable' is passed
-   AC_ARG_ENABLE([maintainer-mode],
--[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
--			  (and sometimes confusing) to the casual installer],
--      [USE_MAINTAINER_MODE=$enableval],
--      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
-+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
-+      am_maintainer_other[ make rules and dependencies not useful
-+      (and sometimes confusing) to the casual installer])],
-+    [USE_MAINTAINER_MODE=$enableval],
-+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
-   AC_MSG_RESULT([$USE_MAINTAINER_MODE])
-   AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
-   MAINT=$MAINTAINER_MODE_TRUE
-   AC_SUBST([MAINT])dnl
- ]
- )
- 
--AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
--
- # Check to see how 'make' treats includes.	            -*- Autoconf -*-
- 
--# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
-+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--# serial 4
--
- # AM_MAKE_INCLUDE()
- # -----------------
- # Check to see how make treats includes.
- AC_DEFUN([AM_MAKE_INCLUDE],
- [am_make=${MAKE-make}
- cat > confinc << 'END'
- am__doit:
- 	@echo this is the am__doit target
-@@ -9431,17 +1490,17 @@ am__doit:
- END
- # If we don't find an include directive, just comment out the code.
- AC_MSG_CHECKING([for style of include used by $am_make])
- am__include="#"
- am__quote=
- _am_result=none
- # First try GNU make style include.
- echo "include confinc" > confmf
--# Ignore all kinds of additional output from `make'.
-+# Ignore all kinds of additional output from 'make'.
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
-   am__include=include
-   am__quote=
-   _am_result=GNU
-   ;;
- esac
- # Now try BSD make style include.
-@@ -9456,25 +1515,22 @@ if test "$am__include" = "#"; then
-    esac
- fi
- AC_SUBST([am__include])
- AC_SUBST([am__quote])
- AC_MSG_RESULT([$_am_result])
- rm -f confinc confmf
- ])
- 
--# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
--# Free Software Foundation, Inc.
-+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--# serial 6
--
- # AM_PROG_CC_C_O
- # --------------
- # Like AC_PROG_CC_C_O, but changed for automake.
- AC_DEFUN([AM_PROG_CC_C_O],
- [AC_REQUIRE([AC_PROG_CC_C_O])dnl
- AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
- AC_REQUIRE_AUX_FILE([compile])dnl
- # FIXME: we rely on the cache variable name because
-@@ -9493,317 +1549,413 @@ fi
- dnl Make sure AC_PROG_CC is never called again, or it will override our
- dnl setting of CC.
- m4_define([AC_PROG_CC],
-           [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
- ])
- 
- # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
- 
--# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
--# Free Software Foundation, Inc.
-+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--# serial 6
--
- # AM_MISSING_PROG(NAME, PROGRAM)
- # ------------------------------
- AC_DEFUN([AM_MISSING_PROG],
- [AC_REQUIRE([AM_MISSING_HAS_RUN])
- $1=${$1-"${am_missing_run}$2"}
- AC_SUBST($1)])
- 
--
- # AM_MISSING_HAS_RUN
- # ------------------
--# Define MISSING if not defined so far and test if it supports --run.
--# If it does, set am_missing_run to use it, otherwise, to nothing.
-+# Define MISSING if not defined so far and test if it is modern enough.
-+# If it is, set am_missing_run to use it, otherwise, to nothing.
- AC_DEFUN([AM_MISSING_HAS_RUN],
- [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
- AC_REQUIRE_AUX_FILE([missing])dnl
- if test x"${MISSING+set}" != xset; then
-   case $am_aux_dir in
-   *\ * | *\	*)
-     MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-   *)
-     MISSING="\${SHELL} $am_aux_dir/missing" ;;
-   esac
- fi
- # Use eval to expand $SHELL
--if eval "$MISSING --run true"; then
--  am_missing_run="$MISSING --run "
-+if eval "$MISSING --is-lightweight"; then
-+  am_missing_run="$MISSING "
- else
-   am_missing_run=
--  AC_MSG_WARN([`missing' script is too old or missing])
-+  AC_MSG_WARN(['missing' script is too old or missing])
- fi
- ])
- 
--# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
-+# Helper functions for option handling.                     -*- Autoconf -*-
-+
-+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--# AM_PROG_MKDIR_P
--# ---------------
--# Check for `mkdir -p'.
--AC_DEFUN([AM_PROG_MKDIR_P],
--[AC_PREREQ([2.60])dnl
--AC_REQUIRE([AC_PROG_MKDIR_P])dnl
--dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
--dnl while keeping a definition of mkdir_p for backward compatibility.
--dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
--dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
--dnl Makefile.ins that do not define MKDIR_P, so we do our own
--dnl adjustment using top_builddir (which is defined more often than
--dnl MKDIR_P).
--AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
--case $mkdir_p in
--  [[\\/$]]* | ?:[[\\/]]*) ;;
--  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
--esac
--])
--
--# Helper functions for option handling.                     -*- Autoconf -*-
--
--# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
--#
--# This file is free software; the Free Software Foundation
--# gives unlimited permission to copy and/or distribute it,
--# with or without modifications, as long as this notice is preserved.
--
--# serial 4
--
- # _AM_MANGLE_OPTION(NAME)
- # -----------------------
- AC_DEFUN([_AM_MANGLE_OPTION],
- [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
- 
- # _AM_SET_OPTION(NAME)
--# ------------------------------
-+# --------------------
- # Set option NAME.  Presently that only means defining a flag for this option.
- AC_DEFUN([_AM_SET_OPTION],
--[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
-+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
- 
- # _AM_SET_OPTIONS(OPTIONS)
--# ----------------------------------
-+# ------------------------
- # OPTIONS is a space-separated list of Automake options.
- AC_DEFUN([_AM_SET_OPTIONS],
- [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
- 
- # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
- # -------------------------------------------
- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
- AC_DEFUN([_AM_IF_OPTION],
- [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
- 
- # Check to make sure that the build environment is sane.    -*- Autoconf -*-
- 
--# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
--# Free Software Foundation, Inc.
-+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--# serial 5
--
- # AM_SANITY_CHECK
- # ---------------
- AC_DEFUN([AM_SANITY_CHECK],
- [AC_MSG_CHECKING([whether build environment is sane])
--# Just in case
--sleep 1
--echo timestamp > conftest.file
- # Reject unsafe characters in $srcdir or the absolute working directory
- # name.  Accept space and tab only in the latter.
- am_lf='
- '
- case `pwd` in
-   *[[\\\"\#\$\&\'\`$am_lf]]*)
-     AC_MSG_ERROR([unsafe absolute working directory name]);;
- esac
- case $srcdir in
-   *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
--    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
-+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
- esac
- 
--# Do `set' in a subshell so we don't clobber the current shell's
-+# Do 'set' in a subshell so we don't clobber the current shell's
- # arguments.  Must try -L first in case configure is actually a
- # symlink; some systems play weird games with the mod time of symlinks
- # (eg FreeBSD returns the mod time of the symlink's containing
- # directory).
- if (
--   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
--   if test "$[*]" = "X"; then
--      # -L didn't work.
--      set X `ls -t "$srcdir/configure" conftest.file`
--   fi
--   rm -f conftest.file
--   if test "$[*]" != "X $srcdir/configure conftest.file" \
--      && test "$[*]" != "X conftest.file $srcdir/configure"; then
-+   am_has_slept=no
-+   for am_try in 1 2; do
-+     echo "timestamp, slept: $am_has_slept" > conftest.file
-+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-+     if test "$[*]" = "X"; then
-+	# -L didn't work.
-+	set X `ls -t "$srcdir/configure" conftest.file`
-+     fi
-+     if test "$[*]" != "X $srcdir/configure conftest.file" \
-+	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
- 
--      # If neither matched, then we have a broken ls.  This can happen
--      # if, for instance, CONFIG_SHELL is bash and it inherits a
--      # broken ls alias from the environment.  This has actually
--      # happened.  Such a system could not be considered "sane".
--      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
--alias in your environment])
--   fi
--
-+	# If neither matched, then we have a broken ls.  This can happen
-+	# if, for instance, CONFIG_SHELL is bash and it inherits a
-+	# broken ls alias from the environment.  This has actually
-+	# happened.  Such a system could not be considered "sane".
-+	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-+  alias in your environment])
-+     fi
-+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
-+       break
-+     fi
-+     # Just in case.
-+     sleep 1
-+     am_has_slept=yes
-+   done
-    test "$[2]" = conftest.file
-    )
- then
-    # Ok.
-    :
- else
-    AC_MSG_ERROR([newly created file is older than distributed files!
- Check your system clock])
- fi
--AC_MSG_RESULT(yes)])
-+AC_MSG_RESULT([yes])
-+# If we didn't sleep, we still need to ensure time stamps of config.status and
-+# generated files are strictly newer.
-+am_sleep_pid=
-+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-+  ( sleep 1 ) &
-+  am_sleep_pid=$!
-+fi
-+AC_CONFIG_COMMANDS_PRE(
-+  [AC_MSG_CHECKING([that generated files are newer than configure])
-+   if test -n "$am_sleep_pid"; then
-+     # Hide warnings about reused PIDs.
-+     wait $am_sleep_pid 2>/dev/null
-+   fi
-+   AC_MSG_RESULT([done])])
-+rm -f conftest.file
-+])
- 
--# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
-+# Copyright (C) 2009-2013 Free Software Foundation, Inc.
-+#
-+# This file is free software; the Free Software Foundation
-+# gives unlimited permission to copy and/or distribute it,
-+# with or without modifications, as long as this notice is preserved.
-+
-+# AM_SILENT_RULES([DEFAULT])
-+# --------------------------
-+# Enable less verbose build rules; with the default set to DEFAULT
-+# ("yes" being less verbose, "no" or empty being verbose).
-+AC_DEFUN([AM_SILENT_RULES],
-+[AC_ARG_ENABLE([silent-rules], [dnl
-+AS_HELP_STRING(
-+  [--enable-silent-rules],
-+  [less verbose build output (undo: "make V=1")])
-+AS_HELP_STRING(
-+  [--disable-silent-rules],
-+  [verbose build output (undo: "make V=0")])dnl
-+])
-+case $enable_silent_rules in @%:@ (((
-+  yes) AM_DEFAULT_VERBOSITY=0;;
-+   no) AM_DEFAULT_VERBOSITY=1;;
-+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
-+esac
-+dnl
-+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
-+dnl do not support nested variable expansions.
-+dnl See automake bug#9928 and bug#10237.
-+am_make=${MAKE-make}
-+AC_CACHE_CHECK([whether $am_make supports nested variables],
-+   [am_cv_make_support_nested_variables],
-+   [if AS_ECHO([['TRUE=$(BAR$(V))
-+BAR0=false
-+BAR1=true
-+V=1
-+am__doit:
-+	@$(TRUE)
-+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
-+  am_cv_make_support_nested_variables=yes
-+else
-+  am_cv_make_support_nested_variables=no
-+fi])
-+if test $am_cv_make_support_nested_variables = yes; then
-+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
-+  AM_V='$(V)'
-+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-+else
-+  AM_V=$AM_DEFAULT_VERBOSITY
-+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-+fi
-+AC_SUBST([AM_V])dnl
-+AM_SUBST_NOTMAKE([AM_V])dnl
-+AC_SUBST([AM_DEFAULT_V])dnl
-+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
-+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
-+AM_BACKSLASH='\'
-+AC_SUBST([AM_BACKSLASH])dnl
-+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
-+])
-+
-+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
- # AM_PROG_INSTALL_STRIP
- # ---------------------
--# One issue with vendor `install' (even GNU) is that you can't
-+# One issue with vendor 'install' (even GNU) is that you can't
- # specify the program used to strip binaries.  This is especially
- # annoying in cross-compiling environments, where the build's strip
- # is unlikely to handle the host's binaries.
- # Fortunately install-sh will honor a STRIPPROG variable, so we
--# always use install-sh in `make install-strip', and initialize
-+# always use install-sh in "make install-strip", and initialize
- # STRIPPROG with the value of the STRIP variable (set by the user).
- AC_DEFUN([AM_PROG_INSTALL_STRIP],
- [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
--# Installed binaries are usually stripped using `strip' when the user
--# run `make install-strip'.  However `strip' might not be the right
-+# Installed binaries are usually stripped using 'strip' when the user
-+# run "make install-strip".  However 'strip' might not be the right
- # tool to use in cross-compilation environments, therefore Automake
--# will honor the `STRIP' environment variable to overrule this program.
--dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
-+# will honor the 'STRIP' environment variable to overrule this program.
-+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
- if test "$cross_compiling" != no; then
-   AC_CHECK_TOOL([STRIP], [strip], :)
- fi
- INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
- AC_SUBST([INSTALL_STRIP_PROGRAM])])
- 
--# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
-+# Copyright (C) 2006-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--# serial 2
--
- # _AM_SUBST_NOTMAKE(VARIABLE)
- # ---------------------------
- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
- # This macro is traced by Automake.
- AC_DEFUN([_AM_SUBST_NOTMAKE])
- 
- # AM_SUBST_NOTMAKE(VARIABLE)
--# ---------------------------
-+# --------------------------
- # Public sister of _AM_SUBST_NOTMAKE.
- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
- 
- # Check how to create a tarball.                            -*- Autoconf -*-
- 
--# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
-+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
- #
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
--# serial 2
--
- # _AM_PROG_TAR(FORMAT)
- # --------------------
- # Check how to create a tarball in format FORMAT.
--# FORMAT should be one of `v7', `ustar', or `pax'.
-+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
- #
- # Substitute a variable $(am__tar) that is a command
- # writing to stdout a FORMAT-tarball containing the directory
- # $tardir.
- #     tardir=directory && $(am__tar) > result.tar
- #
- # Substitute a variable $(am__untar) that extract such
- # a tarball read from stdin.
- #     $(am__untar) < result.tar
-+#
- AC_DEFUN([_AM_PROG_TAR],
--[# Always define AMTAR for backward compatibility.
--AM_MISSING_PROG([AMTAR], [tar])
-+[# Always define AMTAR for backward compatibility.  Yes, it's still used
-+# in the wild :-(  We should find a proper way to deprecate it ...
-+AC_SUBST([AMTAR], ['$${TAR-tar}'])
-+
-+# We'll loop over all known methods to create a tar archive until one works.
-+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-+
- m4_if([$1], [v7],
--     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
--     [m4_case([$1], [ustar],, [pax],,
--              [m4_fatal([Unknown tar format])])
--AC_MSG_CHECKING([how to create a $1 tar archive])
--# Loop over all known methods to create a tar archive until one works.
--_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
--_am_tools=${am_cv_prog_tar_$1-$_am_tools}
--# Do not fold the above two line into one, because Tru64 sh and
--# Solaris sh will not grok spaces in the rhs of `-'.
--for _am_tool in $_am_tools
--do
--  case $_am_tool in
--  gnutar)
--    for _am_tar in tar gnutar gtar;
--    do
--      AM_RUN_LOG([$_am_tar --version]) && break
--    done
--    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
--    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
--    am__untar="$_am_tar -xf -"
--    ;;
--  plaintar)
--    # Must skip GNU tar: if it does not support --format= it doesn't create
--    # ustar tarball either.
--    (tar --version) >/dev/null 2>&1 && continue
--    am__tar='tar chf - "$$tardir"'
--    am__tar_='tar chf - "$tardir"'
--    am__untar='tar xf -'
--    ;;
--  pax)
--    am__tar='pax -L -x $1 -w "$$tardir"'
--    am__tar_='pax -L -x $1 -w "$tardir"'
--    am__untar='pax -r'
--    ;;
--  cpio)
--    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
--    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
--    am__untar='cpio -i -H $1 -d'
--    ;;
--  none)
--    am__tar=false
--    am__tar_=false
--    am__untar=false
--    ;;
--  esac
-+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
- 
--  # If the value was cached, stop now.  We just wanted to have am__tar
--  # and am__untar set.
--  test -n "${am_cv_prog_tar_$1}" && break
-+  [m4_case([$1],
-+    [ustar],
-+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
-+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
-+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
-+      # and bug#13588).
-+      am_max_uid=2097151 # 2^21 - 1
-+      am_max_gid=$am_max_uid
-+      # The $UID and $GID variables are not portable, so we need to resort
-+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
-+      # below are definitely unexpected, so allow the users to see them
-+      # (that is, avoid stderr redirection).
-+      am_uid=`id -u || echo unknown`
-+      am_gid=`id -g || echo unknown`
-+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
-+      if test $am_uid -le $am_max_uid; then
-+         AC_MSG_RESULT([yes])
-+      else
-+         AC_MSG_RESULT([no])
-+         _am_tools=none
-+      fi
-+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
-+      if test $am_gid -le $am_max_gid; then
-+         AC_MSG_RESULT([yes])
-+      else
-+        AC_MSG_RESULT([no])
-+        _am_tools=none
-+      fi],
- 
--  # tar/untar a dummy directory, and stop if the command works
-+  [pax],
-+    [],
-+
-+  [m4_fatal([Unknown tar format])])
-+
-+  AC_MSG_CHECKING([how to create a $1 tar archive])
-+
-+  # Go ahead even if we have the value already cached.  We do so because we
-+  # need to set the values for the 'am__tar' and 'am__untar' variables.
-+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
-+
-+  for _am_tool in $_am_tools; do
-+    case $_am_tool in
-+    gnutar)
-+      for _am_tar in tar gnutar gtar; do
-+        AM_RUN_LOG([$_am_tar --version]) && break
-+      done
-+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-+      am__untar="$_am_tar -xf -"
-+      ;;
-+    plaintar)
-+      # Must skip GNU tar: if it does not support --format= it doesn't create
-+      # ustar tarball either.
-+      (tar --version) >/dev/null 2>&1 && continue
-+      am__tar='tar chf - "$$tardir"'
-+      am__tar_='tar chf - "$tardir"'
-+      am__untar='tar xf -'
-+      ;;
-+    pax)
-+      am__tar='pax -L -x $1 -w "$$tardir"'
-+      am__tar_='pax -L -x $1 -w "$tardir"'
-+      am__untar='pax -r'
-+      ;;
-+    cpio)
-+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-+      am__untar='cpio -i -H $1 -d'
-+      ;;
-+    none)
-+      am__tar=false
-+      am__tar_=false
-+      am__untar=false
-+      ;;
-+    esac
-+
-+    # If the value was cached, stop now.  We just wanted to have am__tar
-+    # and am__untar set.
-+    test -n "${am_cv_prog_tar_$1}" && break
-+
-+    # tar/untar a dummy directory, and stop if the command works.
-+    rm -rf conftest.dir
-+    mkdir conftest.dir
-+    echo GrepMe > conftest.dir/file
-+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-+    rm -rf conftest.dir
-+    if test -s conftest.tar; then
-+      AM_RUN_LOG([$am__untar <conftest.tar])
-+      AM_RUN_LOG([cat conftest.dir/file])
-+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-+    fi
-+  done
-   rm -rf conftest.dir
--  mkdir conftest.dir
--  echo GrepMe > conftest.dir/file
--  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
--  rm -rf conftest.dir
--  if test -s conftest.tar; then
--    AM_RUN_LOG([$am__untar <conftest.tar])
--    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
--  fi
--done
--rm -rf conftest.dir
- 
--AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
--AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-+
- AC_SUBST([am__tar])
- AC_SUBST([am__untar])
- ]) # _AM_PROG_TAR
- 
-+m4_include([m4/asmcfi.m4])
-+m4_include([m4/ax_append_flag.m4])
-+m4_include([m4/ax_cc_maxopt.m4])
-+m4_include([m4/ax_cflags_warn_all.m4])
-+m4_include([m4/ax_check_compile_flag.m4])
-+m4_include([m4/ax_compiler_vendor.m4])
-+m4_include([m4/ax_configure_args.m4])
-+m4_include([m4/ax_enable_builddir.m4])
-+m4_include([m4/ax_gcc_archflag.m4])
-+m4_include([m4/ax_gcc_x86_cpuid.m4])
-+m4_include([m4/libtool.m4])
-+m4_include([m4/ltoptions.m4])
-+m4_include([m4/ltsugar.m4])
-+m4_include([m4/ltversion.m4])
-+m4_include([m4/lt~obsolete.m4])
- m4_include([acinclude.m4])
-diff --git a/js/src/ctypes/libffi/compile b/js/src/ctypes/libffi/compile
---- a/js/src/ctypes/libffi/compile
-+++ b/js/src/ctypes/libffi/compile
-@@ -1,78 +1,282 @@
- #! /bin/sh
--# Wrapper for compilers which do not understand `-c -o'.
-+# Wrapper for compilers which do not understand '-c -o'.
- 
--scriptversion=2005-05-14.22
-+scriptversion=2012-10-14.11; # UTC
- 
--# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
-+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
- # Written by Tom Tromey <tromey@cygnus.com>.
- #
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2, or (at your option)
- # any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
- 
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
- 
- # This file is maintained in Automake, please report
- # bugs to <bug-automake@gnu.org> or send patches to
- # <automake-patches@gnu.org>.
- 
-+nl='
-+'
-+
-+# We need space, tab and new line, in precisely that order.  Quoting is
-+# there to prevent tools from complaining about whitespace usage.
-+IFS=" ""	$nl"
-+
-+file_conv=
-+
-+# func_file_conv build_file lazy
-+# Convert a $build file to $host form and store it in $file
-+# Currently only supports Windows hosts. If the determined conversion
-+# type is listed in (the comma separated) LAZY, no conversion will
-+# take place.
-+func_file_conv ()
-+{
-+  file=$1
-+  case $file in
-+    / | /[!/]*) # absolute file, and not a UNC file
-+      if test -z "$file_conv"; then
-+	# lazily determine how to convert abs files
-+	case `uname -s` in
-+	  MINGW*)
-+	    file_conv=mingw
-+	    ;;
-+	  CYGWIN*)
-+	    file_conv=cygwin
-+	    ;;
-+	  *)
-+	    file_conv=wine
-+	    ;;
-+	esac
-+      fi
-+      case $file_conv/,$2, in
-+	*,$file_conv,*)
-+	  ;;
-+	mingw/*)
-+	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
-+	  ;;
-+	cygwin/*)
-+	  file=`cygpath -m "$file" || echo "$file"`
-+	  ;;
-+	wine/*)
-+	  file=`winepath -w "$file" || echo "$file"`
-+	  ;;
-+      esac
-+      ;;
-+  esac
-+}
-+
-+# func_cl_dashL linkdir
-+# Make cl look for libraries in LINKDIR
-+func_cl_dashL ()
-+{
-+  func_file_conv "$1"
-+  if test -z "$lib_path"; then
-+    lib_path=$file
-+  else
-+    lib_path="$lib_path;$file"
-+  fi
-+  linker_opts="$linker_opts -LIBPATH:$file"
-+}
-+
-+# func_cl_dashl library
-+# Do a library search-path lookup for cl
-+func_cl_dashl ()
-+{
-+  lib=$1
-+  found=no
-+  save_IFS=$IFS
-+  IFS=';'
-+  for dir in $lib_path $LIB
-+  do
-+    IFS=$save_IFS
-+    if $shared && test -f "$dir/$lib.dll.lib"; then
-+      found=yes
-+      lib=$dir/$lib.dll.lib
-+      break
-+    fi
-+    if test -f "$dir/$lib.lib"; then
-+      found=yes
-+      lib=$dir/$lib.lib
-+      break
-+    fi
-+    if test -f "$dir/lib$lib.a"; then
-+      found=yes
-+      lib=$dir/lib$lib.a
-+      break
-+    fi
-+  done
-+  IFS=$save_IFS
-+
-+  if test "$found" != yes; then
-+    lib=$lib.lib
-+  fi
-+}
-+
-+# func_cl_wrapper cl arg...
-+# Adjust compile command to suit cl
-+func_cl_wrapper ()
-+{
-+  # Assume a capable shell
-+  lib_path=
-+  shared=:
-+  linker_opts=
-+  for arg
-+  do
-+    if test -n "$eat"; then
-+      eat=
-+    else
-+      case $1 in
-+	-o)
-+	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
-+	  eat=1
-+	  case $2 in
-+	    *.o | *.[oO][bB][jJ])
-+	      func_file_conv "$2"
-+	      set x "$@" -Fo"$file"
-+	      shift
-+	      ;;
-+	    *)
-+	      func_file_conv "$2"
-+	      set x "$@" -Fe"$file"
-+	      shift
-+	      ;;
-+	  esac
-+	  ;;
-+	-I)
-+	  eat=1
-+	  func_file_conv "$2" mingw
-+	  set x "$@" -I"$file"
-+	  shift
-+	  ;;
-+	-I*)
-+	  func_file_conv "${1#-I}" mingw
-+	  set x "$@" -I"$file"
-+	  shift
-+	  ;;
-+	-l)
-+	  eat=1
-+	  func_cl_dashl "$2"
-+	  set x "$@" "$lib"
-+	  shift
-+	  ;;
-+	-l*)
-+	  func_cl_dashl "${1#-l}"
-+	  set x "$@" "$lib"
-+	  shift
-+	  ;;
-+	-L)
-+	  eat=1
-+	  func_cl_dashL "$2"
-+	  ;;
-+	-L*)
-+	  func_cl_dashL "${1#-L}"
-+	  ;;
-+	-static)
-+	  shared=false
-+	  ;;
-+	-Wl,*)
-+	  arg=${1#-Wl,}
-+	  save_ifs="$IFS"; IFS=','
-+	  for flag in $arg; do
-+	    IFS="$save_ifs"
-+	    linker_opts="$linker_opts $flag"
-+	  done
-+	  IFS="$save_ifs"
-+	  ;;
-+	-Xlinker)
-+	  eat=1
-+	  linker_opts="$linker_opts $2"
-+	  ;;
-+	-*)
-+	  set x "$@" "$1"
-+	  shift
-+	  ;;
-+	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
-+	  func_file_conv "$1"
-+	  set x "$@" -Tp"$file"
-+	  shift
-+	  ;;
-+	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
-+	  func_file_conv "$1" mingw
-+	  set x "$@" "$file"
-+	  shift
-+	  ;;
-+	*)
-+	  set x "$@" "$1"
-+	  shift
-+	  ;;
-+      esac
-+    fi
-+    shift
-+  done
-+  if test -n "$linker_opts"; then
-+    linker_opts="-link$linker_opts"
-+  fi
-+  exec "$@" $linker_opts
-+  exit 1
-+}
-+
-+eat=
-+
- case $1 in
-   '')
--     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
-+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-      exit 1;
-      ;;
-   -h | --h*)
-     cat <<\EOF
- Usage: compile [--help] [--version] PROGRAM [ARGS]
- 
--Wrapper for compilers which do not understand `-c -o'.
--Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
-+Wrapper for compilers which do not understand '-c -o'.
-+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
- arguments, and rename the output as expected.
- 
- If you are trying to build a whole package this is not the
--right script to run: please start by reading the file `INSTALL'.
-+right script to run: please start by reading the file 'INSTALL'.
- 
- Report bugs to <bug-automake@gnu.org>.
- EOF
-     exit $?
-     ;;
-   -v | --v*)
-     echo "compile $scriptversion"
-     exit $?
-     ;;
-+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
-+    func_cl_wrapper "$@"      # Doesn't return...
-+    ;;
- esac
- 
- ofile=
- cfile=
--eat=
- 
- for arg
- do
-   if test -n "$eat"; then
-     eat=
-   else
-     case $1 in
-       -o)
--	# configure might choose to run compile as `compile cc -o foo foo.c'.
--	# So we strip `-o arg' only if arg is an object.
-+	# configure might choose to run compile as 'compile cc -o foo foo.c'.
-+	# So we strip '-o arg' only if arg is an object.
- 	eat=1
- 	case $2 in
- 	  *.o | *.obj)
- 	    ofile=$2
- 	    ;;
- 	  *)
- 	    set x "$@" -o "$2"
- 	    shift
-@@ -89,54 +293,55 @@ do
- 	shift
- 	;;
-     esac
-   fi
-   shift
- done
- 
- if test -z "$ofile" || test -z "$cfile"; then
--  # If no `-o' option was seen then we might have been invoked from a
-+  # If no '-o' option was seen then we might have been invoked from a
-   # pattern rule where we don't need one.  That is ok -- this is a
-   # normal compilation that the losing compiler can handle.  If no
--  # `.c' file was seen then we are probably linking.  That is also
-+  # '.c' file was seen then we are probably linking.  That is also
-   # ok.
-   exec "$@"
- fi
- 
- # Name of file we expect compiler to create.
--cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
-+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
- 
- # Create the lock directory.
--# Note: use `[/.-]' here to ensure that we don't use the same name
-+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
- # that we are using for the .o file.  Also, base the name on the expected
- # object file name, since that is what matters with a parallel build.
--lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
-+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
- while true; do
-   if mkdir "$lockdir" >/dev/null 2>&1; then
-     break
-   fi
-   sleep 1
- done
- # FIXME: race condition here if user kills between mkdir and trap.
- trap "rmdir '$lockdir'; exit 1" 1 2 15
- 
- # Run the compile.
- "$@"
- ret=$?
- 
- if test -f "$cofile"; then
--  mv "$cofile" "$ofile"
-+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
- elif test -f "${cofile}bj"; then
--  mv "${cofile}bj" "$ofile"
-+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
- fi
- 
- rmdir "$lockdir"
- exit $ret
- 
- # Local Variables:
- # mode: shell-script
- # sh-indentation: 2
- # eval: (add-hook 'write-file-hooks 'time-stamp)
- # time-stamp-start: "scriptversion="
- # time-stamp-format: "%:y-%02m-%02d.%02H"
--# time-stamp-end: "$"
-+# time-stamp-time-zone: "UTC"
-+# time-stamp-end: "; # UTC"
- # End:
-diff --git a/js/src/ctypes/libffi/config.guess b/js/src/ctypes/libffi/config.guess
---- a/js/src/ctypes/libffi/config.guess
-+++ b/js/src/ctypes/libffi/config.guess
-@@ -1,47 +1,43 @@
- #! /bin/sh
- # Attempt to guess a canonical system name.
- #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
--#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
--#   Free Software Foundation, Inc.
-+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-+#   2011, 2012, 2013 Free Software Foundation, Inc.
- 
--timestamp='2009-11-19'
-+timestamp='2012-12-29'
- 
- # This file is free software; you can redistribute it and/or modify it
- # under the terms of the GNU General Public License as published by
--# the Free Software Foundation; either version 2 of the License, or
-+# the Free Software Foundation; either version 3 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful, but
- # WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- # General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
--# 02110-1301, USA.
-+# along with this program; if not, see <http://www.gnu.org/licenses/>.
- #
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
- # configuration script generated by Autoconf, you may include it under
--# the same distribution terms that you use for the rest of that program.
--
--
--# Originally written by Per Bothner.  Please send patches (context
--# diff format) to <config-patches@gnu.org> and include a ChangeLog
--# entry.
-+# the same distribution terms that you use for the rest of that
-+# program.  This Exception is an additional permission under section 7
-+# of the GNU General Public License, version 3 ("GPLv3").
- #
--# This script attempts to guess a canonical system name similar to
--# config.sub.  If it succeeds, it prints the system name on stdout, and
--# exits with 0.  Otherwise, it exits with 1.
-+# Originally written by Per Bothner. 
- #
- # You can get the latest version of this script from:
- # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-+#
-+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
-+
- 
- me=`echo "$0" | sed -e 's,.*/,,'`
- 
- usage="\
- Usage: $0 [OPTION]
- 
- Output the configuration name of the system \`$me' is run on.
- 
-@@ -51,18 +47,19 @@ Operation modes:
-   -v, --version      print version number, then exit
- 
- Report bugs and patches to <config-patches@gnu.org>."
- 
- version="\
- GNU config.guess ($timestamp)
- 
- Originally written by Per Bothner.
--Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
--2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
-+2012, 2013 Free Software Foundation, Inc.
- 
- This is free software; see the source for copying conditions.  There is NO
- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
- 
- help="
- Try \`$me --help' for more information."
- 
- # Parse command line
-@@ -139,17 +136,17 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` |
- UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
- UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
- 
- # Note: order is significant - the case branches are not exclusive.
- 
- case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-     *:NetBSD:*:*)
- 	# NetBSD (nbsd) targets should (where applicable) match one or
--	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
-+	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
- 	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
- 	# switched to ELF, *-*-netbsd* would select the old
- 	# object file format.  This provides both forward
- 	# compatibility and a consistent mechanism for selecting the
- 	# object file format.
- 	#
- 	# Note: NetBSD doesn't particularly care about the vendor
- 	# portion of the name.  We always set it to "unknown".
-@@ -175,17 +172,17 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
- 		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- 		    # Return netbsd for either.  FIX?
- 		    os=netbsd
- 		else
- 		    os=netbsdelf
- 		fi
- 		;;
- 	    *)
--	        os=netbsd
-+		os=netbsd
- 		;;
- 	esac
- 	# The OS release
- 	# Debian GNU/NetBSD machines have a different userland, and
- 	# thus, need a distinct triplet. However, they do not need
- 	# kernel version information, so it can be replaced with a
- 	# suitable tag, in the style of linux-gnu.
- 	case "${UNAME_VERSION}" in
-@@ -196,16 +193,20 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
- 		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- 		;;
- 	esac
- 	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- 	# contains redundant information, the shorter form:
- 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- 	echo "${machine}-${os}${release}"
- 	exit ;;
-+    *:Bitrig:*:*)
-+	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-+	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
-+	exit ;;
-     *:OpenBSD:*:*)
- 	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- 	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
- 	exit ;;
-     *:ekkoBSD:*:*)
- 	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
- 	exit ;;
-     *:SolidBSD:*:*)
-@@ -218,17 +219,17 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
- 	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
- 	exit ;;
-     alpha:OSF1:*:*)
- 	case $UNAME_RELEASE in
- 	*4.0)
- 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- 		;;
- 	*5.*)
--	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
- 		;;
- 	esac
- 	# According to Compaq, /usr/sbin/psrinfo has been available on
- 	# OSF/1 and Tru64 systems produced since 1995.  I hope that
- 	# covers most systems running today.  This code pipes the CPU
- 	# types through head -n 1, so we only detect the type of CPU 0.
- 	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- 	case "$ALPHA_CPU_TYPE" in
-@@ -264,17 +265,20 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
- 		UNAME_MACHINE="alphaev79" ;;
- 	esac
- 	# A Pn.n version is a patched version.
- 	# A Vn.n version is a released version.
- 	# A Tn.n version is a released field test version.
- 	# A Xn.n version is an unreleased experimental baselevel.
- 	# 1.2 uses "1.2" for uname -r.
- 	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
--	exit ;;
-+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-+	exitcode=$?
-+	trap '' 0
-+	exit $exitcode ;;
-     Alpha\ *:Windows_NT*:*)
- 	# How do we know it's Interix rather than the generic POSIX subsystem?
- 	# Should we change UNAME_MACHINE based on the output of uname instead
- 	# of the specific Alpha model?
- 	echo alpha-pc-interix
- 	exit ;;
-     21064:Windows_NT:50:3)
- 	echo alpha-dec-winnt3.5
-@@ -290,22 +294,22 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
- 	exit ;;
-     *:OS/390:*:*)
- 	echo i370-ibm-openedition
- 	exit ;;
-     *:z/VM:*:*)
- 	echo s390-ibm-zvmoe
- 	exit ;;
-     *:OS400:*:*)
--        echo powerpc-ibm-os400
-+	echo powerpc-ibm-os400
- 	exit ;;
-     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- 	echo arm-acorn-riscix${UNAME_RELEASE}
- 	exit ;;
--    arm:riscos:*:*|arm:RISCOS:*:*)
-+    arm*:riscos:*:*|arm*:RISCOS:*:*)
- 	echo arm-unknown-riscos
- 	exit ;;
-     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- 	echo hppa1.1-hitachi-hiuxmpp
- 	exit ;;
-     Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- 	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- 	if test "`(/bin/universe) 2>/dev/null`" = att ; then
-@@ -328,16 +332,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
- 	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- 	exit ;;
-     sun4H:SunOS:5.*:*)
- 	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- 	exit ;;
-     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- 	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- 	exit ;;
-+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-+	echo i386-pc-auroraux${UNAME_RELEASE}
-+	exit ;;
-     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- 	eval $set_cc_for_build
- 	SUN_ARCH="i386"
- 	# If there is a compiler, see if it is configured for 64-bit objects.
- 	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
- 	# This test works for both compilers.
- 	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
- 	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-@@ -386,33 +393,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
-     # can be virtually everything (everything which is not
-     # "atarist" or "atariste" at least should have a processor
-     # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-     # to the lowercase version "mint" (or "freemint").  Finally
-     # the system name "TOS" denotes a system which is actually not
-     # MiNT.  But MiNT is downward compatible to TOS, so this should
-     # be no problem.
-     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
--        echo m68k-atari-mint${UNAME_RELEASE}
-+	echo m68k-atari-mint${UNAME_RELEASE}
- 	exit ;;
-     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- 	echo m68k-atari-mint${UNAME_RELEASE}
--        exit ;;
-+	exit ;;
-     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
--        echo m68k-atari-mint${UNAME_RELEASE}
-+	echo m68k-atari-mint${UNAME_RELEASE}
- 	exit ;;
-     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
--        echo m68k-milan-mint${UNAME_RELEASE}
--        exit ;;
-+	echo m68k-milan-mint${UNAME_RELEASE}
-+	exit ;;
-     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
--        echo m68k-hades-mint${UNAME_RELEASE}
--        exit ;;
-+	echo m68k-hades-mint${UNAME_RELEASE}
-+	exit ;;
-     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
--        echo m68k-unknown-mint${UNAME_RELEASE}
--        exit ;;
-+	echo m68k-unknown-mint${UNAME_RELEASE}
-+	exit ;;
-     m68k:machten:*:*)
- 	echo m68k-apple-machten${UNAME_RELEASE}
- 	exit ;;
-     powerpc:machten:*:*)
- 	echo powerpc-apple-machten${UNAME_RELEASE}
- 	exit ;;
-     RISC*:Mach:*:*)
- 	echo mips-dec-mach_bsd4.3
-@@ -472,31 +479,31 @@ EOF
- 	exit ;;
-     m88k:*:4*:R4*)
- 	echo m88k-motorola-sysv4
- 	exit ;;
-     m88k:*:3*:R3*)
- 	echo m88k-motorola-sysv3
- 	exit ;;
-     AViiON:dgux:*:*)
--        # DG/UX returns AViiON for all architectures
--        UNAME_PROCESSOR=`/usr/bin/uname -p`
-+	# DG/UX returns AViiON for all architectures
-+	UNAME_PROCESSOR=`/usr/bin/uname -p`
- 	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- 	then
- 	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- 	       [ ${TARGET_BINARY_INTERFACE}x = x ]
- 	    then
- 		echo m88k-dg-dgux${UNAME_RELEASE}
- 	    else
- 		echo m88k-dg-dguxbcs${UNAME_RELEASE}
- 	    fi
- 	else
- 	    echo i586-dg-dgux${UNAME_RELEASE}
- 	fi
-- 	exit ;;
-+	exit ;;
-     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
- 	echo m88k-dolphin-sysv3
- 	exit ;;
-     M88*:*:R3*:*)
- 	# Delta 88k system running SVR3
- 	echo m88k-motorola-sysv3
- 	exit ;;
-     XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-@@ -543,17 +550,17 @@ EOF
- 			echo rs6000-ibm-aix3.2.5
- 		fi
- 	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- 		echo rs6000-ibm-aix3.2.4
- 	else
- 		echo rs6000-ibm-aix3.2
- 	fi
- 	exit ;;
--    *:AIX:*:[456])
-+    *:AIX:*:[4567])
- 	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- 	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- 		IBM_ARCH=rs6000
- 	else
- 		IBM_ARCH=powerpc
- 	fi
- 	if [ -x /usr/bin/oslevel ] ; then
- 		IBM_REV=`/usr/bin/oslevel`
-@@ -586,62 +593,62 @@ EOF
-     9000/[34678]??:HP-UX:*:*)
- 	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- 	case "${UNAME_MACHINE}" in
- 	    9000/31? )            HP_ARCH=m68000 ;;
- 	    9000/[34]?? )         HP_ARCH=m68k ;;
- 	    9000/[678][0-9][0-9])
- 		if [ -x /usr/bin/getconf ]; then
- 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
--                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
--                    case "${sc_cpu_version}" in
--                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
--                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
--                      532)                      # CPU_PA_RISC2_0
--                        case "${sc_kernel_bits}" in
--                          32) HP_ARCH="hppa2.0n" ;;
--                          64) HP_ARCH="hppa2.0w" ;;
-+		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-+		    case "${sc_cpu_version}" in
-+		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-+		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-+		      532)                      # CPU_PA_RISC2_0
-+			case "${sc_kernel_bits}" in
-+			  32) HP_ARCH="hppa2.0n" ;;
-+			  64) HP_ARCH="hppa2.0w" ;;
- 			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
--                        esac ;;
--                    esac
-+			esac ;;
-+		    esac
- 		fi
- 		if [ "${HP_ARCH}" = "" ]; then
- 		    eval $set_cc_for_build
--		    sed 's/^              //' << EOF >$dummy.c
-+		    sed 's/^		//' << EOF >$dummy.c
- 
--              #define _HPUX_SOURCE
--              #include <stdlib.h>
--              #include <unistd.h>
-+		#define _HPUX_SOURCE
-+		#include <stdlib.h>
-+		#include <unistd.h>
- 
--              int main ()
--              {
--              #if defined(_SC_KERNEL_BITS)
--                  long bits = sysconf(_SC_KERNEL_BITS);
--              #endif
--                  long cpu  = sysconf (_SC_CPU_VERSION);
-+		int main ()
-+		{
-+		#if defined(_SC_KERNEL_BITS)
-+		    long bits = sysconf(_SC_KERNEL_BITS);
-+		#endif
-+		    long cpu  = sysconf (_SC_CPU_VERSION);
- 
--                  switch (cpu)
--              	{
--              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
--              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
--              	case CPU_PA_RISC2_0:
--              #if defined(_SC_KERNEL_BITS)
--              	    switch (bits)
--              		{
--              		case 64: puts ("hppa2.0w"); break;
--              		case 32: puts ("hppa2.0n"); break;
--              		default: puts ("hppa2.0"); break;
--              		} break;
--              #else  /* !defined(_SC_KERNEL_BITS) */
--              	    puts ("hppa2.0"); break;
--              #endif
--              	default: puts ("hppa1.0"); break;
--              	}
--                  exit (0);
--              }
-+		    switch (cpu)
-+			{
-+			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-+			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-+			case CPU_PA_RISC2_0:
-+		#if defined(_SC_KERNEL_BITS)
-+			    switch (bits)
-+				{
-+				case 64: puts ("hppa2.0w"); break;
-+				case 32: puts ("hppa2.0n"); break;
-+				default: puts ("hppa2.0"); break;
-+				} break;
-+		#else  /* !defined(_SC_KERNEL_BITS) */
-+			    puts ("hppa2.0"); break;
-+		#endif
-+			default: puts ("hppa1.0"); break;
-+			}
-+		    exit (0);
-+		}
- EOF
- 		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- 		    test -z "$HP_ARCH" && HP_ARCH=hppa
- 		fi ;;
- 	esac
- 	if [ ${HP_ARCH} = "hppa2.0w" ]
- 	then
- 	    eval $set_cc_for_build
-@@ -722,32 +729,32 @@ EOF
- 	    echo ${UNAME_MACHINE}-unknown-osf1
- 	fi
- 	exit ;;
-     parisc*:Lites*:*:*)
- 	echo hppa1.1-hp-lites
- 	exit ;;
-     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- 	echo c1-convex-bsd
--        exit ;;
-+	exit ;;
-     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- 	if getsysinfo -f scalar_acc
- 	then echo c32-convex-bsd
- 	else echo c2-convex-bsd
- 	fi
--        exit ;;
-+	exit ;;
-     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- 	echo c34-convex-bsd
--        exit ;;
-+	exit ;;
-     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- 	echo c38-convex-bsd
--        exit ;;
-+	exit ;;
-     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- 	echo c4-convex-bsd
--        exit ;;
-+	exit ;;
-     CRAY*Y-MP:*:*:*)
- 	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- 	exit ;;
-     CRAY*[A-Z]90:*:*:*)
- 	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- 	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- 	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
- 	      -e 's/\.[^.]*$/.X/'
-@@ -761,59 +768,64 @@ EOF
-     CRAY*SV1:*:*:*)
- 	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- 	exit ;;
-     *:UNICOS/mp:*:*)
- 	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- 	exit ;;
-     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- 	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
--        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
--        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
--        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
--        exit ;;
-+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-+	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-+	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-+	exit ;;
-     5000:UNIX_System_V:4.*:*)
--        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
--        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
--        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-+	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- 	exit ;;
-     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- 	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- 	exit ;;
-     sparc*:BSD/OS:*:*)
- 	echo sparc-unknown-bsdi${UNAME_RELEASE}
- 	exit ;;
-     *:BSD/OS:*:*)
- 	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- 	exit ;;
-     *:FreeBSD:*:*)
--	case ${UNAME_MACHINE} in
--	    pc98)
--		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-+	UNAME_PROCESSOR=`/usr/bin/uname -p`
-+	case ${UNAME_PROCESSOR} in
- 	    amd64)
- 		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- 	    *)
--		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-+		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- 	esac
- 	exit ;;
-     i*:CYGWIN*:*)
- 	echo ${UNAME_MACHINE}-pc-cygwin
- 	exit ;;
-+    *:MINGW64*:*)
-+	echo ${UNAME_MACHINE}-pc-mingw64
-+	exit ;;
-     *:MINGW*:*)
- 	echo ${UNAME_MACHINE}-pc-mingw32
- 	exit ;;
-+    i*:MSYS*:*)
-+	echo ${UNAME_MACHINE}-pc-msys
-+	exit ;;
-     i*:windows32*:*)
--    	# uname -m includes "-pc" on this system.
--    	echo ${UNAME_MACHINE}-mingw32
-+	# uname -m includes "-pc" on this system.
-+	echo ${UNAME_MACHINE}-mingw32
- 	exit ;;
-     i*:PW*:*)
- 	echo ${UNAME_MACHINE}-pc-pw32
- 	exit ;;
-     *:Interix*:*)
--    	case ${UNAME_MACHINE} in
-+	case ${UNAME_MACHINE} in
- 	    x86)
- 		echo i586-pc-interix${UNAME_RELEASE}
- 		exit ;;
- 	    authenticamd | genuineintel | EM64T)
- 		echo x86_64-unknown-interix${UNAME_RELEASE}
- 		exit ;;
- 	    IA64)
- 		echo ia64-unknown-interix${UNAME_RELEASE}
-@@ -849,51 +861,67 @@ EOF
- 	exit ;;
-     *:GNU/*:*:*)
- 	# other systems with GNU libc and userland
- 	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
- 	exit ;;
-     i*86:Minix:*:*)
- 	echo ${UNAME_MACHINE}-pc-minix
- 	exit ;;
-+    aarch64:Linux:*:*)
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	exit ;;
-+    aarch64_be:Linux:*:*)
-+	UNAME_MACHINE=aarch64_be
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	exit ;;
-     alpha:Linux:*:*)
- 	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- 	  EV5)   UNAME_MACHINE=alphaev5 ;;
- 	  EV56)  UNAME_MACHINE=alphaev56 ;;
- 	  PCA56) UNAME_MACHINE=alphapca56 ;;
- 	  PCA57) UNAME_MACHINE=alphapca56 ;;
- 	  EV6)   UNAME_MACHINE=alphaev6 ;;
- 	  EV67)  UNAME_MACHINE=alphaev67 ;;
- 	  EV68*) UNAME_MACHINE=alphaev68 ;;
--        esac
-+	esac
- 	objdump --private-headers /bin/sh | grep -q ld.so.1
- 	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- 	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- 	exit ;;
-     arm*:Linux:*:*)
- 	eval $set_cc_for_build
- 	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
- 	    | grep -q __ARM_EABI__
- 	then
- 	    echo ${UNAME_MACHINE}-unknown-linux-gnu
- 	else
--	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
-+	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-+		| grep -q __ARM_PCS_VFP
-+	    then
-+		echo ${UNAME_MACHINE}-unknown-linux-gnueabi
-+	    else
-+		echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
-+	    fi
- 	fi
- 	exit ;;
-     avr32*:Linux:*:*)
- 	echo ${UNAME_MACHINE}-unknown-linux-gnu
- 	exit ;;
-     cris:Linux:*:*)
--	echo cris-axis-linux-gnu
-+	echo ${UNAME_MACHINE}-axis-linux-gnu
- 	exit ;;
-     crisv32:Linux:*:*)
--	echo crisv32-axis-linux-gnu
-+	echo ${UNAME_MACHINE}-axis-linux-gnu
- 	exit ;;
-     frv:Linux:*:*)
--    	echo frv-unknown-linux-gnu
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	exit ;;
-+    hexagon:Linux:*:*)
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
- 	exit ;;
-     i*86:Linux:*:*)
- 	LIBC=gnu
- 	eval $set_cc_for_build
- 	sed 's/^	//' << EOF >$dummy.c
- 	#ifdef __dietlibc__
- 	LIBC=dietlibc
- 	#endif
-@@ -925,17 +953,17 @@ EOF
- 	CPU=
- 	#endif
- 	#endif
- EOF
- 	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- 	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- 	;;
-     or32:Linux:*:*)
--	echo or32-unknown-linux-gnu
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
- 	exit ;;
-     padre:Linux:*:*)
- 	echo sparc-unknown-linux-gnu
- 	exit ;;
-     parisc64:Linux:*:* | hppa64:Linux:*:*)
- 	echo hppa64-unknown-linux-gnu
- 	exit ;;
-     parisc:Linux:*:* | hppa:Linux:*:*)
-@@ -951,45 +979,48 @@ EOF
- 	exit ;;
-     ppc:Linux:*:*)
- 	echo powerpc-unknown-linux-gnu
- 	exit ;;
-     s390:Linux:*:* | s390x:Linux:*:*)
- 	echo ${UNAME_MACHINE}-ibm-linux
- 	exit ;;
-     sh64*:Linux:*:*)
--    	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
- 	exit ;;
-     sh*:Linux:*:*)
- 	echo ${UNAME_MACHINE}-unknown-linux-gnu
- 	exit ;;
-     sparc:Linux:*:* | sparc64:Linux:*:*)
- 	echo ${UNAME_MACHINE}-unknown-linux-gnu
- 	exit ;;
-+    tile*:Linux:*:*)
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	exit ;;
-     vax:Linux:*:*)
- 	echo ${UNAME_MACHINE}-dec-linux-gnu
- 	exit ;;
-     x86_64:Linux:*:*)
--	echo x86_64-unknown-linux-gnu
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
- 	exit ;;
-     xtensa*:Linux:*:*)
--    	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
- 	exit ;;
-     i*86:DYNIX/ptx:4*:*)
- 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- 	# earlier versions are messed up and put the nodename in both
- 	# sysname and nodename.
- 	echo i386-sequent-sysv4
- 	exit ;;
-     i*86:UNIX_SV:4.2MP:2.*)
--        # Unixware is an offshoot of SVR4, but it has its own version
--        # number series starting with 2...
--        # I am not positive that other SVR4 systems won't match this,
-+	# Unixware is an offshoot of SVR4, but it has its own version
-+	# number series starting with 2...
-+	# I am not positive that other SVR4 systems won't match this,
- 	# I just have to hope.  -- rms.
--        # Use sysv4.2uw... so that sysv4* matches it.
-+	# Use sysv4.2uw... so that sysv4* matches it.
- 	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- 	exit ;;
-     i*86:OS/2:*:*)
- 	# If we were able to find `uname', then EMX Unix compatibility
- 	# is probably installed.
- 	echo ${UNAME_MACHINE}-pc-os2-emx
- 	exit ;;
-     i*86:XTS-300:*:STOP)
-@@ -1011,17 +1042,17 @@ EOF
- 	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- 	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- 		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
- 	else
- 		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- 	fi
- 	exit ;;
-     i*86:*:5:[678]*)
--    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
-+	# UnixWare 7.x, OpenUNIX and OpenServer 6.
- 	case `/bin/uname -X | grep "^Machine"` in
- 	    *486*)	     UNAME_MACHINE=i486 ;;
- 	    *Pentium)	     UNAME_MACHINE=i586 ;;
- 	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
- 	esac
- 	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- 	exit ;;
-     i*86:*:3.2:*)
-@@ -1039,23 +1070,23 @@ EOF
- 			&& UNAME_MACHINE=i686
- 		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- 	else
- 		echo ${UNAME_MACHINE}-pc-sysv32
- 	fi
- 	exit ;;
-     pc:*:*:*)
- 	# Left here for compatibility:
--        # uname -m prints for DJGPP always 'pc', but it prints nothing about
--        # the processor, so we play safe by assuming i586.
-+	# uname -m prints for DJGPP always 'pc', but it prints nothing about
-+	# the processor, so we play safe by assuming i586.
- 	# Note: whatever this is, it MUST be the same as what config.sub
- 	# prints for the "djgpp" host, or else GDB configury will decide that
- 	# this is a cross-build.
- 	echo i586-pc-msdosdjgpp
--        exit ;;
-+	exit ;;
-     Intel:Mach:3*:*)
- 	echo i386-pc-mach3
- 	exit ;;
-     paragon:*:*:*)
- 	echo i860-intel-osf1
- 	exit ;;
-     i860:*:4.*:*) # i860-SVR4
- 	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-@@ -1080,18 +1111,18 @@ EOF
- 	OS_REL=''
- 	test -r /etc/.relid \
- 	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- 	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
- 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- 	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
--        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
--          && { echo i486-ncr-sysv4; exit; } ;;
-+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-+	  && { echo i486-ncr-sysv4; exit; } ;;
-     NCR*:*:4.2:* | MPRAS*:*:4.2:*)
- 	OS_REL='.3'
- 	test -r /etc/.relid \
- 	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- 	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
- 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- 	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-@@ -1124,20 +1155,20 @@ EOF
-     *:SINIX-*:*:*)
- 	if uname -p 2>/dev/null >/dev/null ; then
- 		UNAME_MACHINE=`(uname -p) 2>/dev/null`
- 		echo ${UNAME_MACHINE}-sni-sysv4
- 	else
- 		echo ns32k-sni-sysv
- 	fi
- 	exit ;;
--    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
--                      # says <Richard.M.Bartel@ccMail.Census.GOV>
--        echo i586-unisys-sysv4
--        exit ;;
-+    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-+			# says <Richard.M.Bartel@ccMail.Census.GOV>
-+	echo i586-unisys-sysv4
-+	exit ;;
-     *:UNIX_System_V:4*:FTX*)
- 	# From Gerald Hewes <hewes@openmarket.com>.
- 	# How about differentiating between stratus architectures? -djm
- 	echo hppa1.1-stratus-sysv4
- 	exit ;;
-     *:*:*:FTX*)
- 	# From seanf@swdc.stratus.com.
- 	echo i860-stratus-sysv4
-@@ -1153,33 +1184,36 @@ EOF
-     mc68*:A/UX:*:*)
- 	echo m68k-apple-aux${UNAME_RELEASE}
- 	exit ;;
-     news*:NEWS-OS:6*:*)
- 	echo mips-sony-newsos6
- 	exit ;;
-     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- 	if [ -d /usr/nec ]; then
--	        echo mips-nec-sysv${UNAME_RELEASE}
-+		echo mips-nec-sysv${UNAME_RELEASE}
- 	else
--	        echo mips-unknown-sysv${UNAME_RELEASE}
-+		echo mips-unknown-sysv${UNAME_RELEASE}
- 	fi
--        exit ;;
-+	exit ;;
-     BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
- 	echo powerpc-be-beos
- 	exit ;;
-     BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
- 	echo powerpc-apple-beos
- 	exit ;;
-     BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
- 	echo i586-pc-beos
- 	exit ;;
-     BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
- 	echo i586-pc-haiku
- 	exit ;;
-+    x86_64:Haiku:*:*)
-+	echo x86_64-unknown-haiku
-+	exit ;;
-     SX-4:SUPER-UX:*:*)
- 	echo sx4-nec-superux${UNAME_RELEASE}
- 	exit ;;
-     SX-5:SUPER-UX:*:*)
- 	echo sx5-nec-superux${UNAME_RELEASE}
- 	exit ;;
-     SX-6:SUPER-UX:*:*)
- 	echo sx6-nec-superux${UNAME_RELEASE}
-@@ -1222,17 +1256,20 @@ EOF
- 		UNAME_PROCESSOR=i386
- 		UNAME_MACHINE=pc
- 	fi
- 	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- 	exit ;;
-     *:QNX:*:4*)
- 	echo i386-pc-qnx
- 	exit ;;
--    NSE-?:NONSTOP_KERNEL:*:*)
-+    NEO-?:NONSTOP_KERNEL:*:*)
-+	echo neo-tandem-nsk${UNAME_RELEASE}
-+	exit ;;
-+    NSE-*:NONSTOP_KERNEL:*:*)
- 	echo nse-tandem-nsk${UNAME_RELEASE}
- 	exit ;;
-     NSR-?:NONSTOP_KERNEL:*:*)
- 	echo nsr-tandem-nsk${UNAME_RELEASE}
- 	exit ;;
-     *:NonStop-UX:*:*)
- 	echo mips-compaq-nonstopux
- 	exit ;;
-@@ -1267,23 +1304,23 @@ EOF
- 	exit ;;
-     *:TOPS-20:*:*)
- 	echo pdp10-unknown-tops20
- 	exit ;;
-     *:ITS:*:*)
- 	echo pdp10-unknown-its
- 	exit ;;
-     SEI:*:*:SEIUX)
--        echo mips-sei-seiux${UNAME_RELEASE}
-+	echo mips-sei-seiux${UNAME_RELEASE}
- 	exit ;;
-     *:DragonFly:*:*)
- 	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- 	exit ;;
-     *:*VMS:*:*)
--    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
-+	UNAME_MACHINE=`(uname -p) 2>/dev/null`
- 	case "${UNAME_MACHINE}" in
- 	    A*) echo alpha-dec-vms ; exit ;;
- 	    I*) echo ia64-dec-vms ; exit ;;
- 	    V*) echo vax-dec-vms ; exit ;;
- 	esac ;;
-     *:XENIX:*:SysV)
- 	echo i386-pc-xenix
- 	exit ;;
-@@ -1291,21 +1328,21 @@ EOF
- 	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
- 	exit ;;
-     i*86:rdos:*:*)
- 	echo ${UNAME_MACHINE}-pc-rdos
- 	exit ;;
-     i*86:AROS:*:*)
- 	echo ${UNAME_MACHINE}-pc-aros
- 	exit ;;
-+    x86_64:VMkernel:*:*)
-+	echo ${UNAME_MACHINE}-unknown-esx
-+	exit ;;
- esac
- 
--#echo '(No uname command or uname output not recognized.)' 1>&2
--#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
--
- eval $set_cc_for_build
- cat >$dummy.c <<EOF
- #ifdef _SEQUENT_
- # include <sys/types.h>
- # include <sys/utsname.h>
- #endif
- main ()
- {
-@@ -1313,21 +1350,21 @@ main ()
- #if defined (MIPSEB)
-   /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-      I don't know....  */
-   printf ("mips-sony-bsd\n"); exit (0);
- #else
- #include <sys/param.h>
-   printf ("m68k-sony-newsos%s\n",
- #ifdef NEWSOS4
--          "4"
-+	"4"
- #else
--	  ""
-+	""
- #endif
--         ); exit (0);
-+	); exit (0);
- #endif
- #endif
- 
- #if defined (__arm) && defined (__acorn) && defined (__unix)
-   printf ("arm-acorn-riscix\n"); exit (0);
- #endif
- 
- #if defined (hp300) && !defined (hpux)
-diff --git a/js/src/ctypes/libffi/config.sub b/js/src/ctypes/libffi/config.sub
---- a/js/src/ctypes/libffi/config.sub
-+++ b/js/src/ctypes/libffi/config.sub
-@@ -1,43 +1,38 @@
- #! /bin/sh
- # Configuration validation subroutine script.
- #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
--#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
--#   Free Software Foundation, Inc.
-+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-+#   2011, 2012, 2013 Free Software Foundation, Inc.
- 
--timestamp='2011-01-03'
-+timestamp='2012-12-29'
- 
--# This file is (in principle) common to ALL GNU software.
--# The presence of a machine in this file suggests that SOME GNU software
--# can handle that machine.  It does not imply ALL GNU software can.
--#
--# This file is free software; you can redistribute it and/or modify
--# it under the terms of the GNU General Public License as published by
--# the Free Software Foundation; either version 2 of the License, or
-+# This file is free software; you can redistribute it and/or modify it
-+# under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 3 of the License, or
- # (at your option) any later version.
- #
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
-+# This program is distributed in the hope that it will be useful, but
-+# WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+# General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
--# 02110-1301, USA.
-+# along with this program; if not, see <http://www.gnu.org/licenses/>.
- #
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
- # configuration script generated by Autoconf, you may include it under
--# the same distribution terms that you use for the rest of that program.
-+# the same distribution terms that you use for the rest of that
-+# program.  This Exception is an additional permission under section 7
-+# of the GNU General Public License, version 3 ("GPLv3").
- 
- 
--# Please send patches to <config-patches@gnu.org>.  Submit a context
--# diff and a properly formatted GNU ChangeLog entry.
-+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
- #
- # Configuration subroutine to validate and canonicalize a configuration type.
- # Supply the specified configuration type as an argument.
- # If it is invalid, we print an error message on stderr and exit with code 1.
- # Otherwise, we print the canonical config type on stdout and succeed.
- 
- # You can get the latest version of this script from:
- # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-@@ -70,18 +65,19 @@ Operation modes:
-   -t, --time-stamp   print date of last modification, then exit
-   -v, --version      print version number, then exit
- 
- Report bugs and patches to <config-patches@gnu.org>."
- 
- version="\
- GNU config.sub ($timestamp)
- 
--Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
--2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
-+2012, 2013 Free Software Foundation, Inc.
- 
- This is free software; see the source for copying conditions.  There is NO
- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
- 
- help="
- Try \`$me --help' for more information."
- 
- # Parse command line
-@@ -118,23 +114,28 @@ case $# in
-  *) echo "$me: too many arguments$help" >&2
-     exit 1;;
- esac
- 
- # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
- # Here we must recognize all the valid KERNEL-OS combinations.
- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
- case $maybe_os in
--  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
--  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
-+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-+  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-+  knetbsd*-gnu* | netbsd*-gnu* | \
-   kopensolaris*-gnu* | \
--  storm-chaos* | os2-emx* | rtmk-nova* | wince-winmo*)
-+  storm-chaos* | os2-emx* | rtmk-nova*)
-     os=-$maybe_os
-     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-     ;;
-+  android-linux)
-+    os=-linux-android
-+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-+    ;;
-   *)
-     basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-     if [ $basic_machine != $1 ]
-     then os=`echo $1 | sed 's/.*-/-/'`
-     else os=; fi
-     ;;
- esac
- 
-@@ -147,41 +148,41 @@ case $os in
- 		# Prevent following clause from handling this invalid input.
- 		;;
- 	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- 	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- 	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
--	-apple | -axis | -knuth | -cray | -microblaze)
-+	-apple | -axis | -knuth | -cray | -microblaze*)
- 		os=
- 		basic_machine=$1
- 		;;
--        -bluegene*)
--	        os=-cnk
-+	-bluegene*)
-+		os=-cnk
- 		;;
- 	-sim | -cisco | -oki | -wec | -winbond)
- 		os=
- 		basic_machine=$1
- 		;;
- 	-scout)
- 		;;
- 	-wrs)
- 		os=-vxworks
- 		basic_machine=$1
- 		;;
- 	-chorusos*)
- 		os=-chorusos
- 		basic_machine=$1
- 		;;
-- 	-chorusrdb)
-- 		os=-chorusrdb
-+	-chorusrdb)
-+		os=-chorusrdb
- 		basic_machine=$1
-- 		;;
-+		;;
- 	-hiux*)
- 		os=-hiuxwe2
- 		;;
- 	-sco6)
- 		os=-sco5v6
- 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- 		;;
- 	-sco5)
-@@ -216,16 +217,22 @@ case $os in
- 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- 		;;
- 	-clix*)
- 		basic_machine=clipper-intergraph
- 		;;
- 	-isc*)
- 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- 		;;
-+	-lynx*178)
-+		os=-lynxos178
-+		;;
-+	-lynx*5)
-+		os=-lynxos5
-+		;;
- 	-lynx*)
- 		os=-lynxos
- 		;;
- 	-ptx*)
- 		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- 		;;
- 	-windowsnt*)
- 		os=`echo $os | sed -e 's/windowsnt/winnt/'`
-@@ -240,30 +247,37 @@ case $os in
- esac
- 
- # Decode aliases for certain CPU-COMPANY combinations.
- case $basic_machine in
- 	# Recognize the basic CPU types without company name.
- 	# Some are omitted here because they have special meanings below.
- 	1750a | 580 \
- 	| a29k \
-+	| aarch64 | aarch64_be \
- 	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- 	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- 	| am33_2.0 \
--	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
-+	| arc \
-+	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-+	| avr | avr32 \
-+	| be32 | be64 \
- 	| bfin \
- 	| c4x | clipper \
- 	| d10v | d30v | dlx | dsp16xx \
-+	| epiphany \
- 	| fido | fr30 | frv \
- 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-+	| hexagon \
- 	| i370 | i860 | i960 | ia64 \
- 	| ip2k | iq2000 \
-+	| le32 | le64 \
- 	| lm32 \
- 	| m32c | m32r | m32rle | m68000 | m68k | m88k \
--	| maxq | mb | microblaze | mcore | mep | metag \
-+	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
- 	| mips | mipsbe | mipseb | mipsel | mipsle \
- 	| mips16 \
- 	| mips64 | mips64el \
- 	| mips64octeon | mips64octeonel \
- 	| mips64orion | mips64orionel \
- 	| mips64r5900 | mips64r5900el \
- 	| mips64vr | mips64vrel \
- 	| mips64vr4100 | mips64vr4100el \
-@@ -276,79 +290,111 @@ case $basic_machine in
- 	| mipsisa64r2 | mipsisa64r2el \
- 	| mipsisa64sb1 | mipsisa64sb1el \
- 	| mipsisa64sr71k | mipsisa64sr71kel \
- 	| mipstx39 | mipstx39el \
- 	| mn10200 | mn10300 \
- 	| moxie \
- 	| mt \
- 	| msp430 \
-+	| nds32 | nds32le | nds32be \
- 	| nios | nios2 \
- 	| ns16k | ns32k \
-+	| open8 \
- 	| or32 \
- 	| pdp10 | pdp11 | pj | pjl \
--	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
-+	| powerpc | powerpc64 | powerpc64le | powerpcle \
- 	| pyramid \
-+	| rl78 | rx \
- 	| score \
- 	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
- 	| sh64 | sh64le \
- 	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
- 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
--	| spu | strongarm \
--	| tahoe | thumb | tic4x | tic80 | tron \
--	| v850 | v850e \
-+	| spu \
-+	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-+	| ubicom32 \
-+	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
- 	| we32k \
--	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
-+	| x86 | xc16x | xstormy16 | xtensa \
- 	| z8k | z80)
- 		basic_machine=$basic_machine-unknown
- 		;;
--	m6811 | m68hc11 | m6812 | m68hc12)
--		# Motorola 68HC11/12.
-+	c54x)
-+		basic_machine=tic54x-unknown
-+		;;
-+	c55x)
-+		basic_machine=tic55x-unknown
-+		;;
-+	c6x)
-+		basic_machine=tic6x-unknown
-+		;;
-+	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
- 		basic_machine=$basic_machine-unknown
- 		os=-none
- 		;;
- 	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- 		;;
- 	ms1)
- 		basic_machine=mt-unknown
- 		;;
- 
-+	strongarm | thumb | xscale)
-+		basic_machine=arm-unknown
-+		;;
-+	xgate)
-+		basic_machine=$basic_machine-unknown
-+		os=-none
-+		;;
-+	xscaleeb)
-+		basic_machine=armeb-unknown
-+		;;
-+
-+	xscaleel)
-+		basic_machine=armel-unknown
-+		;;
-+
- 	# We use `pc' rather than `unknown'
- 	# because (1) that's what they normally are, and
- 	# (2) the word "unknown" tends to confuse beginning users.
- 	i*86 | x86_64)
- 	  basic_machine=$basic_machine-pc
- 	  ;;
- 	# Object if more than one company name word.
- 	*-*-*)
- 		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- 		exit 1
- 		;;
- 	# Recognize the basic CPU types with company name.
- 	580-* \
- 	| a29k-* \
-+	| aarch64-* | aarch64_be-* \
- 	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- 	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- 	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
- 	| avr-* | avr32-* \
-+	| be32-* | be64-* \
- 	| bfin-* | bs2000-* \
--	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
- 	| clipper-* | craynv-* | cydra-* \
- 	| d10v-* | d30v-* | dlx-* \
- 	| elxsi-* \
- 	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
- 	| h8300-* | h8500-* \
- 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-+	| hexagon-* \
- 	| i*86-* | i860-* | i960-* | ia64-* \
- 	| ip2k-* | iq2000-* \
-+	| le32-* | le64-* \
- 	| lm32-* \
- 	| m32c-* | m32r-* | m32rle-* \
- 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
--	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
-+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-+	| microblaze-* | microblazeel-* \
- 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- 	| mips16-* \
- 	| mips64-* | mips64el-* \
- 	| mips64octeon-* | mips64octeonel-* \
- 	| mips64orion-* | mips64orionel-* \
- 	| mips64r5900-* | mips64r5900el-* \
- 	| mips64vr-* | mips64vrel-* \
- 	| mips64vr4100-* | mips64vr4100el-* \
-@@ -360,34 +406,39 @@ case $basic_machine in
- 	| mipsisa64-* | mipsisa64el-* \
- 	| mipsisa64r2-* | mipsisa64r2el-* \
- 	| mipsisa64sb1-* | mipsisa64sb1el-* \
- 	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
- 	| mipstx39-* | mipstx39el-* \
- 	| mmix-* \
- 	| mt-* \
- 	| msp430-* \
-+	| nds32-* | nds32le-* | nds32be-* \
- 	| nios-* | nios2-* \
- 	| none-* | np1-* | ns16k-* | ns32k-* \
-+	| open8-* \
- 	| orion-* \
- 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
--	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
-+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
- 	| pyramid-* \
--	| romp-* | rs6000-* \
-+	| rl78-* | romp-* | rs6000-* | rx-* \
- 	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
- 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
- 	| sparclite-* \
--	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
--	| tahoe-* | thumb-* \
--	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
-+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
-+	| tahoe-* \
-+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-+	| tile*-* \
- 	| tron-* \
--	| v850-* | v850e-* | vax-* \
-+	| ubicom32-* \
-+	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-+	| vax-* \
- 	| we32k-* \
--	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
-+	| x86-* | x86_64-* | xc16x-* | xps100-* \
- 	| xstormy16-* | xtensa*-* \
- 	| ymp-* \
- 	| z8k-* | z80-*)
- 		;;
- 	# Recognize the basic CPU types without company name, with glob match.
- 	xtensa*)
- 		basic_machine=$basic_machine-unknown
- 		;;
-@@ -402,17 +453,17 @@ case $basic_machine in
- 		;;
- 	3b*)
- 		basic_machine=we32k-att
- 		;;
- 	a29khif)
- 		basic_machine=a29k-amd
- 		os=-udi
- 		;;
--    	abacus)
-+	abacus)
- 		basic_machine=abacus-unknown
- 		;;
- 	adobe68k)
- 		basic_machine=m68010-adobe
- 		os=-scout
- 		;;
- 	alliant | fx80)
- 		basic_machine=fx80-alliant
-@@ -472,21 +523,30 @@ case $basic_machine in
- 	blackfin-*)
- 		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
- 		os=-linux
- 		;;
- 	bluegene*)
- 		basic_machine=powerpc-ibm
- 		os=-cnk
- 		;;
-+	c54x-*)
-+		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-+		;;
-+	c55x-*)
-+		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-+		;;
-+	c6x-*)
-+		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-+		;;
- 	c90)
- 		basic_machine=c90-cray
- 		os=-unicos
- 		;;
--        cegcc)
-+	cegcc)
- 		basic_machine=arm-unknown
- 		os=-cegcc
- 		;;
- 	convex-c1)
- 		basic_machine=c1-convex
- 		os=-bsd
- 		;;
- 	convex-c2)
-@@ -508,17 +568,17 @@ case $basic_machine in
- 	cray | j90)
- 		basic_machine=j90-cray
- 		os=-unicos
- 		;;
- 	craynv)
- 		basic_machine=craynv-cray
- 		os=-unicosmp
- 		;;
--	cr16)
-+	cr16 | cr16-*)
- 		basic_machine=cr16-unknown
- 		os=-elf
- 		;;
- 	crds | unos)
- 		basic_machine=m68k-crds
- 		;;
- 	crisv32 | crisv32-* | etraxfs*)
- 		basic_machine=crisv32-axis
-@@ -666,17 +726,16 @@ case $basic_machine in
- 		;;
- 	hppro)
- 		basic_machine=hppa1.1-hp
- 		os=-proelf
- 		;;
- 	i370-ibm* | ibm*)
- 		basic_machine=i370-ibm
- 		;;
--# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
- 	i*86v32)
- 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- 		os=-sysv32
- 		;;
- 	i*86v4*)
- 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- 		os=-sysv4
- 		;;
-@@ -724,19 +783,23 @@ case $basic_machine in
- 	magnum | m3230)
- 		basic_machine=mips-mips
- 		os=-sysv
- 		;;
- 	merlin)
- 		basic_machine=ns32k-utek
- 		os=-sysv
- 		;;
--        microblaze)
-+	microblaze*)
- 		basic_machine=microblaze-xilinx
- 		;;
-+	mingw64)
-+		basic_machine=x86_64-pc
-+		os=-mingw64
-+		;;
- 	mingw32)
- 		basic_machine=i386-pc
- 		os=-mingw32
- 		;;
- 	mingw32ce)
- 		basic_machine=arm-unknown
- 		os=-mingw32ce
- 		;;
-@@ -763,20 +826,28 @@ case $basic_machine in
- 		;;
- 	msdos)
- 		basic_machine=i386-pc
- 		os=-msdos
- 		;;
- 	ms1-*)
- 		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
- 		;;
-+	msys)
-+		basic_machine=i386-pc
-+		os=-msys
-+		;;
- 	mvs)
- 		basic_machine=i370-ibm
- 		os=-mvs
- 		;;
-+	nacl)
-+		basic_machine=le32-unknown
-+		os=-nacl
-+		;;
- 	ncr3000)
- 		basic_machine=i486-ncr
- 		os=-sysv4
- 		;;
- 	netbsd386)
- 		basic_machine=i386-unknown
- 		os=-netbsd
- 		;;
-@@ -831,16 +902,22 @@ case $basic_machine in
- 		;;
- 	nonstopux)
- 		basic_machine=mips-compaq
- 		os=-nonstopux
- 		;;
- 	np1)
- 		basic_machine=np1-gould
- 		;;
-+	neo-tandem)
-+		basic_machine=neo-tandem
-+		;;
-+	nse-tandem)
-+		basic_machine=nse-tandem
-+		;;
- 	nsr-tandem)
- 		basic_machine=nsr-tandem
- 		;;
- 	op50n-* | op60c-*)
- 		basic_machine=hppa1.1-oki
- 		os=-proelf
- 		;;
- 	openrisc | openrisc-*)
-@@ -913,44 +990,49 @@ case $basic_machine in
- 	pentium4-*)
- 		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
- 		;;
- 	pn)
- 		basic_machine=pn-gould
- 		;;
- 	power)	basic_machine=power-ibm
- 		;;
--	ppc)	basic_machine=powerpc-unknown
-+	ppc | ppcbe)	basic_machine=powerpc-unknown
- 		;;
--	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-+	ppc-* | ppcbe-*)
-+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- 		;;
- 	ppcle | powerpclittle | ppc-le | powerpc-little)
- 		basic_machine=powerpcle-unknown
- 		;;
- 	ppcle-* | powerpclittle-*)
- 		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- 		;;
- 	ppc64)	basic_machine=powerpc64-unknown
- 		;;
--	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-+	ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- 		;;
- 	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
- 		basic_machine=powerpc64le-unknown
- 		;;
- 	ppc64le-* | powerpc64little-*)
- 		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
- 		;;
- 	ps2)
- 		basic_machine=i386-ibm
- 		;;
- 	pw32)
- 		basic_machine=i586-unknown
- 		os=-pw32
- 		;;
--	rdos)
-+	rdos | rdos64)
-+		basic_machine=x86_64-pc
-+		os=-rdos
-+		;;
-+	rdos32)
- 		basic_machine=i386-pc
- 		os=-rdos
- 		;;
- 	rom68k)
- 		basic_machine=m68k-rom68k
- 		os=-coff
- 		;;
- 	rm[46]00)
-@@ -1009,16 +1091,19 @@ case $basic_machine in
- 		;;
- 	st2000)
- 		basic_machine=m68k-tandem
- 		;;
- 	stratus)
- 		basic_machine=i860-stratus
- 		os=-sysv4
- 		;;
-+	strongarm-* | thumb-*)
-+		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
-+		;;
- 	sun2)
- 		basic_machine=m68000-sun
- 		;;
- 	sun2os3)
- 		basic_machine=m68000-sun
- 		os=-sunos3
- 		;;
- 	sun2os4)
-@@ -1065,30 +1150,18 @@ case $basic_machine in
- 	t3e)
- 		basic_machine=alphaev5-cray
- 		os=-unicos
- 		;;
- 	t90)
- 		basic_machine=t90-cray
- 		os=-unicos
- 		;;
--	tic54x | c54x*)
--		basic_machine=tic54x-unknown
--		os=-coff
--		;;
--	tic55x | c55x*)
--		basic_machine=tic55x-unknown
--		os=-coff
--		;;
--	tic6x | c6x*)
--		basic_machine=tic6x-unknown
--		os=-coff
--		;;
- 	tile*)
--		basic_machine=tile-unknown
-+		basic_machine=$basic_machine-unknown
- 		os=-linux-gnu
- 		;;
- 	tx39)
- 		basic_machine=mipstx39-unknown
- 		;;
- 	tx39el)
- 		basic_machine=mipstx39el-unknown
- 		;;
-@@ -1148,16 +1221,19 @@ case $basic_machine in
- 		;;
- 	xbox)
- 		basic_machine=i686-pc
- 		os=-mingw32
- 		;;
- 	xps | xps100)
- 		basic_machine=xps100-honeywell
- 		;;
-+	xscale-* | xscalee[bl]-*)
-+		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
-+		;;
- 	ymp)
- 		basic_machine=ymp-cray
- 		os=-unicos
- 		;;
- 	z8k-*-coff)
- 		basic_machine=z8k-unknown
- 		os=-sim
- 		;;
-@@ -1245,19 +1321,22 @@ case $basic_machine in
- 		;;
- esac
- 
- # Decode manufacturer-specific aliases for certain operating systems.
- 
- if [ x"$os" != x"" ]
- then
- case $os in
--        # First match some system type aliases
--        # that might get confused with valid system types.
-+	# First match some system type aliases
-+	# that might get confused with valid system types.
- 	# -solaris* is a basic system type, with this one exception.
-+	-auroraux)
-+		os=-auroraux
-+		;;
- 	-solaris1 | -solaris1.*)
- 		os=`echo $os | sed -e 's|solaris1|sunos4|'`
- 		;;
- 	-solaris)
- 		os=-solaris2
- 		;;
- 	-svr4*)
- 		os=-sysv4
-@@ -1269,39 +1348,40 @@ case $os in
- 		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- 		;;
- 	# First accept the basic system types.
- 	# The portable systems comes first.
- 	# Each alternative MUST END IN A *, to match a version number.
- 	# -sysv* is not here because it comes later, after sysvr4.
- 	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- 	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
--	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
--	      | -kopensolaris* \
-+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-+	      | -sym* | -kopensolaris* \
- 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- 	      | -aos* | -aros* \
- 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- 	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
--	      | -openbsd* | -solidbsd* \
-+	      | -bitrig* | -openbsd* | -solidbsd* \
- 	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- 	      | -chorusos* | -chorusrdb* | -cegcc* \
--	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
--	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
-+	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-+	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-+	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
- 	      | -uxpv* | -beos* | -mpeix* | -udk* \
- 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- 	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
--	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -winmo*)
-+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
- 	# Remember, each alternative MUST END IN *, to match a version number.
- 		;;
- 	-qnx*)
- 		case $basic_machine in
- 		    x86-* | i*86-*)
- 			;;
- 		    *)
- 			os=-nto$os
-@@ -1330,22 +1410,19 @@ case $os in
- 		os=`echo $os | sed -e 's|sunos5|solaris2|'`
- 		;;
- 	-sunos6*)
- 		os=`echo $os | sed -e 's|sunos6|solaris3|'`
- 		;;
- 	-opened*)
- 		os=-openedition
- 		;;
--        -os400*)
-+	-os400*)
- 		os=-os400
- 		;;
--	-wince-winmo*)
--		os=-wince-winmo
--		;;
- 	-wince*)
- 		os=-wince
- 		;;
- 	-osfrose*)
- 		os=-osfrose
- 		;;
- 	-osf*)
- 		os=-osf
-@@ -1382,17 +1459,17 @@ case $os in
- 		;;
- 	# Preserve the version number of sinix5.
- 	-sinix5.*)
- 		os=`echo $os | sed -e 's|sinix|sysv|'`
- 		;;
- 	-sinix*)
- 		os=-sysv4
- 		;;
--        -tpf*)
-+	-tpf*)
- 		os=-tpf
- 		;;
- 	-triton*)
- 		os=-sysv3
- 		;;
- 	-oss*)
- 		os=-sysv3
- 		;;
-@@ -1427,19 +1504,18 @@ case $os in
- 		os=-kaos
- 		;;
- 	-zvmoe)
- 		os=-zvmoe
- 		;;
- 	-dicos*)
- 		os=-dicos
- 		;;
--        -android*)
--	        os=-android
--                ;;
-+	-nacl*)
-+		;;
- 	-none)
- 		;;
- 	*)
- 		# Get rid of the `-' at the beginning of $os.
- 		os=`echo $os | sed 's/[^-]*-//'`
- 		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- 		exit 1
- 		;;
-@@ -1452,33 +1528,45 @@ else
- 
- # Note that if you're going to try to match "-MANUFACTURER" here (say,
- # "-sun"), then you have to tell the case statement up towards the top
- # that MANUFACTURER isn't an operating system.  Otherwise, code above
- # will signal an error saying that MANUFACTURER isn't an operating
- # system, and we'll never get to this point.
- 
- case $basic_machine in
--        score-*)
-+	score-*)
- 		os=-elf
- 		;;
--        spu-*)
-+	spu-*)
- 		os=-elf
- 		;;
- 	*-acorn)
- 		os=-riscix1.2
- 		;;
- 	arm*-rebel)
- 		os=-linux
- 		;;
- 	arm*-semi)
- 		os=-aout
- 		;;
--        c4x-* | tic4x-*)
--        	os=-coff
-+	c4x-* | tic4x-*)
-+		os=-coff
-+		;;
-+	hexagon-*)
-+		os=-elf
-+		;;
-+	tic54x-*)
-+		os=-coff
-+		;;
-+	tic55x-*)
-+		os=-coff
-+		;;
-+	tic6x-*)
-+		os=-coff
- 		;;
- 	# This must come before the *-dec entry.
- 	pdp10-*)
- 		os=-tops20
- 		;;
- 	pdp11-*)
- 		os=-none
- 		;;
-@@ -1488,24 +1576,21 @@ case $basic_machine in
- 	m68*-apollo)
- 		os=-domain
- 		;;
- 	i386-sun)
- 		os=-sunos4.0.2
- 		;;
- 	m68000-sun)
- 		os=-sunos3
--		# This also exists in the configure program, but was not the
--		# default.
--		# os=-sunos4
- 		;;
- 	m68*-cisco)
- 		os=-aout
- 		;;
--        mep-*)
-+	mep-*)
- 		os=-elf
- 		;;
- 	mips*-cisco)
- 		os=-elf
- 		;;
- 	mips*-*)
- 		os=-elf
- 		;;
-@@ -1522,17 +1607,17 @@ case $basic_machine in
- 		os=-beos
- 		;;
- 	*-haiku)
- 		os=-haiku
- 		;;
- 	*-ibm)
- 		os=-aix
- 		;;
--    	*-knuth)
-+	*-knuth)
- 		os=-mmixware
- 		;;
- 	*-wec)
- 		os=-proelf
- 		;;
- 	*-winbond)
- 		os=-proelf
- 		;;
-@@ -1684,19 +1769,16 @@ case $basic_machine in
- 				vendor=apple
- 				;;
- 			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- 				vendor=atari
- 				;;
- 			-vos*)
- 				vendor=stratus
- 				;;
--			*-android*|*-linuxandroid*)
--				vendor=linux-
--				;;
- 		esac
- 		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- 		;;
- esac
- 
- echo $basic_machine$os
- exit
- 
-diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
---- a/js/src/ctypes/libffi/configure
-+++ b/js/src/ctypes/libffi/configure
-@@ -1,18 +1,16 @@
- #! /bin/sh
- # Guess values for system-dependent variables and create Makefiles.
--# Generated by GNU Autoconf 2.65 for libffi 3.0.10rc0.
-+# Generated by GNU Autoconf 2.69 for libffi 3.1-rc1.
- #
--# Report bugs to <http://gcc.gnu.org/bugs.html>.
-+# Report bugs to <http://github.com/atgreen/libffi/issues>.
- #
- #
--# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
--# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
--# Inc.
-+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
- #
- #
- # This configure script is free software; the Free Software Foundation
- # gives unlimited permission to copy, distribute and modify it.
- ## -------------------- ##
- ## M4sh Initialization. ##
- ## -------------------- ##
- 
-@@ -86,16 +84,17 @@ fi
- # IFS
- # We need space, tab and new line, in precisely that order.  Quoting is
- # there to prevent editors from complaining about space-tab.
- # (If _AS_PATH_WALK were called with IFS unset, it would disable word
- # splitting by setting IFS to empty value.)
- IFS=" ""	$as_nl"
- 
- # Find who we are.  Look in the path if we contain no directory separator.
-+as_myself=
- case $0 in #((
-   *[\\/]* ) as_myself=$0 ;;
-   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-@@ -130,16 +129,41 @@ PS4='+ '
- LC_ALL=C
- export LC_ALL
- LANGUAGE=C
- export LANGUAGE
- 
- # CDPATH.
- (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
- 
-+# Use a proper internal environment variable to ensure we don't fall
-+  # into an infinite loop, continuously re-executing ourselves.
-+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-+    _as_can_reexec=no; export _as_can_reexec;
-+    # We cannot yet assume a decent shell, so we have to provide a
-+# neutralization value for shells without unset; and this also
-+# works around shells that cannot unset nonexistent variables.
-+# Preserve -v and -x to the replacement shell.
-+BASH_ENV=/dev/null
-+ENV=/dev/null
-+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-+case $- in # ((((
-+  *v*x* | *x*v* ) as_opts=-vx ;;
-+  *v* ) as_opts=-v ;;
-+  *x* ) as_opts=-x ;;
-+  * ) as_opts= ;;
-+esac
-+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-+# Admittedly, this is quite paranoid, since all the known shells bail
-+# out after a failed `exec'.
-+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-+as_fn_exit 255
-+  fi
-+  # We don't want this to propagate to other subprocesses.
-+          { _as_can_reexec=; unset _as_can_reexec;}
- if test "x$CONFIG_SHELL" = x; then
-   as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-   emulate sh
-   NULLCMD=:
-   # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-   # is contrary to our usage.  Disable this feature.
-   alias -g '\${1+\"\$@\"}'='\"\$@\"'
-   setopt NO_GLOB_SUBST
-@@ -163,21 +187,30 @@ as_fn_success || { exitcode=1; echo as_f
- as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
- as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
- as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
- if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
- 
- else
-   exitcode=1; echo positional parameters were not saved.
- fi
--test x\$exitcode = x0 || exit 1"
-+test x\$exitcode = x0 || exit 1
-+test -x / || exit 1"
-   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-   test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-+
-+  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
-+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-+    PATH=/empty FPATH=/empty; export PATH FPATH
-+    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
-+      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
- test \$(( 1 + 1 )) = 2 || exit 1"
-   if (eval "$as_required") 2>/dev/null; then :
-   as_have_required=yes
- else
-   as_have_required=no
- fi
-   if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
- 
-@@ -208,36 +241,47 @@ done
- $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
- 	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-   CONFIG_SHELL=$SHELL as_have_required=yes
- fi; }
- IFS=$as_save_IFS
- 
- 
-       if test "x$CONFIG_SHELL" != x; then :
--  # We cannot yet assume a decent shell, so we have to provide a
--	# neutralization value for shells without unset; and this also
--	# works around shells that cannot unset nonexistent variables.
--	BASH_ENV=/dev/null
--	ENV=/dev/null
--	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
--	export CONFIG_SHELL
--	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-+  export CONFIG_SHELL
-+             # We cannot yet assume a decent shell, so we have to provide a
-+# neutralization value for shells without unset; and this also
-+# works around shells that cannot unset nonexistent variables.
-+# Preserve -v and -x to the replacement shell.
-+BASH_ENV=/dev/null
-+ENV=/dev/null
-+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-+case $- in # ((((
-+  *v*x* | *x*v* ) as_opts=-vx ;;
-+  *v* ) as_opts=-v ;;
-+  *x* ) as_opts=-x ;;
-+  * ) as_opts= ;;
-+esac
-+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-+# Admittedly, this is quite paranoid, since all the known shells bail
-+# out after a failed `exec'.
-+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-+exit 255
- fi
- 
-     if test x$as_have_required = xno; then :
-   $as_echo "$0: This script requires a shell more modern than all"
-   $as_echo "$0: the shells that I found on your system."
-   if test x${ZSH_VERSION+set} = xset ; then
-     $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-     $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-   else
-     $as_echo "$0: Please tell bug-autoconf@gnu.org and
--$0: http://gcc.gnu.org/bugs.html about your system,
--$0: including any error possibly output before this
-+$0: http://github.com/atgreen/libffi/issues about your
-+$0: system, including any error possibly output before this
- $0: message. Then install a modern shell, or manually run
- $0: the script under such a shell if you do have one."
-   fi
-   exit 1
- fi
- fi
- fi
- SHELL=${CONFIG_SHELL-/bin/sh}
-@@ -314,20 +358,28 @@ as_fn_mkdir_p ()
- 	  /^X\(\/\).*/{
- 	    s//\1/
- 	    q
- 	  }
- 	  s/.*/./; q'`
-       test -d "$as_dir" && break
-     done
-     test -z "$as_dirs" || eval "mkdir $as_dirs"
--  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
-+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
- 
- 
- } # as_fn_mkdir_p
-+
-+# as_fn_executable_p FILE
-+# -----------------------
-+# Test if FILE is an executable regular file.
-+as_fn_executable_p ()
-+{
-+  test -f "$1" && test -x "$1"
-+} # as_fn_executable_p
- # as_fn_append VAR VALUE
- # ----------------------
- # Append the text in VALUE to the end of the definition contained in VAR. Take
- # advantage of any shell optimizations that allow amortized linear growth over
- # repeated appends, instead of the typical quadratic growth present in naive
- # implementations.
- if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-   eval 'as_fn_append ()
-@@ -354,29 +406,29 @@ if (eval "test \$(( 1 + 1 )) = 2") 2>/de
- else
-   as_fn_arith ()
-   {
-     as_val=`expr "$@" || test $? -eq 1`
-   }
- fi # as_fn_arith
- 
- 
--# as_fn_error ERROR [LINENO LOG_FD]
--# ---------------------------------
-+# as_fn_error STATUS ERROR [LINENO LOG_FD]
-+# ----------------------------------------
- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
- # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
--# script with status $?, using 1 if that was 0.
-+# script with STATUS, using 1 if that was 0.
- as_fn_error ()
- {
--  as_status=$?; test $as_status -eq 0 && as_status=1
--  if test "$3"; then
--    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
--    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
--  fi
--  $as_echo "$as_me: error: $1" >&2
-+  as_status=$1; test $as_status -eq 0 && as_status=1
-+  if test "$4"; then
-+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-+  fi
-+  $as_echo "$as_me: error: $2" >&2
-   as_fn_exit $as_status
- } # as_fn_error
- 
- if expr a : '\(a\)' >/dev/null 2>&1 &&
-    test "X`expr 00001 : '.*\(...\)'`" = X001; then
-   as_expr=expr
- else
-   as_expr=false
-@@ -439,16 +491,20 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
-       :loop
-       s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-       t loop
-       s/-\n.*//
-     ' >$as_me.lineno &&
-   chmod +x "$as_me.lineno" ||
-     { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
- 
-+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-+  # already done that, so ensure we don't try to do so again and fall
-+  # in an infinite loop.  This has already happened in practice.
-+  _as_can_reexec=no; export _as_can_reexec
-   # Don't try to exec as it changes $[0], causing all sort of problems
-   # (the dirname of $[0] is not the place where we might find the
-   # original and so on.  Autoconf is especially sensitive to this).
-   . "./$as_me.lineno"
-   # Exit status is that of the last command.
-   exit
- }
- 
-@@ -473,221 +529,54 @@ else
-   mkdir conf$$.dir 2>/dev/null
- fi
- if (echo >conf$$.file) 2>/dev/null; then
-   if ln -s conf$$.file conf$$ 2>/dev/null; then
-     as_ln_s='ln -s'
-     # ... but there are two gotchas:
-     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
--    # In both cases, we have to default to `cp -p'.
-+    # In both cases, we have to default to `cp -pR'.
-     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
--      as_ln_s='cp -p'
-+      as_ln_s='cp -pR'
-   elif ln conf$$.file conf$$ 2>/dev/null; then
-     as_ln_s=ln
-   else
--    as_ln_s='cp -p'
--  fi
--else
--  as_ln_s='cp -p'
-+    as_ln_s='cp -pR'
-+  fi
-+else
-+  as_ln_s='cp -pR'
- fi
- rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
- rmdir conf$$.dir 2>/dev/null
- 
- if mkdir -p . 2>/dev/null; then
-   as_mkdir_p='mkdir -p "$as_dir"'
- else
-   test -d ./-p && rmdir ./-p
-   as_mkdir_p=false
- fi
- 
--if test -x / >/dev/null 2>&1; then
--  as_test_x='test -x'
--else
--  if ls -dL / >/dev/null 2>&1; then
--    as_ls_L_option=L
--  else
--    as_ls_L_option=
--  fi
--  as_test_x='
--    eval sh -c '\''
--      if test -d "$1"; then
--	test -d "$1/.";
--      else
--	case $1 in #(
--	-*)set "./$1";;
--	esac;
--	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
--	???[sx]*):;;*)false;;esac;fi
--    '\'' sh
--  '
--fi
--as_executable_p=$as_test_x
-+as_test_x='test -x'
-+as_executable_p=as_fn_executable_p
- 
- # Sed expression to map a string onto a valid CPP name.
- as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
- 
- # Sed expression to map a string onto a valid variable name.
- as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
- 
--
--
--# Check that we are running under the correct shell.
- SHELL=${CONFIG_SHELL-/bin/sh}
- 
--case X$lt_ECHO in
--X*--fallback-echo)
--  # Remove one level of quotation (which was required for Make).
--  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','`
--  ;;
--esac
--
--ECHO=${lt_ECHO-echo}
--if test "X$1" = X--no-reexec; then
--  # Discard the --no-reexec flag, and continue.
--  shift
--elif test "X$1" = X--fallback-echo; then
--  # Avoid inline document here, it may be left over
--  :
--elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
--  # Yippee, $ECHO works!
--  :
--else
--  # Restart under the correct shell.
--  exec $SHELL "$0" --no-reexec ${1+"$@"}
--fi
--
--if test "X$1" = X--fallback-echo; then
--  # used as fallback echo
--  shift
--  cat <<_LT_EOF
--$*
--_LT_EOF
--  exit 0
--fi
--
--# The HP-UX ksh and POSIX shell print the target directory to stdout
--# if CDPATH is set.
--(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
--
--if test -z "$lt_ECHO"; then
--  if test "X${echo_test_string+set}" != Xset; then
--    # find a string as large as possible, as long as the shell can cope with it
--    for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
--      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
--      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
--	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
--      then
--        break
--      fi
--    done
--  fi
--
--  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
--     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
--     test "X$echo_testing_string" = "X$echo_test_string"; then
--    :
--  else
--    # The Solaris, AIX, and Digital Unix default echo programs unquote
--    # backslashes.  This makes it impossible to quote backslashes using
--    #   echo "$something" | sed 's/\\/\\\\/g'
--    #
--    # So, first we look for a working echo in the user's PATH.
--
--    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
--    for dir in $PATH /usr/ucb; do
--      IFS="$lt_save_ifs"
--      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
--         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
--         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
--         test "X$echo_testing_string" = "X$echo_test_string"; then
--        ECHO="$dir/echo"
--        break
--      fi
--    done
--    IFS="$lt_save_ifs"
--
--    if test "X$ECHO" = Xecho; then
--      # We didn't find a better echo, so look for alternatives.
--      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
--         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
--         test "X$echo_testing_string" = "X$echo_test_string"; then
--        # This shell has a builtin print -r that does the trick.
--        ECHO='print -r'
--      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
--	   test "X$CONFIG_SHELL" != X/bin/ksh; then
--        # If we have ksh, try running configure again with it.
--        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
--        export ORIGINAL_CONFIG_SHELL
--        CONFIG_SHELL=/bin/ksh
--        export CONFIG_SHELL
--        exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
--      else
--        # Try using printf.
--        ECHO='printf %s\n'
--        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
--	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
--	   test "X$echo_testing_string" = "X$echo_test_string"; then
--	  # Cool, printf works
--	  :
--        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
--	     test "X$echo_testing_string" = 'X\t' &&
--	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
--	     test "X$echo_testing_string" = "X$echo_test_string"; then
--	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
--	  export CONFIG_SHELL
--	  SHELL="$CONFIG_SHELL"
--	  export SHELL
--	  ECHO="$CONFIG_SHELL $0 --fallback-echo"
--        elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
--	     test "X$echo_testing_string" = 'X\t' &&
--	     echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
--	     test "X$echo_testing_string" = "X$echo_test_string"; then
--	  ECHO="$CONFIG_SHELL $0 --fallback-echo"
--        else
--	  # maybe with a smaller string...
--	  prev=:
--
--	  for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
--	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
--	    then
--	      break
--	    fi
--	    prev="$cmd"
--	  done
--
--	  if test "$prev" != 'sed 50q "$0"'; then
--	    echo_test_string=`eval $prev`
--	    export echo_test_string
--	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
--	  else
--	    # Oops.  We lost completely, so just stick with echo.
--	    ECHO=echo
--	  fi
--        fi
--      fi
--    fi
--  fi
--fi
--
--# Copy echo and quote the copy suitably for passing to libtool from
--# the Makefile, instead of quoting the original, which is used later.
--lt_ECHO=$ECHO
--if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
--   lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
--fi
--
--
--
- 
- test -n "$DJDIR" || exec 7<&0 </dev/null
- exec 6>&1
- 
- # Name of the host.
--# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
- # so uname gets run too.
- ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
- 
- #
- # Initializations.
- #
- ac_default_prefix=/usr/local
- ac_clean_files=
-@@ -696,19 +585,19 @@ LIBOBJS=
- cross_compiling=no
- subdirs=
- MFLAGS=
- MAKEFLAGS=
- 
- # Identity of this package.
- PACKAGE_NAME='libffi'
- PACKAGE_TARNAME='libffi'
--PACKAGE_VERSION='3.0.10rc0'
--PACKAGE_STRING='libffi 3.0.10rc0'
--PACKAGE_BUGREPORT='http://gcc.gnu.org/bugs.html'
-+PACKAGE_VERSION='3.1-rc1'
-+PACKAGE_STRING='libffi 3.1-rc1'
-+PACKAGE_BUGREPORT='http://github.com/atgreen/libffi/issues'
- PACKAGE_URL=''
- 
- # Factoring default headers for most tests.
- ac_includes_default="\
- #include <stdio.h>
- #ifdef HAVE_SYS_TYPES_H
- # include <sys/types.h>
- #endif
-@@ -747,19 +636,29 @@ am__EXEEXT_TRUE
- LTLIBOBJS
- LIBOBJS
- toolexeclibdir
- toolexecdir
- FFI_DEBUG_FALSE
- FFI_DEBUG_TRUE
- TARGETDIR
- TARGET
-+FFI_EXEC_TRAMPOLINE_TABLE
-+FFI_EXEC_TRAMPOLINE_TABLE_FALSE
-+FFI_EXEC_TRAMPOLINE_TABLE_TRUE
- sys_symbol_underscore
-+HAVE_LONG_DOUBLE_VARIANT
- HAVE_LONG_DOUBLE
- ALLOCA
-+XTENSA_FALSE
-+XTENSA_TRUE
-+VAX_FALSE
-+VAX_TRUE
-+TILE_FALSE
-+TILE_TRUE
- PA64_HPUX_FALSE
- PA64_HPUX_TRUE
- PA_HPUX_FALSE
- PA_HPUX_TRUE
- PA_LINUX_FALSE
- PA_LINUX_TRUE
- SH64_FALSE
- SH64_TRUE
-@@ -772,64 +671,85 @@ S390_TRUE
- FRV_FALSE
- FRV_TRUE
- LIBFFI_CRIS_FALSE
- LIBFFI_CRIS_TRUE
- AVR32_FALSE
- AVR32_TRUE
- ARM_FALSE
- ARM_TRUE
-+ARC_FALSE
-+ARC_TRUE
-+AARCH64_FALSE
-+AARCH64_TRUE
- POWERPC_FREEBSD_FALSE
- POWERPC_FREEBSD_TRUE
- POWERPC_DARWIN_FALSE
- POWERPC_DARWIN_TRUE
- POWERPC_AIX_FALSE
- POWERPC_AIX_TRUE
- POWERPC_FALSE
- POWERPC_TRUE
-+NIOS2_FALSE
-+NIOS2_TRUE
- MOXIE_FALSE
- MOXIE_TRUE
-+METAG_FALSE
-+METAG_TRUE
-+MICROBLAZE_FALSE
-+MICROBLAZE_TRUE
-+M88K_FALSE
-+M88K_TRUE
- M68K_FALSE
- M68K_TRUE
- M32R_FALSE
- M32R_TRUE
- IA64_FALSE
- IA64_TRUE
- ALPHA_FALSE
- ALPHA_TRUE
-+X86_DARWIN64_FALSE
-+X86_DARWIN64_TRUE
-+X86_DARWIN32_FALSE
-+X86_DARWIN32_TRUE
- X86_DARWIN_FALSE
- X86_DARWIN_TRUE
- X86_WIN64_FALSE
- X86_WIN64_TRUE
- X86_WIN32_FALSE
- X86_WIN32_TRUE
- X86_FREEBSD_FALSE
- X86_FREEBSD_TRUE
- X86_FALSE
- X86_TRUE
- SPARC_FALSE
- SPARC_TRUE
-+BFIN_FALSE
-+BFIN_TRUE
- MIPS_FALSE
- MIPS_TRUE
- AM_LTLDFLAGS
- AM_RUNTESTFLAGS
- TESTSUBDIR_FALSE
- TESTSUBDIR_TRUE
- MAINT
- MAINTAINER_MODE_FALSE
- MAINTAINER_MODE_TRUE
-+PRTDIAG
- CPP
- OTOOL64
- OTOOL
- LIPO
- NMEDIT
- DSYMUTIL
--lt_ECHO
-+MANIFEST_TOOL
- RANLIB
-+ac_ct_AR
- AR
-+DLLTOOL
- OBJDUMP
- LN_S
- NM
- ac_ct_DUMPBIN
- DUMPBIN
- LD
- FGREP
- EGREP
-@@ -839,29 +759,34 @@ LIBTOOL
- am__fastdepCCAS_FALSE
- am__fastdepCCAS_TRUE
- CCASDEPMODE
- CCASFLAGS
- CCAS
- am__fastdepCC_FALSE
- am__fastdepCC_TRUE
- CCDEPMODE
-+am__nodep
- AMDEPBACKSLASH
- AMDEP_FALSE
- AMDEP_TRUE
- am__quote
- am__include
- DEPDIR
- OBJEXT
- EXEEXT
- ac_ct_CC
- CPPFLAGS
- LDFLAGS
- CFLAGS
- CC
-+AM_BACKSLASH
-+AM_DEFAULT_VERBOSITY
-+AM_DEFAULT_V
-+AM_V
- am__untar
- am__tar
- AMTAR
- am__leading_dot
- SET_MAKE
- AWK
- mkdir_p
- MKDIR_P
-@@ -875,16 +800,17 @@ AUTOCONF
- ACLOCAL
- VERSION
- PACKAGE
- CYGPATH_W
- am__isrc
- INSTALL_DATA
- INSTALL_SCRIPT
- INSTALL_PROGRAM
-+ax_enable_builddir_sed
- target_os
- target_vendor
- target_cpu
- target
- host_os
- host_vendor
- host_cpu
- host
-@@ -928,24 +854,30 @@ PACKAGE_STRING
- PACKAGE_VERSION
- PACKAGE_TARNAME
- PACKAGE_NAME
- PATH_SEPARATOR
- SHELL'
- ac_subst_files=''
- ac_user_opts='
- enable_option_checking
-+enable_builddir
-+enable_silent_rules
- enable_dependency_tracking
- enable_shared
- enable_static
- with_pic
- enable_fast_install
- with_gnu_ld
-+with_sysroot
- enable_libtool_lock
-+enable_portable_binary
-+with_gcc_arch
- enable_maintainer_mode
-+enable_pax_emutramp
- enable_debug
- enable_structs
- enable_raw_api
- enable_purify_safety
- '
-       ac_precious_vars='build_alias
- host_alias
- target_alias
-@@ -1010,18 +942,19 @@ do
-   # If the previous option needs an argument, assign it.
-   if test -n "$ac_prev"; then
-     eval $ac_prev=\$ac_option
-     ac_prev=
-     continue
-   fi
- 
-   case $ac_option in
--  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
--  *)	ac_optarg=yes ;;
-+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-+  *=)   ac_optarg= ;;
-+  *)    ac_optarg=yes ;;
-   esac
- 
-   # Accept the important Cygnus configure options, so we can diagnose typos.
- 
-   case $ac_dashdash$ac_option in
-   --)
-     ac_dashdash=yes ;;
- 
-@@ -1056,17 +989,17 @@ do
-   -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-   | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-     datarootdir=$ac_optarg ;;
- 
-   -disable-* | --disable-*)
-     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-     # Reject names that are not valid shell variable names.
-     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
--      as_fn_error "invalid feature name: $ac_useropt"
-+      as_fn_error $? "invalid feature name: $ac_useropt"
-     ac_useropt_orig=$ac_useropt
-     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-     case $ac_user_opts in
-       *"
- "enable_$ac_useropt"
- "*) ;;
-       *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
- 	 ac_unrecognized_sep=', ';;
-@@ -1082,17 +1015,17 @@ do
-     ac_prev=dvidir ;;
-   -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-     dvidir=$ac_optarg ;;
- 
-   -enable-* | --enable-*)
-     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-     # Reject names that are not valid shell variable names.
-     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
--      as_fn_error "invalid feature name: $ac_useropt"
-+      as_fn_error $? "invalid feature name: $ac_useropt"
-     ac_useropt_orig=$ac_useropt
-     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-     case $ac_user_opts in
-       *"
- "enable_$ac_useropt"
- "*) ;;
-       *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
- 	 ac_unrecognized_sep=', ';;
-@@ -1286,33 +1219,33 @@ do
- 
-   -version | --version | --versio | --versi | --vers | -V)
-     ac_init_version=: ;;
- 
-   -with-* | --with-*)
-     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-     # Reject names that are not valid shell variable names.
-     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
--      as_fn_error "invalid package name: $ac_useropt"
-+      as_fn_error $? "invalid package name: $ac_useropt"
-     ac_useropt_orig=$ac_useropt
-     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-     case $ac_user_opts in
-       *"
- "with_$ac_useropt"
- "*) ;;
-       *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
- 	 ac_unrecognized_sep=', ';;
-     esac
-     eval with_$ac_useropt=\$ac_optarg ;;
- 
-   -without-* | --without-*)
-     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-     # Reject names that are not valid shell variable names.
-     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
--      as_fn_error "invalid package name: $ac_useropt"
-+      as_fn_error $? "invalid package name: $ac_useropt"
-     ac_useropt_orig=$ac_useropt
-     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-     case $ac_user_opts in
-       *"
- "with_$ac_useropt"
- "*) ;;
-       *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
- 	 ac_unrecognized_sep=', ';;
-@@ -1332,50 +1265,50 @@ do
- 
-   -x-libraries | --x-libraries | --x-librarie | --x-librari \
-   | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-     ac_prev=x_libraries ;;
-   -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-     x_libraries=$ac_optarg ;;
- 
--  -*) as_fn_error "unrecognized option: \`$ac_option'
--Try \`$0 --help' for more information."
-+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-+Try \`$0 --help' for more information"
-     ;;
- 
-   *=*)
-     ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-     # Reject names that are not valid shell variable names.
-     case $ac_envvar in #(
-       '' | [0-9]* | *[!_$as_cr_alnum]* )
--      as_fn_error "invalid variable name: \`$ac_envvar'" ;;
-+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-     esac
-     eval $ac_envvar=\$ac_optarg
-     export $ac_envvar ;;
- 
-   *)
-     # FIXME: should be removed in autoconf 3.0.
-     $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-       $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
--    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
-+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
-     ;;
- 
-   esac
- done
- 
- if test -n "$ac_prev"; then
-   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
--  as_fn_error "missing argument to $ac_option"
-+  as_fn_error $? "missing argument to $ac_option"
- fi
- 
- if test -n "$ac_unrecognized_opts"; then
-   case $enable_option_checking in
-     no) ;;
--    fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
-+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-     *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-   esac
- fi
- 
- # Check all directory arguments for consistency.
- for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
- 		datadir sysconfdir sharedstatedir localstatedir includedir \
- 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-@@ -1388,49 +1321,47 @@ do
-       ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-       eval $ac_var=\$ac_val;;
-   esac
-   # Be sure to have absolute directory names.
-   case $ac_val in
-     [\\/$]* | ?:[\\/]* )  continue;;
-     NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-   esac
--  as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
-+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
- done
- 
- # There might be people who depend on the old broken behavior: `$host'
- # used to hold the argument of --host etc.
- # FIXME: To remove some day.
- build=$build_alias
- host=$host_alias
- target=$target_alias
- 
- # FIXME: To remove some day.
- if test "x$host_alias" != x; then
-   if test "x$build_alias" = x; then
-     cross_compiling=maybe
--    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
--    If a cross compiler is detected then cross compile mode will be used." >&2
-   elif test "x$build_alias" != "x$host_alias"; then
-     cross_compiling=yes
-   fi
- fi
- 
- ac_tool_prefix=
- test -n "$host_alias" && ac_tool_prefix=$host_alias-
- 
- test "$silent" = yes && exec 6>/dev/null
- 
- 
- ac_pwd=`pwd` && test -n "$ac_pwd" &&
- ac_ls_di=`ls -di .` &&
- ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
--  as_fn_error "working directory cannot be determined"
-+  as_fn_error $? "working directory cannot be determined"
- test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
--  as_fn_error "pwd does not report name of working directory"
-+  as_fn_error $? "pwd does not report name of working directory"
- 
- 
- # Find the source files, if location was not specified.
- if test -z "$srcdir"; then
-   ac_srcdir_defaulted=yes
-   # Try the directory containing this script, then the parent directory.
-   ac_confdir=`$as_dirname -- "$as_myself" ||
- $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-@@ -1459,21 +1390,21 @@ if test -z "$srcdir"; then
-   if test ! -r "$srcdir/$ac_unique_file"; then
-     srcdir=..
-   fi
- else
-   ac_srcdir_defaulted=no
- fi
- if test ! -r "$srcdir/$ac_unique_file"; then
-   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
--  as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
-+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
- fi
- ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
- ac_abs_confdir=`(
--	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
-+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
- 	pwd)`
- # When building in place, set srcdir=.
- if test "$ac_abs_confdir" = "$ac_pwd"; then
-   srcdir=.
- fi
- # Remove unnecessary trailing slashes from srcdir.
- # Double slashes in file names in object file debugging info
- # mess up M-x gdb in Emacs.
-@@ -1489,31 +1420,31 @@ done
- 
- #
- # Report the --help message.
- #
- if test "$ac_init_help" = "long"; then
-   # Omit some internal or obsolete options to make the list less imposing.
-   # This message is too long to be a string in the A/UX 3.1 sh.
-   cat <<_ACEOF
--\`configure' configures libffi 3.0.10rc0 to adapt to many kinds of systems.
-+\`configure' configures libffi 3.1-rc1 to adapt to many kinds of systems.
- 
- Usage: $0 [OPTION]... [VAR=VALUE]...
- 
- To assign environment variables (e.g., CC, CFLAGS...), specify them as
- VAR=VALUE.  See below for descriptions of some of the useful variables.
- 
- Defaults for the options are specified in brackets.
- 
- Configuration:
-   -h, --help              display this help and exit
-       --help=short        display options specific to this package
-       --help=recursive    display the short help of all the included packages
-   -V, --version           display version information and exit
--  -q, --quiet, --silent   do not print \`checking...' messages
-+  -q, --quiet, --silent   do not print \`checking ...' messages
-       --cache-file=FILE   cache test results in FILE [disabled]
-   -C, --config-cache      alias for \`--cache-file=config.cache'
-   -n, --no-create         do not create output files
-       --srcdir=DIR        find the sources in DIR [configure dir or \`..']
- 
- Installation directories:
-   --prefix=PREFIX         install architecture-independent files in PREFIX
-                           [$ac_default_prefix]
-@@ -1560,61 +1491,76 @@ System types:
-   --build=BUILD     configure for building on BUILD [guessed]
-   --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-   --target=TARGET   configure for building compilers for TARGET [HOST]
- _ACEOF
- fi
- 
- if test -n "$ac_init_help"; then
-   case $ac_init_help in
--     short | recursive ) echo "Configuration of libffi 3.0.10rc0:";;
-+     short | recursive ) echo "Configuration of libffi 3.1-rc1:";;
-    esac
-   cat <<\_ACEOF
- 
- Optional Features:
-   --disable-option-checking  ignore unrecognized --enable/--with options
-   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
--  --disable-dependency-tracking  speeds up one-time build
--  --enable-dependency-tracking   do not reject slow dependency extractors
-+  --disable-builddir      disable automatic build in subdir of sources
-+
-+  --enable-silent-rules   less verbose build output (undo: "make V=1")
-+  --disable-silent-rules  verbose build output (undo: "make V=0")
-+  --enable-dependency-tracking
-+                          do not reject slow dependency extractors
-+  --disable-dependency-tracking
-+                          speeds up one-time build
-   --enable-shared[=PKGS]  build shared libraries [default=yes]
-   --enable-static[=PKGS]  build static libraries [default=yes]
-   --enable-fast-install[=PKGS]
-                           optimize for fast installation [default=yes]
-   --disable-libtool-lock  avoid locking (might break parallel builds)
--  --enable-maintainer-mode  enable make rules and dependencies not useful
--			  (and sometimes confusing) to the casual installer
-+  --enable-portable-binary
-+                          disable compiler optimizations that would produce
-+                          unportable binaries
-+  --enable-maintainer-mode
-+                          enable make rules and dependencies not useful (and
-+                          sometimes confusing) to the casual installer
-+  --enable-pax_emutramp       enable pax emulated trampolines, for we can't use PROT_EXEC
-   --enable-debug          debugging mode
-   --disable-structs       omit code for struct support
-   --disable-raw-api       make the raw api unavailable
-   --enable-purify-safety  purify-safe mode
- 
- Optional Packages:
-   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
--  --with-pic              try to use only PIC/non-PIC objects [default=use
-+  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
-                           both]
-   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-+  --with-sysroot=DIR Search for dependent libraries within DIR
-+                        (or the compiler's sysroot if not specified).
-+  --with-gcc-arch=<arch>  use architecture <arch> for gcc -march/-mtune,
-+                          instead of guessing
- 
- Some influential environment variables:
-   CC          C compiler command
-   CFLAGS      C compiler flags
-   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-               nonstandard directory <lib dir>
-   LIBS        libraries to pass to the linker, e.g. -l<library>
-   CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-               you have headers in a nonstandard directory <include dir>
-   CCAS        assembler compiler command (defaults to CC)
-   CCASFLAGS   assembler compiler flags (defaults to CFLAGS)
-   CPP         C preprocessor
- 
- Use these variables to override the choices made by `configure' or to help
- it to find libraries and programs with nonstandard names/locations.
- 
--Report bugs to <http://gcc.gnu.org/bugs.html>.
-+Report bugs to <http://github.com/atgreen/libffi/issues>.
- _ACEOF
- ac_status=$?
- fi
- 
- if test "$ac_init_help" = "recursive"; then
-   # If there are subdirs, report their specific --help.
-   for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-     test -d "$ac_dir" ||
-@@ -1667,20 +1613,20 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_
-     fi || ac_status=$?
-     cd "$ac_pwd" || { ac_status=$?; break; }
-   done
- fi
- 
- test -n "$ac_init_help" && exit $ac_status
- if $ac_init_version; then
-   cat <<\_ACEOF
--libffi configure 3.0.10rc0
--generated by GNU Autoconf 2.65
--
--Copyright (C) 2009 Free Software Foundation, Inc.
-+libffi configure 3.1-rc1
-+generated by GNU Autoconf 2.69
-+
-+Copyright (C) 2012 Free Software Foundation, Inc.
- This configure script is free software; the Free Software Foundation
- gives unlimited permission to copy, distribute and modify it.
- _ACEOF
-   exit
- fi
- 
- ## ------------------------ ##
- ## Autoconf initialization. ##
-@@ -1714,17 +1660,17 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
-        } && test -s conftest.$ac_objext; then :
-   ac_retval=0
- else
-   $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
- 
- 	ac_retval=1
- fi
--  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-   as_fn_set_status $ac_retval
- 
- } # ac_fn_c_try_compile
- 
- # ac_fn_c_try_link LINENO
- # -----------------------
- # Try to link conftest.$ac_ext, and return whether this succeeded.
- ac_fn_c_try_link ()
-@@ -1746,45 +1692,45 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
-     mv -f conftest.er1 conftest.err
-   fi
-   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-   test $ac_status = 0; } && {
- 	 test -z "$ac_c_werror_flag" ||
- 	 test ! -s conftest.err
-        } && test -s conftest$ac_exeext && {
- 	 test "$cross_compiling" = yes ||
--	 $as_test_x conftest$ac_exeext
-+	 test -x conftest$ac_exeext
-        }; then :
-   ac_retval=0
- else
-   $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
- 
- 	ac_retval=1
- fi
-   # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-   # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-   # interfere with the next link command; also delete a directory that is
-   # left behind by Apple's compiler.  We do this before executing the actions.
-   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
--  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-   as_fn_set_status $ac_retval
- 
- } # ac_fn_c_try_link
- 
- # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
- # -------------------------------------------------------
- # Tests whether HEADER exists and can be compiled using the include files in
- # INCLUDES, setting the cache variable VAR accordingly.
- ac_fn_c_check_header_compile ()
- {
-   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
- $as_echo_n "checking for $2... " >&6; }
--if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
-+if eval \${$3+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- $4
- #include <$2>
- _ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
-@@ -1792,17 +1738,17 @@ if ac_fn_c_try_compile "$LINENO"; then :
- else
-   eval "$3=no"
- fi
- rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
- eval ac_res=\$$3
- 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
- $as_echo "$ac_res" >&6; }
--  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- 
- } # ac_fn_c_check_header_compile
- 
- # ac_fn_c_try_cpp LINENO
- # ----------------------
- # Try to preprocess conftest.$ac_ext, and return whether this succeeded.
- ac_fn_c_try_cpp ()
- {
-@@ -1817,28 +1763,28 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
-   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-   ac_status=$?
-   if test -s conftest.err; then
-     grep -v '^ *+' conftest.err >conftest.er1
-     cat conftest.er1 >&5
-     mv -f conftest.er1 conftest.err
-   fi
-   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
--  test $ac_status = 0; } >/dev/null && {
-+  test $ac_status = 0; } > conftest.i && {
- 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- 	 test ! -s conftest.err
-        }; then :
-   ac_retval=0
- else
-   $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
- 
-     ac_retval=1
- fi
--  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-   as_fn_set_status $ac_retval
- 
- } # ac_fn_c_try_cpp
- 
- # ac_fn_c_try_run LINENO
- # ----------------------
- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
- # that executables *can* be run.
-@@ -1870,30 +1816,30 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
- else
-   $as_echo "$as_me: program exited with status $ac_status" >&5
-        $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
- 
-        ac_retval=$ac_status
- fi
-   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
--  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-   as_fn_set_status $ac_retval
- 
- } # ac_fn_c_try_run
- 
- # ac_fn_c_check_func LINENO FUNC VAR
- # ----------------------------------
- # Tests whether FUNC exists, setting the cache variable VAR accordingly
- ac_fn_c_check_func ()
- {
-   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
- $as_echo_n "checking for $2... " >&6; }
--if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
-+if eval \${$3+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- /* Define $2 to an innocuous variant, in case <limits.h> declares $2.
-    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
- #define $2 innocuous_$2
- 
-@@ -1938,32 +1884,215 @@ else
-   eval "$3=no"
- fi
- rm -f core conftest.err conftest.$ac_objext \
-     conftest$ac_exeext conftest.$ac_ext
- fi
- eval ac_res=\$$3
- 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
- $as_echo "$ac_res" >&6; }
--  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- 
- } # ac_fn_c_check_func
- 
-+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
-+# --------------------------------------------
-+# Tries to find the compile-time value of EXPR in a program that includes
-+# INCLUDES, setting VAR accordingly. Returns whether the value could be
-+# computed
-+ac_fn_c_compute_int ()
-+{
-+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-+  if test "$cross_compiling" = yes; then
-+    # Depending upon the size, compute the lo and hi bounds.
-+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+$4
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(($2) >= 0)];
-+test_array [0] = 0;
-+return test_array [0];
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+  ac_lo=0 ac_mid=0
-+  while :; do
-+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+$4
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-+test_array [0] = 0;
-+return test_array [0];
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+  ac_hi=$ac_mid; break
-+else
-+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
-+			if test $ac_lo -le $ac_mid; then
-+			  ac_lo= ac_hi=
-+			  break
-+			fi
-+			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+  done
-+else
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+$4
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(($2) < 0)];
-+test_array [0] = 0;
-+return test_array [0];
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+  ac_hi=-1 ac_mid=-1
-+  while :; do
-+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+$4
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-+test_array [0] = 0;
-+return test_array [0];
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+  ac_lo=$ac_mid; break
-+else
-+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
-+			if test $ac_mid -le $ac_hi; then
-+			  ac_lo= ac_hi=
-+			  break
-+			fi
-+			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+  done
-+else
-+  ac_lo= ac_hi=
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+# Binary search between lo and hi bounds.
-+while test "x$ac_lo" != "x$ac_hi"; do
-+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+$4
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-+test_array [0] = 0;
-+return test_array [0];
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+  ac_hi=$ac_mid
-+else
-+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+done
-+case $ac_lo in #((
-+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
-+'') ac_retval=1 ;;
-+esac
-+  else
-+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+$4
-+static long int longval () { return $2; }
-+static unsigned long int ulongval () { return $2; }
-+#include <stdio.h>
-+#include <stdlib.h>
-+int
-+main ()
-+{
-+
-+  FILE *f = fopen ("conftest.val", "w");
-+  if (! f)
-+    return 1;
-+  if (($2) < 0)
-+    {
-+      long int i = longval ();
-+      if (i != ($2))
-+	return 1;
-+      fprintf (f, "%ld", i);
-+    }
-+  else
-+    {
-+      unsigned long int i = ulongval ();
-+      if (i != ($2))
-+	return 1;
-+      fprintf (f, "%lu", i);
-+    }
-+  /* Do not output a trailing newline, as this causes \r\n confusion
-+     on some platforms.  */
-+  return ferror (f) || fclose (f) != 0;
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_run "$LINENO"; then :
-+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-+else
-+  ac_retval=1
-+fi
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-+  conftest.$ac_objext conftest.beam conftest.$ac_ext
-+rm -f conftest.val
-+
-+  fi
-+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-+  as_fn_set_status $ac_retval
-+
-+} # ac_fn_c_compute_int
-+
- # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
- # -------------------------------------------------------
- # Tests whether HEADER exists, giving a warning if it cannot be compiled using
- # the include files in INCLUDES and setting the cache variable VAR
- # accordingly.
- ac_fn_c_check_header_mongrel ()
- {
-   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
--  if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
-+  if eval \${$3+:} false; then :
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
- $as_echo_n "checking for $2... " >&6; }
--if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
-+if eval \${$3+:} false; then :
-   $as_echo_n "(cached) " >&6
- fi
- eval ac_res=\$$3
- 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
- $as_echo "$ac_res" >&6; }
- else
-   # Is the header compilable?
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-@@ -1989,17 +2118,17 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
- /* end confdefs.h.  */
- #include <$2>
- _ACEOF
- if ac_fn_c_try_cpp "$LINENO"; then :
-   ac_header_preproc=yes
- else
-   ac_header_preproc=no
- fi
--rm -f conftest.err conftest.$ac_ext
-+rm -f conftest.err conftest.i conftest.$ac_ext
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
- $as_echo "$ac_header_preproc" >&6; }
- 
- # So?  What about this header?
- case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-   yes:no: )
-     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
- $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-@@ -2012,222 +2141,96 @@ case $ac_header_compiler:$ac_header_prep
-     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
- $as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
- $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
- $as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
- $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
--( cat <<\_ASBOX
--## ------------------------------------------- ##
--## Report this to http://gcc.gnu.org/bugs.html ##
--## ------------------------------------------- ##
--_ASBOX
-+( $as_echo "## ------------------------------------------------------ ##
-+## Report this to http://github.com/atgreen/libffi/issues ##
-+## ------------------------------------------------------ ##"
-      ) | sed "s/^/$as_me: WARNING:     /" >&2
-     ;;
- esac
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
- $as_echo_n "checking for $2... " >&6; }
--if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
-+if eval \${$3+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   eval "$3=\$ac_header_compiler"
- fi
- eval ac_res=\$$3
- 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
- $as_echo "$ac_res" >&6; }
- fi
--  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- 
- } # ac_fn_c_check_header_mongrel
- 
--# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
--# --------------------------------------------
--# Tries to find the compile-time value of EXPR in a program that includes
--# INCLUDES, setting VAR accordingly. Returns whether the value could be
--# computed
--ac_fn_c_compute_int ()
-+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-+# -------------------------------------------
-+# Tests whether TYPE exists after having included INCLUDES, setting cache
-+# variable VAR accordingly.
-+ac_fn_c_check_type ()
- {
-   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
--  if test "$cross_compiling" = yes; then
--    # Depending upon the size, compute the lo and hi bounds.
--cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-+$as_echo_n "checking for $2... " >&6; }
-+if eval \${$3+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  eval "$3=no"
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- $4
- int
- main ()
- {
--static int test_array [1 - 2 * !(($2) >= 0)];
--test_array [0] = 0
--
-+if (sizeof ($2))
-+	 return 0;
-   ;
-   return 0;
- }
- _ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
--  ac_lo=0 ac_mid=0
--  while :; do
--    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- $4
- int
- main ()
- {
--static int test_array [1 - 2 * !(($2) <= $ac_mid)];
--test_array [0] = 0
--
-+if (sizeof (($2)))
-+	    return 0;
-   ;
-   return 0;
- }
- _ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
--  ac_hi=$ac_mid; break
--else
--  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
--			if test $ac_lo -le $ac_mid; then
--			  ac_lo= ac_hi=
--			  break
--			fi
--			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
-+
-+else
-+  eval "$3=yes"
- fi
- rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
--  done
--else
--  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
--/* end confdefs.h.  */
--$4
--int
--main ()
--{
--static int test_array [1 - 2 * !(($2) < 0)];
--test_array [0] = 0
--
--  ;
--  return 0;
--}
--_ACEOF
--if ac_fn_c_try_compile "$LINENO"; then :
--  ac_hi=-1 ac_mid=-1
--  while :; do
--    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
--/* end confdefs.h.  */
--$4
--int
--main ()
--{
--static int test_array [1 - 2 * !(($2) >= $ac_mid)];
--test_array [0] = 0
--
--  ;
--  return 0;
--}
--_ACEOF
--if ac_fn_c_try_compile "$LINENO"; then :
--  ac_lo=$ac_mid; break
--else
--  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
--			if test $ac_mid -le $ac_hi; then
--			  ac_lo= ac_hi=
--			  break
--			fi
--			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
- fi
- rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
--  done
--else
--  ac_lo= ac_hi=
--fi
--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
--fi
--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
--# Binary search between lo and hi bounds.
--while test "x$ac_lo" != "x$ac_hi"; do
--  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
--  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
--/* end confdefs.h.  */
--$4
--int
--main ()
--{
--static int test_array [1 - 2 * !(($2) <= $ac_mid)];
--test_array [0] = 0
--
--  ;
--  return 0;
--}
--_ACEOF
--if ac_fn_c_try_compile "$LINENO"; then :
--  ac_hi=$ac_mid
--else
--  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
--fi
--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
--done
--case $ac_lo in #((
--?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
--'') ac_retval=1 ;;
--esac
--  else
--    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
--/* end confdefs.h.  */
--$4
--static long int longval () { return $2; }
--static unsigned long int ulongval () { return $2; }
--#include <stdio.h>
--#include <stdlib.h>
--int
--main ()
--{
--
--  FILE *f = fopen ("conftest.val", "w");
--  if (! f)
--    return 1;
--  if (($2) < 0)
--    {
--      long int i = longval ();
--      if (i != ($2))
--	return 1;
--      fprintf (f, "%ld", i);
--    }
--  else
--    {
--      unsigned long int i = ulongval ();
--      if (i != ($2))
--	return 1;
--      fprintf (f, "%lu", i);
--    }
--  /* Do not output a trailing newline, as this causes \r\n confusion
--     on some platforms.  */
--  return ferror (f) || fclose (f) != 0;
--
--  ;
--  return 0;
--}
--_ACEOF
--if ac_fn_c_try_run "$LINENO"; then :
--  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
--else
--  ac_retval=1
--fi
--rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
--  conftest.$ac_objext conftest.beam conftest.$ac_ext
--rm -f conftest.val
--
--  fi
--  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
--  as_fn_set_status $ac_retval
--
--} # ac_fn_c_compute_int
-+fi
-+eval ac_res=\$$3
-+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-+$as_echo "$ac_res" >&6; }
-+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-+
-+} # ac_fn_c_check_type
- cat >config.log <<_ACEOF
- This file contains any messages produced by compilers while
- running configure, to aid debugging if configure makes a mistake.
- 
--It was created by libffi $as_me 3.0.10rc0, which was
--generated by GNU Autoconf 2.65.  Invocation command line was
-+It was created by libffi $as_me 3.1-rc1, which was
-+generated by GNU Autoconf 2.69.  Invocation command line was
- 
-   $ $0 $@
- 
- _ACEOF
- exec 5>>config.log
- {
- cat <<_ASUNAME
- ## --------- ##
-@@ -2327,21 +2330,19 @@ done
- # would cause problems or look ugly.
- # WARNING: Use '\'' to represent an apostrophe within the trap.
- # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
- trap 'exit_status=$?
-   # Save into config.log some information that might help in debugging.
-   {
-     echo
- 
--    cat <<\_ASBOX
--## ---------------- ##
-+    $as_echo "## ---------------- ##
- ## Cache variables. ##
--## ---------------- ##
--_ASBOX
-+## ---------------- ##"
-     echo
-     # The following way of writing the cache mishandles newlines in values,
- (
-   for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-     eval ac_val=\$$ac_var
-     case $ac_val in #(
-     *${as_nl}*)
-       case $ac_var in #(
-@@ -2365,56 +2366,50 @@ trap 'exit_status=$?
-     *)
-       sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-       ;;
-     esac |
-     sort
- )
-     echo
- 
--    cat <<\_ASBOX
--## ----------------- ##
-+    $as_echo "## ----------------- ##
- ## Output variables. ##
--## ----------------- ##
--_ASBOX
-+## ----------------- ##"
-     echo
-     for ac_var in $ac_subst_vars
-     do
-       eval ac_val=\$$ac_var
-       case $ac_val in
-       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-       esac
-       $as_echo "$ac_var='\''$ac_val'\''"
-     done | sort
-     echo
- 
-     if test -n "$ac_subst_files"; then
--      cat <<\_ASBOX
--## ------------------- ##
-+      $as_echo "## ------------------- ##
- ## File substitutions. ##
--## ------------------- ##
--_ASBOX
-+## ------------------- ##"
-       echo
-       for ac_var in $ac_subst_files
-       do
- 	eval ac_val=\$$ac_var
- 	case $ac_val in
- 	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- 	esac
- 	$as_echo "$ac_var='\''$ac_val'\''"
-       done | sort
-       echo
-     fi
- 
-     if test -s confdefs.h; then
--      cat <<\_ASBOX
--## ----------- ##
-+      $as_echo "## ----------- ##
- ## confdefs.h. ##
--## ----------- ##
--_ASBOX
-+## ----------- ##"
-       echo
-       cat confdefs.h
-       echo
-     fi
-     test "$ac_signal" != 0 &&
-       $as_echo "$as_me: caught signal $ac_signal"
-     $as_echo "$as_me: exit $exit_status"
-   } >&5
-@@ -2459,32 +2454,41 @@ cat >>confdefs.h <<_ACEOF
- _ACEOF
- 
- 
- # Let the site file select an alternate cache file if it wants to.
- # Prefer an explicitly selected file to automatically selected ones.
- ac_site_file1=NONE
- ac_site_file2=NONE
- if test -n "$CONFIG_SITE"; then
--  ac_site_file1=$CONFIG_SITE
-+  # We do not want a PATH search for config.site.
-+  case $CONFIG_SITE in #((
-+    -*)  ac_site_file1=./$CONFIG_SITE;;
-+    */*) ac_site_file1=$CONFIG_SITE;;
-+    *)   ac_site_file1=./$CONFIG_SITE;;
-+  esac
- elif test "x$prefix" != xNONE; then
-   ac_site_file1=$prefix/share/config.site
-   ac_site_file2=$prefix/etc/config.site
- else
-   ac_site_file1=$ac_default_prefix/share/config.site
-   ac_site_file2=$ac_default_prefix/etc/config.site
- fi
- for ac_site_file in "$ac_site_file1" "$ac_site_file2"
- do
-   test "x$ac_site_file" = xNONE && continue
-   if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-     { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
- $as_echo "$as_me: loading site script $ac_site_file" >&6;}
-     sed 's/^/| /' "$ac_site_file" >&5
--    . "$ac_site_file"
-+    . "$ac_site_file" \
-+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-+as_fn_error $? "failed to load site script $ac_site_file
-+See \`config.log' for more details" "$LINENO" 5; }
-   fi
- done
- 
- if test -r "$cache_file"; then
-   # Some versions of bash will fail to source /dev/null (special files
-   # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-   if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-     { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-@@ -2550,17 +2554,17 @@ for ac_var in $ac_precious_vars; do
-     esac
-   fi
- done
- if $ac_cache_corrupted; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
- $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-   { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
- $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
--  as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
- fi
- ## -------------------- ##
- ## Main body of script. ##
- ## -------------------- ##
- 
- ac_ext=c
- ac_cpp='$CPP $CPPFLAGS'
- ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-@@ -2568,60 +2572,66 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
- 
- 
- ac_config_headers="$ac_config_headers fficonfig.h"
- 
- 
- ac_aux_dir=
- for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
--  for ac_t in install-sh install.sh shtool; do
--    if test -f "$ac_dir/$ac_t"; then
--      ac_aux_dir=$ac_dir
--      ac_install_sh="$ac_aux_dir/$ac_t -c"
--      break 2
--    fi
--  done
-+  if test -f "$ac_dir/install-sh"; then
-+    ac_aux_dir=$ac_dir
-+    ac_install_sh="$ac_aux_dir/install-sh -c"
-+    break
-+  elif test -f "$ac_dir/install.sh"; then
-+    ac_aux_dir=$ac_dir
-+    ac_install_sh="$ac_aux_dir/install.sh -c"
-+    break
-+  elif test -f "$ac_dir/shtool"; then
-+    ac_aux_dir=$ac_dir
-+    ac_install_sh="$ac_aux_dir/shtool install -c"
-+    break
-+  fi
- done
- if test -z "$ac_aux_dir"; then
--  as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
-+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
- fi
- 
- # These three variables are undocumented and unsupported,
- # and are intended to be withdrawn in a future Autoconf release.
- # They can cause serious problems if a builder's source tree is in a directory
- # whose full name contains unusual characters.
- ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
- ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
- ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
- 
- 
- # Make sure we can run config.sub.
- $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
--  as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
- $as_echo_n "checking build system type... " >&6; }
--if test "${ac_cv_build+set}" = set; then :
-+if ${ac_cv_build+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   ac_build_alias=$build_alias
- test "x$ac_build_alias" = x &&
-   ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
- test "x$ac_build_alias" = x &&
--  as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
-+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
- ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
--  as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
- 
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
- $as_echo "$ac_cv_build" >&6; }
- case $ac_cv_build in
- *-*-*) ;;
--*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
-+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
- esac
- build=$ac_cv_build
- ac_save_IFS=$IFS; IFS='-'
- set x $ac_cv_build
- shift
- build_cpu=$1
- build_vendor=$2
- shift; shift
-@@ -2629,32 +2639,32 @@ shift; shift
- # except with old shells:
- build_os=$*
- IFS=$ac_save_IFS
- case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
- 
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
- $as_echo_n "checking host system type... " >&6; }
--if test "${ac_cv_host+set}" = set; then :
-+if ${ac_cv_host+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test "x$host_alias" = x; then
-   ac_cv_host=$ac_cv_build
- else
-   ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
--    as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
- fi
- 
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
- $as_echo "$ac_cv_host" >&6; }
- case $ac_cv_host in
- *-*-*) ;;
--*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
-+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
- esac
- host=$ac_cv_host
- ac_save_IFS=$IFS; IFS='-'
- set x $ac_cv_host
- shift
- host_cpu=$1
- host_vendor=$2
- shift; shift
-@@ -2662,32 +2672,32 @@ shift; shift
- # except with old shells:
- host_os=$*
- IFS=$ac_save_IFS
- case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
- 
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
- $as_echo_n "checking target system type... " >&6; }
--if test "${ac_cv_target+set}" = set; then :
-+if ${ac_cv_target+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test "x$target_alias" = x; then
-   ac_cv_target=$ac_cv_host
- else
-   ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
--    as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
-+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
- fi
- 
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
- $as_echo "$ac_cv_target" >&6; }
- case $ac_cv_target in
- *-*-*) ;;
--*) as_fn_error "invalid value of canonical target" "$LINENO" 5;;
-+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
- esac
- target=$ac_cv_target
- ac_save_IFS=$IFS; IFS='-'
- set x $ac_cv_target
- shift
- target_cpu=$1
- target_vendor=$2
- shift; shift
-@@ -2702,19 +2712,127 @@ case $target_os in *\ *) target_os=`echo
- # will get canonicalized.
- test -n "$target_alias" &&
-   test "$program_prefix$program_suffix$program_transform_name" = \
-     NONENONEs,x,x, &&
-   program_prefix=${target_alias}-
- 
- target_alias=${target_alias-$host_alias}
- 
--. ${srcdir}/configure.host
--
--am__api_version='1.11'
-+case "${host}" in
-+  frv*-elf)
-+    LDFLAGS=`echo $LDFLAGS | sed "s/\-B^ *libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/
-+    ;;
-+esac
-+
-+
-+   # [$]@ is unsable in 2.60+ but earlier autoconf had no ac_configure_args
-+   if test "${ac_configure_args+set}" != "set" ; then
-+      ac_configure_args=
-+      for ac_arg in ${1+"$@"}; do
-+         ac_configure_args="$ac_configure_args '$ac_arg'"
-+      done
-+   fi
-+
-+# expand $ac_aux_dir to an absolute path
-+am_aux_dir=`cd $ac_aux_dir && pwd`
-+
-+
-+ax_enable_builddir="."
-+# Check whether --enable-builddir was given.
-+if test "${enable_builddir+set}" = set; then :
-+  enableval=$enable_builddir; ax_enable_builddir="$enableval"
-+else
-+  ax_enable_builddir="auto"
-+fi
-+
-+if test ".$ac_srcdir_defaulted" != ".no" ; then
-+if test ".$srcdir" = ".." ; then
-+  if test -f config.status ; then
-+    { $as_echo "$as_me:${as_lineno-$LINENO}: toplevel srcdir already configured... skipping subdir build" >&5
-+$as_echo "$as_me: toplevel srcdir already configured... skipping subdir build" >&6;}
-+  else
-+    test ".$ax_enable_builddir" = "."  && ax_enable_builddir="."
-+    test ".$ax_enable_builddir" = ".no"  && ax_enable_builddir="."
-+    test ".$TARGET" = "." && TARGET="$target"
-+    test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="$TARGET"
-+    if test ".$ax_enable_builddir" != ".." ; then    # we know where to go and
-+      as_dir=$ax_enable_builddir; as_fn_mkdir_p
-+      echo __.$ax_enable_builddir.__ > $ax_enable_builddir/conftest.tmp
-+      cd $ax_enable_builddir
-+      if grep __.$ax_enable_builddir.__ conftest.tmp >/dev/null 2>/dev/null ; then
-+        rm conftest.tmp
-+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: continue configure in default builddir \"./$ax_enable_builddir\"" >&5
-+$as_echo "continue configure in default builddir \"./$ax_enable_builddir\"" >&6; }
-+      else
-+        as_fn_error $? "could not change to default builddir \"./$ax_enable_builddir\"" "$LINENO" 5
-+      fi
-+      srcdir=`echo "$ax_enable_builddir" |
-+              sed -e 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g;s,[/]$,,;'`
-+      # going to restart from subdirectory location
-+      test -f $srcdir/config.log   && mv $srcdir/config.log   .
-+      test -f $srcdir/confdefs.h   && mv $srcdir/confdefs.h   .
-+      test -f $srcdir/conftest.log && mv $srcdir/conftest.log .
-+      test -f $srcdir/$cache_file  && mv $srcdir/$cache_file  .
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: ....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&5
-+$as_echo "....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&6; }
-+      case "$0" in # restart
-+       /\\*) eval $SHELL "'$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;;
-+       *) eval $SHELL "'$srcdir/$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;;
-+      esac ; exit $?
-+    fi
-+  fi
-+fi fi
-+test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="."
-+# Extract the first word of "gsed sed", so it can be a program name with args.
-+set dummy gsed sed; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_path_ax_enable_builddir_sed+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  case $ax_enable_builddir_sed in
-+  [\\/]* | ?:[\\/]*)
-+  ac_cv_path_ax_enable_builddir_sed="$ax_enable_builddir_sed" # Let the user override the test with a path.
-+  ;;
-+  *)
-+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+  IFS=$as_save_IFS
-+  test -z "$as_dir" && as_dir=.
-+    for ac_exec_ext in '' $ac_executable_extensions; do
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+    ac_cv_path_ax_enable_builddir_sed="$as_dir/$ac_word$ac_exec_ext"
-+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+    break 2
-+  fi
-+done
-+  done
-+IFS=$as_save_IFS
-+
-+  test -z "$ac_cv_path_ax_enable_builddir_sed" && ac_cv_path_ax_enable_builddir_sed="sed"
-+  ;;
-+esac
-+fi
-+ax_enable_builddir_sed=$ac_cv_path_ax_enable_builddir_sed
-+if test -n "$ax_enable_builddir_sed"; then
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_enable_builddir_sed" >&5
-+$as_echo "$ax_enable_builddir_sed" >&6; }
-+else
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+ax_enable_builddir_auxdir="$am_aux_dir"
-+ac_config_commands="$ac_config_commands buildir"
-+
-+
-+am__api_version='1.13'
- 
- # Find a good install program.  We prefer a C program (faster),
- # so one script is as good as another.  But avoid the broken or
- # incompatible versions:
- # SysV /etc/install, /usr/sbin/install
- # SunOS /usr/etc/install
- # IRIX /sbin/install
- # AIX /bin/install
-@@ -2723,17 +2841,17 @@ am__api_version='1.11'
- # AFS /usr/afsws/bin/install, which mishandles nonexistent args
- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
- # OS/2's system install, which has a completely different semantic
- # ./install, which can be erroneously created by make from ./install.sh.
- # Reject install programs that cannot install multiple files.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
- $as_echo_n "checking for a BSD-compatible install... " >&6; }
- if test -z "$INSTALL"; then
--if test "${ac_cv_path_install+set}" = set; then :
-+if ${ac_cv_path_install+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     # Account for people who put trailing slashes in PATH elements.
-@@ -2743,17 +2861,17 @@ case $as_dir/ in #((
-   ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-   /usr/ucb/* ) ;;
-   *)
-     # OSF1 and SCO ODT 3.0 have their own names for install.
-     # Don't use installbsd from OSF since it installs stuff as root
-     # by default.
-     for ac_prog in ginstall scoinst install; do
-       for ac_exec_ext in '' $ac_executable_extensions; do
--	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
-+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
- 	  if test $ac_prog = install &&
- 	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- 	    # AIX install.  It has an incompatible calling convention.
- 	    :
- 	  elif test $ac_prog = install &&
- 	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- 	    # program-specific install script used by HP pwplus--don't use.
- 	    :
-@@ -2801,128 +2919,140 @@ fi
- test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
- 
- test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
- 
- test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
- $as_echo_n "checking whether build environment is sane... " >&6; }
--# Just in case
--sleep 1
--echo timestamp > conftest.file
- # Reject unsafe characters in $srcdir or the absolute working directory
- # name.  Accept space and tab only in the latter.
- am_lf='
- '
- case `pwd` in
-   *[\\\"\#\$\&\'\`$am_lf]*)
--    as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
-+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
- esac
- case $srcdir in
-   *[\\\"\#\$\&\'\`$am_lf\ \	]*)
--    as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
--esac
--
--# Do `set' in a subshell so we don't clobber the current shell's
-+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
-+esac
-+
-+# Do 'set' in a subshell so we don't clobber the current shell's
- # arguments.  Must try -L first in case configure is actually a
- # symlink; some systems play weird games with the mod time of symlinks
- # (eg FreeBSD returns the mod time of the symlink's containing
- # directory).
- if (
--   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
--   if test "$*" = "X"; then
--      # -L didn't work.
--      set X `ls -t "$srcdir/configure" conftest.file`
--   fi
--   rm -f conftest.file
--   if test "$*" != "X $srcdir/configure conftest.file" \
--      && test "$*" != "X conftest.file $srcdir/configure"; then
--
--      # If neither matched, then we have a broken ls.  This can happen
--      # if, for instance, CONFIG_SHELL is bash and it inherits a
--      # broken ls alias from the environment.  This has actually
--      # happened.  Such a system could not be considered "sane".
--      as_fn_error "ls -t appears to fail.  Make sure there is not a broken
--alias in your environment" "$LINENO" 5
--   fi
--
-+   am_has_slept=no
-+   for am_try in 1 2; do
-+     echo "timestamp, slept: $am_has_slept" > conftest.file
-+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-+     if test "$*" = "X"; then
-+	# -L didn't work.
-+	set X `ls -t "$srcdir/configure" conftest.file`
-+     fi
-+     if test "$*" != "X $srcdir/configure conftest.file" \
-+	&& test "$*" != "X conftest.file $srcdir/configure"; then
-+
-+	# If neither matched, then we have a broken ls.  This can happen
-+	# if, for instance, CONFIG_SHELL is bash and it inherits a
-+	# broken ls alias from the environment.  This has actually
-+	# happened.  Such a system could not be considered "sane".
-+	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-+  alias in your environment" "$LINENO" 5
-+     fi
-+     if test "$2" = conftest.file || test $am_try -eq 2; then
-+       break
-+     fi
-+     # Just in case.
-+     sleep 1
-+     am_has_slept=yes
-+   done
-    test "$2" = conftest.file
-    )
- then
-    # Ok.
-    :
- else
--   as_fn_error "newly created file is older than distributed files!
-+   as_fn_error $? "newly created file is older than distributed files!
- Check your system clock" "$LINENO" 5
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
- $as_echo "yes" >&6; }
-+# If we didn't sleep, we still need to ensure time stamps of config.status and
-+# generated files are strictly newer.
-+am_sleep_pid=
-+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-+  ( sleep 1 ) &
-+  am_sleep_pid=$!
-+fi
-+
-+rm -f conftest.file
-+
- test "$program_prefix" != NONE &&
-   program_transform_name="s&^&$program_prefix&;$program_transform_name"
- # Use a double $ so make ignores it.
- test "$program_suffix" != NONE &&
-   program_transform_name="s&\$&$program_suffix&;$program_transform_name"
- # Double any \ or $.
- # By default was `s,x,x', remove it if useless.
- ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
- program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
- 
--# expand $ac_aux_dir to an absolute path
--am_aux_dir=`cd $ac_aux_dir && pwd`
--
- if test x"${MISSING+set}" != xset; then
-   case $am_aux_dir in
-   *\ * | *\	*)
-     MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-   *)
-     MISSING="\${SHELL} $am_aux_dir/missing" ;;
-   esac
- fi
- # Use eval to expand $SHELL
--if eval "$MISSING --run true"; then
--  am_missing_run="$MISSING --run "
-+if eval "$MISSING --is-lightweight"; then
-+  am_missing_run="$MISSING "
- else
-   am_missing_run=
--  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
--$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
-+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
- fi
- 
- if test x"${install_sh}" != xset; then
-   case $am_aux_dir in
-   *\ * | *\	*)
-     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-   *)
-     install_sh="\${SHELL} $am_aux_dir/install-sh"
-   esac
- fi
- 
--# Installed binaries are usually stripped using `strip' when the user
--# run `make install-strip'.  However `strip' might not be the right
-+# Installed binaries are usually stripped using 'strip' when the user
-+# run "make install-strip".  However 'strip' might not be the right
- # tool to use in cross-compilation environments, therefore Automake
--# will honor the `STRIP' environment variable to overrule this program.
-+# will honor the 'STRIP' environment variable to overrule this program.
- if test "$cross_compiling" != no; then
-   if test -n "$ac_tool_prefix"; then
-   # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
- set dummy ${ac_tool_prefix}strip; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_STRIP+set}" = set; then :
-+if ${ac_cv_prog_STRIP+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$STRIP"; then
-   ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -2940,29 +3070,29 @@ fi
- 
- fi
- if test -z "$ac_cv_prog_STRIP"; then
-   ac_ct_STRIP=$STRIP
-   # Extract the first word of "strip", so it can be a program name with args.
- set dummy strip; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
-+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$ac_ct_STRIP"; then
-   ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_ac_ct_STRIP="strip"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -2993,27 +3123,27 @@ else
- fi
- 
- fi
- INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
- $as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
- if test -z "$MKDIR_P"; then
--  if test "${ac_cv_path_mkdir+set}" = set; then :
-+  if ${ac_cv_path_mkdir+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_prog in mkdir gmkdir; do
- 	 for ac_exec_ext in '' $ac_executable_extensions; do
--	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
-+	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
- 	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
- 	     'mkdir (GNU coreutils) '* | \
- 	     'mkdir (coreutils) '* | \
- 	     'mkdir (fileutils) '4.1*)
- 	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
- 	       break 3;;
- 	   esac
- 	 done
-@@ -3032,41 +3162,35 @@ fi
-     # break other packages using the cache if that directory is
-     # removed, or if the value is a relative name.
-     MKDIR_P="$ac_install_sh -d"
-   fi
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
- $as_echo "$MKDIR_P" >&6; }
- 
--mkdir_p="$MKDIR_P"
--case $mkdir_p in
--  [\\/$]* | ?:[\\/]*) ;;
--  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
--esac
--
- for ac_prog in gawk mawk nawk awk
- do
-   # Extract the first word of "$ac_prog", so it can be a program name with args.
- set dummy $ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_AWK+set}" = set; then :
-+if ${ac_cv_prog_AWK+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$AWK"; then
-   ac_cv_prog_AWK="$AWK" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_AWK="$ac_prog"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -3084,25 +3208,25 @@ fi
- 
-   test -n "$AWK" && break
- done
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
- $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
- set x ${MAKE-make}
- ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
--if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
-+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   cat >conftest.make <<\_ACEOF
- SHELL = /bin/sh
- all:
- 	@echo '@@@%%%=$(MAKE)=@@@%%%'
- _ACEOF
--# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
- case `${MAKE-make} -f conftest.make 2>/dev/null` in
-   *@@@%%%=?*=@@@%%%*)
-     eval ac_cv_prog_make_${ac_make}_set=yes;;
-   *)
-     eval ac_cv_prog_make_${ac_make}_set=no;;
- esac
- rm -f conftest.make
- fi
-@@ -3120,39 +3244,78 @@ rm -rf .tst 2>/dev/null
- mkdir .tst 2>/dev/null
- if test -d .tst; then
-   am__leading_dot=.
- else
-   am__leading_dot=_
- fi
- rmdir .tst 2>/dev/null
- 
-+# Check whether --enable-silent-rules was given.
-+if test "${enable_silent_rules+set}" = set; then :
-+  enableval=$enable_silent_rules;
-+fi
-+
-+case $enable_silent_rules in # (((
-+  yes) AM_DEFAULT_VERBOSITY=0;;
-+   no) AM_DEFAULT_VERBOSITY=1;;
-+    *) AM_DEFAULT_VERBOSITY=1;;
-+esac
-+am_make=${MAKE-make}
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-+if ${am_cv_make_support_nested_variables+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  if $as_echo 'TRUE=$(BAR$(V))
-+BAR0=false
-+BAR1=true
-+V=1
-+am__doit:
-+	@$(TRUE)
-+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
-+  am_cv_make_support_nested_variables=yes
-+else
-+  am_cv_make_support_nested_variables=no
-+fi
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-+$as_echo "$am_cv_make_support_nested_variables" >&6; }
-+if test $am_cv_make_support_nested_variables = yes; then
-+    AM_V='$(V)'
-+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-+else
-+  AM_V=$AM_DEFAULT_VERBOSITY
-+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-+fi
-+AM_BACKSLASH='\'
-+
- if test "`cd $srcdir && pwd`" != "`pwd`"; then
-   # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-   # is not polluted with repeated "-I."
-   am__isrc=' -I$(srcdir)'
-   # test to see if srcdir already configured
-   if test -f $srcdir/config.status; then
--    as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
-+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
-   fi
- fi
- 
- # test whether we have cygpath
- if test -z "$CYGPATH_W"; then
-   if (cygpath --version) >/dev/null 2>/dev/null; then
-     CYGPATH_W='cygpath -w'
-   else
-     CYGPATH_W=echo
-   fi
- fi
- 
- 
- # Define the identity of the package.
-  PACKAGE='libffi'
-- VERSION='3.0.10rc0'
-+ VERSION='3.1-rc1'
- 
- 
- cat >>confdefs.h <<_ACEOF
- #define PACKAGE "$PACKAGE"
- _ACEOF
- 
- 
- cat >>confdefs.h <<_ACEOF
-@@ -3170,23 +3333,34 @@ AUTOCONF=${AUTOCONF-"${am_missing_run}au
- AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
- 
- 
- AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
- 
- 
- MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
- 
-+# For better backward compatibility.  To be removed once Automake 1.9.x
-+# dies out for good.  For more background, see:
-+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-+mkdir_p='$(MKDIR_P)'
-+
- # We need awk for the "check" target.  The system "awk" is bad on
- # some platforms.
--# Always define AMTAR for backward compatibility.
--
--AMTAR=${AMTAR-"${am_missing_run}tar"}
--
--am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
-+# Always define AMTAR for backward compatibility.  Yes, it's still used
-+# in the wild :-(  We should find a proper way to deprecate it ...
-+AMTAR='$${TAR-tar}'
-+
-+
-+# We'll loop over all known methods to create a tar archive until one works.
-+_am_tools='gnutar  pax cpio none'
-+
-+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
-+
- 
- 
- 
- 
- 
- 
- # The same as in boehm-gc and libstdc++. Have to borrow it from there.
- # We must force CC to /not/ be precious variables; otherwise
-@@ -3203,29 +3377,29 @@ ac_cpp='$CPP $CPPFLAGS'
- ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
- ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
- if test -n "$ac_tool_prefix"; then
-   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
- set dummy ${ac_tool_prefix}gcc; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_CC+set}" = set; then :
-+if ${ac_cv_prog_CC+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$CC"; then
-   ac_cv_prog_CC="$CC" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_CC="${ac_tool_prefix}gcc"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -3243,29 +3417,29 @@ fi
- 
- fi
- if test -z "$ac_cv_prog_CC"; then
-   ac_ct_CC=$CC
-   # Extract the first word of "gcc", so it can be a program name with args.
- set dummy gcc; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
-+if ${ac_cv_prog_ac_ct_CC+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$ac_ct_CC"; then
-   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_ac_ct_CC="gcc"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -3296,29 +3470,29 @@ else
- fi
- 
- if test -z "$CC"; then
-           if test -n "$ac_tool_prefix"; then
-     # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
- set dummy ${ac_tool_prefix}cc; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_CC+set}" = set; then :
-+if ${ac_cv_prog_CC+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$CC"; then
-   ac_cv_prog_CC="$CC" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_CC="${ac_tool_prefix}cc"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -3336,30 +3510,30 @@ fi
- 
-   fi
- fi
- if test -z "$CC"; then
-   # Extract the first word of "cc", so it can be a program name with args.
- set dummy cc; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_CC+set}" = set; then :
-+if ${ac_cv_prog_CC+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$CC"; then
-   ac_cv_prog_CC="$CC" # Let the user override the test.
- else
-   ac_prog_rejected=no
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-        ac_prog_rejected=yes
-        continue
-      fi
-     ac_cv_prog_CC="cc"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
-@@ -3395,29 +3569,29 @@ fi
- if test -z "$CC"; then
-   if test -n "$ac_tool_prefix"; then
-   for ac_prog in cl.exe
-   do
-     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
- set dummy $ac_tool_prefix$ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_CC+set}" = set; then :
-+if ${ac_cv_prog_CC+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$CC"; then
-   ac_cv_prog_CC="$CC" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -3439,29 +3613,29 @@ fi
- if test -z "$CC"; then
-   ac_ct_CC=$CC
-   for ac_prog in cl.exe
- do
-   # Extract the first word of "$ac_prog", so it can be a program name with args.
- set dummy $ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
-+if ${ac_cv_prog_ac_ct_CC+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$ac_ct_CC"; then
-   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_ac_ct_CC="$ac_prog"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -3493,18 +3667,18 @@ esac
-   fi
- fi
- 
- fi
- 
- 
- test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
- $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
--as_fn_error "no acceptable C compiler found in \$PATH
--See \`config.log' for more details." "$LINENO" 5; }
-+as_fn_error $? "no acceptable C compiler found in \$PATH
-+See \`config.log' for more details" "$LINENO" 5; }
- 
- # Provide some information about the compiler.
- $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
- set X $ac_compile
- ac_compiler=$2
- for ac_option in --version -v -V -qversion; do
-   { { ac_try="$ac_compiler $ac_option >&5"
- case "(($ac_try" in
-@@ -3608,19 +3782,18 @@ fi
- if test -z "$ac_file"; then :
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
- $as_echo "no" >&6; }
- $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
- 
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
- $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
--{ as_fn_set_status 77
--as_fn_error "C compiler cannot create executables
--See \`config.log' for more details." "$LINENO" 5; }; }
-+as_fn_error 77 "C compiler cannot create executables
-+See \`config.log' for more details" "$LINENO" 5; }
- else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
- $as_echo "yes" >&6; }
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
- $as_echo_n "checking for C compiler default output file name... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
- $as_echo "$ac_file" >&6; }
-@@ -3652,18 +3825,18 @@ for ac_file in conftest.exe conftest con
-     *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- 	  break;;
-     * ) break;;
-   esac
- done
- else
-   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
- $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
--as_fn_error "cannot compute suffix of executables: cannot compile and link
--See \`config.log' for more details." "$LINENO" 5; }
-+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-+See \`config.log' for more details" "$LINENO" 5; }
- fi
- rm -f conftest conftest$ac_cv_exeext
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
- $as_echo "$ac_cv_exeext" >&6; }
- 
- rm -f conftest.$ac_ext
- EXEEXT=$ac_cv_exeext
- ac_exeext=$EXEEXT
-@@ -3710,30 +3883,30 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
-   test $ac_status = 0; }; }; then
-     cross_compiling=no
-   else
-     if test "$cross_compiling" = maybe; then
- 	cross_compiling=yes
-     else
- 	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
- $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
--as_fn_error "cannot run C compiled programs.
-+as_fn_error $? "cannot run C compiled programs.
- If you meant to cross compile, use \`--host'.
--See \`config.log' for more details." "$LINENO" 5; }
-+See \`config.log' for more details" "$LINENO" 5; }
-     fi
-   fi
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
- $as_echo "$cross_compiling" >&6; }
- 
- rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
- ac_clean_files=$ac_clean_files_save
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
- $as_echo_n "checking for suffix of object files... " >&6; }
--if test "${ac_cv_objext+set}" = set; then :
-+if ${ac_cv_objext+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- 
- int
- main ()
- {
-@@ -3763,28 +3936,28 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
-   esac
- done
- else
-   $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
- 
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
- $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
--as_fn_error "cannot compute suffix of object files: cannot compile
--See \`config.log' for more details." "$LINENO" 5; }
-+as_fn_error $? "cannot compute suffix of object files: cannot compile
-+See \`config.log' for more details" "$LINENO" 5; }
- fi
- rm -f conftest.$ac_cv_objext conftest.$ac_ext
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
- $as_echo "$ac_cv_objext" >&6; }
- OBJEXT=$ac_cv_objext
- ac_objext=$OBJEXT
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
- $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
--if test "${ac_cv_c_compiler_gnu+set}" = set; then :
-+if ${ac_cv_c_compiler_gnu+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- 
- int
- main ()
- {
-@@ -3811,17 +3984,17 @@ if test $ac_compiler_gnu = yes; then
-   GCC=yes
- else
-   GCC=
- fi
- ac_test_CFLAGS=${CFLAGS+set}
- ac_save_CFLAGS=$CFLAGS
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
- $as_echo_n "checking whether $CC accepts -g... " >&6; }
--if test "${ac_cv_prog_cc_g+set}" = set; then :
-+if ${ac_cv_prog_cc_g+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   ac_save_c_werror_flag=$ac_c_werror_flag
-    ac_c_werror_flag=yes
-    ac_cv_prog_cc_g=no
-    CFLAGS="-g"
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
-@@ -3889,27 +4062,26 @@ else
-   if test "$GCC" = yes; then
-     CFLAGS="-O2"
-   else
-     CFLAGS=
-   fi
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
- $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
--if test "${ac_cv_prog_cc_c89+set}" = set; then :
-+if ${ac_cv_prog_cc_c89+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   ac_cv_prog_cc_c89=no
- ac_save_CC=$CC
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- #include <stdarg.h>
- #include <stdio.h>
--#include <sys/types.h>
--#include <sys/stat.h>
-+struct stat;
- /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
- struct buf { int x; };
- FILE * (*rcsopen) (struct buf *, struct stat *, int);
- static char *e (p, i)
-      char **p;
-      int i;
- {
-   return p[i];
-@@ -4002,17 +4174,17 @@ END
- # If we don't find an include directive, just comment out the code.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
- $as_echo_n "checking for style of include used by $am_make... " >&6; }
- am__include="#"
- am__quote=
- _am_result=none
- # First try GNU make style include.
- echo "include confinc" > confmf
--# Ignore all kinds of additional output from `make'.
-+# Ignore all kinds of additional output from 'make'.
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
-   am__include=include
-   am__quote=
-   _am_result=GNU
-   ;;
- esac
- # Now try BSD make style include.
-@@ -4035,40 +4207,42 @@ rm -f confinc confmf
- # Check whether --enable-dependency-tracking was given.
- if test "${enable_dependency_tracking+set}" = set; then :
-   enableval=$enable_dependency_tracking;
- fi
- 
- if test "x$enable_dependency_tracking" != xno; then
-   am_depcomp="$ac_aux_dir/depcomp"
-   AMDEPBACKSLASH='\'
-+  am__nodep='_no'
- fi
-  if test "x$enable_dependency_tracking" != xno; then
-   AMDEP_TRUE=
-   AMDEP_FALSE='#'
- else
-   AMDEP_TRUE='#'
-   AMDEP_FALSE=
- fi
- 
- 
- 
- depcc="$CC"   am_compiler_list=
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
- $as_echo_n "checking dependency style of $depcc... " >&6; }
--if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
-+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-   # We make a subdir and do the tests there.  Otherwise we can end up
-   # making bogus files that we don't know about and never remove.  For
-   # instance it was reported that on HP-UX the gcc test will end up
--  # making a dummy file named `D' -- because `-MD' means `put the output
--  # in D'.
-+  # making a dummy file named 'D' -- because '-MD' means "put the output
-+  # in D".
-+  rm -rf conftest.dir
-   mkdir conftest.dir
-   # Copy depcomp to subdir because otherwise we won't find it if we're
-   # using a relative directory.
-   cp "$am_depcomp" conftest.dir
-   cd conftest.dir
-   # We will build objects and dependencies in a subdirectory because
-   # it helps to detect inapplicable dependency modes.  For instance
-   # both Tru64's cc and ICC support -MD to output dependencies as a
-@@ -4092,44 +4266,44 @@ else
-     # we should not choose a depcomp mode which is confused by this.
-     #
-     # We need to recreate these files for each test, as the compiler may
-     # overwrite some of them when testing with obscure command lines.
-     # This happens at least with the AIX C compiler.
-     : > sub/conftest.c
-     for i in 1 2 3 4 5 6; do
-       echo '#include "conftst'$i'.h"' >> sub/conftest.c
--      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
--      # Solaris 8's {/usr,}/bin/sh.
--      touch sub/conftst$i.h
-+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-+      # Solaris 10 /bin/sh.
-+      echo '/* dummy */' > sub/conftst$i.h
-     done
-     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
- 
--    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-     # mode.  It turns out that the SunPro C++ compiler does not properly
--    # handle `-M -o', and we need to detect this.  Also, some Intel
--    # versions had trouble with output in subdirs
-+    # handle '-M -o', and we need to detect this.  Also, some Intel
-+    # versions had trouble with output in subdirs.
-     am__obj=sub/conftest.${OBJEXT-o}
-     am__minus_obj="-o $am__obj"
-     case $depmode in
-     gcc)
-       # This depmode causes a compiler race in universal mode.
-       test "$am__universal" = false || continue
-       ;;
-     nosideeffect)
--      # after this tag, mechanisms are not by side-effect, so they'll
--      # only be used when explicitly requested
-+      # After this tag, mechanisms are not by side-effect, so they'll
-+      # only be used when explicitly requested.
-       if test "x$enable_dependency_tracking" = xyes; then
- 	continue
-       else
- 	break
-       fi
-       ;;
--    msvisualcpp | msvcmsys)
--      # This compiler won't grok `-c -o', but also, the minuso test has
-+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-+      # This compiler won't grok '-c -o', but also, the minuso test has
-       # not run yet.  These depmodes are late enough in the game, and
-       # so weak that their functioning should not be impacted.
-       am__obj=conftest.${OBJEXT-o}
-       am__minus_obj=
-       ;;
-     none) break ;;
-     esac
-     if depmode=$depmode \
-@@ -4190,25 +4364,26 @@ test "${CCAS+set}" = set || CCAS=$CC
- test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
- 
- 
- 
- depcc="$CCAS"   am_compiler_list=
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
- $as_echo_n "checking dependency style of $depcc... " >&6; }
--if test "${am_cv_CCAS_dependencies_compiler_type+set}" = set; then :
-+if ${am_cv_CCAS_dependencies_compiler_type+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-   # We make a subdir and do the tests there.  Otherwise we can end up
-   # making bogus files that we don't know about and never remove.  For
-   # instance it was reported that on HP-UX the gcc test will end up
--  # making a dummy file named `D' -- because `-MD' means `put the output
--  # in D'.
-+  # making a dummy file named 'D' -- because '-MD' means "put the output
-+  # in D".
-+  rm -rf conftest.dir
-   mkdir conftest.dir
-   # Copy depcomp to subdir because otherwise we won't find it if we're
-   # using a relative directory.
-   cp "$am_depcomp" conftest.dir
-   cd conftest.dir
-   # We will build objects and dependencies in a subdirectory because
-   # it helps to detect inapplicable dependency modes.  For instance
-   # both Tru64's cc and ICC support -MD to output dependencies as a
-@@ -4230,44 +4405,44 @@ else
-     # we should not choose a depcomp mode which is confused by this.
-     #
-     # We need to recreate these files for each test, as the compiler may
-     # overwrite some of them when testing with obscure command lines.
-     # This happens at least with the AIX C compiler.
-     : > sub/conftest.c
-     for i in 1 2 3 4 5 6; do
-       echo '#include "conftst'$i'.h"' >> sub/conftest.c
--      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
--      # Solaris 8's {/usr,}/bin/sh.
--      touch sub/conftst$i.h
-+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-+      # Solaris 10 /bin/sh.
-+      echo '/* dummy */' > sub/conftst$i.h
-     done
-     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
- 
--    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-     # mode.  It turns out that the SunPro C++ compiler does not properly
--    # handle `-M -o', and we need to detect this.  Also, some Intel
--    # versions had trouble with output in subdirs
-+    # handle '-M -o', and we need to detect this.  Also, some Intel
-+    # versions had trouble with output in subdirs.
-     am__obj=sub/conftest.${OBJEXT-o}
-     am__minus_obj="-o $am__obj"
-     case $depmode in
-     gcc)
-       # This depmode causes a compiler race in universal mode.
-       test "$am__universal" = false || continue
-       ;;
-     nosideeffect)
--      # after this tag, mechanisms are not by side-effect, so they'll
--      # only be used when explicitly requested
-+      # After this tag, mechanisms are not by side-effect, so they'll
-+      # only be used when explicitly requested.
-       if test "x$enable_dependency_tracking" = xyes; then
- 	continue
-       else
- 	break
-       fi
-       ;;
--    msvisualcpp | msvcmsys)
--      # This compiler won't grok `-c -o', but also, the minuso test has
-+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-+      # This compiler won't grok '-c -o', but also, the minuso test has
-       # not run yet.  These depmodes are late enough in the game, and
-       # so weak that their functioning should not be impacted.
-       am__obj=conftest.${OBJEXT-o}
-       am__minus_obj=
-       ;;
-     none) break ;;
-     esac
-     if depmode=$depmode \
-@@ -4320,17 +4495,17 @@ if test "x$CC" != xcc; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
- $as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
- else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
- $as_echo_n "checking whether cc understands -c and -o together... " >&6; }
- fi
- set dummy $CC; ac_cc=`$as_echo "$2" |
- 		      sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
--if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then :
-+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- 
- int
- main ()
- {
-@@ -4445,36 +4620,105 @@ fi
- case `pwd` in
-   *\ * | *\	*)
-     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
- $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
- esac
- 
- 
- 
--macro_version='2.2.6b'
--macro_revision='1.3017'
-+macro_version='2.4.2'
-+macro_revision='1.3337'
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- ltmain="$ac_aux_dir/ltmain.sh"
- 
-+# Backslashify metacharacters that are still active within
-+# double-quoted strings.
-+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-+
-+# Same as above, but do not quote variable references.
-+double_quote_subst='s/\(["`\\]\)/\\\1/g'
-+
-+# Sed substitution to delay expansion of an escaped shell variable in a
-+# double_quote_subst'ed string.
-+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-+
-+# Sed substitution to delay expansion of an escaped single quote.
-+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-+
-+# Sed substitution to avoid accidental globbing in evaled expressions
-+no_glob_subst='s/\*/\\\*/g'
-+
-+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-+$as_echo_n "checking how to print strings... " >&6; }
-+# Test print first, because it will be a builtin if present.
-+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-+  ECHO='print -r --'
-+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-+  ECHO='printf %s\n'
-+else
-+  # Use this function as a fallback that always works.
-+  func_fallback_echo ()
-+  {
-+    eval 'cat <<_LTECHO_EOF
-+$1
-+_LTECHO_EOF'
-+  }
-+  ECHO='func_fallback_echo'
-+fi
-+
-+# func_echo_all arg...
-+# Invoke $ECHO with all args, space-separated.
-+func_echo_all ()
-+{
-+    $ECHO ""
-+}
-+
-+case "$ECHO" in
-+  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-+$as_echo "printf" >&6; } ;;
-+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-+$as_echo "print -r" >&6; } ;;
-+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-+$as_echo "cat" >&6; } ;;
-+esac
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
- $as_echo_n "checking for a sed that does not truncate output... " >&6; }
--if test "${ac_cv_path_SED+set}" = set; then :
-+if ${ac_cv_path_SED+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-             ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-      for ac_i in 1 2 3 4 5 6 7; do
-        ac_script="$ac_script$as_nl$ac_script"
-      done
-      echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-      { ac_script=; unset ac_script;}
-@@ -4484,17 +4728,17 @@ else
-   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_prog in sed gsed; do
-     for ac_exec_ext in '' $ac_executable_extensions; do
-       ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
--      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
-+      as_fn_executable_p "$ac_path_SED" || continue
- # Check for GNU ac_path_SED and select it if it is found.
-   # Check for GNU $ac_path_SED
- case `"$ac_path_SED" --version 2>&1` in
- *GNU*)
-   ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
- *)
-   ac_count=0
-   $as_echo_n 0123456789 >"conftest.in"
-@@ -4519,17 +4763,17 @@ case `"$ac_path_SED" --version 2>&1` in
- esac
- 
-       $ac_path_SED_found && break 3
-     done
-   done
-   done
- IFS=$as_save_IFS
-   if test -z "$ac_cv_path_SED"; then
--    as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5
-+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-   fi
- else
-   ac_cv_path_SED=$SED
- fi
- 
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
- $as_echo "$ac_cv_path_SED" >&6; }
-@@ -4546,31 +4790,31 @@ Xsed="$SED -e 1s/^X//"
- 
- 
- 
- 
- 
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
- $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
--if test "${ac_cv_path_GREP+set}" = set; then :
-+if ${ac_cv_path_GREP+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -z "$GREP"; then
-   ac_path_GREP_found=false
-   # Loop through the user's path and test for each of PROGNAME-LIST
-   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_prog in grep ggrep; do
-     for ac_exec_ext in '' $ac_executable_extensions; do
-       ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
--      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-+      as_fn_executable_p "$ac_path_GREP" || continue
- # Check for GNU ac_path_GREP and select it if it is found.
-   # Check for GNU $ac_path_GREP
- case `"$ac_path_GREP" --version 2>&1` in
- *GNU*)
-   ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
- *)
-   ac_count=0
-   $as_echo_n 0123456789 >"conftest.in"
-@@ -4595,48 +4839,48 @@ case `"$ac_path_GREP" --version 2>&1` in
- esac
- 
-       $ac_path_GREP_found && break 3
-     done
-   done
-   done
- IFS=$as_save_IFS
-   if test -z "$ac_cv_path_GREP"; then
--    as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-   fi
- else
-   ac_cv_path_GREP=$GREP
- fi
- 
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
- $as_echo "$ac_cv_path_GREP" >&6; }
-  GREP="$ac_cv_path_GREP"
- 
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
- $as_echo_n "checking for egrep... " >&6; }
--if test "${ac_cv_path_EGREP+set}" = set; then :
-+if ${ac_cv_path_EGREP+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-    then ac_cv_path_EGREP="$GREP -E"
-    else
-      if test -z "$EGREP"; then
-   ac_path_EGREP_found=false
-   # Loop through the user's path and test for each of PROGNAME-LIST
-   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_prog in egrep; do
-     for ac_exec_ext in '' $ac_executable_extensions; do
-       ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
--      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-+      as_fn_executable_p "$ac_path_EGREP" || continue
- # Check for GNU ac_path_EGREP and select it if it is found.
-   # Check for GNU $ac_path_EGREP
- case `"$ac_path_EGREP" --version 2>&1` in
- *GNU*)
-   ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
- *)
-   ac_count=0
-   $as_echo_n 0123456789 >"conftest.in"
-@@ -4661,49 +4905,49 @@ case `"$ac_path_EGREP" --version 2>&1` i
- esac
- 
-       $ac_path_EGREP_found && break 3
-     done
-   done
-   done
- IFS=$as_save_IFS
-   if test -z "$ac_cv_path_EGREP"; then
--    as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-   fi
- else
-   ac_cv_path_EGREP=$EGREP
- fi
- 
-    fi
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
- $as_echo "$ac_cv_path_EGREP" >&6; }
-  EGREP="$ac_cv_path_EGREP"
- 
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
- $as_echo_n "checking for fgrep... " >&6; }
--if test "${ac_cv_path_FGREP+set}" = set; then :
-+if ${ac_cv_path_FGREP+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
-    then ac_cv_path_FGREP="$GREP -F"
-    else
-      if test -z "$FGREP"; then
-   ac_path_FGREP_found=false
-   # Loop through the user's path and test for each of PROGNAME-LIST
-   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_prog in fgrep; do
-     for ac_exec_ext in '' $ac_executable_extensions; do
-       ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
--      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
-+      as_fn_executable_p "$ac_path_FGREP" || continue
- # Check for GNU ac_path_FGREP and select it if it is found.
-   # Check for GNU $ac_path_FGREP
- case `"$ac_path_FGREP" --version 2>&1` in
- *GNU*)
-   ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
- *)
-   ac_count=0
-   $as_echo_n 0123456789 >"conftest.in"
-@@ -4728,17 +4972,17 @@ case `"$ac_path_FGREP" --version 2>&1` i
- esac
- 
-       $ac_path_FGREP_found && break 3
-     done
-   done
-   done
- IFS=$as_save_IFS
-   if test -z "$ac_cv_path_FGREP"; then
--    as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-   fi
- else
-   ac_cv_path_FGREP=$FGREP
- fi
- 
-    fi
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-@@ -4807,17 +5051,17 @@ if test "$GCC" = yes; then
-   esac
- elif test "$with_gnu_ld" = yes; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
- $as_echo_n "checking for GNU ld... " >&6; }
- else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
- $as_echo_n "checking for non-GNU ld... " >&6; }
- fi
--if test "${lt_cv_path_LD+set}" = set; then :
-+if ${lt_cv_path_LD+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -z "$LD"; then
-   lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-   for ac_dir in $PATH; do
-     IFS="$lt_save_ifs"
-     test -z "$ac_dir" && ac_dir=.
-     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-@@ -4844,20 +5088,20 @@ fi
- LD="$lt_cv_path_LD"
- if test -n "$LD"; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
- $as_echo "$LD" >&6; }
- else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
- $as_echo "no" >&6; }
- fi
--test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
-+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
- $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
--if test "${lt_cv_prog_gnu_ld+set}" = set; then :
-+if ${lt_cv_prog_gnu_ld+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   # I'd rather use --version here, but apparently some GNU lds only accept -v.
- case `$LD -v 2>&1 </dev/null` in
- *GNU* | *'with BFD'*)
-   lt_cv_prog_gnu_ld=yes
-   ;;
- *)
-@@ -4874,17 +5118,17 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
- 
- 
- 
- 
- 
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
- $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
--if test "${lt_cv_path_NM+set}" = set; then :
-+if ${lt_cv_path_NM+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$NM"; then
-   # Let the user override the test.
-   lt_cv_path_NM="$NM"
- else
-   lt_nm_to_check="${ac_tool_prefix}nm"
-   if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-@@ -4927,36 +5171,39 @@ else
- fi
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
- $as_echo "$lt_cv_path_NM" >&6; }
- if test "$lt_cv_path_NM" != "no"; then
-   NM="$lt_cv_path_NM"
- else
-   # Didn't find any BSD compatible name lister, look for dumpbin.
--  if test -n "$ac_tool_prefix"; then
--  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
-+  if test -n "$DUMPBIN"; then :
-+    # Let the user override the test.
-+  else
-+    if test -n "$ac_tool_prefix"; then
-+  for ac_prog in dumpbin "link -dump"
-   do
-     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
- set dummy $ac_tool_prefix$ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_DUMPBIN+set}" = set; then :
-+if ${ac_cv_prog_DUMPBIN+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$DUMPBIN"; then
-   ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -4972,35 +5219,35 @@ else
- fi
- 
- 
-     test -n "$DUMPBIN" && break
-   done
- fi
- if test -z "$DUMPBIN"; then
-   ac_ct_DUMPBIN=$DUMPBIN
--  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
-+  for ac_prog in dumpbin "link -dump"
- do
-   # Extract the first word of "$ac_prog", so it can be a program name with args.
- set dummy $ac_prog; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then :
-+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$ac_ct_DUMPBIN"; then
-   ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -5027,42 +5274,51 @@ yes:)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
- $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
- ac_tool_warned=yes ;;
- esac
-     DUMPBIN=$ac_ct_DUMPBIN
-   fi
- fi
- 
-+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-+    *COFF*)
-+      DUMPBIN="$DUMPBIN -symbols"
-+      ;;
-+    *)
-+      DUMPBIN=:
-+      ;;
-+    esac
-+  fi
- 
-   if test "$DUMPBIN" != ":"; then
-     NM="$DUMPBIN"
-   fi
- fi
- test -z "$NM" && NM=nm
- 
- 
- 
- 
- 
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
- $as_echo_n "checking the name lister ($NM) interface... " >&6; }
--if test "${lt_cv_nm_interface+set}" = set; then :
-+if ${lt_cv_nm_interface+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   lt_cv_nm_interface="BSD nm"
-   echo "int some_variable = 0;" > conftest.$ac_ext
--  (eval echo "\"\$as_me:5054: $ac_compile\"" >&5)
-+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
-   (eval "$ac_compile" 2>conftest.err)
-   cat conftest.err >&5
--  (eval echo "\"\$as_me:5057: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-   cat conftest.err >&5
--  (eval echo "\"\$as_me:5060: output\"" >&5)
-+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
-   cat conftest.out >&5
-   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-     lt_cv_nm_interface="MS dumpbin"
-   fi
-   rm -f conftest*
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
- $as_echo "$lt_cv_nm_interface" >&6; }
-@@ -5076,17 +5332,17 @@ if test "$LN_S" = "ln -s"; then
- else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
- $as_echo "no, using $LN_S" >&6; }
- fi
- 
- # find the maximum length of command line arguments
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
- $as_echo_n "checking the maximum length of command line arguments... " >&6; }
--if test "${lt_cv_sys_max_cmd_len+set}" = set; then :
-+if ${lt_cv_sys_max_cmd_len+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-     i=0
-   teststring="ABCD"
- 
-   case $build_os in
-   msdosdjgpp*)
-     # On DJGPP, this test can blow up pretty badly due to problems in libc
-@@ -5109,16 +5365,21 @@ else
-     # Worse, since 9x/ME are not pre-emptively multitasking,
-     # you end up with a "frozen" computer, even though with patience
-     # the test eventually succeeds (with a max line length of 256k).
-     # Instead, let's just punt: use the minimum linelength reported by
-     # all of the supported platforms: 8192 (on NT/2K/XP).
-     lt_cv_sys_max_cmd_len=8192;
-     ;;
- 
-+  mint*)
-+    # On MiNT this can take a long time and run out of memory.
-+    lt_cv_sys_max_cmd_len=8192;
-+    ;;
-+
-   amigaos*)
-     # On AmigaOS with pdksh, this test takes hours, literally.
-     # So we just punt and use a minimum line length of 8192.
-     lt_cv_sys_max_cmd_len=8192;
-     ;;
- 
-   netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-     # This has been around since 386BSD, at least.  Likely further.
-@@ -5134,16 +5395,21 @@ else
-     lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-     ;;
- 
-   interix*)
-     # We know the value 262144 and hardcode it with a safety zone (like BSD)
-     lt_cv_sys_max_cmd_len=196608
-     ;;
- 
-+  os2*)
-+    # The test takes a long time on OS/2.
-+    lt_cv_sys_max_cmd_len=8192
-+    ;;
-+
-   osf*)
-     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-     # nice to cause kernel panics so lets avoid the loop below.
-     # First set a reasonable default.
-     lt_cv_sys_max_cmd_len=16384
-     #
-     if test -x /sbin/sysconfig; then
-@@ -5173,18 +5439,18 @@ else
-       # a 1K string should be a reasonable start.
-       for i in 1 2 3 4 5 6 7 8 ; do
-         teststring=$teststring$teststring
-       done
-       SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-       # If test is not a shell built-in, we'll probably end up computing a
-       # maximum length that is only half of the actual maximum length, but
-       # we can't tell.
--      while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
--	         = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
-+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
-+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
- 	      test $i != 17 # 1/2 MB should be enough
-       do
-         i=`expr $i + 1`
-         teststring=$teststring$teststring
-       done
-       # Only check the string length outside the loop.
-       lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-       teststring=
-@@ -5216,18 +5482,18 @@ max_cmd_len=$lt_cv_sys_max_cmd_len
- : ${MV="mv -f"}
- : ${RM="rm -f"}
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
- $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
- # Try some XSI features
- xsi_shell=no
- ( _lt_dummy="a/b/c"
--  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
--      = c,a/b,, \
-+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-+      = c,a/b,b/c, \
-     && eval 'test $(( 1 + 1 )) -eq 2 \
-     && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-   && xsi_shell=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
- $as_echo "$xsi_shell" >&6; }
- 
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-@@ -5266,32 +5532,111 @@ esac
- 
- 
- 
- 
- 
- 
- 
- 
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-+if ${lt_cv_to_host_file_cmd+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  case $host in
-+  *-*-mingw* )
-+    case $build in
-+      *-*-mingw* ) # actually msys
-+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-+        ;;
-+      *-*-cygwin* )
-+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-+        ;;
-+      * ) # otherwise, assume *nix
-+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-+        ;;
-+    esac
-+    ;;
-+  *-*-cygwin* )
-+    case $build in
-+      *-*-mingw* ) # actually msys
-+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-+        ;;
-+      *-*-cygwin* )
-+        lt_cv_to_host_file_cmd=func_convert_file_noop
-+        ;;
-+      * ) # otherwise, assume *nix
-+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-+        ;;
-+    esac
-+    ;;
-+  * ) # unhandled hosts (and "normal" native builds)
-+    lt_cv_to_host_file_cmd=func_convert_file_noop
-+    ;;
-+esac
-+
-+fi
-+
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-+if ${lt_cv_to_tool_file_cmd+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  #assume ordinary cross tools, or native build.
-+lt_cv_to_tool_file_cmd=func_convert_file_noop
-+case $host in
-+  *-*-mingw* )
-+    case $build in
-+      *-*-mingw* ) # actually msys
-+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-+        ;;
-+    esac
-+    ;;
-+esac
-+
-+fi
-+
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-+
-+
-+
-+
-+
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
- $as_echo_n "checking for $LD option to reload object files... " >&6; }
--if test "${lt_cv_ld_reload_flag+set}" = set; then :
-+if ${lt_cv_ld_reload_flag+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   lt_cv_ld_reload_flag='-r'
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
- $as_echo "$lt_cv_ld_reload_flag" >&6; }
- reload_flag=$lt_cv_ld_reload_flag
- case $reload_flag in
- "" | " "*) ;;
- *) reload_flag=" $reload_flag" ;;
- esac
- reload_cmds='$LD$reload_flag -o $output$reload_objs'
- case $host_os in
-+  cygwin* | mingw* | pw32* | cegcc*)
-+    if test "$GCC" != yes; then
-+      reload_cmds=false
-+    fi
-+    ;;
-   darwin*)
-     if test "$GCC" = yes; then
-       reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-     else
-       reload_cmds='$LD$reload_flag -o $output$reload_objs'
-     fi
-     ;;
- esac
-@@ -5304,29 +5649,29 @@ esac
- 
- 
- 
- if test -n "$ac_tool_prefix"; then
-   # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
- set dummy ${ac_tool_prefix}objdump; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_OBJDUMP+set}" = set; then :
-+if ${ac_cv_prog_OBJDUMP+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$OBJDUMP"; then
-   ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -5344,29 +5689,29 @@ fi
- 
- fi
- if test -z "$ac_cv_prog_OBJDUMP"; then
-   ac_ct_OBJDUMP=$OBJDUMP
-   # Extract the first word of "objdump", so it can be a program name with args.
- set dummy objdump; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then :
-+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$ac_ct_OBJDUMP"; then
-   ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_ac_ct_OBJDUMP="objdump"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -5403,17 +5748,17 @@ test -z "$OBJDUMP" && OBJDUMP=objdump
- 
- 
- 
- 
- 
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
- $as_echo_n "checking how to recognize dependent libraries... " >&6; }
--if test "${lt_cv_deplibs_check_method+set}" = set; then :
-+if ${lt_cv_deplibs_check_method+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   lt_cv_file_magic_cmd='$MAGIC_CMD'
- lt_cv_file_magic_test_file=
- lt_cv_deplibs_check_method='unknown'
- # Need to set the preceding variable on all platforms that support
- # interlibrary dependencies.
- # 'none' -- dependencies not supported.
-@@ -5445,26 +5790,28 @@ cygwin*)
-   lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-   lt_cv_file_magic_cmd='func_win32_libid'
-   ;;
- 
- mingw* | pw32*)
-   # Base MSYS/MinGW do not provide the 'file' command needed by
-   # func_win32_libid shell function, so use a weaker test based on 'objdump',
-   # unless we find 'file', for example because we are cross-compiling.
--  if ( file / ) >/dev/null 2>&1; then
-+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-     lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-     lt_cv_file_magic_cmd='func_win32_libid'
-   else
--    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+    # Keep this pattern in sync with the one in func_win32_libid.
-+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-     lt_cv_file_magic_cmd='$OBJDUMP -f'
-   fi
-   ;;
- 
--cegcc)
-+cegcc*)
-   # use the weaker test based on 'objdump'. See mingw*.
-   lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-   lt_cv_file_magic_cmd='$OBJDUMP -f'
-   ;;
- 
- darwin* | rhapsody*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
-@@ -5484,29 +5831,33 @@ freebsd* | dragonfly*)
-     lt_cv_deplibs_check_method=pass_all
-   fi
-   ;;
- 
- gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+haiku*)
-+  lt_cv_deplibs_check_method=pass_all
-+  ;;
-+
- hpux10.20* | hpux11*)
-   lt_cv_file_magic_cmd=/usr/bin/file
-   case $host_cpu in
-   ia64*)
-     lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-     lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-     ;;
-   hppa*64*)
--    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
-+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
-     lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-     ;;
-   *)
--    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
-+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
-     lt_cv_file_magic_test_file=/usr/lib/libc.sl
-     ;;
-   esac
-   ;;
- 
- interix[3-9]*)
-   # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-   lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-@@ -5517,18 +5868,18 @@ irix5* | irix6* | nonstopux*)
-   *-32|*"-32 ") libmagic=32-bit;;
-   *-n32|*"-n32 ") libmagic=N32;;
-   *-64|*"-64 ") libmagic=64-bit;;
-   *) libmagic=never-match;;
-   esac
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
--# This must be Linux ELF.
--linux* | k*bsd*-gnu)
-+# This must be glibc/ELF.
-+linux* | k*bsd*-gnu | kopensolaris*-gnu)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
- netbsd*)
-   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-   else
-     lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-@@ -5599,154 +5950,387 @@ sysv4 | sysv4.3*)
- tpf*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- esac
- 
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
- $as_echo "$lt_cv_deplibs_check_method" >&6; }
-+
-+file_magic_glob=
-+want_nocaseglob=no
-+if test "$build" = "$host"; then
-+  case $host_os in
-+  mingw* | pw32*)
-+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-+      want_nocaseglob=yes
-+    else
-+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-+    fi
-+    ;;
-+  esac
-+fi
-+
- file_magic_cmd=$lt_cv_file_magic_cmd
- deplibs_check_method=$lt_cv_deplibs_check_method
- test -z "$deplibs_check_method" && deplibs_check_method=unknown
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
- if test -n "$ac_tool_prefix"; then
--  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
--set dummy ${ac_tool_prefix}ar; ac_word=$2
-+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_AR+set}" = set; then :
--  $as_echo_n "(cached) " >&6
--else
--  if test -n "$AR"; then
--  ac_cv_prog_AR="$AR" # Let the user override the test.
-+if ${ac_cv_prog_DLLTOOL+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  if test -n "$DLLTOOL"; then
-+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
--    ac_cv_prog_AR="${ac_tool_prefix}ar"
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
- fi
- fi
--AR=$ac_cv_prog_AR
--if test -n "$AR"; then
--  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
--$as_echo "$AR" >&6; }
-+DLLTOOL=$ac_cv_prog_DLLTOOL
-+if test -n "$DLLTOOL"; then
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-+$as_echo "$DLLTOOL" >&6; }
- else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
- $as_echo "no" >&6; }
- fi
- 
- 
- fi
--if test -z "$ac_cv_prog_AR"; then
--  ac_ct_AR=$AR
--  # Extract the first word of "ar", so it can be a program name with args.
--set dummy ar; ac_word=$2
-+if test -z "$ac_cv_prog_DLLTOOL"; then
-+  ac_ct_DLLTOOL=$DLLTOOL
-+  # Extract the first word of "dlltool", so it can be a program name with args.
-+set dummy dlltool; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
--  $as_echo_n "(cached) " >&6
--else
--  if test -n "$ac_ct_AR"; then
--  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  if test -n "$ac_ct_DLLTOOL"; then
-+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
--    ac_cv_prog_ac_ct_AR="ar"
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
- fi
- fi
--ac_ct_AR=$ac_cv_prog_ac_ct_AR
--if test -n "$ac_ct_AR"; then
--  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
--$as_echo "$ac_ct_AR" >&6; }
-+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-+if test -n "$ac_ct_DLLTOOL"; then
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-+$as_echo "$ac_ct_DLLTOOL" >&6; }
- else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
- $as_echo "no" >&6; }
- fi
- 
--  if test "x$ac_ct_AR" = x; then
--    AR="false"
-+  if test "x$ac_ct_DLLTOOL" = x; then
-+    DLLTOOL="false"
-   else
-     case $cross_compiling:$ac_tool_warned in
- yes:)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
- $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
- ac_tool_warned=yes ;;
- esac
-+    DLLTOOL=$ac_ct_DLLTOOL
-+  fi
-+else
-+  DLLTOOL="$ac_cv_prog_DLLTOOL"
-+fi
-+
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  lt_cv_sharedlib_from_linklib_cmd='unknown'
-+
-+case $host_os in
-+cygwin* | mingw* | pw32* | cegcc*)
-+  # two different shell functions defined in ltmain.sh
-+  # decide which to use based on capabilities of $DLLTOOL
-+  case `$DLLTOOL --help 2>&1` in
-+  *--identify-strict*)
-+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-+    ;;
-+  *)
-+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-+    ;;
-+  esac
-+  ;;
-+*)
-+  # fallback: assume linklib IS sharedlib
-+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-+  ;;
-+esac
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-+
-+
-+
-+
-+
-+
-+
-+
-+if test -n "$ac_tool_prefix"; then
-+  for ac_prog in ar
-+  do
-+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_AR+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  if test -n "$AR"; then
-+  ac_cv_prog_AR="$AR" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+  IFS=$as_save_IFS
-+  test -z "$as_dir" && as_dir=.
-+    for ac_exec_ext in '' $ac_executable_extensions; do
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
-+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+    break 2
-+  fi
-+done
-+  done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+AR=$ac_cv_prog_AR
-+if test -n "$AR"; then
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-+$as_echo "$AR" >&6; }
-+else
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+    test -n "$AR" && break
-+  done
-+fi
-+if test -z "$AR"; then
-+  ac_ct_AR=$AR
-+  for ac_prog in ar
-+do
-+  # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_ac_ct_AR+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  if test -n "$ac_ct_AR"; then
-+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+  IFS=$as_save_IFS
-+  test -z "$as_dir" && as_dir=.
-+    for ac_exec_ext in '' $ac_executable_extensions; do
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+    ac_cv_prog_ac_ct_AR="$ac_prog"
-+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+    break 2
-+  fi
-+done
-+  done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_AR=$ac_cv_prog_ac_ct_AR
-+if test -n "$ac_ct_AR"; then
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-+$as_echo "$ac_ct_AR" >&6; }
-+else
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+  test -n "$ac_ct_AR" && break
-+done
-+
-+  if test "x$ac_ct_AR" = x; then
-+    AR="false"
-+  else
-+    case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-     AR=$ac_ct_AR
-   fi
--else
--  AR="$ac_cv_prog_AR"
--fi
--
--test -z "$AR" && AR=ar
--test -z "$AR_FLAGS" && AR_FLAGS=cru
--
--
--
--
-+fi
-+
-+: ${AR=ar}
-+: ${AR_FLAGS=cru}
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-+$as_echo_n "checking for archiver @FILE support... " >&6; }
-+if ${lt_cv_ar_at_file+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  lt_cv_ar_at_file=no
-+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+
-+int
-+main ()
-+{
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+  echo conftest.$ac_objext > conftest.lst
-+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-+      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+  (eval $lt_ar_try) 2>&5
-+  ac_status=$?
-+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+  test $ac_status = 0; }
-+      if test "$ac_status" -eq 0; then
-+	# Ensure the archiver fails upon bogus file names.
-+	rm -f conftest.$ac_objext libconftest.a
-+	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-+  (eval $lt_ar_try) 2>&5
-+  ac_status=$?
-+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+  test $ac_status = 0; }
-+	if test "$ac_status" -ne 0; then
-+          lt_cv_ar_at_file=@
-+        fi
-+      fi
-+      rm -f conftest.* libconftest.a
-+
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-+$as_echo "$lt_cv_ar_at_file" >&6; }
-+
-+if test "x$lt_cv_ar_at_file" = xno; then
-+  archiver_list_spec=
-+else
-+  archiver_list_spec=$lt_cv_ar_at_file
-+fi
- 
- 
- 
- 
- 
- 
- 
- if test -n "$ac_tool_prefix"; then
-   # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
- set dummy ${ac_tool_prefix}strip; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_STRIP+set}" = set; then :
-+if ${ac_cv_prog_STRIP+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$STRIP"; then
-   ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -5764,29 +6348,29 @@ fi
- 
- fi
- if test -z "$ac_cv_prog_STRIP"; then
-   ac_ct_STRIP=$STRIP
-   # Extract the first word of "strip", so it can be a program name with args.
- set dummy strip; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
-+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$ac_ct_STRIP"; then
-   ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_ac_ct_STRIP="strip"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -5823,29 +6407,29 @@ test -z "$STRIP" && STRIP=:
- 
- 
- 
- if test -n "$ac_tool_prefix"; then
-   # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
- set dummy ${ac_tool_prefix}ranlib; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_RANLIB+set}" = set; then :
-+if ${ac_cv_prog_RANLIB+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$RANLIB"; then
-   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -5863,29 +6447,29 @@ fi
- 
- fi
- if test -z "$ac_cv_prog_RANLIB"; then
-   ac_ct_RANLIB=$RANLIB
-   # Extract the first word of "ranlib", so it can be a program name with args.
- set dummy ranlib; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
-+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$ac_ct_RANLIB"; then
-   ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_ac_ct_RANLIB="ranlib"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -5925,24 +6509,36 @@ test -z "$RANLIB" && RANLIB=:
- # Determine commands to create old-style static archives.
- old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
- old_postinstall_cmds='chmod 644 $oldlib'
- old_postuninstall_cmds=
- 
- if test -n "$RANLIB"; then
-   case $host_os in
-   openbsd*)
--    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
-+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-     ;;
-   *)
--    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
--    ;;
--  esac
--  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
--fi
-+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-+    ;;
-+  esac
-+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-+fi
-+
-+case $host_os in
-+  darwin*)
-+    lock_old_archive_extraction=yes ;;
-+  *)
-+    lock_old_archive_extraction=no ;;
-+esac
-+
-+
-+
-+
-+
- 
- 
- 
- 
- 
- 
- 
- 
-@@ -5980,17 +6576,17 @@ LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
- 
- # Allow CC to be a program name with arguments.
- compiler=$CC
- 
- 
- # Check for command to grab the raw symbol name followed by C symbol from nm.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
- $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
--if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then :
-+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
- 
- # These are sane defaults that work on at least a few old systems.
- # [They come from Ultrix.  What could be older than Ultrix?!! ;)]
- 
- # Character class describing NM global symbol codes.
- symcode='[BCDEGRST]'
-@@ -6041,18 +6637,18 @@ case `$NM -V 2>&1` in
- esac
- 
- # Transform an extracted symbol line into a proper C declaration.
- # Some systems (esp. on ia64) link data and code symbols differently,
- # so use this general approach.
- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
- 
- # Transform an extracted symbol line into symbol name and symbol address
--lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
--lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
- 
- # Handle CRLF in mingw tool chain
- opt_cr=
- case $build_os in
- mingw*)
-   opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-   ;;
- esac
-@@ -6066,28 +6662,30 @@ for ac_symprfx in "" "_"; do
-   # Write the raw and C identifiers.
-   if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-     # Fake it for dumpbin and say T for any non-static function
-     # and D for any global variable.
-     # Also find C++ and __fastcall symbols from MSVC++,
-     # which start with @ or ?.
-     lt_cv_sys_global_symbol_pipe="$AWK '"\
- "     {last_section=section; section=\$ 3};"\
-+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
- "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
- "     \$ 0!~/External *\|/{next};"\
- "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
- "     {if(hide[section]) next};"\
- "     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
- "     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
- "     s[1]~/^[@?]/{print s[1], s[1]; next};"\
- "     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
- "     ' prfx=^$ac_symprfx"
-   else
-     lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-   fi
-+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
- 
-   # Check to see that the pipe works correctly.
-   pipe_works=no
- 
-   rm -f conftest*
-   cat > conftest.$ac_ext <<_LT_EOF
- #ifdef __cplusplus
- extern "C" {
-@@ -6103,44 +6701,56 @@ int main(){nm_test_var='a';nm_test_func(
- 
-   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-   (eval $ac_compile) 2>&5
-   ac_status=$?
-   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-   test $ac_status = 0; }; then
-     # Now try to grab the symbols.
-     nlist=conftest.nm
--    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5
--  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
-+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
-+  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
-   ac_status=$?
-   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-   test $ac_status = 0; } && test -s "$nlist"; then
-       # Try sorting and uniquifying the output.
-       if sort "$nlist" | uniq > "$nlist"T; then
- 	mv -f "$nlist"T "$nlist"
-       else
- 	rm -f "$nlist"T
-       fi
- 
-       # Make sure that we snagged all the symbols we need.
-       if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
- 	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
- 	  cat <<_LT_EOF > conftest.$ac_ext
-+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-+/* DATA imports from DLLs on WIN32 con't be const, because runtime
-+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-+# define LT_DLSYM_CONST
-+#elif defined(__osf__)
-+/* This system does not cope well with relocations in const data.  */
-+# define LT_DLSYM_CONST
-+#else
-+# define LT_DLSYM_CONST const
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
- 
- _LT_EOF
- 	  # Now generate the symbol file.
- 	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
- 
- 	  cat <<_LT_EOF >> conftest.$ac_ext
- 
- /* The mapping between symbol names and symbols.  */
--const struct {
-+LT_DLSYM_CONST struct {
-   const char *name;
-   void       *address;
- }
- lt__PROGRAM__LTX_preloaded_symbols[] =
- {
-   { "@PROGRAM@", (void *) 0 },
- _LT_EOF
- 	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-@@ -6156,29 +6766,29 @@ static const void *lt_preloaded_setup() 
- #endif
- 
- #ifdef __cplusplus
- }
- #endif
- _LT_EOF
- 	  # Now try linking the two files.
- 	  mv conftest.$ac_objext conftstm.$ac_objext
--	  lt_save_LIBS="$LIBS"
--	  lt_save_CFLAGS="$CFLAGS"
-+	  lt_globsym_save_LIBS=$LIBS
-+	  lt_globsym_save_CFLAGS=$CFLAGS
- 	  LIBS="conftstm.$ac_objext"
- 	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
- 	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-   (eval $ac_link) 2>&5
-   ac_status=$?
-   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-   test $ac_status = 0; } && test -s conftest${ac_exeext}; then
- 	    pipe_works=yes
- 	  fi
--	  LIBS="$lt_save_LIBS"
--	  CFLAGS="$lt_save_CFLAGS"
-+	  LIBS=$lt_globsym_save_LIBS
-+	  CFLAGS=$lt_globsym_save_CFLAGS
- 	else
- 	  echo "cannot find nm_test_func in $nlist" >&5
- 	fi
-       else
- 	echo "cannot find nm_test_var in $nlist" >&5
-       fi
-     else
-       echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-@@ -6205,33 +6815,81 @@ fi
- if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
- $as_echo "failed" >&6; }
- else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
- $as_echo "ok" >&6; }
- fi
- 
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-+# Response file support.
-+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-+  nm_file_list_spec='@'
-+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-+  nm_file_list_spec='@'
-+fi
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-+$as_echo_n "checking for sysroot... " >&6; }
-+
-+# Check whether --with-sysroot was given.
-+if test "${with_sysroot+set}" = set; then :
-+  withval=$with_sysroot;
-+else
-+  with_sysroot=no
-+fi
-+
-+
-+lt_sysroot=
-+case ${with_sysroot} in #(
-+ yes)
-+   if test "$GCC" = yes; then
-+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-+   fi
-+   ;; #(
-+ /*)
-+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-+   ;; #(
-+ no|'')
-+   ;; #(
-+ *)
-+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
-+$as_echo "${with_sysroot}" >&6; }
-+   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-+   ;;
-+esac
-+
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-+$as_echo "${lt_sysroot:-no}" >&6; }
- 
- 
- 
- 
- 
- # Check whether --enable-libtool-lock was given.
- if test "${enable_libtool_lock+set}" = set; then :
-   enableval=$enable_libtool_lock;
-@@ -6258,17 +6916,17 @@ ia64-*-hpux*)
- 	HPUX_IA64_MODE="64"
- 	;;
-     esac
-   fi
-   rm -rf conftest*
-   ;;
- *-*-irix6*)
-   # Find out which ABI we are using.
--  echo '#line 6266 "configure"' > conftest.$ac_ext
-+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
-   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-   (eval $ac_compile) 2>&5
-   ac_status=$?
-   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-   test $ac_status = 0; }; then
-     if test "$lt_cv_prog_gnu_ld" = yes; then
-       case `/usr/bin/file conftest.$ac_objext` in
- 	*32-bit*)
-@@ -6358,17 +7016,17 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
-   ;;
- 
- *-*-sco3.2v5*)
-   # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-   SAVE_CFLAGS="$CFLAGS"
-   CFLAGS="$CFLAGS -belf"
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
- $as_echo_n "checking whether the C compiler needs -belf... " >&6; }
--if test "${lt_cv_cc_needs_belf+set}" = set; then :
-+if ${lt_cv_cc_needs_belf+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   ac_ext=c
- ac_cpp='$CPP $CPPFLAGS'
- ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
- ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
- 
-@@ -6399,64 +7057,194 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
- $as_echo "$lt_cv_cc_needs_belf" >&6; }
-   if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-     # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-     CFLAGS="$SAVE_CFLAGS"
-   fi
-   ;;
--sparc*-*solaris*)
-+*-*solaris*)
-   # Find out which ABI we are using.
-   echo 'int i;' > conftest.$ac_ext
-   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-   (eval $ac_compile) 2>&5
-   ac_status=$?
-   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-   test $ac_status = 0; }; then
-     case `/usr/bin/file conftest.o` in
-     *64-bit*)
-       case $lt_cv_prog_gnu_ld in
--      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-+      yes*)
-+        case $host in
-+        i?86-*-solaris*)
-+          LD="${LD-ld} -m elf_x86_64"
-+          ;;
-+        sparc*-*-solaris*)
-+          LD="${LD-ld} -m elf64_sparc"
-+          ;;
-+        esac
-+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-+          LD="${LD-ld}_sol2"
-+        fi
-+        ;;
-       *)
- 	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
- 	  LD="${LD-ld} -64"
- 	fi
- 	;;
-       esac
-       ;;
-     esac
-   fi
-   rm -rf conftest*
-   ;;
- esac
- 
- need_locks="$enable_libtool_lock"
- 
-+if test -n "$ac_tool_prefix"; then
-+  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  if test -n "$MANIFEST_TOOL"; then
-+  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+  IFS=$as_save_IFS
-+  test -z "$as_dir" && as_dir=.
-+    for ac_exec_ext in '' $ac_executable_extensions; do
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+    break 2
-+  fi
-+done
-+  done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-+if test -n "$MANIFEST_TOOL"; then
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-+$as_echo "$MANIFEST_TOOL" >&6; }
-+else
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+fi
-+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-+  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-+  # Extract the first word of "mt", so it can be a program name with args.
-+set dummy mt; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  if test -n "$ac_ct_MANIFEST_TOOL"; then
-+  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+  IFS=$as_save_IFS
-+  test -z "$as_dir" && as_dir=.
-+    for ac_exec_ext in '' $ac_executable_extensions; do
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+    break 2
-+  fi
-+done
-+  done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-+if test -n "$ac_ct_MANIFEST_TOOL"; then
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-+else
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+  if test "x$ac_ct_MANIFEST_TOOL" = x; then
-+    MANIFEST_TOOL=":"
-+  else
-+    case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-+  fi
-+else
-+  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-+fi
-+
-+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-+if ${lt_cv_path_mainfest_tool+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  lt_cv_path_mainfest_tool=no
-+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-+  cat conftest.err >&5
-+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-+    lt_cv_path_mainfest_tool=yes
-+  fi
-+  rm -f conftest*
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-+if test "x$lt_cv_path_mainfest_tool" != xyes; then
-+  MANIFEST_TOOL=:
-+fi
-+
-+
-+
-+
-+
- 
-   case $host_os in
-     rhapsody* | darwin*)
-     if test -n "$ac_tool_prefix"; then
-   # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
- set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_DSYMUTIL+set}" = set; then :
-+if ${ac_cv_prog_DSYMUTIL+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$DSYMUTIL"; then
-   ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -6474,29 +7262,29 @@ fi
- 
- fi
- if test -z "$ac_cv_prog_DSYMUTIL"; then
-   ac_ct_DSYMUTIL=$DSYMUTIL
-   # Extract the first word of "dsymutil", so it can be a program name with args.
- set dummy dsymutil; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then :
-+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$ac_ct_DSYMUTIL"; then
-   ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -6526,29 +7314,29 @@ else
-   DSYMUTIL="$ac_cv_prog_DSYMUTIL"
- fi
- 
-     if test -n "$ac_tool_prefix"; then
-   # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
- set dummy ${ac_tool_prefix}nmedit; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_NMEDIT+set}" = set; then :
-+if ${ac_cv_prog_NMEDIT+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$NMEDIT"; then
-   ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -6566,29 +7354,29 @@ fi
- 
- fi
- if test -z "$ac_cv_prog_NMEDIT"; then
-   ac_ct_NMEDIT=$NMEDIT
-   # Extract the first word of "nmedit", so it can be a program name with args.
- set dummy nmedit; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then :
-+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$ac_ct_NMEDIT"; then
-   ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_ac_ct_NMEDIT="nmedit"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -6618,29 +7406,29 @@ else
-   NMEDIT="$ac_cv_prog_NMEDIT"
- fi
- 
-     if test -n "$ac_tool_prefix"; then
-   # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
- set dummy ${ac_tool_prefix}lipo; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_LIPO+set}" = set; then :
-+if ${ac_cv_prog_LIPO+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$LIPO"; then
-   ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -6658,29 +7446,29 @@ fi
- 
- fi
- if test -z "$ac_cv_prog_LIPO"; then
-   ac_ct_LIPO=$LIPO
-   # Extract the first word of "lipo", so it can be a program name with args.
- set dummy lipo; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then :
-+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$ac_ct_LIPO"; then
-   ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_ac_ct_LIPO="lipo"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -6710,29 +7498,29 @@ else
-   LIPO="$ac_cv_prog_LIPO"
- fi
- 
-     if test -n "$ac_tool_prefix"; then
-   # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
- set dummy ${ac_tool_prefix}otool; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_OTOOL+set}" = set; then :
-+if ${ac_cv_prog_OTOOL+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$OTOOL"; then
-   ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -6750,29 +7538,29 @@ fi
- 
- fi
- if test -z "$ac_cv_prog_OTOOL"; then
-   ac_ct_OTOOL=$OTOOL
-   # Extract the first word of "otool", so it can be a program name with args.
- set dummy otool; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then :
-+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$ac_ct_OTOOL"; then
-   ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_ac_ct_OTOOL="otool"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -6802,29 +7590,29 @@ else
-   OTOOL="$ac_cv_prog_OTOOL"
- fi
- 
-     if test -n "$ac_tool_prefix"; then
-   # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
- set dummy ${ac_tool_prefix}otool64; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_OTOOL64+set}" = set; then :
-+if ${ac_cv_prog_OTOOL64+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$OTOOL64"; then
-   ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -6842,29 +7630,29 @@ fi
- 
- fi
- if test -z "$ac_cv_prog_OTOOL64"; then
-   ac_ct_OTOOL64=$OTOOL64
-   # Extract the first word of "otool64", so it can be a program name with args.
- set dummy otool64; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
--if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then :
-+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test -n "$ac_ct_OTOOL64"; then
-   ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     for ac_exec_ext in '' $ac_executable_extensions; do
--  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-     ac_cv_prog_ac_ct_OTOOL64="otool64"
-     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-     break 2
-   fi
- done
-   done
- IFS=$as_save_IFS
- 
-@@ -6917,46 +7705,53 @@ fi
- 
- 
- 
- 
- 
- 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
- $as_echo_n "checking for -single_module linker flag... " >&6; }
--if test "${lt_cv_apple_cc_single_mod+set}" = set; then :
-+if ${lt_cv_apple_cc_single_mod+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   lt_cv_apple_cc_single_mod=no
-       if test -z "${LT_MULTI_MODULE}"; then
- 	# By default we will add the -single_module flag. You can override
- 	# by either setting the environment variable LT_MULTI_MODULE
- 	# non-empty at configure time, or by adding -multi_module to the
- 	# link flags.
- 	rm -rf libconftest.dylib*
- 	echo "int foo(void){return 1;}" > conftest.c
- 	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
- -dynamiclib -Wl,-single_module conftest.c" >&5
- 	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
- 	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-         _lt_result=$?
--	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
-+	# If there is a non-empty error log, and "single_module"
-+	# appears in it, assume the flag caused a linker warning
-+        if test -s conftest.err && $GREP single_module conftest.err; then
-+	  cat conftest.err >&5
-+	# Otherwise, if the output was created with a 0 exit code from
-+	# the compiler, it worked.
-+	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
- 	  lt_cv_apple_cc_single_mod=yes
- 	else
- 	  cat conftest.err >&5
- 	fi
- 	rm -rf libconftest.dylib*
- 	rm -f conftest.*
-       fi
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
- $as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-+
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
- $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
--if test "${lt_cv_ld_exported_symbols_list+set}" = set; then :
-+if ${lt_cv_ld_exported_symbols_list+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   lt_cv_ld_exported_symbols_list=no
-       save_LDFLAGS=$LDFLAGS
-       echo "_main" > conftest.sym
-       LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
-@@ -6976,16 +7771,51 @@ else
- fi
- rm -f core conftest.err conftest.$ac_objext \
-     conftest$ac_exeext conftest.$ac_ext
- 	LDFLAGS="$save_LDFLAGS"
- 
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
- $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
-+
-+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-+$as_echo_n "checking for -force_load linker flag... " >&6; }
-+if ${lt_cv_ld_force_load+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  lt_cv_ld_force_load=no
-+      cat > conftest.c << _LT_EOF
-+int forced_loaded() { return 2;}
-+_LT_EOF
-+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
-+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
-+      echo "$AR cru libconftest.a conftest.o" >&5
-+      $AR cru libconftest.a conftest.o 2>&5
-+      echo "$RANLIB libconftest.a" >&5
-+      $RANLIB libconftest.a 2>&5
-+      cat > conftest.c << _LT_EOF
-+int main() { return 0;}
-+_LT_EOF
-+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
-+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-+      _lt_result=$?
-+      if test -s conftest.err && $GREP force_load conftest.err; then
-+	cat conftest.err >&5
-+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
-+	lt_cv_ld_force_load=yes
-+      else
-+	cat conftest.err >&5
-+      fi
-+        rm -f conftest.err libconftest.a conftest conftest.c
-+        rm -rf conftest.dSYM
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-+$as_echo "$lt_cv_ld_force_load" >&6; }
-     case $host_os in
-     rhapsody* | darwin1.[012])
-       _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-     darwin1.*)
-       _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-     darwin*) # darwin 5.x on
-       # if running on 10.5 or later, the deployment target defaults
-       # to the OS version, if on x86, and 10.4, the deployment
-@@ -7003,17 +7833,17 @@ fi
-     if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-       _lt_dar_single_mod='$single_module'
-     fi
-     if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-       _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-     else
-       _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-     fi
--    if test "$DSYMUTIL" != ":"; then
-+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
-       _lt_dsymutil='~$DSYMUTIL $lib || :'
-     else
-       _lt_dsymutil=
-     fi
-     ;;
-   esac
- 
- ac_ext=c
-@@ -7023,17 +7853,17 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
- $as_echo_n "checking how to run the C preprocessor... " >&6; }
- # On Suns, sometimes $CPP names a directory.
- if test -n "$CPP" && test -d "$CPP"; then
-   CPP=
- fi
- if test -z "$CPP"; then
--  if test "${ac_cv_prog_CPP+set}" = set; then :
-+  if ${ac_cv_prog_CPP+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-       # Double quotes because CPP needs to be expanded
-     for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-     do
-       ac_preproc_ok=false
- for ac_c_preproc_warn_flag in '' yes
- do
-@@ -7053,37 +7883,37 @@ do
- 		     Syntax error
- _ACEOF
- if ac_fn_c_try_cpp "$LINENO"; then :
- 
- else
-   # Broken: fails on valid input.
- continue
- fi
--rm -f conftest.err conftest.$ac_ext
-+rm -f conftest.err conftest.i conftest.$ac_ext
- 
-   # OK, works on sane cases.  Now check whether nonexistent headers
-   # can be detected and how.
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- #include <ac_nonexistent.h>
- _ACEOF
- if ac_fn_c_try_cpp "$LINENO"; then :
-   # Broken: success on invalid input.
- continue
- else
-   # Passes both tests.
- ac_preproc_ok=:
- break
- fi
--rm -f conftest.err conftest.$ac_ext
-+rm -f conftest.err conftest.i conftest.$ac_ext
- 
- done
- # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
--rm -f conftest.err conftest.$ac_ext
-+rm -f conftest.i conftest.err conftest.$ac_ext
- if $ac_preproc_ok; then :
-   break
- fi
- 
-     done
-     ac_cv_prog_CPP=$CPP
- 
- fi
-@@ -7112,56 +7942,56 @@ do
- 		     Syntax error
- _ACEOF
- if ac_fn_c_try_cpp "$LINENO"; then :
- 
- else
-   # Broken: fails on valid input.
- continue
- fi
--rm -f conftest.err conftest.$ac_ext
-+rm -f conftest.err conftest.i conftest.$ac_ext
- 
-   # OK, works on sane cases.  Now check whether nonexistent headers
-   # can be detected and how.
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- #include <ac_nonexistent.h>
- _ACEOF
- if ac_fn_c_try_cpp "$LINENO"; then :
-   # Broken: success on invalid input.
- continue
- else
-   # Passes both tests.
- ac_preproc_ok=:
- break
- fi
--rm -f conftest.err conftest.$ac_ext
-+rm -f conftest.err conftest.i conftest.$ac_ext
- 
- done
- # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
--rm -f conftest.err conftest.$ac_ext
-+rm -f conftest.i conftest.err conftest.$ac_ext
- if $ac_preproc_ok; then :
- 
- else
-   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
- $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
--as_fn_error "C preprocessor \"$CPP\" fails sanity check
--See \`config.log' for more details." "$LINENO" 5; }
-+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-+See \`config.log' for more details" "$LINENO" 5; }
- fi
- 
- ac_ext=c
- ac_cpp='$CPP $CPPFLAGS'
- ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
- ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
- 
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
- $as_echo_n "checking for ANSI C header files... " >&6; }
--if test "${ac_cv_header_stdc+set}" = set; then :
-+if ${ac_cv_header_stdc+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- #include <stdlib.h>
- #include <stdarg.h>
- #include <string.h>
- #include <float.h>
-@@ -7268,42 +8098,43 @@ fi
- 
- # On IRIX 5.3, sys/types and inttypes.h are conflicting.
- for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- 		  inttypes.h stdint.h unistd.h
- do :
-   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
- ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
- "
--eval as_val=\$$as_ac_Header
--   if test "x$as_val" = x""yes; then :
-+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-   cat >>confdefs.h <<_ACEOF
- #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
- _ACEOF
- 
- fi
- 
- done
- 
- 
- for ac_header in dlfcn.h
- do :
-   ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
- "
--if test "x$ac_cv_header_dlfcn_h" = x""yes; then :
-+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
-   cat >>confdefs.h <<_ACEOF
- #define HAVE_DLFCN_H 1
- _ACEOF
- 
- fi
- 
- done
- 
- 
- 
-+
-+
- # Set options
- 
- 
- 
-         enable_dlopen=no
- 
- 
-   enable_win32_dll=no
-@@ -7369,17 +8200,32 @@ fi
- 
- 
- 
- 
- 
- 
- # Check whether --with-pic was given.
- if test "${with_pic+set}" = set; then :
--  withval=$with_pic; pic_mode="$withval"
-+  withval=$with_pic; lt_p=${PACKAGE-default}
-+    case $withval in
-+    yes|no) pic_mode=$withval ;;
-+    *)
-+      pic_mode=default
-+      # Look at the argument we got.  We use all the common list separators.
-+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-+      for lt_pkg in $withval; do
-+	IFS="$lt_save_ifs"
-+	if test "X$lt_pkg" = "X$lt_p"; then
-+	  pic_mode=yes
-+	fi
-+      done
-+      IFS="$lt_save_ifs"
-+      ;;
-+    esac
- else
-   pic_mode=default
- fi
- 
- 
- test -z "$pic_mode" && pic_mode=default
- 
- 
-@@ -7446,16 +8292,21 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtoo
- 
- 
- 
- 
- 
- 
- 
- 
-+
-+
-+
-+
-+
- test -z "$LN_S" && LN_S="ln -s"
- 
- 
- 
- 
- 
- 
- 
-@@ -7467,17 +8318,17 @@ test -z "$LN_S" && LN_S="ln -s"
- 
- 
- if test -n "${ZSH_VERSION+set}" ; then
-    setopt NO_GLOB_SUBST
- fi
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
- $as_echo_n "checking for objdir... " >&6; }
--if test "${lt_cv_objdir+set}" = set; then :
-+if ${lt_cv_objdir+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   rm -f .libs 2>/dev/null
- mkdir .libs 2>/dev/null
- if test -d .libs; then
-   lt_cv_objdir=.libs
- else
-   # MS-DOS does not allow filenames that begin with a dot.
-@@ -7495,58 +8346,28 @@ objdir=$lt_cv_objdir
- 
- cat >>confdefs.h <<_ACEOF
- #define LT_OBJDIR "$lt_cv_objdir/"
- _ACEOF
- 
- 
- 
- 
--
--
--
--
--
--
--
--
--
--
--
--
--
- case $host_os in
- aix3*)
-   # AIX sometimes has problems with the GCC collect2 program.  For some
-   # reason, if we set the COLLECT_NAMES environment variable, the problems
-   # vanish in a puff of smoke.
-   if test "X${COLLECT_NAMES+set}" != Xset; then
-     COLLECT_NAMES=
-     export COLLECT_NAMES
-   fi
-   ;;
- esac
- 
--# Sed substitution that helps us do robust quoting.  It backslashifies
--# metacharacters that are still active within double-quoted strings.
--sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
--
--# Same as above, but do not quote variable references.
--double_quote_subst='s/\(["`\\]\)/\\\1/g'
--
--# Sed substitution to delay expansion of an escaped shell variable in a
--# double_quote_subst'ed string.
--delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
--
--# Sed substitution to delay expansion of an escaped single quote.
--delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
--
--# Sed substitution to avoid accidental globbing in evaled expressions
--no_glob_subst='s/\*/\\\*/g'
--
- # Global variables:
- ofile=libtool
- can_build_shared=yes
- 
- # All known linkers require a `.a' archive for static linking (except MSVC,
- # which needs '.lib').
- libext=a
- 
-@@ -7565,27 +8386,27 @@ test -z "$ac_objext" && ac_objext=o
- for cc_temp in $compiler""; do
-   case $cc_temp in
-     compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-     distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-     \-*) ;;
-     *) break;;
-   esac
- done
--cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
- 
- 
- # Only perform the check for file, if the check method requires it
- test -z "$MAGIC_CMD" && MAGIC_CMD=file
- case $deplibs_check_method in
- file_magic*)
-   if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
- $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
--if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
-+if ${lt_cv_path_MAGIC_CMD+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   case $MAGIC_CMD in
- [\\/*] |  ?:[\\/]*)
-   lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-   ;;
- *)
-   lt_save_MAGIC_CMD="$MAGIC_CMD"
-@@ -7641,17 +8462,17 @@ fi
- 
- 
- 
- 
- if test -z "$lt_cv_path_MAGIC_CMD"; then
-   if test -n "$ac_tool_prefix"; then
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
- $as_echo_n "checking for file... " >&6; }
--if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
-+if ${lt_cv_path_MAGIC_CMD+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   case $MAGIC_CMD in
- [\\/*] |  ?:[\\/]*)
-   lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-   ;;
- *)
-   lt_save_MAGIC_CMD="$MAGIC_CMD"
-@@ -7765,50 +8586,59 @@ eval "$ac_compile" 2>&1 >/dev/null | $SE
- 
- ac_outfile=conftest.$ac_objext
- echo "$lt_simple_link_test_code" >conftest.$ac_ext
- eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
- _lt_linker_boilerplate=`cat conftest.err`
- $RM -r conftest*
- 
- 
-+## CAVEAT EMPTOR:
-+## There is no encapsulation within the following macros, do not change
-+## the running order or otherwise move them around unless you know exactly
-+## what you are doing...
- if test -n "$compiler"; then
- 
- lt_prog_compiler_no_builtin_flag=
- 
- if test "$GCC" = yes; then
--  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
-+  case $cc_basename in
-+  nvcc*)
-+    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
-+  *)
-+    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
-+  esac
- 
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
- $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
--if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then :
-+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   lt_cv_prog_compiler_rtti_exceptions=no
-    ac_outfile=conftest.$ac_objext
-    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-    lt_compiler_flag="-fno-rtti -fno-exceptions"
-    # Insert the option either (1) after the last *FLAGS variable, or
-    # (2) before a word containing "conftest.", or (3) at the end.
-    # Note that $ac_compile itself does not contain backslashes and begins
-    # with a dollar sign (not a hyphen), so the echo should work correctly.
-    # The option is referenced via a variable to avoid confusing sed.
-    lt_compile=`echo "$ac_compile" | $SED \
-    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-    -e 's:$: $lt_compiler_flag:'`
--   (eval echo "\"\$as_me:7792: $lt_compile\"" >&5)
-+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-    (eval "$lt_compile" 2>conftest.err)
-    ac_status=$?
-    cat conftest.err >&5
--   echo "$as_me:7796: \$? = $ac_status" >&5
-+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-    if (exit $ac_status) && test -s "$ac_outfile"; then
-      # The compiler can only warn and ignore the option if not recognized
-      # So say no if there are warnings other than the usual output.
--     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-        lt_cv_prog_compiler_rtti_exceptions=yes
-      fi
-    fi
-    $RM conftest*
- 
- fi
-@@ -7827,18 +8657,16 @@ fi
- 
- 
- 
- 
-   lt_prog_compiler_wl=
- lt_prog_compiler_pic=
- lt_prog_compiler_static=
- 
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
--$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
- 
-   if test "$GCC" = yes; then
-     lt_prog_compiler_wl='-Wl,'
-     lt_prog_compiler_static='-static'
- 
-     case $host_os in
-       aix*)
-       # All AIX code is PIC.
-@@ -7876,16 +8704,22 @@ lt_prog_compiler_static=
-       ;;
- 
-     darwin* | rhapsody*)
-       # PIC is the default on this platform
-       # Common symbols not allowed in MH_DYLIB files
-       lt_prog_compiler_pic='-fno-common'
-       ;;
- 
-+    haiku*)
-+      # PIC is the default for Haiku.
-+      # The "-static" flag exists, but is broken.
-+      lt_prog_compiler_static=
-+      ;;
-+
-     hpux*)
-       # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-       # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-       # sets the default TLS model and affects inlining.
-       case $host_cpu in
-       hppa*64*)
- 	# +Z the default
- 	;;
-@@ -7918,16 +8752,25 @@ lt_prog_compiler_static=
- 	lt_prog_compiler_pic=-Kconform_pic
-       fi
-       ;;
- 
-     *)
-       lt_prog_compiler_pic='-fPIC'
-       ;;
-     esac
-+
-+    case $cc_basename in
-+    nvcc*) # Cuda Compiler Driver 2.2
-+      lt_prog_compiler_wl='-Xlinker '
-+      if test -n "$lt_prog_compiler_pic"; then
-+        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
-+      fi
-+      ;;
-+    esac
-   else
-     # PORTME Check for flag to pass linker flags through the system compiler.
-     case $host_os in
-     aix*)
-       lt_prog_compiler_wl='-Wl,'
-       if test "$host_cpu" = ia64; then
- 	# AIX 5 now supports IA64 processor
- 	lt_prog_compiler_static='-Bstatic'
-@@ -7959,17 +8802,17 @@ lt_prog_compiler_static=
-       ;;
- 
-     irix5* | irix6* | nonstopux*)
-       lt_prog_compiler_wl='-Wl,'
-       # PIC (with -KPIC) is the default.
-       lt_prog_compiler_static='-non_shared'
-       ;;
- 
--    linux* | k*bsd*-gnu)
-+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-       case $cc_basename in
-       # old Intel for x86_64 which still supported -KPIC.
-       ecc*)
- 	lt_prog_compiler_wl='-Wl,'
- 	lt_prog_compiler_pic='-KPIC'
- 	lt_prog_compiler_static='-static'
-         ;;
-       # icc used to be incompatible with GCC.
-@@ -7980,47 +8823,68 @@ lt_prog_compiler_static=
- 	lt_prog_compiler_static='-static'
-         ;;
-       # Lahey Fortran 8.1.
-       lf95*)
- 	lt_prog_compiler_wl='-Wl,'
- 	lt_prog_compiler_pic='--shared'
- 	lt_prog_compiler_static='--static'
- 	;;
--      pgcc* | pgf77* | pgf90* | pgf95*)
-+      nagfor*)
-+	# NAG Fortran compiler
-+	lt_prog_compiler_wl='-Wl,-Wl,,'
-+	lt_prog_compiler_pic='-PIC'
-+	lt_prog_compiler_static='-Bstatic'
-+	;;
-+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-         # Portland Group compilers (*not* the Pentium gcc compiler,
- 	# which looks to be a dead project)
- 	lt_prog_compiler_wl='-Wl,'
- 	lt_prog_compiler_pic='-fpic'
- 	lt_prog_compiler_static='-Bstatic'
-         ;;
-       ccc*)
-         lt_prog_compiler_wl='-Wl,'
-         # All Alpha code is PIC.
-         lt_prog_compiler_static='-non_shared'
-         ;;
--      xl*)
--	# IBM XL C 8.0/Fortran 10.1 on PPC
-+      xl* | bgxl* | bgf* | mpixl*)
-+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
- 	lt_prog_compiler_wl='-Wl,'
- 	lt_prog_compiler_pic='-qpic'
- 	lt_prog_compiler_static='-qstaticlink'
- 	;;
-       *)
- 	case `$CC -V 2>&1 | sed 5q` in
-+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-+	  lt_prog_compiler_pic='-KPIC'
-+	  lt_prog_compiler_static='-Bstatic'
-+	  lt_prog_compiler_wl=''
-+	  ;;
-+	*Sun\ F* | *Sun*Fortran*)
-+	  lt_prog_compiler_pic='-KPIC'
-+	  lt_prog_compiler_static='-Bstatic'
-+	  lt_prog_compiler_wl='-Qoption ld '
-+	  ;;
- 	*Sun\ C*)
- 	  # Sun C 5.9
- 	  lt_prog_compiler_pic='-KPIC'
- 	  lt_prog_compiler_static='-Bstatic'
- 	  lt_prog_compiler_wl='-Wl,'
- 	  ;;
--	*Sun\ F*)
--	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
--	  lt_prog_compiler_pic='-KPIC'
-+        *Intel*\ [CF]*Compiler*)
-+	  lt_prog_compiler_wl='-Wl,'
-+	  lt_prog_compiler_pic='-fPIC'
-+	  lt_prog_compiler_static='-static'
-+	  ;;
-+	*Portland\ Group*)
-+	  lt_prog_compiler_wl='-Wl,'
-+	  lt_prog_compiler_pic='-fpic'
- 	  lt_prog_compiler_static='-Bstatic'
--	  lt_prog_compiler_wl=''
- 	  ;;
- 	esac
- 	;;
-       esac
-       ;;
- 
-     newsos6)
-       lt_prog_compiler_pic='-KPIC'
-@@ -8042,17 +8906,17 @@ lt_prog_compiler_static=
-     rdos*)
-       lt_prog_compiler_static='-non_shared'
-       ;;
- 
-     solaris*)
-       lt_prog_compiler_pic='-KPIC'
-       lt_prog_compiler_static='-Bstatic'
-       case $cc_basename in
--      f77* | f90* | f95*)
-+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
- 	lt_prog_compiler_wl='-Qoption ld ';;
-       *)
- 	lt_prog_compiler_wl='-Wl,';;
-       esac
-       ;;
- 
-     sunos4*)
-       lt_prog_compiler_wl='-Qoption ld '
-@@ -8099,55 +8963,59 @@ case $host_os in
-   # For platforms which do not support PIC, -DPIC is meaningless:
-   *djgpp*)
-     lt_prog_compiler_pic=
-     ;;
-   *)
-     lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
-     ;;
- esac
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
--$as_echo "$lt_prog_compiler_pic" >&6; }
--
--
--
--
--
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-+if ${lt_cv_prog_compiler_pic+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
- 
- #
- # Check to make sure the PIC flag actually works.
- #
- if test -n "$lt_prog_compiler_pic"; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
- $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
--if test "${lt_cv_prog_compiler_pic_works+set}" = set; then :
-+if ${lt_cv_prog_compiler_pic_works+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   lt_cv_prog_compiler_pic_works=no
-    ac_outfile=conftest.$ac_objext
-    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-    lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
-    # Insert the option either (1) after the last *FLAGS variable, or
-    # (2) before a word containing "conftest.", or (3) at the end.
-    # Note that $ac_compile itself does not contain backslashes and begins
-    # with a dollar sign (not a hyphen), so the echo should work correctly.
-    # The option is referenced via a variable to avoid confusing sed.
-    lt_compile=`echo "$ac_compile" | $SED \
-    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-    -e 's:$: $lt_compiler_flag:'`
--   (eval echo "\"\$as_me:8131: $lt_compile\"" >&5)
-+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-    (eval "$lt_compile" 2>conftest.err)
-    ac_status=$?
-    cat conftest.err >&5
--   echo "$as_me:8135: \$? = $ac_status" >&5
-+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-    if (exit $ac_status) && test -s "$ac_outfile"; then
-      # The compiler can only warn and ignore the option if not recognized
-      # So say no if there are warnings other than the usual output.
--     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-        lt_cv_prog_compiler_pic_works=yes
-      fi
-    fi
-    $RM conftest*
- 
- fi
-@@ -8166,36 +9034,41 @@ fi
- 
- fi
- 
- 
- 
- 
- 
- 
-+
-+
-+
-+
-+
- #
- # Check to make sure the static flag actually works.
- #
- wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
- $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
--if test "${lt_cv_prog_compiler_static_works+set}" = set; then :
-+if ${lt_cv_prog_compiler_static_works+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   lt_cv_prog_compiler_static_works=no
-    save_LDFLAGS="$LDFLAGS"
-    LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-    echo "$lt_simple_link_test_code" > conftest.$ac_ext
-    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-      # The linker can only warn and ignore the option if not recognized
-      # So say no if there are warnings
-      if test -s conftest.err; then
-        # Append any errors to the config.log.
-        cat conftest.err 1>&5
--       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
-+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-        $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-        if diff conftest.exp conftest.er2 >/dev/null; then
-          lt_cv_prog_compiler_static_works=yes
-        fi
-      else
-        lt_cv_prog_compiler_static_works=yes
-      fi
-    fi
-@@ -8215,17 +9088,17 @@ fi
- 
- 
- 
- 
- 
- 
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
- $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
--if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
-+if ${lt_cv_prog_compiler_c_o+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   lt_cv_prog_compiler_c_o=no
-    $RM -r conftest 2>/dev/null
-    mkdir conftest
-    cd conftest
-    mkdir out
-    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-@@ -8234,26 +9107,26 @@ else
-    # Insert the option either (1) after the last *FLAGS variable, or
-    # (2) before a word containing "conftest.", or (3) at the end.
-    # Note that $ac_compile itself does not contain backslashes and begins
-    # with a dollar sign (not a hyphen), so the echo should work correctly.
-    lt_compile=`echo "$ac_compile" | $SED \
-    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-    -e 's:$: $lt_compiler_flag:'`
--   (eval echo "\"\$as_me:8236: $lt_compile\"" >&5)
-+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-    (eval "$lt_compile" 2>out/conftest.err)
-    ac_status=$?
-    cat out/conftest.err >&5
--   echo "$as_me:8240: \$? = $ac_status" >&5
-+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-    if (exit $ac_status) && test -s out/conftest2.$ac_objext
-    then
-      # The compiler can only warn and ignore the option if not recognized
-      # So say no if there are warnings
--     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-        lt_cv_prog_compiler_c_o=yes
-      fi
-    fi
-    chmod u+w . 2>&5
-    $RM conftest*
-    # SGI C++ compiler will create directory out/ii_files/ for
-@@ -8270,17 +9143,17 @@ fi
- 
- 
- 
- 
- 
- 
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
- $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
--if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
-+if ${lt_cv_prog_compiler_c_o+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   lt_cv_prog_compiler_c_o=no
-    $RM -r conftest 2>/dev/null
-    mkdir conftest
-    cd conftest
-    mkdir out
-    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-@@ -8289,26 +9162,26 @@ else
-    # Insert the option either (1) after the last *FLAGS variable, or
-    # (2) before a word containing "conftest.", or (3) at the end.
-    # Note that $ac_compile itself does not contain backslashes and begins
-    # with a dollar sign (not a hyphen), so the echo should work correctly.
-    lt_compile=`echo "$ac_compile" | $SED \
-    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-    -e 's:$: $lt_compiler_flag:'`
--   (eval echo "\"\$as_me:8291: $lt_compile\"" >&5)
-+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-    (eval "$lt_compile" 2>out/conftest.err)
-    ac_status=$?
-    cat out/conftest.err >&5
--   echo "$as_me:8295: \$? = $ac_status" >&5
-+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-    if (exit $ac_status) && test -s out/conftest2.$ac_objext
-    then
-      # The compiler can only warn and ignore the option if not recognized
-      # So say no if there are warnings
--     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-        lt_cv_prog_compiler_c_o=yes
-      fi
-    fi
-    chmod u+w . 2>&5
-    $RM conftest*
-    # SGI C++ compiler will create directory out/ii_files/ for
-@@ -8364,17 +9237,16 @@ fi
-   compiler_needs_object=no
-   enable_shared_with_static_runtimes=no
-   export_dynamic_flag_spec=
-   export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-   hardcode_automatic=no
-   hardcode_direct=no
-   hardcode_direct_absolute=no
-   hardcode_libdir_flag_spec=
--  hardcode_libdir_flag_spec_ld=
-   hardcode_libdir_separator=
-   hardcode_minus_L=no
-   hardcode_shlibpath_var=unsupported
-   inherit_rpath=no
-   link_all_deplibs=unknown
-   module_cmds=
-   module_expsym_cmds=
-   old_archive_from_new_cmds=
-@@ -8411,17 +9283,43 @@ fi
-     with_gnu_ld=yes
-     ;;
-   openbsd*)
-     with_gnu_ld=no
-     ;;
-   esac
- 
-   ld_shlibs=yes
-+
-+  # On some targets, GNU ld is compatible enough with the native linker
-+  # that we're better off using the native interface for both.
-+  lt_use_gnu_ld_interface=no
-   if test "$with_gnu_ld" = yes; then
-+    case $host_os in
-+      aix*)
-+	# The AIX port of GNU ld has always aspired to compatibility
-+	# with the native linker.  However, as the warning in the GNU ld
-+	# block says, versions before 2.19.5* couldn't really create working
-+	# shared libraries, regardless of the interface used.
-+	case `$LD -v 2>&1` in
-+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-+	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-+	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-+	  *)
-+	    lt_use_gnu_ld_interface=yes
-+	    ;;
-+	esac
-+	;;
-+      *)
-+	lt_use_gnu_ld_interface=yes
-+	;;
-+    esac
-+  fi
-+
-+  if test "$lt_use_gnu_ld_interface" = yes; then
-     # If archive_cmds runs LD, not CC, wlarc should be empty
-     wlarc='${wl}'
- 
-     # Set some defaults for GNU ld with shared library support. These
-     # are reset later if shared libraries are not supported. Putting them
-     # here allows them to be overridden if necessary.
-     runpath_var=LD_RUN_PATH
-     hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-@@ -8429,36 +9327,38 @@ fi
-     # ancient GNU ld didn't support --whole-archive et. al.
-     if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-       whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-     else
-       whole_archive_flag_spec=
-     fi
-     supports_anon_versioning=no
-     case `$LD -v 2>&1` in
-+      *GNU\ gold*) supports_anon_versioning=yes ;;
-       *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-       *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-       *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-       *\ 2.11.*) ;; # other 2.11 versions
-       *) supports_anon_versioning=yes ;;
-     esac
- 
-     # See if GNU ld supports shared libraries.
-     case $host_os in
-     aix[3-9]*)
-       # On AIX/PPC, the GNU linker is very broken
-       if test "$host_cpu" != ia64; then
- 	ld_shlibs=no
- 	cat <<_LT_EOF 1>&2
- 
--*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-+*** Warning: the GNU linker, at least up to release 2.19, is reported
- *** to be unable to reliably create shared libraries on AIX.
- *** Therefore, libtool is disabling shared libraries support.  If you
--*** really care for shared libraries, you may want to modify your PATH
--*** so that a non-GNU linker is found, and then restart.
-+*** really care for shared libraries, you may want to install binutils
-+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-+*** You will then need to restart the configuration process.
- 
- _LT_EOF
-       fi
-       ;;
- 
-     amigaos*)
-       case $host_cpu in
-       powerpc)
-@@ -8484,20 +9384,22 @@ fi
- 	ld_shlibs=no
-       fi
-       ;;
- 
-     cygwin* | mingw* | pw32* | cegcc*)
-       # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-       # as there is no search path for DLLs.
-       hardcode_libdir_flag_spec='-L$libdir'
-+      export_dynamic_flag_spec='${wl}--export-all-symbols'
-       allow_undefined_flag=unsupported
-       always_export_symbols=no
-       enable_shared_with_static_runtimes=yes
--      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-+      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
- 
-       if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-         archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- 	# If the export-symbols file already is a .def file (1st line
- 	# is EXPORTS), use it as is; otherwise, prepend...
- 	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- 	  cp $export_symbols $output_objdir/$soname.def;
- 	else
-@@ -8505,108 +9407,117 @@ fi
- 	  cat $export_symbols >> $output_objdir/$soname.def;
- 	fi~
- 	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-       else
- 	ld_shlibs=no
-       fi
-       ;;
- 
-+    haiku*)
-+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+      link_all_deplibs=yes
-+      ;;
-+
-     interix[3-9]*)
-       hardcode_direct=no
-       hardcode_shlibpath_var=no
-       hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-       export_dynamic_flag_spec='${wl}-E'
-       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-       # Instead, shared libraries are loaded at an image base (0x10000000 by
-       # default) and relocated if they conflict, which is a slow very memory
-       # consuming and fragmenting process.  To avoid this, we pick a random,
-       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       ;;
- 
--    gnu* | linux* | tpf* | k*bsd*-gnu)
-+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-       tmp_diet=no
-       if test "$host_os" = linux-dietlibc; then
- 	case $cc_basename in
- 	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
- 	esac
-       fi
-       if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
- 	 && test "$tmp_diet" = no
-       then
--	tmp_addflag=
-+	tmp_addflag=' $pic_flag'
- 	tmp_sharedflag='-shared'
- 	case $cc_basename,$host_cpu in
-         pgcc*)				# Portland Group C compiler
--	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- 	  tmp_addflag=' $pic_flag'
- 	  ;;
--	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
--	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-+	pgf77* | pgf90* | pgf95* | pgfortran*)
-+					# Portland Group f77 and f90 compilers
-+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- 	  tmp_addflag=' $pic_flag -Mnomain' ;;
- 	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
- 	  tmp_addflag=' -i_dynamic' ;;
- 	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
- 	  tmp_addflag=' -i_dynamic -nofor_main' ;;
- 	ifc* | ifort*)			# Intel Fortran compiler
- 	  tmp_addflag=' -nofor_main' ;;
- 	lf95*)				# Lahey Fortran 8.1
- 	  whole_archive_flag_spec=
- 	  tmp_sharedflag='--shared' ;;
--	xl[cC]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
-+	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
- 	  tmp_sharedflag='-qmkshrobj'
- 	  tmp_addflag= ;;
-+	nvcc*)	# Cuda Compiler Driver 2.2
-+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-+	  compiler_needs_object=yes
-+	  ;;
- 	esac
- 	case `$CC -V 2>&1 | sed 5q` in
- 	*Sun\ C*)			# Sun C 5.9
--	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-+	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- 	  compiler_needs_object=yes
- 	  tmp_sharedflag='-G' ;;
- 	*Sun\ F*)			# Sun Fortran 8.3
- 	  tmp_sharedflag='-G' ;;
- 	esac
- 	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- 
-         if test "x$supports_anon_versioning" = xyes; then
-           archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- 	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- 	    echo "local: *; };" >> $output_objdir/$libname.ver~
- 	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-         fi
- 
- 	case $cc_basename in
--	xlf*)
-+	xlf* | bgf* | bgxlf* | mpixlf*)
- 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
- 	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
--	  hardcode_libdir_flag_spec=
--	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
--	  archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-+	  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-+	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- 	  if test "x$supports_anon_versioning" = xyes; then
- 	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- 	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- 	      echo "local: *; };" >> $output_objdir/$libname.ver~
--	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-+	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
- 	  fi
- 	  ;;
- 	esac
-       else
-         ld_shlibs=no
-       fi
-       ;;
- 
-     netbsd*)
-       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- 	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- 	wlarc=
-       else
--	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-       fi
-       ;;
- 
-     solaris*)
-       if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
- 	ld_shlibs=no
- 	cat <<_LT_EOF 1>&2
- 
-@@ -8614,18 +9525,18 @@ fi
- *** create shared libraries on Solaris systems.  Therefore, libtool
- *** is disabling shared libraries support.  We urge you to upgrade GNU
- *** binutils to release 2.9.1 or newer.  Another option is to modify
- *** your PATH or compiler configuration so that the native linker is
- *** used, and then restart.
- 
- _LT_EOF
-       elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
--	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-       else
- 	ld_shlibs=no
-       fi
-       ;;
- 
-     sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-       case `$LD -v 2>&1` in
-         *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-@@ -8661,18 +9572,18 @@ fi
-       archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-       wlarc=
-       hardcode_direct=yes
-       hardcode_shlibpath_var=no
-       ;;
- 
-     *)
-       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
--	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-       else
- 	ld_shlibs=no
-       fi
-       ;;
-     esac
- 
-     if test "$ld_shlibs" = no; then
-       runpath_var=
-@@ -8702,18 +9613,20 @@ fi
- 	# On IA64, the linker does run time linking by default, so we don't
- 	# have to do anything special.
- 	aix_use_runtimelinking=no
- 	exp_sym_flag='-Bexport'
- 	no_entry_flag=""
-       else
- 	# If we're using GNU nm, then we don't want the "-C" option.
- 	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-+	# Also, AIX nm treats weak defined symbols like other global
-+	# defined symbols, whereas GNU nm marks them as "W".
- 	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
--	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- 	else
- 	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- 	fi
- 	aix_use_runtimelinking=no
- 
- 	# Test if we are trying to use run time linking or normal
- 	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
- 	# need to do runtime linking.
-@@ -8790,93 +9703,124 @@ fi
-       # underscore (_), so it is better to generate a list of symbols to export.
-       always_export_symbols=yes
-       if test "$aix_use_runtimelinking" = yes; then
- 	# Warning - without using the other runtime loading flags (-brtl),
- 	# -berok will link without error, but may produce a broken library.
- 	allow_undefined_flag='-berok'
-         # Determine the default libpath from the value encoded in an
-         # empty executable.
--        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+        if test "${lt_cv_aix_libpath+set}" = set; then
-+  aix_libpath=$lt_cv_aix_libpath
-+else
-+  if ${lt_cv_aix_libpath_+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- 
- int
- main ()
- {
- 
-   ;
-   return 0;
- }
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
- 
--lt_aix_libpath_sed='
--    /Import File Strings/,/^$/ {
--	/^0/ {
--	    s/^0  *\(.*\)$/\1/
--	    p
--	}
--    }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
--  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+  lt_aix_libpath_sed='
-+      /Import File Strings/,/^$/ {
-+	  /^0/ {
-+	      s/^0  *\([^ ]*\) *$/\1/
-+	      p
-+	  }
-+      }'
-+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+  # Check for a 64-bit object if we didn't find anything.
-+  if test -z "$lt_cv_aix_libpath_"; then
-+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+  fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
-     conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+  if test -z "$lt_cv_aix_libpath_"; then
-+    lt_cv_aix_libpath_="/usr/lib:/lib"
-+  fi
-+
-+fi
-+
-+  aix_libpath=$lt_cv_aix_libpath_
-+fi
- 
-         hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
--        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-       else
- 	if test "$host_cpu" = ia64; then
- 	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
- 	  allow_undefined_flag="-z nodefs"
- 	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
- 	else
- 	 # Determine the default libpath from the value encoded in an
- 	 # empty executable.
--	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+	 if test "${lt_cv_aix_libpath+set}" = set; then
-+  aix_libpath=$lt_cv_aix_libpath
-+else
-+  if ${lt_cv_aix_libpath_+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- 
- int
- main ()
- {
- 
-   ;
-   return 0;
- }
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
- 
--lt_aix_libpath_sed='
--    /Import File Strings/,/^$/ {
--	/^0/ {
--	    s/^0  *\(.*\)$/\1/
--	    p
--	}
--    }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
--  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi
-+  lt_aix_libpath_sed='
-+      /Import File Strings/,/^$/ {
-+	  /^0/ {
-+	      s/^0  *\([^ ]*\) *$/\1/
-+	      p
-+	  }
-+      }'
-+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+  # Check for a 64-bit object if we didn't find anything.
-+  if test -z "$lt_cv_aix_libpath_"; then
-+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+  fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
-     conftest$ac_exeext conftest.$ac_ext
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+  if test -z "$lt_cv_aix_libpath_"; then
-+    lt_cv_aix_libpath_="/usr/lib:/lib"
-+  fi
-+
-+fi
-+
-+  aix_libpath=$lt_cv_aix_libpath_
-+fi
- 
- 	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
- 	  # Warning - without using the other run time loading flags,
- 	  # -berok will link without error, but may produce a broken library.
- 	  no_undefined_flag=' ${wl}-bernotok'
- 	  allow_undefined_flag=' ${wl}-berok'
--	  # Exported symbols can be pulled into shared objects from archives
--	  whole_archive_flag_spec='$convenience'
-+	  if test "$with_gnu_ld" = yes; then
-+	    # We only use this code for GNU lds that support --whole-archive.
-+	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-+	  else
-+	    # Exported symbols can be pulled into shared objects from archives
-+	    whole_archive_flag_spec='$convenience'
-+	  fi
- 	  archive_cmds_need_lc=yes
- 	  # This is similar to how AIX traditionally builds its shared libraries.
- 	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
- 	fi
-       fi
-       ;;
- 
-     amigaos*)
-@@ -8898,48 +9842,97 @@ if test -z "$aix_libpath"; then aix_libp
-       export_dynamic_flag_spec=-rdynamic
-       ;;
- 
-     cygwin* | mingw* | pw32* | cegcc*)
-       # When not using gcc, we currently assume that we are using
-       # Microsoft Visual C++.
-       # hardcode_libdir_flag_spec is actually meaningless, as there is
-       # no search path for DLLs.
--      hardcode_libdir_flag_spec=' '
--      allow_undefined_flag=unsupported
--      # Tell ltmain to make .lib files, not .a files.
--      libext=lib
--      # Tell ltmain to make .dll files, not .so files.
--      shrext_cmds=".dll"
--      # FIXME: Setting linknames here is a bad hack.
--      archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
--      # The linker will automatically build a .lib file if we build a DLL.
--      old_archive_from_new_cmds='true'
--      # FIXME: Should let the user specify the lib program.
--      old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
--      fix_srcfile_path=''
--      enable_shared_with_static_runtimes=yes
-+      case $cc_basename in
-+      cl*)
-+	# Native MSVC
-+	hardcode_libdir_flag_spec=' '
-+	allow_undefined_flag=unsupported
-+	always_export_symbols=yes
-+	file_list_spec='@'
-+	# Tell ltmain to make .lib files, not .a files.
-+	libext=lib
-+	# Tell ltmain to make .dll files, not .so files.
-+	shrext_cmds=".dll"
-+	# FIXME: Setting linknames here is a bad hack.
-+	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-+	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-+	  else
-+	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-+	  fi~
-+	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-+	  linknames='
-+	# The linker will not automatically build a static lib if we build a DLL.
-+	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-+	enable_shared_with_static_runtimes=yes
-+	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-+	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-+	# Don't use ranlib
-+	old_postinstall_cmds='chmod 644 $oldlib'
-+	postlink_cmds='lt_outputfile="@OUTPUT@"~
-+	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-+	  case $lt_outputfile in
-+	    *.exe|*.EXE) ;;
-+	    *)
-+	      lt_outputfile="$lt_outputfile.exe"
-+	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-+	      ;;
-+	  esac~
-+	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-+	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-+	    $RM "$lt_outputfile.manifest";
-+	  fi'
-+	;;
-+      *)
-+	# Assume MSVC wrapper
-+	hardcode_libdir_flag_spec=' '
-+	allow_undefined_flag=unsupported
-+	# Tell ltmain to make .lib files, not .a files.
-+	libext=lib
-+	# Tell ltmain to make .dll files, not .so files.
-+	shrext_cmds=".dll"
-+	# FIXME: Setting linknames here is a bad hack.
-+	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-+	# The linker will automatically build a .lib file if we build a DLL.
-+	old_archive_from_new_cmds='true'
-+	# FIXME: Should let the user specify the lib program.
-+	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-+	enable_shared_with_static_runtimes=yes
-+	;;
-+      esac
-       ;;
- 
-     darwin* | rhapsody*)
- 
- 
-   archive_cmds_need_lc=no
-   hardcode_direct=no
-   hardcode_automatic=yes
-   hardcode_shlibpath_var=unsupported
--  whole_archive_flag_spec=''
-+  if test "$lt_cv_ld_force_load" = "yes"; then
-+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-+
-+  else
-+    whole_archive_flag_spec=''
-+  fi
-   link_all_deplibs=yes
-   allow_undefined_flag="$_lt_dar_allow_undefined"
-   case $cc_basename in
-      ifort*) _lt_dar_can_shared=yes ;;
-      *) _lt_dar_can_shared=$GCC ;;
-   esac
-   if test "$_lt_dar_can_shared" = "yes"; then
--    output_verbose_link_cmd=echo
-+    output_verbose_link_cmd=func_echo_all
-     archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-     module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-     archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-     module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
- 
-   else
-   ld_shlibs=no
-   fi
-@@ -8947,105 +9940,139 @@ if test -z "$aix_libpath"; then aix_libp
-       ;;
- 
-     dgux*)
-       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-       hardcode_libdir_flag_spec='-L$libdir'
-       hardcode_shlibpath_var=no
-       ;;
- 
--    freebsd1*)
--      ld_shlibs=no
--      ;;
--
-     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-     # support.  Future versions do this automatically, but an explicit c++rt0.o
-     # does not break anything, and helps significantly (at the cost of a little
-     # extra space).
-     freebsd2.2*)
-       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-       hardcode_libdir_flag_spec='-R$libdir'
-       hardcode_direct=yes
-       hardcode_shlibpath_var=no
-       ;;
- 
-     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
--    freebsd2*)
-+    freebsd2.*)
-       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-       hardcode_direct=yes
-       hardcode_minus_L=yes
-       hardcode_shlibpath_var=no
-       ;;
- 
-     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-     freebsd* | dragonfly*)
--      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-       hardcode_libdir_flag_spec='-R$libdir'
-       hardcode_direct=yes
-       hardcode_shlibpath_var=no
-       ;;
- 
-     hpux9*)
-       if test "$GCC" = yes; then
--	archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-       else
- 	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-       fi
-       hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-       hardcode_libdir_separator=:
-       hardcode_direct=yes
- 
-       # hardcode_minus_L: Not really in the search PATH,
-       # but as the default location of the library.
-       hardcode_minus_L=yes
-       export_dynamic_flag_spec='${wl}-E'
-       ;;
- 
-     hpux10*)
--      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
--	archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-+	archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-       else
- 	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-       fi
-       if test "$with_gnu_ld" = no; then
- 	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
--	hardcode_libdir_flag_spec_ld='+b $libdir'
- 	hardcode_libdir_separator=:
- 	hardcode_direct=yes
- 	hardcode_direct_absolute=yes
- 	export_dynamic_flag_spec='${wl}-E'
- 	# hardcode_minus_L: Not really in the search PATH,
- 	# but as the default location of the library.
- 	hardcode_minus_L=yes
-       fi
-       ;;
- 
-     hpux11*)
--      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
- 	case $host_cpu in
- 	hppa*64*)
- 	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- 	  ;;
- 	ia64*)
--	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-+	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- 	  ;;
- 	*)
--	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- 	  ;;
- 	esac
-       else
- 	case $host_cpu in
- 	hppa*64*)
- 	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- 	  ;;
- 	ia64*)
- 	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- 	  ;;
- 	*)
--	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+
-+	  # Older versions of the 11.00 compiler do not understand -b yet
-+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-+$as_echo_n "checking if $CC understands -b... " >&6; }
-+if ${lt_cv_prog_compiler__b+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  lt_cv_prog_compiler__b=no
-+   save_LDFLAGS="$LDFLAGS"
-+   LDFLAGS="$LDFLAGS -b"
-+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-+     # The linker can only warn and ignore the option if not recognized
-+     # So say no if there are warnings
-+     if test -s conftest.err; then
-+       # Append any errors to the config.log.
-+       cat conftest.err 1>&5
-+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-+       if diff conftest.exp conftest.er2 >/dev/null; then
-+         lt_cv_prog_compiler__b=yes
-+       fi
-+     else
-+       lt_cv_prog_compiler__b=yes
-+     fi
-+   fi
-+   $RM -r conftest*
-+   LDFLAGS="$save_LDFLAGS"
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-+$as_echo "$lt_cv_prog_compiler__b" >&6; }
-+
-+if test x"$lt_cv_prog_compiler__b" = xyes; then
-+    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+else
-+    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-+fi
-+
- 	  ;;
- 	esac
-       fi
-       if test "$with_gnu_ld" = no; then
- 	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- 	hardcode_libdir_separator=:
- 
- 	case $host_cpu in
-@@ -9063,36 +10090,49 @@ if test -z "$aix_libpath"; then aix_libp
- 	  hardcode_minus_L=yes
- 	  ;;
- 	esac
-       fi
-       ;;
- 
-     irix5* | irix6* | nonstopux*)
-       if test "$GCC" = yes; then
--	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- 	# Try to use the -exported_symbol ld option, if it does not
- 	# work, assume that -exports_file does not work either and
- 	# implicitly export all symbols.
--        save_LDFLAGS="$LDFLAGS"
--        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
--        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
--/* end confdefs.h.  */
--int foo(void) {}
-+	# This should be the same for all languages, so no per-tag cache variable.
-+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-+if ${lt_cv_irix_exported_symbol+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  save_LDFLAGS="$LDFLAGS"
-+	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-+	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+int foo (void) { return 0; }
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
--  archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
--
-+  lt_cv_irix_exported_symbol=yes
-+else
-+  lt_cv_irix_exported_symbol=no
- fi
- rm -f core conftest.err conftest.$ac_objext \
-     conftest$ac_exeext conftest.$ac_ext
--        LDFLAGS="$save_LDFLAGS"
-+           LDFLAGS="$save_LDFLAGS"
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-+	if test "$lt_cv_irix_exported_symbol" = yes; then
-+          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-+	fi
-       else
--	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
--	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-       fi
-       archive_cmds_need_lc='no'
-       hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-       hardcode_libdir_separator=:
-       inherit_rpath=yes
-       link_all_deplibs=yes
-       ;;
- 
-@@ -9144,58 +10184,58 @@ rm -f core conftest.err conftest.$ac_obj
- 	ld_shlibs=no
-       fi
-       ;;
- 
-     os2*)
-       hardcode_libdir_flag_spec='-L$libdir'
-       hardcode_minus_L=yes
-       allow_undefined_flag=unsupported
--      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-+      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-       old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-       ;;
- 
-     osf3*)
-       if test "$GCC" = yes; then
- 	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
--	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-       else
- 	allow_undefined_flag=' -expect_unresolved \*'
--	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-       fi
-       archive_cmds_need_lc='no'
-       hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-       hardcode_libdir_separator=:
-       ;;
- 
-     osf4* | osf5*)	# as osf3* with the addition of -msym flag
-       if test "$GCC" = yes; then
- 	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
--	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+	archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- 	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-       else
- 	allow_undefined_flag=' -expect_unresolved \*'
--	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- 	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
--	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-+	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
- 
- 	# Both c and cxx compiler support -rpath directly
- 	hardcode_libdir_flag_spec='-rpath $libdir'
-       fi
-       archive_cmds_need_lc='no'
-       hardcode_libdir_separator=:
-       ;;
- 
-     solaris*)
-       no_undefined_flag=' -z defs'
-       if test "$GCC" = yes; then
- 	wlarc='${wl}'
--	archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+	archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- 	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
--	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-+	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-       else
- 	case `$CC -V 2>&1` in
- 	*"Compilers 5.0"*)
- 	  wlarc=''
- 	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
- 	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- 	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
- 	  ;;
-@@ -9373,54 +10413,60 @@ x|xyes)
-       # FIXME: we may have to deal with multi-command sequences.
-       ;;
-     '$CC '*)
-       # Test whether the compiler implicitly links with -lc since on some
-       # systems, -lgcc has to come before -lc. If gcc already passes -lc
-       # to ld, don't add -lc before -lgcc.
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
- $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
--      $RM conftest*
--      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
--
--      if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-+if ${lt_cv_archive_cmds_need_lc+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  $RM conftest*
-+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-+
-+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-   (eval $ac_compile) 2>&5
-   ac_status=$?
-   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-   test $ac_status = 0; } 2>conftest.err; then
--        soname=conftest
--        lib=conftest
--        libobjs=conftest.$ac_objext
--        deplibs=
--        wl=$lt_prog_compiler_wl
--	pic_flag=$lt_prog_compiler_pic
--        compiler_flags=-v
--        linker_flags=-v
--        verstring=
--        output_objdir=.
--        libname=conftest
--        lt_save_allow_undefined_flag=$allow_undefined_flag
--        allow_undefined_flag=
--        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-+	  soname=conftest
-+	  lib=conftest
-+	  libobjs=conftest.$ac_objext
-+	  deplibs=
-+	  wl=$lt_prog_compiler_wl
-+	  pic_flag=$lt_prog_compiler_pic
-+	  compiler_flags=-v
-+	  linker_flags=-v
-+	  verstring=
-+	  output_objdir=.
-+	  libname=conftest
-+	  lt_save_allow_undefined_flag=$allow_undefined_flag
-+	  allow_undefined_flag=
-+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-   (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-   ac_status=$?
-   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-   test $ac_status = 0; }
--        then
--	  archive_cmds_need_lc=no
--        else
--	  archive_cmds_need_lc=yes
--        fi
--        allow_undefined_flag=$lt_save_allow_undefined_flag
--      else
--        cat conftest.err 1>&5
--      fi
--      $RM conftest*
--      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5
--$as_echo "$archive_cmds_need_lc" >&6; }
-+	  then
-+	    lt_cv_archive_cmds_need_lc=no
-+	  else
-+	    lt_cv_archive_cmds_need_lc=yes
-+	  fi
-+	  allow_undefined_flag=$lt_save_allow_undefined_flag
-+	else
-+	  cat conftest.err 1>&5
-+	fi
-+	$RM conftest*
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-       ;;
-     esac
-   fi
-   ;;
- esac
- 
- 
- 
-@@ -9568,52 +10614,54 @@ esac
- 
- 
- 
- 
- 
- 
- 
- 
--
--
--
--
--
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
- $as_echo_n "checking dynamic linker characteristics... " >&6; }
- 
- if test "$GCC" = yes; then
-   case $host_os in
-     darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-     *) lt_awk_arg="/^libraries:/" ;;
-   esac
--  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
--  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
-+  case $host_os in
-+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
-+    *) lt_sed_strip_eq="s,=/,/,g" ;;
-+  esac
-+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-+  case $lt_search_path_spec in
-+  *\;*)
-     # if the path contains ";" then we assume it to be the separator
-     # otherwise default to the standard path separator (i.e. ":") - it is
-     # assumed that no part of a normal pathname contains ";" but that should
-     # okay in the real world where ";" in dirpaths is itself problematic.
--    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
--  else
--    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
--  fi
-+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-+    ;;
-+  *)
-+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-+    ;;
-+  esac
-   # Ok, now we have the path, separated by spaces, we can step through it
-   # and add multilib dir if necessary.
-   lt_tmp_lt_search_path_spec=
-   lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-   for lt_sys_path in $lt_search_path_spec; do
-     if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-     else
-       test -d "$lt_sys_path" && \
- 	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-     fi
-   done
--  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
-+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
- BEGIN {RS=" "; FS="/|\n";} {
-   lt_foo="";
-   lt_count=0;
-   for (lt_i = NF; lt_i > 0; lt_i--) {
-     if ($lt_i != "" && $lt_i != ".") {
-       if ($lt_i == "..") {
-         lt_count++;
-       } else {
-@@ -9623,17 +10671,23 @@ BEGIN {RS=" "; FS="/|\n";} {
-           lt_count--;
-         }
-       }
-     }
-   }
-   if (lt_foo != "") { lt_freq[lt_foo]++; }
-   if (lt_freq[lt_foo] == 1) { print lt_foo; }
- }'`
--  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
-+  # AWK program above erroneously prepends '/' to C:/dos/paths
-+  # for these hosts.
-+  case $host_os in
-+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-+      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
-+  esac
-+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
- else
-   sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
- fi
- library_names_spec=
- libname_spec='lib$name'
- soname_spec=
- shrext_cmds=".so"
- postinstall_cmds=
-@@ -9649,26 +10703,26 @@ need_lib_prefix=unknown
- hardcode_into_libs=no
- 
- # when you set need_version to no, make sure it does not cause -set_version
- # flags to be left without arguments
- need_version=unknown
- 
- case $host_os in
- aix3*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-   shlibpath_var=LIBPATH
- 
-   # AIX 3 has no versioning support, so we append a major version to the name.
-   soname_spec='${libname}${release}${shared_ext}$major'
-   ;;
- 
- aix[4-9]*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_lib_prefix=no
-   need_version=no
-   hardcode_into_libs=yes
-   if test "$host_cpu" = ia64; then
-     # AIX 5 supports IA64
-     library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-     shlibpath_var=LD_LIBRARY_PATH
-   else
-@@ -9711,29 +10765,29 @@ amigaos*)
-   powerpc)
-     # Since July 2007 AmigaOS4 officially supports .so libraries.
-     # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-     ;;
-   m68k)
-     library_names_spec='$libname.ixlibrary $libname.a'
-     # Create ${libname}_ixlibrary.a entries in /sys/libs.
--    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-     ;;
-   esac
-   ;;
- 
- beos*)
-   library_names_spec='${libname}${shared_ext}'
-   dynamic_linker="$host_os ld.so"
-   shlibpath_var=LIBRARY_PATH
-   ;;
- 
- bsdi[45]*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_version=no
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-   shlibpath_var=LD_LIBRARY_PATH
-   sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-   sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-   # the default ld.so.conf also contains /usr/contrib/lib and
-@@ -9742,18 +10796,19 @@ bsdi[45]*)
-   ;;
- 
- cygwin* | mingw* | pw32* | cegcc*)
-   version_type=windows
-   shrext_cmds=".dll"
-   need_version=no
-   need_lib_prefix=no
- 
--  case $GCC,$host_os in
--  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-+  case $GCC,$cc_basename in
-+  yes,*)
-+    # gcc
-     library_names_spec='$libname.dll.a'
-     # DLL is installed to $(libdir)/../bin by postinstall_cmds
-     postinstall_cmds='base_file=`basename \${file}`~
-       dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-       dldir=$destdir/`dirname \$dlpath`~
-       test -d \$dldir || mkdir -p \$dldir~
-       $install_prog $dir/$dlname \$dldir/$dlname~
-       chmod a+x \$dldir/$dlname~
-@@ -9764,46 +10819,93 @@ cygwin* | mingw* | pw32* | cegcc*)
-       dlpath=$dir/\$dldll~
-        $RM \$dlpath'
-     shlibpath_overrides_runpath=yes
- 
-     case $host_os in
-     cygwin*)
-       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-       soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
--      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-+
-+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
-       ;;
-     mingw* | cegcc*)
-       # MinGW DLLs use traditional 'lib' prefix
-       soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
--      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
--      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
--        # It is most probably a Windows format PATH printed by
--        # mingw gcc, but we are running on Cygwin. Gcc prints its search
--        # path with ; separators, and with drive letters. We can handle the
--        # drive letters (cygwin fileutils understands them), so leave them,
--        # especially as we might pass files found there to a mingw objdump,
--        # which wouldn't understand a cygwinified path. Ahh.
--        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
--      else
--        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
--      fi
-       ;;
-     pw32*)
-       # pw32 DLLs use 'pw' prefix rather than 'lib'
-       library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-       ;;
-     esac
-+    dynamic_linker='Win32 ld.exe'
-+    ;;
-+
-+  *,cl*)
-+    # Native MSVC
-+    libname_spec='$name'
-+    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-+    library_names_spec='${libname}.dll.lib'
-+
-+    case $build_os in
-+    mingw*)
-+      sys_lib_search_path_spec=
-+      lt_save_ifs=$IFS
-+      IFS=';'
-+      for lt_path in $LIB
-+      do
-+        IFS=$lt_save_ifs
-+        # Let DOS variable expansion print the short 8.3 style file name.
-+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-+      done
-+      IFS=$lt_save_ifs
-+      # Convert to MSYS style.
-+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-+      ;;
-+    cygwin*)
-+      # Convert to unix form, then to dos form, then back to unix form
-+      # but this time dos style (no spaces!) so that the unix form looks
-+      # like /cygdrive/c/PROGRA~1:/cygdr...
-+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+      ;;
-+    *)
-+      sys_lib_search_path_spec="$LIB"
-+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-+        # It is most probably a Windows format PATH.
-+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+      else
-+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+      fi
-+      # FIXME: find the short name or the path components, as spaces are
-+      # common. (e.g. "Program Files" -> "PROGRA~1")
-+      ;;
-+    esac
-+
-+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+    postinstall_cmds='base_file=`basename \${file}`~
-+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-+      dldir=$destdir/`dirname \$dlpath`~
-+      test -d \$dldir || mkdir -p \$dldir~
-+      $install_prog $dir/$dlname \$dldir/$dlname'
-+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+      dlpath=$dir/\$dldll~
-+       $RM \$dlpath'
-+    shlibpath_overrides_runpath=yes
-+    dynamic_linker='Win32 link.exe'
-     ;;
- 
-   *)
-+    # Assume MSVC wrapper
-     library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
--    ;;
--  esac
--  dynamic_linker='Win32 ld.exe'
-+    dynamic_linker='Win32 ld.exe'
-+    ;;
-+  esac
-   # FIXME: first we should search . and the directory the executable is in
-   shlibpath_var=PATH
-   ;;
- 
- darwin* | rhapsody*)
-   dynamic_linker="$host_os dyld"
-   version_type=darwin
-   need_lib_prefix=no
-@@ -9814,36 +10916,32 @@ darwin* | rhapsody*)
-   shlibpath_var=DYLD_LIBRARY_PATH
-   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
- 
-   sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
-   sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-   ;;
- 
- dgux*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_lib_prefix=no
-   need_version=no
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   shlibpath_var=LD_LIBRARY_PATH
-   ;;
- 
--freebsd1*)
--  dynamic_linker=no
--  ;;
--
- freebsd* | dragonfly*)
-   # DragonFly does not have aout.  When/if they implement a new
-   # versioning mechanism, adjust this.
-   if test -x /usr/bin/objformat; then
-     objformat=`/usr/bin/objformat`
-   else
-     case $host_os in
--    freebsd[123]*) objformat=aout ;;
-+    freebsd[23].*) objformat=aout ;;
-     *) objformat=elf ;;
-     esac
-   fi
-   version_type=freebsd-$objformat
-   case $version_type in
-     freebsd-elf*)
-       library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-       need_version=no
-@@ -9851,17 +10949,17 @@ freebsd* | dragonfly*)
-       ;;
-     freebsd-*)
-       library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-       need_version=yes
-       ;;
-   esac
-   shlibpath_var=LD_LIBRARY_PATH
-   case $host_os in
--  freebsd2*)
-+  freebsd2.*)
-     shlibpath_overrides_runpath=yes
-     ;;
-   freebsd3.[01]* | freebsdelf3.[01]*)
-     shlibpath_overrides_runpath=yes
-     hardcode_into_libs=yes
-     ;;
-   freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-   freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-@@ -9871,22 +10969,36 @@ freebsd* | dragonfly*)
-   *) # from 4.6 on, and DragonFly
-     shlibpath_overrides_runpath=yes
-     hardcode_into_libs=yes
-     ;;
-   esac
-   ;;
- 
- gnu*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_lib_prefix=no
-   need_version=no
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   shlibpath_var=LD_LIBRARY_PATH
-+  shlibpath_overrides_runpath=no
-+  hardcode_into_libs=yes
-+  ;;
-+
-+haiku*)
-+  version_type=linux # correct to gnu/linux during the next big refactor
-+  need_lib_prefix=no
-+  need_version=no
-+  dynamic_linker="$host_os runtime_loader"
-+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-+  soname_spec='${libname}${release}${shared_ext}$major'
-+  shlibpath_var=LIBRARY_PATH
-+  shlibpath_overrides_runpath=yes
-+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-   hardcode_into_libs=yes
-   ;;
- 
- hpux9* | hpux10* | hpux11*)
-   # Give a soname corresponding to the major version so that dld.sl refuses to
-   # link against other versions.
-   version_type=sunos
-   need_lib_prefix=no
-@@ -9922,38 +11034,40 @@ hpux9* | hpux10* | hpux11*)
-     shrext_cmds='.sl'
-     dynamic_linker="$host_os dld.sl"
-     shlibpath_var=SHLIB_PATH
-     shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-     soname_spec='${libname}${release}${shared_ext}$major'
-     ;;
-   esac
--  # HP-UX runs *really* slowly unless shared libraries are mode 555.
-+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-   postinstall_cmds='chmod 555 $lib'
-+  # or fails outright, so override atomically:
-+  install_override_mode=555
-   ;;
- 
- interix[3-9]*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_lib_prefix=no
-   need_version=no
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-   shlibpath_var=LD_LIBRARY_PATH
-   shlibpath_overrides_runpath=no
-   hardcode_into_libs=yes
-   ;;
- 
- irix5* | irix6* | nonstopux*)
-   case $host_os in
-     nonstopux*) version_type=nonstopux ;;
-     *)
- 	if test "$lt_cv_prog_gnu_ld" = yes; then
--		version_type=linux
-+		version_type=linux # correct to gnu/linux during the next big refactor
- 	else
- 		version_type=irix
- 	fi ;;
-   esac
-   need_lib_prefix=no
-   need_version=no
-   soname_spec='${libname}${release}${shared_ext}$major'
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-@@ -9980,64 +11094,74 @@ irix5* | irix6* | nonstopux*)
-   hardcode_into_libs=yes
-   ;;
- 
- # No shared lib support for Linux oldld, aout, or coff.
- linux*oldld* | linux*aout* | linux*coff*)
-   dynamic_linker=no
-   ;;
- 
--# This must be Linux ELF.
--linux* | k*bsd*-gnu)
--  version_type=linux
-+# This must be glibc/ELF.
-+linux* | k*bsd*-gnu | kopensolaris*-gnu)
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_lib_prefix=no
-   need_version=no
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-   shlibpath_var=LD_LIBRARY_PATH
-   shlibpath_overrides_runpath=no
-+
-   # Some binutils ld are patched to set DT_RUNPATH
--  save_LDFLAGS=$LDFLAGS
--  save_libdir=$libdir
--  eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
--       LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
--  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  lt_cv_shlibpath_overrides_runpath=no
-+    save_LDFLAGS=$LDFLAGS
-+    save_libdir=$libdir
-+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
-+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- 
- int
- main ()
- {
- 
-   ;
-   return 0;
- }
- _ACEOF
- if ac_fn_c_try_link "$LINENO"; then :
-   if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
--  shlibpath_overrides_runpath=yes
-+  lt_cv_shlibpath_overrides_runpath=yes
- fi
- fi
- rm -f core conftest.err conftest.$ac_objext \
-     conftest$ac_exeext conftest.$ac_ext
--  LDFLAGS=$save_LDFLAGS
--  libdir=$save_libdir
-+    LDFLAGS=$save_LDFLAGS
-+    libdir=$save_libdir
-+
-+fi
-+
-+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
- 
-   # This implies no fast_install, which is unacceptable.
-   # Some rework will be needed to allow for fast_install
-   # before this can be enabled.
-   hardcode_into_libs=yes
- 
-   # Add ABI-specific directories to the system library path.
-   sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
- 
-   # Append ld.so.conf contents to the search path
-   if test -f /etc/ld.so.conf; then
--    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-     sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
-+
-   fi
- 
-   # We used to test for /lib/ld.so.1 and disable shared libraries on
-   # powerpc, because MkLinux only supported shared libraries with the
-   # GNU dynamic linker.  Since this was broken with cross compilers,
-   # most powerpc-linux boxes support dynamic linking these days and
-   # people can always --disable-shared, the test was removed, and we
-   # assume the GNU/Linux dynamic linker is in use.
-@@ -10058,17 +11182,17 @@ netbsd*)
-     dynamic_linker='NetBSD ld.elf_so'
-   fi
-   shlibpath_var=LD_LIBRARY_PATH
-   shlibpath_overrides_runpath=yes
-   hardcode_into_libs=yes
-   ;;
- 
- newsos6)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-   shlibpath_var=LD_LIBRARY_PATH
-   shlibpath_overrides_runpath=yes
-   ;;
- 
- *nto* | *qnx*)
-   version_type=qnx
-   need_lib_prefix=no
-@@ -10127,17 +11251,17 @@ osf3* | osf4* | osf5*)
-   sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-   ;;
- 
- rdos*)
-   dynamic_linker=no
-   ;;
- 
- solaris*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_lib_prefix=no
-   need_version=no
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   shlibpath_var=LD_LIBRARY_PATH
-   shlibpath_overrides_runpath=yes
-   hardcode_into_libs=yes
-   # ldd complains unless libraries are executable
-@@ -10152,17 +11276,17 @@ sunos4*)
-   shlibpath_overrides_runpath=yes
-   if test "$with_gnu_ld" = yes; then
-     need_lib_prefix=no
-   fi
-   need_version=yes
-   ;;
- 
- sysv4 | sysv4.3*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   shlibpath_var=LD_LIBRARY_PATH
-   case $host_vendor in
-     sni)
-       shlibpath_overrides_runpath=no
-       need_lib_prefix=no
-       runpath_var=LD_RUN_PATH
-@@ -10176,17 +11300,17 @@ sysv4 | sysv4.3*)
-       shlibpath_overrides_runpath=no
-       sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-       ;;
-   esac
-   ;;
- 
- sysv4*MP*)
-   if test -d /usr/nec ;then
--    version_type=linux
-+    version_type=linux # correct to gnu/linux during the next big refactor
-     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-     soname_spec='$libname${shared_ext}.$major'
-     shlibpath_var=LD_LIBRARY_PATH
-   fi
-   ;;
- 
- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-   version_type=freebsd-elf
-@@ -10207,27 +11331,27 @@ sysv5* | sco3.2v5* | sco5v6* | unixware*
- 	;;
-     esac
-   fi
-   sys_lib_dlsearch_path_spec='/usr/lib'
-   ;;
- 
- tpf*)
-   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_lib_prefix=no
-   need_version=no
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-   shlibpath_var=LD_LIBRARY_PATH
-   shlibpath_overrides_runpath=no
-   hardcode_into_libs=yes
-   ;;
- 
- uts4*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   shlibpath_var=LD_LIBRARY_PATH
-   ;;
- 
- *)
-   dynamic_linker=no
-   ;;
-@@ -10329,16 +11453,21 @@ fi
- 
- 
- 
- 
- 
- 
- 
- 
-+
-+
-+
-+
-+
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
- $as_echo_n "checking how to hardcode library paths into programs... " >&6; }
- hardcode_action=
- if test -n "$hardcode_libdir_flag_spec" ||
-    test -n "$runpath_var" ||
-    test "X$hardcode_automatic" = "Xyes" ; then
- 
-   # We can hardcode non-existent directories.
-@@ -10401,17 +11530,17 @@ else
-     lt_cv_dlopen="dlopen"
-     lt_cv_dlopen_libs=
-     ;;
- 
-   darwin*)
-   # if libdl is installed we need to link against it
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
- $as_echo_n "checking for dlopen in -ldl... " >&6; }
--if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
-+if ${ac_cv_lib_dl_dlopen+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   ac_check_lib_save_LIBS=$LIBS
- LIBS="-ldl  $LIBS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- 
- /* Override any GCC internal prototype to avoid an error.
-@@ -10435,36 +11564,36 @@ else
-   ac_cv_lib_dl_dlopen=no
- fi
- rm -f core conftest.err conftest.$ac_objext \
-     conftest$ac_exeext conftest.$ac_ext
- LIBS=$ac_check_lib_save_LIBS
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
- $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
--if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
-+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
- else
- 
-     lt_cv_dlopen="dyld"
-     lt_cv_dlopen_libs=
-     lt_cv_dlopen_self=yes
- 
- fi
- 
-     ;;
- 
-   *)
-     ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
--if test "x$ac_cv_func_shl_load" = x""yes; then :
-+if test "x$ac_cv_func_shl_load" = xyes; then :
-   lt_cv_dlopen="shl_load"
- else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
- $as_echo_n "checking for shl_load in -ldld... " >&6; }
--if test "${ac_cv_lib_dld_shl_load+set}" = set; then :
-+if ${ac_cv_lib_dld_shl_load+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   ac_check_lib_save_LIBS=$LIBS
- LIBS="-ldld  $LIBS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- 
- /* Override any GCC internal prototype to avoid an error.
-@@ -10488,26 +11617,26 @@ else
-   ac_cv_lib_dld_shl_load=no
- fi
- rm -f core conftest.err conftest.$ac_objext \
-     conftest$ac_exeext conftest.$ac_ext
- LIBS=$ac_check_lib_save_LIBS
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
- $as_echo "$ac_cv_lib_dld_shl_load" >&6; }
--if test "x$ac_cv_lib_dld_shl_load" = x""yes; then :
-+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
-   lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
- else
-   ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
--if test "x$ac_cv_func_dlopen" = x""yes; then :
-+if test "x$ac_cv_func_dlopen" = xyes; then :
-   lt_cv_dlopen="dlopen"
- else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
- $as_echo_n "checking for dlopen in -ldl... " >&6; }
--if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
-+if ${ac_cv_lib_dl_dlopen+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   ac_check_lib_save_LIBS=$LIBS
- LIBS="-ldl  $LIBS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- 
- /* Override any GCC internal prototype to avoid an error.
-@@ -10531,22 +11660,22 @@ else
-   ac_cv_lib_dl_dlopen=no
- fi
- rm -f core conftest.err conftest.$ac_objext \
-     conftest$ac_exeext conftest.$ac_ext
- LIBS=$ac_check_lib_save_LIBS
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
- $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
--if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
-+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
- else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
- $as_echo_n "checking for dlopen in -lsvld... " >&6; }
--if test "${ac_cv_lib_svld_dlopen+set}" = set; then :
-+if ${ac_cv_lib_svld_dlopen+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   ac_check_lib_save_LIBS=$LIBS
- LIBS="-lsvld  $LIBS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- 
- /* Override any GCC internal prototype to avoid an error.
-@@ -10570,22 +11699,22 @@ else
-   ac_cv_lib_svld_dlopen=no
- fi
- rm -f core conftest.err conftest.$ac_objext \
-     conftest$ac_exeext conftest.$ac_ext
- LIBS=$ac_check_lib_save_LIBS
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
- $as_echo "$ac_cv_lib_svld_dlopen" >&6; }
--if test "x$ac_cv_lib_svld_dlopen" = x""yes; then :
-+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
-   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
- else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
- $as_echo_n "checking for dld_link in -ldld... " >&6; }
--if test "${ac_cv_lib_dld_dld_link+set}" = set; then :
-+if ${ac_cv_lib_dld_dld_link+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   ac_check_lib_save_LIBS=$LIBS
- LIBS="-ldld  $LIBS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- 
- /* Override any GCC internal prototype to avoid an error.
-@@ -10609,17 +11738,17 @@ else
-   ac_cv_lib_dld_dld_link=no
- fi
- rm -f core conftest.err conftest.$ac_objext \
-     conftest$ac_exeext conftest.$ac_ext
- LIBS=$ac_check_lib_save_LIBS
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
- $as_echo "$ac_cv_lib_dld_dld_link" >&6; }
--if test "x$ac_cv_lib_dld_dld_link" = x""yes; then :
-+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
-   lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
- fi
- 
- 
- fi
- 
- 
- fi
-@@ -10650,26 +11779,26 @@ fi
-     save_LDFLAGS="$LDFLAGS"
-     wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
- 
-     save_LIBS="$LIBS"
-     LIBS="$lt_cv_dlopen_libs $LIBS"
- 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
- $as_echo_n "checking whether a program can dlopen itself... " >&6; }
--if test "${lt_cv_dlopen_self+set}" = set; then :
-+if ${lt_cv_dlopen_self+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   	  if test "$cross_compiling" = yes; then :
-   lt_cv_dlopen_self=cross
- else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 10661 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
- #include <dlfcn.h>
- #endif
- 
- #include <stdio.h>
- 
-@@ -10700,26 +11829,36 @@ else
- #        else
- #          define LT_DLLAZY_OR_NOW	0
- #        endif
- #      endif
- #    endif
- #  endif
- #endif
- 
--void fnord() { int i=42;}
-+/* When -fvisbility=hidden is used, assume the code has been annotated
-+   correspondingly for the symbols needed.  */
-+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-+int fnord () __attribute__((visibility("default")));
-+#endif
-+
-+int fnord () { return 42; }
- int main ()
- {
-   void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-   int status = $lt_dlunknown;
- 
-   if (self)
-     {
-       if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
--      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-+      else
-+        {
-+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-+          else puts (dlerror ());
-+	}
-       /* dlclose (self); */
-     }
-   else
-     puts (dlerror ());
- 
-   return status;
- }
- _LT_EOF
-@@ -10746,26 +11885,26 @@ rm -fr conftest*
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
- $as_echo "$lt_cv_dlopen_self" >&6; }
- 
-     if test "x$lt_cv_dlopen_self" = xyes; then
-       wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
- $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
--if test "${lt_cv_dlopen_self_static+set}" = set; then :
-+if ${lt_cv_dlopen_self_static+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   	  if test "$cross_compiling" = yes; then :
-   lt_cv_dlopen_self_static=cross
- else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--#line 10757 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
- #include <dlfcn.h>
- #endif
- 
- #include <stdio.h>
- 
-@@ -10796,26 +11935,36 @@ else
- #        else
- #          define LT_DLLAZY_OR_NOW	0
- #        endif
- #      endif
- #    endif
- #  endif
- #endif
- 
--void fnord() { int i=42;}
-+/* When -fvisbility=hidden is used, assume the code has been annotated
-+   correspondingly for the symbols needed.  */
-+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-+int fnord () __attribute__((visibility("default")));
-+#endif
-+
-+int fnord () { return 42; }
- int main ()
- {
-   void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-   int status = $lt_dlunknown;
- 
-   if (self)
-     {
-       if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
--      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-+      else
-+        {
-+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-+          else puts (dlerror ());
-+	}
-       /* dlclose (self); */
-     }
-   else
-     puts (dlerror ());
- 
-   return status;
- }
- _LT_EOF
-@@ -10974,26 +12123,1043 @@ CC="$lt_save_CC"
- 
- 
- 
- 
- 
- 
- 
- 
-+
-+
-         ac_config_commands="$ac_config_commands libtool"
- 
- 
- 
- 
- # Only expand once:
- 
- 
- 
- 
-+# Test for 64-bit build.
-+# The cast to long int works around a bug in the HP C Compiler
-+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-+# This bug is HP SR number 8606223364.
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
-+$as_echo_n "checking size of size_t... " >&6; }
-+if ${ac_cv_sizeof_size_t+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t"        "$ac_includes_default"; then :
-+
-+else
-+  if test "$ac_cv_type_size_t" = yes; then
-+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-+as_fn_error 77 "cannot compute sizeof (size_t)
-+See \`config.log' for more details" "$LINENO" 5; }
-+   else
-+     ac_cv_sizeof_size_t=0
-+   fi
-+fi
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
-+$as_echo "$ac_cv_sizeof_size_t" >&6; }
-+
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
-+_ACEOF
-+
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler vendor" >&5
-+$as_echo_n "checking for C compiler vendor... " >&6; }
-+if ${ax_cv_c_compiler_vendor+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  # note: don't check for gcc first since some other compilers define __GNUC__
-+  vendors="intel:     __ICC,__ECC,__INTEL_COMPILER
-+           ibm:       __xlc__,__xlC__,__IBMC__,__IBMCPP__
-+           pathscale: __PATHCC__,__PATHSCALE__
-+           clang:     __clang__
-+           gnu:       __GNUC__
-+           sun:       __SUNPRO_C,__SUNPRO_CC
-+           hp:        __HP_cc,__HP_aCC
-+           dec:       __DECC,__DECCXX,__DECC_VER,__DECCXX_VER
-+           borland:   __BORLANDC__,__TURBOC__
-+           comeau:    __COMO__
-+           cray:      _CRAYC
-+           kai:       __KCC
-+           lcc:       __LCC__
-+           sgi:       __sgi,sgi
-+           microsoft: _MSC_VER
-+           metrowerks: __MWERKS__
-+           watcom:    __WATCOMC__
-+           portland:  __PGI
-+           unknown:   UNKNOWN"
-+  for ventest in $vendors; do
-+    case $ventest in
-+      *:) vendor=$ventest; continue ;;
-+      *)  vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;;
-+    esac
-+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+
-+int
-+main ()
-+{
-+
-+      #if !($vencpp)
-+        thisisanerror;
-+      #endif
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+  break
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+  done
-+  ax_cv_c_compiler_vendor=`echo $vendor | cut -d: -f1`
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5
-+$as_echo "$ax_cv_c_compiler_vendor" >&6; }
-+
-+
-+
-+
-+
-+
-+# Check whether --enable-portable-binary was given.
-+if test "${enable_portable_binary+set}" = set; then :
-+  enableval=$enable_portable_binary; acx_maxopt_portable=$enableval
-+else
-+  acx_maxopt_portable=no
-+fi
-+
-+
-+# Try to determine "good" native compiler flags if none specified via CFLAGS
-+if test "$ac_test_CFLAGS" != "set"; then
-+  CFLAGS=""
-+  case $ax_cv_c_compiler_vendor in
-+    dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host"
-+	 if test "x$acx_maxopt_portable" = xno; then
-+           CFLAGS="$CFLAGS -arch host"
-+         fi;;
-+
-+    sun) CFLAGS="-native -fast -xO5 -dalign"
-+	 if test "x$acx_maxopt_portable" = xyes; then
-+	   CFLAGS="$CFLAGS -xarch=generic"
-+         fi;;
-+
-+    hp)  CFLAGS="+Oall +Optrs_ansi +DSnative"
-+	 if test "x$acx_maxopt_portable" = xyes; then
-+	   CFLAGS="$CFLAGS +DAportable"
-+	 fi;;
-+
-+    ibm) if test "x$acx_maxopt_portable" = xno; then
-+           xlc_opt="-qarch=auto -qtune=auto"
-+	 else
-+           xlc_opt="-qtune=auto"
-+	 fi
-+         as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$xlc_opt" | $as_tr_sh`
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $xlc_opt" >&5
-+$as_echo_n "checking whether C compiler accepts $xlc_opt... " >&6; }
-+if eval \${$as_CACHEVAR+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+
-+  ax_check_save_flags=$CFLAGS
-+  CFLAGS="$CFLAGS  $xlc_opt"
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+
-+int
-+main ()
-+{
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+  eval "$as_CACHEVAR=yes"
-+else
-+  eval "$as_CACHEVAR=no"
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+  CFLAGS=$ax_check_save_flags
-+fi
-+eval ac_res=\$$as_CACHEVAR
-+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-+$as_echo "$ac_res" >&6; }
-+if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then :
-+  CFLAGS="-O3 -qansialias -w $xlc_opt"
-+else
-+  CFLAGS="-O3 -qansialias -w"
-+                echo "******************************************************"
-+                echo "*  You seem to have the IBM  C compiler.  It is      *"
-+                echo "*  recommended for best performance that you use:    *"
-+                echo "*                                                    *"
-+                echo "*    CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *"
-+                echo "*                      ^^^        ^^^                *"
-+                echo "*  where xxx is pwr2, pwr3, 604, or whatever kind of *"
-+                echo "*  CPU you have.  (Set the CFLAGS environment var.   *"
-+                echo "*  and re-run configure.)  For more info, man cc.    *"
-+                echo "******************************************************"
-+fi
-+
-+         ;;
-+
-+    intel) CFLAGS="-O3 -ansi_alias"
-+	if test "x$acx_maxopt_portable" = xno; then
-+	  icc_archflag=unknown
-+	  icc_flags=""
-+	  case $host_cpu in
-+	    i686*|x86_64*)
-+              # icc accepts gcc assembly syntax, so these should work:
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5
-+$as_echo_n "checking for x86 cpuid 0 output... " >&6; }
-+if ${ax_cv_gcc_x86_cpuid_0+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  if test "$cross_compiling" = yes; then :
-+  ax_cv_gcc_x86_cpuid_0=unknown
-+else
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+#include <stdio.h>
-+int
-+main ()
-+{
-+
-+     int op = 0, eax, ebx, ecx, edx;
-+     FILE *f;
-+      __asm__("cpuid"
-+        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-+        : "a" (op));
-+     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-+     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-+     fclose(f);
-+     return 0;
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_run "$LINENO"; then :
-+  ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid
-+else
-+  ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid
-+fi
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-+  conftest.$ac_objext conftest.beam conftest.$ac_ext
-+fi
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5
-+$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; }
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5
-+$as_echo_n "checking for x86 cpuid 1 output... " >&6; }
-+if ${ax_cv_gcc_x86_cpuid_1+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  if test "$cross_compiling" = yes; then :
-+  ax_cv_gcc_x86_cpuid_1=unknown
-+else
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+#include <stdio.h>
-+int
-+main ()
-+{
-+
-+     int op = 1, eax, ebx, ecx, edx;
-+     FILE *f;
-+      __asm__("cpuid"
-+        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-+        : "a" (op));
-+     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-+     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-+     fclose(f);
-+     return 0;
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_run "$LINENO"; then :
-+  ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid
-+else
-+  ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid
-+fi
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-+  conftest.$ac_objext conftest.beam conftest.$ac_ext
-+fi
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5
-+$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; }
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+	      case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG
-+                *:756e6547:*:*) # Intel
-+                  case $ax_cv_gcc_x86_cpuid_1 in
-+                    *6a?:*[234]:*:*|*6[789b]?:*:*:*) icc_flags="-xK";;
-+                    *f3[347]:*:*:*|*f41347:*:*:*) icc_flags="-xP -xN -xW -xK";;
-+                    *f??:*:*:*) icc_flags="-xN -xW -xK";;
-+                  esac ;;
-+              esac ;;
-+          esac
-+          if test "x$icc_flags" != x; then
-+            for flag in $icc_flags; do
-+              as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh`
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
-+$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
-+if eval \${$as_CACHEVAR+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+
-+  ax_check_save_flags=$CFLAGS
-+  CFLAGS="$CFLAGS  $flag"
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+
-+int
-+main ()
-+{
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+  eval "$as_CACHEVAR=yes"
-+else
-+  eval "$as_CACHEVAR=no"
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+  CFLAGS=$ax_check_save_flags
-+fi
-+eval ac_res=\$$as_CACHEVAR
-+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-+$as_echo "$ac_res" >&6; }
-+if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then :
-+  icc_archflag=$flag; break
-+else
-+  :
-+fi
-+
-+            done
-+          fi
-+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icc architecture flag" >&5
-+$as_echo_n "checking for icc architecture flag... " >&6; }
-+	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $icc_archflag" >&5
-+$as_echo "$icc_archflag" >&6; }
-+          if test "x$icc_archflag" != xunknown; then
-+            CFLAGS="$CFLAGS $icc_archflag"
-+          fi
-+        fi
-+	;;
-+
-+    gnu)
-+     # default optimization flags for gcc on all systems
-+     CFLAGS="-O3 -fomit-frame-pointer"
-+
-+     # -malign-double for x86 systems
-+     # LIBFFI -- DON'T DO THIS - CHANGES ABI
-+     # AX_CHECK_COMPILE_FLAG(-malign-double, CFLAGS="$CFLAGS -malign-double")
-+
-+     #  -fstrict-aliasing for gcc-2.95+
-+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstrict-aliasing" >&5
-+$as_echo_n "checking whether C compiler accepts -fstrict-aliasing... " >&6; }
-+if ${ax_cv_check_cflags___fstrict_aliasing+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+
-+  ax_check_save_flags=$CFLAGS
-+  CFLAGS="$CFLAGS  -fstrict-aliasing"
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+
-+int
-+main ()
-+{
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+  ax_cv_check_cflags___fstrict_aliasing=yes
-+else
-+  ax_cv_check_cflags___fstrict_aliasing=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+  CFLAGS=$ax_check_save_flags
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fstrict_aliasing" >&5
-+$as_echo "$ax_cv_check_cflags___fstrict_aliasing" >&6; }
-+if test x"$ax_cv_check_cflags___fstrict_aliasing" = xyes; then :
-+  CFLAGS="$CFLAGS -fstrict-aliasing"
-+else
-+  :
-+fi
-+
-+
-+     # note that we enable "unsafe" fp optimization with other compilers, too
-+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -ffast-math" >&5
-+$as_echo_n "checking whether C compiler accepts -ffast-math... " >&6; }
-+if ${ax_cv_check_cflags___ffast_math+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+
-+  ax_check_save_flags=$CFLAGS
-+  CFLAGS="$CFLAGS  -ffast-math"
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+
-+int
-+main ()
-+{
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+  ax_cv_check_cflags___ffast_math=yes
-+else
-+  ax_cv_check_cflags___ffast_math=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+  CFLAGS=$ax_check_save_flags
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___ffast_math" >&5
-+$as_echo "$ax_cv_check_cflags___ffast_math" >&6; }
-+if test x"$ax_cv_check_cflags___ffast_math" = xyes; then :
-+  CFLAGS="$CFLAGS -ffast-math"
-+else
-+  :
-+fi
-+
-+
-+
-+
-+
-+
-+# Check whether --with-gcc-arch was given.
-+if test "${with_gcc_arch+set}" = set; then :
-+  withval=$with_gcc_arch; ax_gcc_arch=$withval
-+else
-+  ax_gcc_arch=yes
-+fi
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5
-+$as_echo_n "checking for gcc architecture flag... " >&6; }
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
-+$as_echo "" >&6; }
-+if ${ax_cv_gcc_archflag+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+
-+ax_cv_gcc_archflag="unknown"
-+
-+if test "$GCC" = yes; then
-+
-+if test "x$ax_gcc_arch" = xyes; then
-+ax_gcc_arch=""
-+if test "$cross_compiling" = no; then
-+case $host_cpu in
-+  i[3456]86*|x86_64*) # use cpuid codes
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5
-+$as_echo_n "checking for x86 cpuid 0 output... " >&6; }
-+if ${ax_cv_gcc_x86_cpuid_0+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  if test "$cross_compiling" = yes; then :
-+  ax_cv_gcc_x86_cpuid_0=unknown
-+else
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+#include <stdio.h>
-+int
-+main ()
-+{
-+
-+     int op = 0, eax, ebx, ecx, edx;
-+     FILE *f;
-+      __asm__("cpuid"
-+        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-+        : "a" (op));
-+     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-+     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-+     fclose(f);
-+     return 0;
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_run "$LINENO"; then :
-+  ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid
-+else
-+  ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid
-+fi
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-+  conftest.$ac_objext conftest.beam conftest.$ac_ext
-+fi
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5
-+$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; }
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5
-+$as_echo_n "checking for x86 cpuid 1 output... " >&6; }
-+if ${ax_cv_gcc_x86_cpuid_1+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  if test "$cross_compiling" = yes; then :
-+  ax_cv_gcc_x86_cpuid_1=unknown
-+else
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+#include <stdio.h>
-+int
-+main ()
-+{
-+
-+     int op = 1, eax, ebx, ecx, edx;
-+     FILE *f;
-+      __asm__("cpuid"
-+        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-+        : "a" (op));
-+     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-+     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-+     fclose(f);
-+     return 0;
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_run "$LINENO"; then :
-+  ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid
-+else
-+  ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid
-+fi
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-+  conftest.$ac_objext conftest.beam conftest.$ac_ext
-+fi
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5
-+$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; }
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+     case $ax_cv_gcc_x86_cpuid_0 in
-+       *:756e6547:*:*) # Intel
-+          case $ax_cv_gcc_x86_cpuid_1 in
-+	    *5[48]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;;
-+	    *5??:*:*:*) ax_gcc_arch=pentium ;;
-+	    *0?6[3456]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
-+	    *0?6a?:*[01]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
-+	    *0?6a?:*[234]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
-+	    *0?6[9de]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;;
-+	    *0?6[78b]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
-+	    *0?6f?:*:*:*|*1?66?:*:*:*) ax_gcc_arch="core2 pentium-m pentium3 pentiumpro" ;;
-+	    *1?6[7d]?:*:*:*) ax_gcc_arch="penryn core2 pentium-m pentium3 pentiumpro" ;;
-+	    *1?6[aef]?:*:*:*|*2?6[5cef]?:*:*:*) ax_gcc_arch="corei7 core2 pentium-m pentium3 pentiumpro" ;;
-+	    *1?6c?:*:*:*|*[23]?66?:*:*:*) ax_gcc_arch="atom core2 pentium-m pentium3 pentiumpro" ;;
-+	    *2?6[ad]?:*:*:*) ax_gcc_arch="corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;;
-+	    *0?6??:*:*:*) ax_gcc_arch=pentiumpro ;;
-+	    *6??:*:*:*) ax_gcc_arch="core2 pentiumpro" ;;
-+	    ?000?f3[347]:*:*:*|?000?f41347:*:*:*|?000?f6?:*:*:*)
-+		case $host_cpu in
-+	          x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;;
-+	          *) ax_gcc_arch="prescott pentium4 pentiumpro" ;;
-+	        esac ;;
-+	    ?000?f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";;
-+          esac ;;
-+       *:68747541:*:*) # AMD
-+          case $ax_cv_gcc_x86_cpuid_1 in
-+	    *5[67]?:*:*:*) ax_gcc_arch=k6 ;;
-+	    *5[8d]?:*:*:*) ax_gcc_arch="k6-2 k6" ;;
-+	    *5[9]?:*:*:*) ax_gcc_arch="k6-3 k6" ;;
-+	    *60?:*:*:*) ax_gcc_arch=k7 ;;
-+	    *6[12]?:*:*:*) ax_gcc_arch="athlon k7" ;;
-+	    *6[34]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;;
-+	    *67?:*:*:*) ax_gcc_arch="athlon-4 athlon k7" ;;
-+	    *6[68a]?:*:*:*)
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0x80000006 output" >&5
-+$as_echo_n "checking for x86 cpuid 0x80000006 output... " >&6; }
-+if ${ax_cv_gcc_x86_cpuid_0x80000006+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  if test "$cross_compiling" = yes; then :
-+  ax_cv_gcc_x86_cpuid_0x80000006=unknown
-+else
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+#include <stdio.h>
-+int
-+main ()
-+{
-+
-+     int op = 0x80000006, eax, ebx, ecx, edx;
-+     FILE *f;
-+      __asm__("cpuid"
-+        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-+        : "a" (op));
-+     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-+     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-+     fclose(f);
-+     return 0;
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_run "$LINENO"; then :
-+  ax_cv_gcc_x86_cpuid_0x80000006=`cat conftest_cpuid`; rm -f conftest_cpuid
-+else
-+  ax_cv_gcc_x86_cpuid_0x80000006=unknown; rm -f conftest_cpuid
-+fi
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-+  conftest.$ac_objext conftest.beam conftest.$ac_ext
-+fi
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0x80000006" >&5
-+$as_echo "$ax_cv_gcc_x86_cpuid_0x80000006" >&6; }
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+ # L2 cache size
-+	       case $ax_cv_gcc_x86_cpuid_0x80000006 in
-+                 *:*:*[1-9a-f]??????:*) # (L2 = ecx >> 16) >= 256
-+			ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;;
-+                 *) ax_gcc_arch="athlon-4 athlon k7" ;;
-+	       esac ;;
-+	    ?00??f[4cef8b]?:*:*:*) ax_gcc_arch="athlon64 k8" ;;
-+	    ?00??f5?:*:*:*) ax_gcc_arch="opteron k8" ;;
-+	    ?00??f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;;
-+	    ?00??f??:*:*:*) ax_gcc_arch="k8" ;;
-+	    ?05??f??:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;;
-+	    ?06??f??:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;;
-+	    *f??:*:*:*) ax_gcc_arch="amdfam10 k8" ;;
-+          esac ;;
-+	*:746e6543:*:*) # IDT
-+	   case $ax_cv_gcc_x86_cpuid_1 in
-+	     *54?:*:*:*) ax_gcc_arch=winchip-c6 ;;
-+	     *58?:*:*:*) ax_gcc_arch=winchip2 ;;
-+	     *6[78]?:*:*:*) ax_gcc_arch=c3 ;;
-+	     *69?:*:*:*) ax_gcc_arch="c3-2 c3" ;;
-+	   esac ;;
-+     esac
-+     if test x"$ax_gcc_arch" = x; then # fallback
-+	case $host_cpu in
-+	  i586*) ax_gcc_arch=pentium ;;
-+	  i686*) ax_gcc_arch=pentiumpro ;;
-+        esac
-+     fi
-+     ;;
-+
-+  sparc*)
-+     # Extract the first word of "prtdiag", so it can be a program name with args.
-+set dummy prtdiag; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_path_PRTDIAG+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  case $PRTDIAG in
-+  [\\/]* | ?:[\\/]*)
-+  ac_cv_path_PRTDIAG="$PRTDIAG" # Let the user override the test with a path.
-+  ;;
-+  *)
-+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+as_dummy="$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/"
-+for as_dir in $as_dummy
-+do
-+  IFS=$as_save_IFS
-+  test -z "$as_dir" && as_dir=.
-+    for ac_exec_ext in '' $ac_executable_extensions; do
-+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+    ac_cv_path_PRTDIAG="$as_dir/$ac_word$ac_exec_ext"
-+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+    break 2
-+  fi
-+done
-+  done
-+IFS=$as_save_IFS
-+
-+  test -z "$ac_cv_path_PRTDIAG" && ac_cv_path_PRTDIAG="prtdiag"
-+  ;;
-+esac
-+fi
-+PRTDIAG=$ac_cv_path_PRTDIAG
-+if test -n "$PRTDIAG"; then
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRTDIAG" >&5
-+$as_echo "$PRTDIAG" >&6; }
-+else
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+     cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null`
-+     cputype=`echo "$cputype" | tr -d ' -' | sed 's/SPARCIIi/SPARCII/' | tr $as_cr_LETTERS $as_cr_letters`
-+     case $cputype in
-+         *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;;
-+         *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;;
-+         *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;;
-+         *supersparc*|*tms390z5[05]*) ax_gcc_arch="supersparc v8" ;;
-+         *hypersparc*|*rt62[056]*) ax_gcc_arch="hypersparc v8" ;;
-+         *cypress*) ax_gcc_arch=cypress ;;
-+     esac ;;
-+
-+  alphaev5) ax_gcc_arch=ev5 ;;
-+  alphaev56) ax_gcc_arch=ev56 ;;
-+  alphapca56) ax_gcc_arch="pca56 ev56" ;;
-+  alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;;
-+  alphaev6) ax_gcc_arch=ev6 ;;
-+  alphaev67) ax_gcc_arch=ev67 ;;
-+  alphaev68) ax_gcc_arch="ev68 ev67" ;;
-+  alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;;
-+  alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;;
-+  alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;;
-+
-+  powerpc*)
-+     cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | sed 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null`
-+     cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'`
-+     case $cputype in
-+       *750*) ax_gcc_arch="750 G3" ;;
-+       *740[0-9]*) ax_gcc_arch="$cputype 7400 G4" ;;
-+       *74[4-5][0-9]*) ax_gcc_arch="$cputype 7450 G4" ;;
-+       *74[0-9][0-9]*) ax_gcc_arch="$cputype G4" ;;
-+       *970*) ax_gcc_arch="970 G5 power4";;
-+       *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";;
-+       *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";;
-+       603ev|8240) ax_gcc_arch="$cputype 603e 603";;
-+       *) ax_gcc_arch=$cputype ;;
-+     esac
-+     ax_gcc_arch="$ax_gcc_arch powerpc"
-+     ;;
-+esac
-+fi # not cross-compiling
-+fi # guess arch
-+
-+if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then
-+for arch in $ax_gcc_arch; do
-+  if test "x$acx_maxopt_portable" = xyes; then # if we require portable code
-+    flags="-mtune=$arch"
-+    # -mcpu=$arch and m$arch generate nonportable code on every arch except
-+    # x86.  And some other arches (e.g. Alpha) don't accept -mtune.  Grrr.
-+    case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac
-+  else
-+    flags="-march=$arch -mcpu=$arch -m$arch"
-+  fi
-+  for flag in $flags; do
-+    as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh`
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
-+$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
-+if eval \${$as_CACHEVAR+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+
-+  ax_check_save_flags=$CFLAGS
-+  CFLAGS="$CFLAGS  $flag"
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+
-+int
-+main ()
-+{
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+  eval "$as_CACHEVAR=yes"
-+else
-+  eval "$as_CACHEVAR=no"
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+  CFLAGS=$ax_check_save_flags
-+fi
-+eval ac_res=\$$as_CACHEVAR
-+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-+$as_echo "$ac_res" >&6; }
-+if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then :
-+  ax_cv_gcc_archflag=$flag; break
-+else
-+  :
-+fi
-+
-+  done
-+  test "x$ax_cv_gcc_archflag" = xunknown || break
-+done
-+fi
-+
-+fi # $GCC=yes
-+
-+fi
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5
-+$as_echo_n "checking for gcc architecture flag... " >&6; }
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_archflag" >&5
-+$as_echo "$ax_cv_gcc_archflag" >&6; }
-+if test "x$ax_cv_gcc_archflag" = xunknown; then
-+  :
-+else
-+  CFLAGS="$CFLAGS $ax_cv_gcc_archflag"
-+fi
-+
-+     ;;
-+  esac
-+
-+  if test -z "$CFLAGS"; then
-+	echo ""
-+	echo "********************************************************"
-+        echo "* WARNING: Don't know the best CFLAGS for this system  *"
-+        echo "* Use ./configure CFLAGS=... to specify your own flags *"
-+	echo "* (otherwise, a default of CFLAGS=-O3 will be used)    *"
-+	echo "********************************************************"
-+	echo ""
-+        CFLAGS="-O3"
-+  fi
-+
-+  as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CFLAGS" | $as_tr_sh`
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CFLAGS" >&5
-+$as_echo_n "checking whether C compiler accepts $CFLAGS... " >&6; }
-+if eval \${$as_CACHEVAR+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+
-+  ax_check_save_flags=$CFLAGS
-+  CFLAGS="$CFLAGS  $CFLAGS"
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+
-+int
-+main ()
-+{
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+  eval "$as_CACHEVAR=yes"
-+else
-+  eval "$as_CACHEVAR=no"
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+  CFLAGS=$ax_check_save_flags
-+fi
-+eval ac_res=\$$as_CACHEVAR
-+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-+$as_echo "$ac_res" >&6; }
-+if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then :
-+  :
-+else
-+
-+	echo ""
-+        echo "********************************************************"
-+        echo "* WARNING: The guessed CFLAGS don't seem to work with  *"
-+        echo "* your compiler.                                       *"
-+        echo "* Use ./configure CFLAGS=... to specify your own flags *"
-+        echo "********************************************************"
-+        echo ""
-+        CFLAGS=""
-+
-+fi
-+
-+
-+fi
-+
-+# The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro
-+# compiler.
-+if test "$ax_cv_c_compiler_vendor" != "sun"; then
-+  if ${CFLAGS+:} false; then :
-+  case " $CFLAGS " in
-+    *"  "*)
-+      { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains "; } >&5
-+  (: CFLAGS already contains ) 2>&5
-+  ac_status=$?
-+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+  test $ac_status = 0; }
-+      ;;
-+    *)
-+      { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \""; } >&5
-+  (: CFLAGS="$CFLAGS ") 2>&5
-+  ac_status=$?
-+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+  test $ac_status = 0; }
-+      CFLAGS="$CFLAGS "
-+      ;;
-+   esac
-+else
-+  CFLAGS=""
-+fi
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for maximum warnings" >&5
-+$as_echo_n "checking CFLAGS for maximum warnings... " >&6; }
-+if ${ac_cv_cflags_warn_all+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+  ac_cv_cflags_warn_all="no, unknown"
-+ac_save_CFLAGS="$CFLAGS"
-+for ac_arg in "-warn all  % -warn all"      "-pedantic  % -Wall"          "-xstrconst % -v"             "-std1      % -verbose -w0 -warnprotos"    "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd"    "-ansi -ansiE % -fullwarn"    "+ESlit     % +w1"            "-Xc        % -pvctl,fullmsg"    "-h conform % -h msglevel 2"    #
-+do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
-+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+
-+int
-+main ()
-+{
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+  ac_cv_cflags_warn_all=`echo $ac_arg | sed -e 's,.*% *,,'` ; break
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+done
-+CFLAGS="$ac_save_CFLAGS"
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags_warn_all" >&5
-+$as_echo "$ac_cv_cflags_warn_all" >&6; }
-+
-+case ".$ac_cv_cflags_warn_all" in
-+     .ok|.ok,*)  ;;
-+   .|.no|.no,*)  ;;
-+   *) if ${CFLAGS+:} false; then :
-+  case " $CFLAGS " in
-+    *" $ac_cv_cflags_warn_all "*)
-+      { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$ac_cv_cflags_warn_all"; } >&5
-+  (: CFLAGS already contains $ac_cv_cflags_warn_all) 2>&5
-+  ac_status=$?
-+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+  test $ac_status = 0; }
-+      ;;
-+    *)
-+      { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ac_cv_cflags_warn_all\""; } >&5
-+  (: CFLAGS="$CFLAGS $ac_cv_cflags_warn_all") 2>&5
-+  ac_status=$?
-+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+  test $ac_status = 0; }
-+      CFLAGS="$CFLAGS $ac_cv_cflags_warn_all"
-+      ;;
-+   esac
-+else
-+  CFLAGS="$ac_cv_cflags_warn_all"
-+fi
-+ ;;
-+esac
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+
-+if test "x$GCC" = "xyes"; then
-+  CFLAGS="$CFLAGS -fexceptions"
-+  touch local.exp
-+else
-+  cat > local.exp <<EOF
-+set CC_FOR_TARGET "$CC"
-+EOF
-+fi
-+
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
- $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
-     # Check whether --enable-maintainer-mode was given.
- if test "${enable_maintainer_mode+set}" = set; then :
-   enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
- else
-   USE_MAINTAINER_MODE=no
-@@ -11011,61 +13177,61 @@ fi
- 
-   MAINT=$MAINTAINER_MODE_TRUE
- 
- 
- 
- for ac_header in sys/mman.h
- do :
-   ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
--if test "x$ac_cv_header_sys_mman_h" = x""yes; then :
-+if test "x$ac_cv_header_sys_mman_h" = xyes; then :
-   cat >>confdefs.h <<_ACEOF
- #define HAVE_SYS_MMAN_H 1
- _ACEOF
- 
- fi
- 
- done
- 
- for ac_func in mmap
- do :
-   ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
--if test "x$ac_cv_func_mmap" = x""yes; then :
-+if test "x$ac_cv_func_mmap" = xyes; then :
-   cat >>confdefs.h <<_ACEOF
- #define HAVE_MMAP 1
- _ACEOF
- 
- fi
- done
- 
- 
- ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
--if test "x$ac_cv_header_sys_mman_h" = x""yes; then :
-+if test "x$ac_cv_header_sys_mman_h" = xyes; then :
-   libffi_header_sys_mman_h=yes
- else
-   libffi_header_sys_mman_h=no
- fi
- 
- 
- ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
--if test "x$ac_cv_func_mmap" = x""yes; then :
-+if test "x$ac_cv_func_mmap" = xyes; then :
-   libffi_func_mmap=yes
- else
-   libffi_func_mmap=no
- fi
- 
- if test "$libffi_header_sys_mman_h" != yes \
-  || test "$libffi_func_mmap" != yes; then
-    ac_cv_func_mmap_file=no
-    ac_cv_func_mmap_dev_zero=no
-    ac_cv_func_mmap_anon=no
- else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether read-only mmap of a plain file works" >&5
- $as_echo_n "checking whether read-only mmap of a plain file works... " >&6; }
--if test "${ac_cv_func_mmap_file+set}" = set; then :
-+if ${ac_cv_func_mmap_file+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   # Add a system to this blacklist if
-    # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a
-    # memory area containing the same data that you'd get if you applied
-    # read() to the same fd.  The only system known to have a problem here
-    # is VMS, where text files have record structure.
-    case "$host_os" in
-@@ -11074,17 +13240,17 @@ else
-      *)
- 	ac_cv_func_mmap_file=yes;;
-    esac
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_file" >&5
- $as_echo "$ac_cv_func_mmap_file" >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap from /dev/zero works" >&5
- $as_echo_n "checking whether mmap from /dev/zero works... " >&6; }
--if test "${ac_cv_func_mmap_dev_zero+set}" = set; then :
-+if ${ac_cv_func_mmap_dev_zero+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   # Add a system to this blacklist if it has mmap() but /dev/zero
-    # does not exist, or if mmapping /dev/zero does not give anonymous
-    # zeroed pages with both the following properties:
-    # 1. If you map N consecutive pages in with one call, and then
-    #    unmap any subset of those pages, the pages that were not
-    #    explicitly unmapped remain accessible.
-@@ -11100,17 +13266,17 @@ else
-    esac
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_dev_zero" >&5
- $as_echo "$ac_cv_func_mmap_dev_zero" >&6; }
- 
-    # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for.
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON(YMOUS)" >&5
- $as_echo_n "checking for MAP_ANON(YMOUS)... " >&6; }
--if test "${ac_cv_decl_map_anon+set}" = set; then :
-+if ${ac_cv_decl_map_anon+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- #include <sys/types.h>
- #include <sys/mman.h>
- #include <unistd.h>
- 
-@@ -11136,17 +13302,17 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_map_anon" >&5
- $as_echo "$ac_cv_decl_map_anon" >&6; }
- 
-    if test $ac_cv_decl_map_anon = no; then
-      ac_cv_func_mmap_anon=no
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap with MAP_ANON(YMOUS) works" >&5
- $as_echo_n "checking whether mmap with MAP_ANON(YMOUS) works... " >&6; }
--if test "${ac_cv_func_mmap_anon+set}" = set; then :
-+if ${ac_cv_func_mmap_anon+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   # Add a system to this blacklist if it has mmap() and MAP_ANON or
-    # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
-    # doesn't give anonymous zeroed pages with the same properties listed
-    # above for use of /dev/zero.
-    # Systems known to be in this category are Windows, VMS, and SCO Unix.
-    case "$host_os" in
-@@ -11183,114 +13349,197 @@ fi
-   TESTSUBDIR_FALSE='#'
- else
-   TESTSUBDIR_TRUE='#'
-   TESTSUBDIR_FALSE=
- fi
- 
- 
- TARGETDIR="unknown"
-+HAVE_LONG_DOUBLE_VARIANT=0
- case "$host" in
-+  aarch64*-*-*)
-+	TARGET=AARCH64; TARGETDIR=aarch64
-+	;;
-+
-   alpha*-*-*)
- 	TARGET=ALPHA; TARGETDIR=alpha;
- 	# Support 128-bit long double, changeable via command-line switch.
- 	HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)'
- 	;;
- 
-+  arc*-*-*)
-+	TARGET=ARC; TARGETDIR=arc
-+	;;
-+
-   arm*-*-*)
- 	TARGET=ARM; TARGETDIR=arm
- 	;;
- 
-   amd64-*-freebsd* | amd64-*-openbsd*)
- 	TARGET=X86_64; TARGETDIR=x86
-   	;;
- 
-   amd64-*-freebsd*)
- 	TARGET=X86_64; TARGETDIR=x86
-+  	;;
-+
-+  amd64-*-freebsd*)
-+	TARGET=X86_64; TARGETDIR=x86
- 	;;
- 
-   avr32*-*-*)
- 	TARGET=AVR32; TARGETDIR=avr32
- 	;;
- 
-+  bfin*)
-+  	TARGET=BFIN; TARGETDIR=bfin
-+  	;;
-+
-   cris-*-*)
- 	TARGET=LIBFFI_CRIS; TARGETDIR=cris
- 	;;
- 
-   frv-*-*)
- 	TARGET=FRV; TARGETDIR=frv
- 	;;
- 
--  hppa*-*-linux* | hppa*-*-openbsd* | parisc*-*-linux*)
-+  hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*)
- 	TARGET=PA_LINUX; TARGETDIR=pa
- 	;;
-   hppa*64-*-hpux*)
- 	TARGET=PA64_HPUX; TARGETDIR=pa
- 	;;
-   hppa*-*-hpux*)
- 	TARGET=PA_HPUX; TARGETDIR=pa
- 	;;
- 
-   i?86-*-freebsd* | i?86-*-openbsd*)
- 	TARGET=X86_FREEBSD; TARGETDIR=x86
- 	;;
--  i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2*)
-+  i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix*)
- 	TARGET=X86_WIN32; TARGETDIR=x86
--	# All mingw/cygwin/win32 builds require this for sharedlib
--	AM_LTLDFLAGS="-no-undefined"
-+	# All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
-+	# We must also check with_cross_host to decide if this is a native
-+	# or cross-build and select where to install dlls appropriately.
-+	if test -n "$with_cross_host" &&
-+	   test x"$with_cross_host" != x"no"; then
-+	  AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
-+	else
-+	  AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
-+	fi
- 	;;
-   i?86-*-darwin*)
- 	TARGET=X86_DARWIN; TARGETDIR=x86
- 	;;
-   i?86-*-solaris2.1[0-9]*)
--	TARGET=X86_64; TARGETDIR=x86
--	;;
--  i?86-*-*)
--	TARGET=X86; TARGETDIR=x86
-+	TARGETDIR=x86
-+	if test $ac_cv_sizeof_size_t = 4; then
-+	  TARGET=X86;
-+	else
-+	  TARGET=X86_64;
-+	fi
-+	;;
-+
-+  x86_64-*-darwin*)
-+	TARGET=X86_DARWIN; TARGETDIR=x86
-+	;;
-+
-+  x86_64-*-cygwin* | x86_64-*-mingw*)
-+	TARGET=X86_WIN64; TARGETDIR=x86
-+	# All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
-+	# We must also check with_cross_host to decide if this is a native
-+	# or cross-build and select where to install dlls appropriately.
-+	if test -n "$with_cross_host" &&
-+	   test x"$with_cross_host" != x"no"; then
-+	  AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
-+	else
-+	  AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
-+	fi
-+	;;
-+
-+  i?86-*-* | x86_64-*-*)
-+	TARGETDIR=x86
-+	if test $ac_cv_sizeof_size_t = 4; then
-+	  case "$host" in
-+	    *-gnux32)
-+	      TARGET=X86_64
-+	      ;;
-+	    *)
-+	      TARGET=X86
-+	      ;;
-+          esac
-+	else
-+	  TARGET=X86_64;
-+	fi
- 	;;
- 
-   ia64*-*-*)
- 	TARGET=IA64; TARGETDIR=ia64
- 	;;
- 
-   m32r*-*-*)
- 	TARGET=M32R; TARGETDIR=m32r
- 	;;
- 
-   m68k-*-*)
- 	TARGET=M68K; TARGETDIR=m68k
- 	;;
- 
--  mips-sgi-irix5.* | mips-sgi-irix6.*)
-+  m88k-*-*)
-+	TARGET=M88K; TARGETDIR=m88k
-+	;;
-+
-+  microblaze*-*-*)
-+	TARGET=MICROBLAZE; TARGETDIR=microblaze
-+	;;
-+
-+  moxie-*-*)
-+	TARGET=MOXIE; TARGETDIR=moxie
-+	;;
-+
-+  metag-*-*)
-+	TARGET=METAG; TARGETDIR=metag
-+	;;
-+
-+  mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*)
- 	TARGET=MIPS; TARGETDIR=mips
- 	;;
-   mips*-*linux* | mips*-*-openbsd*)
- 	# Support 128-bit long double for NewABI.
- 	HAVE_LONG_DOUBLE='defined(__mips64)'
- 	TARGET=MIPS; TARGETDIR=mips
- 	;;
- 
--  moxie-*-*)
--        TARGET=MOXIE; TARGETDIR=moxie
-+  nios2*-linux*)
-+	TARGET=NIOS2; TARGETDIR=nios2
- 	;;
- 
-   powerpc*-*-linux* | powerpc-*-sysv*)
- 	TARGET=POWERPC; TARGETDIR=powerpc
-+	HAVE_LONG_DOUBLE_VARIANT=1
-+	;;
-+  powerpc-*-amigaos*)
-+	TARGET=POWERPC; TARGETDIR=powerpc
- 	;;
-   powerpc-*-beos*)
- 	TARGET=POWERPC; TARGETDIR=powerpc
- 	;;
--  powerpc-*-darwin*)
-+  powerpc-*-darwin* | powerpc64-*-darwin*)
- 	TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
- 	;;
-   powerpc-*-aix* | rs6000-*-aix*)
- 	TARGET=POWERPC_AIX; TARGETDIR=powerpc
- 	;;
-   powerpc-*-freebsd* | powerpc-*-openbsd*)
- 	TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
-+	HAVE_LONG_DOUBLE_VARIANT=1
-+	;;
-+  powerpc64-*-freebsd*)
-+	TARGET=POWERPC; TARGETDIR=powerpc
- 	;;
-   powerpc*-*-rtems*)
- 	TARGET=POWERPC; TARGETDIR=powerpc
- 	;;
- 
-   s390-*-* | s390x-*-*)
- 	TARGET=S390; TARGETDIR=s390
- 	;;
-@@ -11301,44 +13550,53 @@ case "$host" in
-   sh64-*-* | sh5*-*-*)
- 	TARGET=SH64; TARGETDIR=sh64
- 	;;
- 
-   sparc*-*-*)
- 	TARGET=SPARC; TARGETDIR=sparc
- 	;;
- 
--  x86_64-*-darwin*)
--	TARGET=X86_DARWIN; TARGETDIR=x86
--	;;
--
--  x86_64-*-cygwin* | x86_64-*-mingw*)
--	TARGET=X86_WIN64; TARGETDIR=x86
--	;;
--
--  x86_64-*-*)
--	TARGET=X86_64; TARGETDIR=x86
--	;;
-+  tile*-*)
-+        TARGET=TILE; TARGETDIR=tile
-+        ;;
-+
-+  vax-*-*)
-+	TARGET=VAX; TARGETDIR=vax
-+	;;
-+
-+  xtensa*-*)
-+	TARGET=XTENSA; TARGETDIR=xtensa
-+	;;
-+
- esac
- 
- 
- 
- 
- if test $TARGETDIR = unknown; then
--  as_fn_error "\"libffi has not been ported to $host.\"" "$LINENO" 5
-+  as_fn_error $? "\"libffi has not been ported to $host.\"" "$LINENO" 5
- fi
- 
-  if test x$TARGET = xMIPS; then
-   MIPS_TRUE=
-   MIPS_FALSE='#'
- else
-   MIPS_TRUE='#'
-   MIPS_FALSE=
- fi
- 
-+ if test x$TARGET = xBFIN; then
-+  BFIN_TRUE=
-+  BFIN_FALSE='#'
-+else
-+  BFIN_TRUE='#'
-+  BFIN_FALSE=
-+fi
-+
-  if test x$TARGET = xSPARC; then
-   SPARC_TRUE=
-   SPARC_FALSE='#'
- else
-   SPARC_TRUE='#'
-   SPARC_FALSE=
- fi
- 
-@@ -11377,16 +13635,32 @@ fi
-  if test x$TARGET = xX86_DARWIN; then
-   X86_DARWIN_TRUE=
-   X86_DARWIN_FALSE='#'
- else
-   X86_DARWIN_TRUE='#'
-   X86_DARWIN_FALSE=
- fi
- 
-+ if test x$TARGET = xX86_DARWIN && test $ac_cv_sizeof_size_t = 4; then
-+  X86_DARWIN32_TRUE=
-+  X86_DARWIN32_FALSE='#'
-+else
-+  X86_DARWIN32_TRUE='#'
-+  X86_DARWIN32_FALSE=
-+fi
-+
-+ if test x$TARGET = xX86_DARWIN && test $ac_cv_sizeof_size_t = 8; then
-+  X86_DARWIN64_TRUE=
-+  X86_DARWIN64_FALSE='#'
-+else
-+  X86_DARWIN64_TRUE='#'
-+  X86_DARWIN64_FALSE=
-+fi
-+
-  if test x$TARGET = xALPHA; then
-   ALPHA_TRUE=
-   ALPHA_FALSE='#'
- else
-   ALPHA_TRUE='#'
-   ALPHA_FALSE=
- fi
- 
-@@ -11409,24 +13683,56 @@ fi
-  if test x$TARGET = xM68K; then
-   M68K_TRUE=
-   M68K_FALSE='#'
- else
-   M68K_TRUE='#'
-   M68K_FALSE=
- fi
- 
-+ if test x$TARGET = xM88K; then
-+  M88K_TRUE=
-+  M88K_FALSE='#'
-+else
-+  M88K_TRUE='#'
-+  M88K_FALSE=
-+fi
-+
-+ if test x$TARGET = xMICROBLAZE; then
-+  MICROBLAZE_TRUE=
-+  MICROBLAZE_FALSE='#'
-+else
-+  MICROBLAZE_TRUE='#'
-+  MICROBLAZE_FALSE=
-+fi
-+
-+ if test x$TARGET = xMETAG; then
-+  METAG_TRUE=
-+  METAG_FALSE='#'
-+else
-+  METAG_TRUE='#'
-+  METAG_FALSE=
-+fi
-+
-  if test x$TARGET = xMOXIE; then
-   MOXIE_TRUE=
-   MOXIE_FALSE='#'
- else
-   MOXIE_TRUE='#'
-   MOXIE_FALSE=
- fi
- 
-+ if test x$TARGET = xNIOS2; then
-+  NIOS2_TRUE=
-+  NIOS2_FALSE='#'
-+else
-+  NIOS2_TRUE='#'
-+  NIOS2_FALSE=
-+fi
-+
-  if test x$TARGET = xPOWERPC; then
-   POWERPC_TRUE=
-   POWERPC_FALSE='#'
- else
-   POWERPC_TRUE='#'
-   POWERPC_FALSE=
- fi
- 
-@@ -11449,16 +13755,32 @@ fi
-  if test x$TARGET = xPOWERPC_FREEBSD; then
-   POWERPC_FREEBSD_TRUE=
-   POWERPC_FREEBSD_FALSE='#'
- else
-   POWERPC_FREEBSD_TRUE='#'
-   POWERPC_FREEBSD_FALSE=
- fi
- 
-+ if test x$TARGET = xAARCH64; then
-+  AARCH64_TRUE=
-+  AARCH64_FALSE='#'
-+else
-+  AARCH64_TRUE='#'
-+  AARCH64_FALSE=
-+fi
-+
-+ if test x$TARGET = xARC; then
-+  ARC_TRUE=
-+  ARC_FALSE='#'
-+else
-+  ARC_TRUE='#'
-+  ARC_FALSE=
-+fi
-+
-  if test x$TARGET = xARM; then
-   ARM_TRUE=
-   ARM_FALSE='#'
- else
-   ARM_TRUE='#'
-   ARM_FALSE=
- fi
- 
-@@ -11537,20 +13859,44 @@ fi
-  if test x$TARGET = xPA64_HPUX; then
-   PA64_HPUX_TRUE=
-   PA64_HPUX_FALSE='#'
- else
-   PA64_HPUX_TRUE='#'
-   PA64_HPUX_FALSE=
- fi
- 
-+ if test x$TARGET = xTILE; then
-+  TILE_TRUE=
-+  TILE_FALSE='#'
-+else
-+  TILE_TRUE='#'
-+  TILE_FALSE=
-+fi
-+
-+ if test x$TARGET = xVAX; then
-+  VAX_TRUE=
-+  VAX_FALSE='#'
-+else
-+  VAX_TRUE='#'
-+  VAX_FALSE=
-+fi
-+
-+ if test x$TARGET = xXTENSA; then
-+  XTENSA_TRUE=
-+  XTENSA_FALSE='#'
-+else
-+  XTENSA_TRUE='#'
-+  XTENSA_FALSE=
-+fi
-+
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
- $as_echo_n "checking for ANSI C header files... " >&6; }
--if test "${ac_cv_header_stdc+set}" = set; then :
-+if ${ac_cv_header_stdc+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- #include <stdlib.h>
- #include <stdarg.h>
- #include <string.h>
- #include <float.h>
-@@ -11653,29 +13999,40 @@ if test $ac_cv_header_stdc = yes; then
- 
- $as_echo "#define STDC_HEADERS 1" >>confdefs.h
- 
- fi
- 
- for ac_func in memcpy
- do :
-   ac_fn_c_check_func "$LINENO" "memcpy" "ac_cv_func_memcpy"
--if test "x$ac_cv_func_memcpy" = x""yes; then :
-+if test "x$ac_cv_func_memcpy" = xyes; then :
-   cat >>confdefs.h <<_ACEOF
- #define HAVE_MEMCPY 1
- _ACEOF
- 
- fi
- done
- 
-+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-+if test "x$ac_cv_type_size_t" = xyes; then :
-+
-+else
-+
-+cat >>confdefs.h <<_ACEOF
-+#define size_t unsigned int
-+_ACEOF
-+
-+fi
-+
- # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
- # for constant arguments.  Useless!
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
- $as_echo_n "checking for working alloca.h... " >&6; }
--if test "${ac_cv_working_alloca_h+set}" = set; then :
-+if ${ac_cv_working_alloca_h+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- #include <alloca.h>
- int
- main ()
- {
-@@ -11698,17 +14055,17 @@ fi
- if test $ac_cv_working_alloca_h = yes; then
- 
- $as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
- 
- fi
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
- $as_echo_n "checking for alloca... " >&6; }
--if test "${ac_cv_func_alloca_works+set}" = set; then :
-+if ${ac_cv_func_alloca_works+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- #ifdef __GNUC__
- # define alloca __builtin_alloca
- #else
- # ifdef _MSC_VER
-@@ -11717,17 +14074,17 @@ else
- # else
- #  ifdef HAVE_ALLOCA_H
- #   include <alloca.h>
- #  else
- #   ifdef _AIX
-  #pragma alloca
- #   else
- #    ifndef alloca /* predefined by HP cc +Olibcalls */
--char *alloca ();
-+void *alloca (size_t);
- #    endif
- #   endif
- #  endif
- # endif
- #endif
- 
- int
- main ()
-@@ -11761,17 +14118,17 @@ else
- 
- ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
- 
- $as_echo "#define C_ALLOCA 1" >>confdefs.h
- 
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
- $as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
--if test "${ac_cv_os_cray+set}" = set; then :
-+if ${ac_cv_os_cray+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- #if defined CRAY && ! defined CRAY2
- webecray
- #else
- wenotbecray
-@@ -11788,58 +14145,54 @@ rm -f conftest*
- 
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
- $as_echo "$ac_cv_os_cray" >&6; }
- if test $ac_cv_os_cray = yes; then
-   for ac_func in _getb67 GETB67 getb67; do
-     as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
- ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
--eval as_val=\$$as_ac_var
--   if test "x$as_val" = x""yes; then :
-+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- 
- cat >>confdefs.h <<_ACEOF
- #define CRAY_STACKSEG_END $ac_func
- _ACEOF
- 
-     break
- fi
- 
-   done
- fi
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
- $as_echo_n "checking stack direction for C alloca... " >&6; }
--if test "${ac_cv_c_stack_direction+set}" = set; then :
-+if ${ac_cv_c_stack_direction+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if test "$cross_compiling" = yes; then :
-   ac_cv_c_stack_direction=0
- else
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- $ac_includes_default
- int
--find_stack_direction ()
--{
--  static char *addr = 0;
--  auto char dummy;
--  if (addr == 0)
--    {
--      addr = &dummy;
--      return find_stack_direction ();
--    }
--  else
--    return (&dummy > addr) ? 1 : -1;
--}
--
--int
--main ()
--{
--  return find_stack_direction () < 0;
-+find_stack_direction (int *addr, int depth)
-+{
-+  int dir, dummy = 0;
-+  if (! addr)
-+    addr = &dummy;
-+  *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
-+  dir = depth ? find_stack_direction (addr, depth - 1) : 0;
-+  return dir + dummy;
-+}
-+
-+int
-+main (int argc, char **argv)
-+{
-+  return find_stack_direction (0, argc + !argv + 20) < 0;
- }
- _ACEOF
- if ac_fn_c_try_run "$LINENO"; then :
-   ac_cv_c_stack_direction=1
- else
-   ac_cv_c_stack_direction=-1
- fi
- rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-@@ -11858,28 +14211,27 @@ fi
- 
- 
- # The cast to long int works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5
- $as_echo_n "checking size of double... " >&6; }
--if test "${ac_cv_sizeof_double+set}" = set; then :
-+if ${ac_cv_sizeof_double+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double"        "$ac_includes_default"; then :
- 
- else
-   if test "$ac_cv_type_double" = yes; then
-      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
- $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
--{ as_fn_set_status 77
--as_fn_error "cannot compute sizeof (double)
--See \`config.log' for more details." "$LINENO" 5; }; }
-+as_fn_error 77 "cannot compute sizeof (double)
-+See \`config.log' for more details" "$LINENO" 5; }
-    else
-      ac_cv_sizeof_double=0
-    fi
- fi
- 
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5
- $as_echo "$ac_cv_sizeof_double" >&6; }
-@@ -11892,28 +14244,27 @@ cat >>confdefs.h <<_ACEOF
- 
- 
- # The cast to long int works around a bug in the HP C Compiler
- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
- # This bug is HP SR number 8606223364.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5
- $as_echo_n "checking size of long double... " >&6; }
--if test "${ac_cv_sizeof_long_double+set}" = set; then :
-+if ${ac_cv_sizeof_long_double+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double"        "$ac_includes_default"; then :
- 
- else
-   if test "$ac_cv_type_long_double" = yes; then
-      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
- $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
--{ as_fn_set_status 77
--as_fn_error "cannot compute sizeof (long double)
--See \`config.log' for more details." "$LINENO" 5; }; }
-+as_fn_error 77 "cannot compute sizeof (long double)
-+See \`config.log' for more details" "$LINENO" 5; }
-    else
-      ac_cv_sizeof_long_double=0
-    fi
- fi
- 
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_double" >&5
- $as_echo "$ac_cv_sizeof_long_double" >&6; }
-@@ -11924,30 +14275,38 @@ cat >>confdefs.h <<_ACEOF
- #define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double
- _ACEOF
- 
- 
- 
- # Also AC_SUBST this variable for ffi.h.
- if test -z "$HAVE_LONG_DOUBLE"; then
-   HAVE_LONG_DOUBLE=0
--  if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
--    if test $ac_cv_sizeof_long_double != 0; then
-+  if test $ac_cv_sizeof_long_double != 0; then
-+    if test $HAVE_LONG_DOUBLE_VARIANT != 0; then
-+
-+$as_echo "#define HAVE_LONG_DOUBLE_VARIANT 1" >>confdefs.h
-+
-       HAVE_LONG_DOUBLE=1
-+    else
-+      if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
-+        HAVE_LONG_DOUBLE=1
- 
- $as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h
- 
--    fi
--  fi
--fi
-+      fi
-+    fi
-+  fi
-+fi
-+
- 
- 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
- $as_echo_n "checking whether byte ordering is bigendian... " >&6; }
--if test "${ac_cv_c_bigendian+set}" = set; then :
-+if ${ac_cv_c_bigendian+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   ac_cv_c_bigendian=unknown
-     # See if we're dealing with a universal compiler.
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- #ifndef __APPLE_CC__
- 	       not a universal capable compiler
-@@ -12155,59 +14514,60 @@ fi
-    no)
-       ;; #(
-    universal)
- 
- $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
- 
-      ;; #(
-    *)
--     as_fn_error "unknown endianness
-+     as_fn_error $? "unknown endianness
-  presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
-  esac
- 
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .cfi pseudo-op support" >&5
- $as_echo_n "checking assembler .cfi pseudo-op support... " >&6; }
--if test "${libffi_cv_as_cfi_pseudo_op+set}" = set; then :
--  $as_echo_n "(cached) " >&6
--else
--
--    libffi_cv_as_cfi_pseudo_op=unknown
-+if ${gcc_cv_as_cfi_pseudo_op+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+
-+    gcc_cv_as_cfi_pseudo_op=unknown
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- asm (".cfi_startproc\n\t.cfi_endproc");
- int
- main ()
- {
- 
-   ;
-   return 0;
- }
- _ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
--  libffi_cv_as_cfi_pseudo_op=yes
--else
--  libffi_cv_as_cfi_pseudo_op=no
-+  gcc_cv_as_cfi_pseudo_op=yes
-+else
-+  gcc_cv_as_cfi_pseudo_op=no
- fi
- rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- 
- fi
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_cfi_pseudo_op" >&5
--$as_echo "$libffi_cv_as_cfi_pseudo_op" >&6; }
--if test "x$libffi_cv_as_cfi_pseudo_op" = xyes; then
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_cfi_pseudo_op" >&5
-+$as_echo "$gcc_cv_as_cfi_pseudo_op" >&6; }
-+ if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then
- 
- $as_echo "#define HAVE_AS_CFI_PSEUDO_OP 1" >>confdefs.h
- 
--fi
-+ fi
-+
- 
- if test x$TARGET = xSPARC; then
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler and linker support unaligned pc related relocs" >&5
- $as_echo_n "checking assembler and linker support unaligned pc related relocs... " >&6; }
--if test "${libffi_cv_as_sparc_ua_pcrel+set}" = set; then :
-+if ${libffi_cv_as_sparc_ua_pcrel+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
- 
- 	save_CFLAGS="$CFLAGS"
- 	save_LDFLAGS="$LDFLAGS"
- 	CFLAGS="$CFLAGS -fpic"
- 	LDFLAGS="$LDFLAGS -shared"
- 	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-@@ -12236,29 +14596,29 @@ fi
-     if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then
- 
- $as_echo "#define HAVE_AS_SPARC_UA_PCREL 1" >>confdefs.h
- 
-     fi
- 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .register pseudo-op support" >&5
- $as_echo_n "checking assembler .register pseudo-op support... " >&6; }
--if test "${libffi_cv_as_register_pseudo_op+set}" = set; then :
-+if ${libffi_cv_as_register_pseudo_op+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
- 
-        libffi_cv_as_register_pseudo_op=unknown
-        # Check if we have .register
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
-+
-+int
-+main ()
-+{
- asm (".register %g2, #scratch");
--int
--main ()
--{
--
-   ;
-   return 0;
- }
- _ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
-   libffi_cv_as_register_pseudo_op=yes
- else
-   libffi_cv_as_register_pseudo_op=no
-@@ -12273,50 +14633,50 @@ fi
- $as_echo "#define HAVE_AS_REGISTER_PSEUDO_OP 1" >>confdefs.h
- 
-     fi
- fi
- 
- if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports pc related relocs" >&5
- $as_echo_n "checking assembler supports pc related relocs... " >&6; }
--if test "${libffi_cv_as_x86_pcrel+set}" = set; then :
-+if ${libffi_cv_as_x86_pcrel+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
- 
- 	libffi_cv_as_x86_pcrel=no
- 	echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s
--	if $CC $CFLAGS -c conftest.s > /dev/null; then
-+	if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then
- 	    libffi_cv_as_x86_pcrel=yes
- 	fi
- 
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_pcrel" >&5
- $as_echo "$libffi_cv_as_x86_pcrel" >&6; }
-     if test "x$libffi_cv_as_x86_pcrel" = xyes; then
- 
- $as_echo "#define HAVE_AS_X86_PCREL 1" >>confdefs.h
- 
-     fi
- 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .ascii pseudo-op support" >&5
- $as_echo_n "checking assembler .ascii pseudo-op support... " >&6; }
--if test "${libffi_cv_as_ascii_pseudo_op+set}" = set; then :
-+if ${libffi_cv_as_ascii_pseudo_op+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
- 
-        libffi_cv_as_ascii_pseudo_op=unknown
-        # Check if we have .ascii
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
--asm (".ascii \"string\"");
--int
--main ()
--{
--
-+
-+int
-+main ()
-+{
-+asm (".ascii \\"string\\"");
-   ;
-   return 0;
- }
- _ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
-   libffi_cv_as_ascii_pseudo_op=yes
- else
-   libffi_cv_as_ascii_pseudo_op=no
-@@ -12329,29 +14689,29 @@ fi
-     if test "x$libffi_cv_as_ascii_pseudo_op" = xyes; then
- 
- $as_echo "#define HAVE_AS_ASCII_PSEUDO_OP 1" >>confdefs.h
- 
-     fi
- 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .string pseudo-op support" >&5
- $as_echo_n "checking assembler .string pseudo-op support... " >&6; }
--if test "${libffi_cv_as_string_pseudo_op+set}" = set; then :
-+if ${libffi_cv_as_string_pseudo_op+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
- 
-        libffi_cv_as_string_pseudo_op=unknown
-        # Check if we have .string
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
--asm (".string \"string\"");
--int
--main ()
--{
--
-+
-+int
-+main ()
-+{
-+asm (".string \\"string\\"");
-   ;
-   return 0;
- }
- _ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
-   libffi_cv_as_string_pseudo_op=yes
- else
-   libffi_cv_as_string_pseudo_op=no
-@@ -12363,20 +14723,30 @@ fi
- $as_echo "$libffi_cv_as_string_pseudo_op" >&6; }
-     if test "x$libffi_cv_as_string_pseudo_op" = xyes; then
- 
- $as_echo "#define HAVE_AS_STRING_PSEUDO_OP 1" >>confdefs.h
- 
-     fi
- fi
- 
--if test x$TARGET = xX86_WIN64; then
--    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ prefix in compiled symbols" >&5
-+# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC.
-+# Check whether --enable-pax_emutramp was given.
-+if test "${enable_pax_emutramp+set}" = set; then :
-+  enableval=$enable_pax_emutramp; if test "$enable_pax_emutramp" = "yes"; then
-+
-+$as_echo "#define FFI_MMAP_EXEC_EMUTRAMP_PAX 1" >>confdefs.h
-+
-+  fi
-+fi
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ prefix in compiled symbols" >&5
- $as_echo_n "checking for _ prefix in compiled symbols... " >&6; }
--if test "${lt_cv_sys_symbol_underscore+set}" = set; then :
-+if ${lt_cv_sys_symbol_underscore+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   lt_cv_sys_symbol_underscore=no
-   cat > conftest.$ac_ext <<_LT_EOF
- void nm_test_func(){}
- int main(){nm_test_func;return 0;}
- _LT_EOF
-   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-@@ -12411,36 +14781,50 @@ int main(){nm_test_func;return 0;}
-   rm -rf conftest*
- 
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_symbol_underscore" >&5
- $as_echo "$lt_cv_sys_symbol_underscore" >&6; }
-   sys_symbol_underscore=$lt_cv_sys_symbol_underscore
- 
- 
--    if test "x$sys_symbol_underscore" = xyes; then
-+if test "x$sys_symbol_underscore" = xyes; then
- 
- $as_echo "#define SYMBOL_UNDERSCORE 1" >>confdefs.h
- 
--    fi
--fi
--
-+fi
-+
-+FFI_EXEC_TRAMPOLINE_TABLE=0
- case "$target" in
--     # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages
--     *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
-+     *arm*-apple-darwin*)
-+       FFI_EXEC_TRAMPOLINE_TABLE=1
-+
-+$as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h
-+
-+     ;;
-+     *-apple-darwin1* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*)
- 
- $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
- 
-      ;;
- esac
-+ if test x$FFI_EXEC_TRAMPOLINE_TABLE = x1; then
-+  FFI_EXEC_TRAMPOLINE_TABLE_TRUE=
-+  FFI_EXEC_TRAMPOLINE_TABLE_FALSE='#'
-+else
-+  FFI_EXEC_TRAMPOLINE_TABLE_TRUE='#'
-+  FFI_EXEC_TRAMPOLINE_TABLE_FALSE=
-+fi
-+
-+
- 
- if test x$TARGET = xX86_64; then
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking toolchain supports unwind section type" >&5
- $as_echo_n "checking toolchain supports unwind section type... " >&6; }
--if test "${libffi_cv_as_x86_64_unwind_section_type+set}" = set; then :
-+if ${libffi_cv_as_x86_64_unwind_section_type+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
- 
-         cat  > conftest1.s << EOF
- .text
- .globl foo
- foo:
- jmp bar
-@@ -12466,77 +14850,80 @@ fi
- $as_echo "$libffi_cv_as_x86_64_unwind_section_type" >&6; }
-     if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
- 
- $as_echo "#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1" >>confdefs.h
- 
-     fi
- fi
- 
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5
-+if test "x$GCC" = "xyes"; then
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5
- $as_echo_n "checking whether .eh_frame section should be read-only... " >&6; }
--if test "${libffi_cv_ro_eh_frame+set}" = set; then :
--  $as_echo_n "(cached) " >&6
--else
--
--	libffi_cv_ro_eh_frame=no
--	echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
--	if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
--	    if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
--		libffi_cv_ro_eh_frame=yes
--	    elif grep '.section.*eh_frame.*#alloc' conftest.c \
--		 | grep -v '#write' > /dev/null; then
--		libffi_cv_ro_eh_frame=yes
--	    fi
--	fi
--	rm -f conftest.*
-+if ${libffi_cv_ro_eh_frame+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+
-+  	libffi_cv_ro_eh_frame=no
-+  	echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
-+  	if $CC $CFLAGS -c -fpic -fexceptions -o conftest.o conftest.c > /dev/null 2>&1; then
-+	    objdump -h conftest.o > conftest.dump 2>&1
-+	    libffi_eh_frame_line=`grep -n eh_frame conftest.dump | cut -d: -f 1`
-+	    libffi_test_line=`expr $libffi_eh_frame_line + 1`p
-+	    sed -n $libffi_test_line conftest.dump > conftest.line
-+  	    if grep READONLY conftest.line > /dev/null; then
-+  		libffi_cv_ro_eh_frame=yes
-+  	    fi
-+  	fi
-+  	rm -f conftest.*
- 
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_ro_eh_frame" >&5
- $as_echo "$libffi_cv_ro_eh_frame" >&6; }
--if test "x$libffi_cv_ro_eh_frame" = xyes; then
-+  if test "x$libffi_cv_ro_eh_frame" = xyes; then
- 
- $as_echo "#define HAVE_RO_EH_FRAME 1" >>confdefs.h
- 
- 
- $as_echo "#define EH_FRAME_FLAGS \"a\"" >>confdefs.h
- 
--else
-+  else
- 
- $as_echo "#define EH_FRAME_FLAGS \"aw\"" >>confdefs.h
- 
--fi
--
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
-+  fi
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
- $as_echo_n "checking for __attribute__((visibility(\"hidden\")))... " >&6; }
--if test "${libffi_cv_hidden_visibility_attribute+set}" = set; then :
--  $as_echo_n "(cached) " >&6
--else
--
--	echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
--	libffi_cv_hidden_visibility_attribute=no
--	if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
-+if ${libffi_cv_hidden_visibility_attribute+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+
-+  	echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1  ; }' > conftest.c
-+  	libffi_cv_hidden_visibility_attribute=no
-+  	if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
-   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-   test $ac_status = 0; }; }; then
--	    if grep '\.hidden.*foo' conftest.s >/dev/null; then
--		libffi_cv_hidden_visibility_attribute=yes
--	    fi
--	fi
--	rm -f conftest.*
-+  	    if grep '\.hidden.*foo' conftest.s >/dev/null; then
-+  		libffi_cv_hidden_visibility_attribute=yes
-+  	    fi
-+  	fi
-+  	rm -f conftest.*
- 
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_hidden_visibility_attribute" >&5
- $as_echo "$libffi_cv_hidden_visibility_attribute" >&6; }
--if test $libffi_cv_hidden_visibility_attribute = yes; then
-+  if test $libffi_cv_hidden_visibility_attribute = yes; then
- 
- $as_echo "#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1" >>confdefs.h
- 
-+  fi
- fi
- 
- 
- 
- 
- 
- 
- 
-@@ -12563,16 +14950,24 @@ fi
- if test "${enable_structs+set}" = set; then :
-   enableval=$enable_structs; if test "$enable_structs" = "no"; then
- 
- $as_echo "#define FFI_NO_STRUCTS 1" >>confdefs.h
- 
-   fi
- fi
- 
-+ if test "$enable_debug" = "yes"; then
-+  FFI_DEBUG_TRUE=
-+  FFI_DEBUG_FALSE='#'
-+else
-+  FFI_DEBUG_TRUE='#'
-+  FFI_DEBUG_FALSE=
-+fi
-+
- 
- # Check whether --enable-raw-api was given.
- if test "${enable_raw_api+set}" = set; then :
-   enableval=$enable_raw_api; if test "$enable_raw_api" = "no"; then
- 
- $as_echo "#define FFI_NO_RAW_API 1" >>confdefs.h
- 
-   fi
-@@ -12584,37 +14979,37 @@ if test "${enable_purify_safety+set}" = 
-   enableval=$enable_purify_safety; if test "$enable_purify_safety" = "yes"; then
- 
- $as_echo "#define USING_PURIFY 1" >>confdefs.h
- 
-   fi
- fi
- 
- 
--if test -n "$with_cross_host" &&
--   test x"$with_cross_host" != x"no"; then
--  toolexecdir='$(exec_prefix)/$(target_alias)'
--  toolexeclibdir='$(toolexecdir)/lib'
--else
--  toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
-+# These variables are only ever used when we cross-build to X86_WIN32.
-+# And we only support this with GCC, so...
-+if test "x$GCC" = "xyes"; then
-+  if test -n "$with_cross_host" &&
-+     test x"$with_cross_host" != x"no"; then
-+    toolexecdir='$(exec_prefix)/$(target_alias)'
-+    toolexeclibdir='$(toolexecdir)/lib'
-+  else
-+    toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
-+    toolexeclibdir='$(libdir)'
-+  fi
-+  multi_os_directory=`$CC -print-multi-os-directory`
-+  case $multi_os_directory in
-+    .) ;; # Avoid trailing /.
-+    ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
-+  esac
-+
-+else
-   toolexeclibdir='$(libdir)'
- fi
--multi_os_directory=`$CC -print-multi-os-directory`
--case $multi_os_directory in
--  .) ;; # Avoid trailing /.
--  *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
--esac
--
--
--
--if test "${multilib}" = "yes"; then
--  multilib_arg="--enable-multilib"
--else
--  multilib_arg=
--fi
-+
- 
- ac_config_commands="$ac_config_commands include"
- 
- ac_config_commands="$ac_config_commands src"
- 
- 
- ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETDIR/ffitarget.h"
- 
-@@ -12681,192 +15076,268 @@ cat >confcache <<\_ACEOF
-      t clear
-      :clear
-      s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-      t end
-      s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-      :end' >>confcache
- if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-   if test -w "$cache_file"; then
--    test "x$cache_file" != "x/dev/null" &&
-+    if test "x$cache_file" != "x/dev/null"; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
- $as_echo "$as_me: updating cache $cache_file" >&6;}
--    cat confcache >$cache_file
-+      if test ! -f "$cache_file" || test -h "$cache_file"; then
-+	cat confcache >"$cache_file"
-+      else
-+        case $cache_file in #(
-+        */* | ?:*)
-+	  mv -f confcache "$cache_file"$$ &&
-+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
-+        *)
-+	  mv -f confcache "$cache_file" ;;
-+	esac
-+      fi
-+    fi
-   else
-     { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
- $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-   fi
- fi
- rm -f confcache
- 
- test "x$prefix" = xNONE && prefix=$ac_default_prefix
- # Let make expand exec_prefix.
- test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
- 
- DEFS=-DHAVE_CONFIG_H
- 
- ac_libobjs=
- ac_ltlibobjs=
-+U=
- for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-   # 1. Remove the extension, and $U if already installed.
-   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-   ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-   # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-   #    will be set to the directory where LIBOBJS objects are built.
-   as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-   as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
- done
- LIBOBJS=$ac_libobjs
- 
- LTLIBOBJS=$ac_ltlibobjs
- 
- 
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
-+$as_echo_n "checking that generated files are newer than configure... " >&6; }
-+   if test -n "$am_sleep_pid"; then
-+     # Hide warnings about reused PIDs.
-+     wait $am_sleep_pid 2>/dev/null
-+   fi
-+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
-+$as_echo "done" >&6; }
-  if test -n "$EXEEXT"; then
-   am__EXEEXT_TRUE=
-   am__EXEEXT_FALSE='#'
- else
-   am__EXEEXT_TRUE='#'
-   am__EXEEXT_FALSE=
- fi
- 
- if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
--  as_fn_error "conditional \"AMDEP\" was never defined.
-+  as_fn_error $? "conditional \"AMDEP\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
--  as_fn_error "conditional \"am__fastdepCC\" was never defined.
-+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then
--  as_fn_error "conditional \"am__fastdepCCAS\" was never defined.
-+  as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
--  as_fn_error "conditional \"MAINTAINER_MODE\" was never defined.
-+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${TESTSUBDIR_TRUE}" && test -z "${TESTSUBDIR_FALSE}"; then
--  as_fn_error "conditional \"TESTSUBDIR\" was never defined.
-+  as_fn_error $? "conditional \"TESTSUBDIR\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${MIPS_TRUE}" && test -z "${MIPS_FALSE}"; then
--  as_fn_error "conditional \"MIPS\" was never defined.
-+  as_fn_error $? "conditional \"MIPS\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
-+if test -z "${BFIN_TRUE}" && test -z "${BFIN_FALSE}"; then
-+  as_fn_error $? "conditional \"BFIN\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
- if test -z "${SPARC_TRUE}" && test -z "${SPARC_FALSE}"; then
--  as_fn_error "conditional \"SPARC\" was never defined.
-+  as_fn_error $? "conditional \"SPARC\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${X86_TRUE}" && test -z "${X86_FALSE}"; then
--  as_fn_error "conditional \"X86\" was never defined.
-+  as_fn_error $? "conditional \"X86\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${X86_FREEBSD_TRUE}" && test -z "${X86_FREEBSD_FALSE}"; then
--  as_fn_error "conditional \"X86_FREEBSD\" was never defined.
-+  as_fn_error $? "conditional \"X86_FREEBSD\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${X86_WIN32_TRUE}" && test -z "${X86_WIN32_FALSE}"; then
--  as_fn_error "conditional \"X86_WIN32\" was never defined.
-+  as_fn_error $? "conditional \"X86_WIN32\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${X86_WIN64_TRUE}" && test -z "${X86_WIN64_FALSE}"; then
--  as_fn_error "conditional \"X86_WIN64\" was never defined.
-+  as_fn_error $? "conditional \"X86_WIN64\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${X86_DARWIN_TRUE}" && test -z "${X86_DARWIN_FALSE}"; then
--  as_fn_error "conditional \"X86_DARWIN\" was never defined.
-+  as_fn_error $? "conditional \"X86_DARWIN\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
-+if test -z "${X86_DARWIN32_TRUE}" && test -z "${X86_DARWIN32_FALSE}"; then
-+  as_fn_error $? "conditional \"X86_DARWIN32\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
-+if test -z "${X86_DARWIN64_TRUE}" && test -z "${X86_DARWIN64_FALSE}"; then
-+  as_fn_error $? "conditional \"X86_DARWIN64\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
- if test -z "${ALPHA_TRUE}" && test -z "${ALPHA_FALSE}"; then
--  as_fn_error "conditional \"ALPHA\" was never defined.
-+  as_fn_error $? "conditional \"ALPHA\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${IA64_TRUE}" && test -z "${IA64_FALSE}"; then
--  as_fn_error "conditional \"IA64\" was never defined.
-+  as_fn_error $? "conditional \"IA64\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${M32R_TRUE}" && test -z "${M32R_FALSE}"; then
--  as_fn_error "conditional \"M32R\" was never defined.
-+  as_fn_error $? "conditional \"M32R\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${M68K_TRUE}" && test -z "${M68K_FALSE}"; then
--  as_fn_error "conditional \"M68K\" was never defined.
-+  as_fn_error $? "conditional \"M68K\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
-+if test -z "${M88K_TRUE}" && test -z "${M88K_FALSE}"; then
-+  as_fn_error $? "conditional \"M88K\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
-+if test -z "${MICROBLAZE_TRUE}" && test -z "${MICROBLAZE_FALSE}"; then
-+  as_fn_error $? "conditional \"MICROBLAZE\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
-+if test -z "${METAG_TRUE}" && test -z "${METAG_FALSE}"; then
-+  as_fn_error $? "conditional \"METAG\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
- if test -z "${MOXIE_TRUE}" && test -z "${MOXIE_FALSE}"; then
--  as_fn_error "conditional \"MOXIE\" was never defined.
-+  as_fn_error $? "conditional \"MOXIE\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
-+if test -z "${NIOS2_TRUE}" && test -z "${NIOS2_FALSE}"; then
-+  as_fn_error $? "conditional \"NIOS2\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
- if test -z "${POWERPC_TRUE}" && test -z "${POWERPC_FALSE}"; then
--  as_fn_error "conditional \"POWERPC\" was never defined.
-+  as_fn_error $? "conditional \"POWERPC\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${POWERPC_AIX_TRUE}" && test -z "${POWERPC_AIX_FALSE}"; then
--  as_fn_error "conditional \"POWERPC_AIX\" was never defined.
-+  as_fn_error $? "conditional \"POWERPC_AIX\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${POWERPC_DARWIN_TRUE}" && test -z "${POWERPC_DARWIN_FALSE}"; then
--  as_fn_error "conditional \"POWERPC_DARWIN\" was never defined.
-+  as_fn_error $? "conditional \"POWERPC_DARWIN\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${POWERPC_FREEBSD_TRUE}" && test -z "${POWERPC_FREEBSD_FALSE}"; then
--  as_fn_error "conditional \"POWERPC_FREEBSD\" was never defined.
-+  as_fn_error $? "conditional \"POWERPC_FREEBSD\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
-+if test -z "${AARCH64_TRUE}" && test -z "${AARCH64_FALSE}"; then
-+  as_fn_error $? "conditional \"AARCH64\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
-+if test -z "${ARC_TRUE}" && test -z "${ARC_FALSE}"; then
-+  as_fn_error $? "conditional \"ARC\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
- if test -z "${ARM_TRUE}" && test -z "${ARM_FALSE}"; then
--  as_fn_error "conditional \"ARM\" was never defined.
-+  as_fn_error $? "conditional \"ARM\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${AVR32_TRUE}" && test -z "${AVR32_FALSE}"; then
--  as_fn_error "conditional \"AVR32\" was never defined.
-+  as_fn_error $? "conditional \"AVR32\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${LIBFFI_CRIS_TRUE}" && test -z "${LIBFFI_CRIS_FALSE}"; then
--  as_fn_error "conditional \"LIBFFI_CRIS\" was never defined.
-+  as_fn_error $? "conditional \"LIBFFI_CRIS\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${FRV_TRUE}" && test -z "${FRV_FALSE}"; then
--  as_fn_error "conditional \"FRV\" was never defined.
-+  as_fn_error $? "conditional \"FRV\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${S390_TRUE}" && test -z "${S390_FALSE}"; then
--  as_fn_error "conditional \"S390\" was never defined.
-+  as_fn_error $? "conditional \"S390\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${X86_64_TRUE}" && test -z "${X86_64_FALSE}"; then
--  as_fn_error "conditional \"X86_64\" was never defined.
-+  as_fn_error $? "conditional \"X86_64\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${SH_TRUE}" && test -z "${SH_FALSE}"; then
--  as_fn_error "conditional \"SH\" was never defined.
-+  as_fn_error $? "conditional \"SH\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${SH64_TRUE}" && test -z "${SH64_FALSE}"; then
--  as_fn_error "conditional \"SH64\" was never defined.
-+  as_fn_error $? "conditional \"SH64\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${PA_LINUX_TRUE}" && test -z "${PA_LINUX_FALSE}"; then
--  as_fn_error "conditional \"PA_LINUX\" was never defined.
-+  as_fn_error $? "conditional \"PA_LINUX\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${PA_HPUX_TRUE}" && test -z "${PA_HPUX_FALSE}"; then
--  as_fn_error "conditional \"PA_HPUX\" was never defined.
-+  as_fn_error $? "conditional \"PA_HPUX\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
- if test -z "${PA64_HPUX_TRUE}" && test -z "${PA64_HPUX_FALSE}"; then
--  as_fn_error "conditional \"PA64_HPUX\" was never defined.
-+  as_fn_error $? "conditional \"PA64_HPUX\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
--
-+if test -z "${TILE_TRUE}" && test -z "${TILE_FALSE}"; then
-+  as_fn_error $? "conditional \"TILE\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
-+if test -z "${VAX_TRUE}" && test -z "${VAX_FALSE}"; then
-+  as_fn_error $? "conditional \"VAX\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
-+if test -z "${XTENSA_TRUE}" && test -z "${XTENSA_FALSE}"; then
-+  as_fn_error $? "conditional \"XTENSA\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
-+
-+if test -z "${FFI_EXEC_TRAMPOLINE_TABLE_TRUE}" && test -z "${FFI_EXEC_TRAMPOLINE_TABLE_FALSE}"; then
-+  as_fn_error $? "conditional \"FFI_EXEC_TRAMPOLINE_TABLE\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
- if test -z "${FFI_DEBUG_TRUE}" && test -z "${FFI_DEBUG_FALSE}"; then
--  as_fn_error "conditional \"FFI_DEBUG\" was never defined.
-+  as_fn_error $? "conditional \"FFI_DEBUG\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
--
--: ${CONFIG_STATUS=./config.status}
-+if test -z "${FFI_DEBUG_TRUE}" && test -z "${FFI_DEBUG_FALSE}"; then
-+  as_fn_error $? "conditional \"FFI_DEBUG\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
-+
-+: "${CONFIG_STATUS=./config.status}"
- ac_write_fail=0
- ac_clean_files_save=$ac_clean_files
- ac_clean_files="$ac_clean_files $CONFIG_STATUS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
- $as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
- as_write_fail=0
- cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
- #! $SHELL
-@@ -12957,16 +15428,17 @@ fi
- # IFS
- # We need space, tab and new line, in precisely that order.  Quoting is
- # there to prevent editors from complaining about space-tab.
- # (If _AS_PATH_WALK were called with IFS unset, it would disable word
- # splitting by setting IFS to empty value.)
- IFS=" ""	$as_nl"
- 
- # Find who we are.  Look in the path if we contain no directory separator.
-+as_myself=
- case $0 in #((
-   *[\\/]* ) as_myself=$0 ;;
-   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-   IFS=$as_save_IFS
-   test -z "$as_dir" && as_dir=.
-     test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-@@ -13002,29 +15474,29 @@ LC_ALL=C
- export LC_ALL
- LANGUAGE=C
- export LANGUAGE
- 
- # CDPATH.
- (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
- 
- 
--# as_fn_error ERROR [LINENO LOG_FD]
--# ---------------------------------
-+# as_fn_error STATUS ERROR [LINENO LOG_FD]
-+# ----------------------------------------
- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
- # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
--# script with status $?, using 1 if that was 0.
-+# script with STATUS, using 1 if that was 0.
- as_fn_error ()
- {
--  as_status=$?; test $as_status -eq 0 && as_status=1
--  if test "$3"; then
--    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
--    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
--  fi
--  $as_echo "$as_me: error: $1" >&2
-+  as_status=$1; test $as_status -eq 0 && as_status=1
-+  if test "$4"; then
-+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-+  fi
-+  $as_echo "$as_me: error: $2" >&2
-   as_fn_exit $as_status
- } # as_fn_error
- 
- 
- # as_fn_set_status STATUS
- # -----------------------
- # Set $? to STATUS, without forking.
- as_fn_set_status ()
-@@ -13152,26 +15624,26 @@ else
-   mkdir conf$$.dir 2>/dev/null
- fi
- if (echo >conf$$.file) 2>/dev/null; then
-   if ln -s conf$$.file conf$$ 2>/dev/null; then
-     as_ln_s='ln -s'
-     # ... but there are two gotchas:
-     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
--    # In both cases, we have to default to `cp -p'.
-+    # In both cases, we have to default to `cp -pR'.
-     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
--      as_ln_s='cp -p'
-+      as_ln_s='cp -pR'
-   elif ln conf$$.file conf$$ 2>/dev/null; then
-     as_ln_s=ln
-   else
--    as_ln_s='cp -p'
--  fi
--else
--  as_ln_s='cp -p'
-+    as_ln_s='cp -pR'
-+  fi
-+else
-+  as_ln_s='cp -pR'
- fi
- rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
- rmdir conf$$.dir 2>/dev/null
- 
- 
- # as_fn_mkdir_p
- # -------------
- # Create "$as_dir" as a directory, including parents if necessary.
-@@ -13210,49 +15682,37 @@ as_fn_mkdir_p ()
- 	  /^X\(\/\).*/{
- 	    s//\1/
- 	    q
- 	  }
- 	  s/.*/./; q'`
-       test -d "$as_dir" && break
-     done
-     test -z "$as_dirs" || eval "mkdir $as_dirs"
--  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
-+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
- 
- 
- } # as_fn_mkdir_p
- if mkdir -p . 2>/dev/null; then
-   as_mkdir_p='mkdir -p "$as_dir"'
- else
-   test -d ./-p && rmdir ./-p
-   as_mkdir_p=false
- fi
- 
--if test -x / >/dev/null 2>&1; then
--  as_test_x='test -x'
--else
--  if ls -dL / >/dev/null 2>&1; then
--    as_ls_L_option=L
--  else
--    as_ls_L_option=
--  fi
--  as_test_x='
--    eval sh -c '\''
--      if test -d "$1"; then
--	test -d "$1/.";
--      else
--	case $1 in #(
--	-*)set "./$1";;
--	esac;
--	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
--	???[sx]*):;;*)false;;esac;fi
--    '\'' sh
--  '
--fi
--as_executable_p=$as_test_x
-+
-+# as_fn_executable_p FILE
-+# -----------------------
-+# Test if FILE is an executable regular file.
-+as_fn_executable_p ()
-+{
-+  test -f "$1" && test -x "$1"
-+} # as_fn_executable_p
-+as_test_x='test -x'
-+as_executable_p=as_fn_executable_p
- 
- # Sed expression to map a string onto a valid CPP name.
- as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
- 
- # Sed expression to map a string onto a valid variable name.
- as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
- 
- 
-@@ -13263,18 +15723,18 @@ exec 6>&1
- _ASEOF
- test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
- 
- cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- # Save the log message, to keep $0 and so on meaningful, and to
- # report actual input values of CONFIG_FILES etc. instead of their
- # values after options handling.
- ac_log="
--This file was extended by libffi $as_me 3.0.10rc0, which was
--generated by GNU Autoconf 2.65.  Invocation command line was
-+This file was extended by libffi $as_me 3.1-rc1, which was
-+generated by GNU Autoconf 2.69.  Invocation command line was
- 
-   CONFIG_FILES    = $CONFIG_FILES
-   CONFIG_HEADERS  = $CONFIG_HEADERS
-   CONFIG_LINKS    = $CONFIG_LINKS
-   CONFIG_COMMANDS = $CONFIG_COMMANDS
-   $ $0 $@
- 
- on `(hostname || uname -n) 2>/dev/null | sed 1q`
-@@ -13327,27 +15787,27 @@ Configuration headers:
- $config_headers
- 
- Configuration links:
- $config_links
- 
- Configuration commands:
- $config_commands
- 
--Report bugs to <http://gcc.gnu.org/bugs.html>."
-+Report bugs to <http://github.com/atgreen/libffi/issues>."
- 
- _ACEOF
- cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
- ac_cs_version="\\
--libffi config.status 3.0.10rc0
--configured by $0, generated by GNU Autoconf 2.65,
-+libffi config.status 3.1-rc1
-+configured by $0, generated by GNU Autoconf 2.69,
-   with options \\"\$ac_cs_config\\"
- 
--Copyright (C) 2009 Free Software Foundation, Inc.
-+Copyright (C) 2012 Free Software Foundation, Inc.
- This config.status script is free software; the Free Software Foundation
- gives unlimited permission to copy, distribute and modify it."
- 
- ac_pwd='$ac_pwd'
- srcdir='$srcdir'
- INSTALL='$INSTALL'
- MKDIR_P='$MKDIR_P'
- AWK='$AWK'
-@@ -13355,21 +15815,26 @@ test -n "\$AWK" || AWK=awk
- _ACEOF
- 
- cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- # The default lists apply if the user does not specify any file.
- ac_need_defaults=:
- while test $# != 0
- do
-   case $1 in
--  --*=*)
-+  --*=?*)
-     ac_option=`expr "X$1" : 'X\([^=]*\)='`
-     ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-     ac_shift=:
-     ;;
-+  --*=)
-+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-+    ac_optarg=
-+    ac_shift=:
-+    ;;
-   *)
-     ac_option=$1
-     ac_optarg=$2
-     ac_shift=shift
-     ;;
-   esac
- 
-   case $ac_option in
-@@ -13381,38 +15846,39 @@ do
-   --config | --confi | --conf | --con | --co | --c )
-     $as_echo "$ac_cs_config"; exit ;;
-   --debug | --debu | --deb | --de | --d | -d )
-     debug=: ;;
-   --file | --fil | --fi | --f )
-     $ac_shift
-     case $ac_optarg in
-     *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-+    '') as_fn_error $? "missing file argument" ;;
-     esac
-     as_fn_append CONFIG_FILES " '$ac_optarg'"
-     ac_need_defaults=false;;
-   --header | --heade | --head | --hea )
-     $ac_shift
-     case $ac_optarg in
-     *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-     esac
-     as_fn_append CONFIG_HEADERS " '$ac_optarg'"
-     ac_need_defaults=false;;
-   --he | --h)
-     # Conflict between --help and --header
--    as_fn_error "ambiguous option: \`$1'
-+    as_fn_error $? "ambiguous option: \`$1'
- Try \`$0 --help' for more information.";;
-   --help | --hel | -h )
-     $as_echo "$ac_cs_usage"; exit ;;
-   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-   | -silent | --silent | --silen | --sile | --sil | --si | --s)
-     ac_cs_silent=: ;;
- 
-   # This is an error.
--  -*) as_fn_error "unrecognized option: \`$1'
-+  -*) as_fn_error $? "unrecognized option: \`$1'
- Try \`$0 --help' for more information." ;;
- 
-   *) as_fn_append ac_config_targets " $1"
-      ac_need_defaults=false ;;
- 
-   esac
-   shift
- done
-@@ -13422,17 +15888,17 @@ ac_configure_extra_args=
- if $ac_cs_silent; then
-   exec 6>/dev/null
-   ac_configure_extra_args="$ac_configure_extra_args --silent"
- fi
- 
- _ACEOF
- cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- if \$ac_cs_recheck; then
--  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-   shift
-   \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-   CONFIG_SHELL='$SHELL'
-   export CONFIG_SHELL
-   exec "\$@"
- fi
- 
- _ACEOF
-@@ -13446,211 +15912,246 @@ exec 5>>config.log
-   $as_echo "$ac_log"
- } >&5
- 
- _ACEOF
- cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- #
- # INIT-COMMANDS
- #
-+ax_enable_builddir_srcdir="$srcdir"                    # $srcdir
-+ax_enable_builddir_host="$HOST"                        # $HOST / $host
-+ax_enable_builddir_version="$VERSION"                  # $VERSION
-+ax_enable_builddir_package="$PACKAGE"                  # $PACKAGE
-+ax_enable_builddir_auxdir="$ax_enable_builddir_auxdir" # $AUX
-+ax_enable_builddir_sed="$ax_enable_builddir_sed"       # $SED
-+ax_enable_builddir="$ax_enable_builddir"               # $SUB
-+
- AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
- 
- 
- # The HP-UX ksh and POSIX shell print the target directory to stdout
- # if CDPATH is set.
- (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
- 
- sed_quote_subst='$sed_quote_subst'
- double_quote_subst='$double_quote_subst'
- delay_variable_subst='$delay_variable_subst'
--macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`'
--macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`'
--enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
--enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`'
--pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`'
--enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`'
--host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`'
--host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`'
--host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`'
--build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`'
--build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`'
--build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`'
--SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`'
--Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`'
--GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`'
--EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`'
--FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`'
--LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`'
--NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`'
--LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`'
--max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`'
--ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`'
--exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`'
--lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`'
--lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`'
--lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`'
--reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`'
--reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`'
--deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`'
--file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`'
--AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`'
--AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`'
--STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`'
--RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`'
--old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`'
--CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`'
--compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`'
--GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`'
--lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`'
--lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`'
--lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`'
--lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
--objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`'
--SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`'
--ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`'
--MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`'
--lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`'
--lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`'
--lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`'
--lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`'
--lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`'
--need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`'
--DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`'
--NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`'
--LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`'
--OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`'
--OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`'
--libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`'
--shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`'
--enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`'
--export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
--whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
--compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`'
--old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`'
--allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
--no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
--hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
--hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`'
--hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`'
--hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`'
--hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`'
--hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`'
--hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
--hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`'
--inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`'
--link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`'
--fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`'
--always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`'
--export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
--include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
--prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`'
--variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`'
--need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
--need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`'
--version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`'
--runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`'
--shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
--shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`'
--libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`'
--library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`'
--soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`'
--postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`'
--finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`'
--hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`'
--sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
--sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
--hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`'
--enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`'
--enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`'
--enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`'
--old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`'
--striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`'
-+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
-+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
-+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
-+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
-+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
-+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
-+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
-+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
-+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
-+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
-+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
-+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
-+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
-+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
-+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
-+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
-+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
-+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
-+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
-+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
-+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
-+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
-+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
-+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
-+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
-+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
-+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
-+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
-+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
-+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
-+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
-+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
-+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
-+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
-+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
-+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
-+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
-+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
-+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
-+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
-+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
-+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
-+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
-+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
-+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
-+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
-+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
-+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
-+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
-+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
-+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
-+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
-+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
-+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
-+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
-+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
-+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
-+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
-+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
-+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
-+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
-+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
-+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
-+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
-+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
-+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
-+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
-+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
-+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
-+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
-+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
-+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
-+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
-+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
-+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
-+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
-+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
-+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
-+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
-+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
-+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
-+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
-+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
-+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
-+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
-+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
-+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
-+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
-+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
-+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
-+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
-+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
-+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
-+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
-+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
-+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
-+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
-+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
-+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
-+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
-+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
-+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
-+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
-+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
-+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
-+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
-+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
- 
- LTCC='$LTCC'
- LTCFLAGS='$LTCFLAGS'
- compiler='$compiler_DEFAULT'
- 
-+# A function that is used when there is no print builtin or printf.
-+func_fallback_echo ()
-+{
-+  eval 'cat <<_LTECHO_EOF
-+\$1
-+_LTECHO_EOF'
-+}
-+
- # Quote evaled strings.
--for var in SED \
-+for var in SHELL \
-+ECHO \
-+PATH_SEPARATOR \
-+SED \
- GREP \
- EGREP \
- FGREP \
- LD \
- NM \
- LN_S \
- lt_SP2NL \
- lt_NL2SP \
- reload_flag \
- OBJDUMP \
- deplibs_check_method \
- file_magic_cmd \
-+file_magic_glob \
-+want_nocaseglob \
-+DLLTOOL \
-+sharedlib_from_linklib_cmd \
- AR \
- AR_FLAGS \
-+archiver_list_spec \
- STRIP \
- RANLIB \
- CC \
- CFLAGS \
- compiler \
- lt_cv_sys_global_symbol_pipe \
- lt_cv_sys_global_symbol_to_cdecl \
- lt_cv_sys_global_symbol_to_c_name_address \
- lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
--SHELL \
--ECHO \
-+nm_file_list_spec \
- lt_prog_compiler_no_builtin_flag \
-+lt_prog_compiler_pic \
- lt_prog_compiler_wl \
--lt_prog_compiler_pic \
- lt_prog_compiler_static \
- lt_cv_prog_compiler_c_o \
- need_locks \
-+MANIFEST_TOOL \
- DSYMUTIL \
- NMEDIT \
- LIPO \
- OTOOL \
- OTOOL64 \
- shrext_cmds \
- export_dynamic_flag_spec \
- whole_archive_flag_spec \
- compiler_needs_object \
- with_gnu_ld \
- allow_undefined_flag \
- no_undefined_flag \
- hardcode_libdir_flag_spec \
--hardcode_libdir_flag_spec_ld \
- hardcode_libdir_separator \
--fix_srcfile_path \
- exclude_expsyms \
- include_expsyms \
- file_list_spec \
- variables_saved_for_relink \
- libname_spec \
- library_names_spec \
- soname_spec \
-+install_override_mode \
- finish_eval \
- old_striplib \
- striplib; do
--    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-     *[\\\\\\\`\\"\\\$]*)
--      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-       ;;
-     *)
-       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-       ;;
-     esac
- done
- 
- # Double-quote double-evaled strings.
-@@ -13662,37 +16163,32 @@ extract_expsyms_cmds \
- old_archive_from_new_cmds \
- old_archive_from_expsyms_cmds \
- archive_cmds \
- archive_expsym_cmds \
- module_cmds \
- module_expsym_cmds \
- export_symbols_cmds \
- prelink_cmds \
-+postlink_cmds \
- postinstall_cmds \
- postuninstall_cmds \
- finish_cmds \
- sys_lib_search_path_spec \
- sys_lib_dlsearch_path_spec; do
--    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-     *[\\\\\\\`\\"\\\$]*)
--      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-       ;;
-     *)
-       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-       ;;
-     esac
- done
- 
--# Fix-up fallback echo if it was mangled by the above quoting rules.
--case \$lt_ECHO in
--*'\\\$0 --fallback-echo"')  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\`
--  ;;
--esac
--
- ac_aux_dir='$ac_aux_dir'
- xsi_shell='$xsi_shell'
- lt_shell_append='$lt_shell_append'
- 
- # See if we are running on zsh, and set the options which allow our
- # commands through without removal of \ escapes INIT.
- if test -n "\${ZSH_VERSION+set}" ; then
-    setopt NO_GLOB_SUBST
-@@ -13713,29 +16209,30 @@ TARGETDIR="$TARGETDIR"
- 
- cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- 
- # Handling of arguments.
- for ac_config_target in $ac_config_targets
- do
-   case $ac_config_target in
-     "fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;;
-+    "buildir") CONFIG_COMMANDS="$CONFIG_COMMANDS buildir" ;;
-     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-     "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-     "include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;;
-     "src") CONFIG_COMMANDS="$CONFIG_COMMANDS src" ;;
-     "include/ffitarget.h") CONFIG_LINKS="$CONFIG_LINKS include/ffitarget.h:src/$TARGETDIR/ffitarget.h" ;;
-     "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
-     "include/ffi.h") CONFIG_FILES="$CONFIG_FILES include/ffi.h" ;;
-     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-     "testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;;
-     "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
-     "libffi.pc") CONFIG_FILES="$CONFIG_FILES libffi.pc" ;;
- 
--  *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-   esac
- done
- 
- 
- # If the user did not use the arguments to specify the items to instantiate,
- # then the envvar interface is used.  Set only those that are not.
- # We use the long form for the default assignment because of an extremely
- # bizarre bug on SunOS 4.1.3.
-@@ -13749,82 +16246,84 @@ fi
- # Have a temporary directory for convenience.  Make it in the build tree
- # simply because there is no reason against having it here, and in addition,
- # creating and moving files from /tmp can sometimes cause problems.
- # Hook for its removal unless debugging.
- # Note that there is a small window in which the directory will not be cleaned:
- # after its creation but before its name has been assigned to `$tmp'.
- $debug ||
- {
--  tmp=
-+  tmp= ac_tmp=
-   trap 'exit_status=$?
--  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
-+  : "${ac_tmp:=$tmp}"
-+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
- ' 0
-   trap 'as_fn_exit 1' 1 2 13 15
- }
- # Create a (secure) tmp directory for tmp files.
- 
- {
-   tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
--  test -n "$tmp" && test -d "$tmp"
-+  test -d "$tmp"
- }  ||
- {
-   tmp=./conf$$-$RANDOM
-   (umask 077 && mkdir "$tmp")
--} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
-+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-+ac_tmp=$tmp
- 
- # Set up the scripts for CONFIG_FILES section.
- # No need to generate them if there are no CONFIG_FILES.
- # This happens for instance with `./config.status config.h'.
- if test -n "$CONFIG_FILES"; then
- 
- 
- ac_cr=`echo X | tr X '\015'`
- # On cygwin, bash can eat \r inside `` if the user requested igncr.
- # But we know of no other shell where ac_cr would be empty at this
- # point, so we can use a bashism as a fallback.
- if test "x$ac_cr" = x; then
-   eval ac_cr=\$\'\\r\'
- fi
- ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
- if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
--  ac_cs_awk_cr='\r'
-+  ac_cs_awk_cr='\\r'
- else
-   ac_cs_awk_cr=$ac_cr
- fi
- 
--echo 'BEGIN {' >"$tmp/subs1.awk" &&
-+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
- _ACEOF
- 
- 
- {
-   echo "cat >conf$$subs.awk <<_ACEOF" &&
-   echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-   echo "_ACEOF"
- } >conf$$subs.sh ||
--  as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
--ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
-+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
- ac_delim='%!_!# '
- for ac_last_try in false false false false false :; do
-   . ./conf$$subs.sh ||
--    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
-+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
- 
-   ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-   if test $ac_delim_n = $ac_delim_num; then
-     break
-   elif $ac_last_try; then
--    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
-+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-   else
-     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-   fi
- done
- rm -f conf$$subs.sh
- 
- cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
--cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
-+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
- _ACEOF
- sed -n '
- h
- s/^/S["/; s/!.*/"]=/
- p
- g
- s/^[^!]*!//
- :repl
-@@ -13862,17 +16361,17 @@ t delim
- /^[^""]/{
-   N
-   s/\n//
- }
- ' >>$CONFIG_STATUS || ac_write_fail=1
- rm -f conf$$subs.awk
- cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- _ACAWK
--cat >>"\$tmp/subs1.awk" <<_ACAWK &&
-+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
-   for (key in S) S_is_set[key] = 1
-   FS = ""
- 
- }
- {
-   line = $ 0
-   nfields = split(line, field, "@")
-   substed = 0
-@@ -13894,59 +16393,67 @@ cat >>"\$tmp/subs1.awk" <<_ACAWK &&
- 
- _ACAWK
- _ACEOF
- cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-   sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
- else
-   cat
--fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
--  || as_fn_error "could not setup config files machinery" "$LINENO" 5
--_ACEOF
--
--# VPATH may cause trouble with some makes, so we remove $(srcdir),
--# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-+_ACEOF
-+
-+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
- # trailing colons and then remove the whole line if VPATH becomes empty
- # (actually we leave an empty line to preserve line numbers).
- if test "x$srcdir" = x.; then
--  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
--s/:*\$(srcdir):*/:/
--s/:*\${srcdir}:*/:/
--s/:*@srcdir@:*/:/
--s/^\([^=]*=[	 ]*\):*/\1/
-+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
-+h
-+s///
-+s/^/:/
-+s/[	 ]*$/:/
-+s/:\$(srcdir):/:/g
-+s/:\${srcdir}:/:/g
-+s/:@srcdir@:/:/g
-+s/^:*//
- s/:*$//
-+x
-+s/\(=[	 ]*\).*/\1/
-+G
-+s/\n//
- s/^[^=]*=[	 ]*$//
- }'
- fi
- 
- cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- fi # test -n "$CONFIG_FILES"
- 
- # Set up the scripts for CONFIG_HEADERS section.
- # No need to generate them if there are no CONFIG_HEADERS.
- # This happens for instance with `./config.status Makefile'.
- if test -n "$CONFIG_HEADERS"; then
--cat >"$tmp/defines.awk" <<\_ACAWK ||
-+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
- BEGIN {
- _ACEOF
- 
- # Transform confdefs.h into an awk script `defines.awk', embedded as
- # here-document in config.status, that substitutes the proper values into
- # config.h.in to produce config.h.
- 
- # Create a delimiter string that does not exist in confdefs.h, to ease
- # handling of long lines.
- ac_delim='%!_!# '
- for ac_last_try in false false :; do
--  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
--  if test -z "$ac_t"; then
-+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-+  if test -z "$ac_tt"; then
-     break
-   elif $ac_last_try; then
--    as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
-+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
-   else
-     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-   fi
- done
- 
- # For the awk script, D is an array of macro values keyed by name,
- # likewise P contains macro parameters if any.  Preserve backslash
- # newline sequences.
-@@ -14021,30 +16528,30 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
-       next
-     }
-   }
- }
- { print }
- _ACAWK
- _ACEOF
- cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
--  as_fn_error "could not setup config headers machinery" "$LINENO" 5
-+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
- fi # test -n "$CONFIG_HEADERS"
- 
- 
- eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS  :L $CONFIG_LINKS  :C $CONFIG_COMMANDS"
- shift
- for ac_tag
- do
-   case $ac_tag in
-   :[FHLC]) ac_mode=$ac_tag; continue;;
-   esac
-   case $ac_mode$ac_tag in
-   :[FHL]*:*);;
--  :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
-+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-   :[FH]-) ac_tag=-:-;;
-   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-   esac
-   ac_save_IFS=$IFS
-   IFS=:
-   set x $ac_tag
-   IFS=$ac_save_IFS
-   shift
-@@ -14053,26 +16560,26 @@ do
- 
-   case $ac_mode in
-   :L) ac_source=$1;;
-   :[FH])
-     ac_file_inputs=
-     for ac_f
-     do
-       case $ac_f in
--      -) ac_f="$tmp/stdin";;
-+      -) ac_f="$ac_tmp/stdin";;
-       *) # Look for the file first in the build tree, then in the source tree
- 	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
- 	 # because $ac_f cannot contain `:'.
- 	 test -f "$ac_f" ||
- 	   case $ac_f in
- 	   [\\/$]*) false;;
- 	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
- 	   esac ||
--	   as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-       esac
-       case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-       as_fn_append ac_file_inputs " '$ac_f'"
-     done
- 
-     # Let's still pretend it is `configure' which instantiates (i.e., don't
-     # use $as_me), people would be surprised to read:
-     #    /* config.h.  Generated by config.status.  */
-@@ -14088,18 +16595,18 @@ do
-     case $configure_input in #(
-     *\&* | *\|* | *\\* )
-        ac_sed_conf_input=`$as_echo "$configure_input" |
-        sed 's/[\\\\&|]/\\\\&/g'`;; #(
-     *) ac_sed_conf_input=$configure_input;;
-     esac
- 
-     case $ac_tag in
--    *:-:* | *:-) cat >"$tmp/stdin" \
--      || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
-+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-     esac
-     ;;
-   esac
- 
-   ac_dir=`$as_dirname -- "$ac_file" ||
- $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- 	 X"$ac_file" : 'X\(//\)[^/]' \| \
- 	 X"$ac_file" : 'X\(//\)$' \| \
-@@ -14225,56 +16732,57 @@ s&@top_srcdir@&$ac_top_srcdir&;t t
- s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
- s&@builddir@&$ac_builddir&;t t
- s&@abs_builddir@&$ac_abs_builddir&;t t
- s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
- s&@INSTALL@&$ac_INSTALL&;t t
- s&@MKDIR_P@&$ac_MKDIR_P&;t t
- $ac_datarootdir_hack
- "
--eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
--  || as_fn_error "could not create $ac_file" "$LINENO" 5
-+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- 
- test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
--  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
--  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
-+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
--which seems to be undefined.  Please make sure it is defined." >&5
-+which seems to be undefined.  Please make sure it is defined" >&5
- $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
--which seems to be undefined.  Please make sure it is defined." >&2;}
--
--  rm -f "$tmp/stdin"
-+which seems to be undefined.  Please make sure it is defined" >&2;}
-+
-+  rm -f "$ac_tmp/stdin"
-   case $ac_file in
--  -) cat "$tmp/out" && rm -f "$tmp/out";;
--  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
-+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-   esac \
--  || as_fn_error "could not create $ac_file" "$LINENO" 5
-+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-  ;;
-   :H)
-   #
-   # CONFIG_HEADER
-   #
-   if test x"$ac_file" != x-; then
-     {
-       $as_echo "/* $configure_input  */" \
--      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
--    } >"$tmp/config.h" \
--      || as_fn_error "could not create $ac_file" "$LINENO" 5
--    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
-+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-+    } >"$ac_tmp/config.h" \
-+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
- $as_echo "$as_me: $ac_file is unchanged" >&6;}
-     else
-       rm -f "$ac_file"
--      mv "$tmp/config.h" "$ac_file" \
--	|| as_fn_error "could not create $ac_file" "$LINENO" 5
-+      mv "$ac_tmp/config.h" "$ac_file" \
-+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
-     fi
-   else
-     $as_echo "/* $configure_input  */" \
--      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
--      || as_fn_error "could not create -" "$LINENO" 5
-+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
-+      || as_fn_error $? "could not create -" "$LINENO" 5
-   fi
- # Compute "$ac_file"'s index in $config_headers.
- _am_arg="$ac_file"
- _am_stamp_count=1
- for _am_header in $config_headers :; do
-   case $_am_header in
-     $_am_arg | $_am_arg:* )
-       break ;;
-@@ -14318,53 +16826,197 @@ echo "timestamp for $_am_arg" >`$as_dirn
-     if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then
-       ac_source=$srcdir/$ac_source
-     fi
- 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5
- $as_echo "$as_me: linking $ac_source to $ac_file" >&6;}
- 
-     if test ! -r "$ac_source"; then
--      as_fn_error "$ac_source: file not found" "$LINENO" 5
-+      as_fn_error $? "$ac_source: file not found" "$LINENO" 5
-     fi
-     rm -f "$ac_file"
- 
-     # Try a relative symlink, then a hard link, then a copy.
--    case $srcdir in
-+    case $ac_source in
-     [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;;
- 	*) ac_rel_source=$ac_top_build_prefix$ac_source ;;
-     esac
-     ln -s "$ac_rel_source" "$ac_file" 2>/dev/null ||
-       ln "$ac_source" "$ac_file" 2>/dev/null ||
-       cp -p "$ac_source" "$ac_file" ||
--      as_fn_error "cannot link or copy $ac_source to $ac_file" "$LINENO" 5
-+      as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5
-   fi
-  ;;
-   :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
- $as_echo "$as_me: executing $ac_file commands" >&6;}
-  ;;
-   esac
- 
- 
-   case $ac_file$ac_mode in
-+    "buildir":C)   ac_top_srcdir="$ax_enable_builddir_srcdir"
-+  if test ".$ax_enable_builddir" = ".." ; then
-+    if test -f "$top_srcdir/Makefile" ; then
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - left untouched" >&5
-+$as_echo "$as_me: skipping top_srcdir/Makefile - left untouched" >&6;}
-+    else
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - not created" >&5
-+$as_echo "$as_me: skipping top_srcdir/Makefile - not created" >&6;}
-+    fi
-+  else
-+    if test -f "$ac_top_srcdir/Makefile" ; then
-+      a=`grep "^VERSION " "$ac_top_srcdir/Makefile"` ; b=`grep "^VERSION " Makefile`
-+      test "$a" != "$b" && rm "$ac_top_srcdir/Makefile"
-+    fi
-+    if test -f "$ac_top_srcdir/Makefile" ; then
-+	echo "$ac_top_srcdir/Makefile : $ac_top_srcdir/Makefile.in" > $tmp/conftemp.mk
-+	echo "	@ echo 'REMOVED,,,' >\$@" >> $tmp/conftemp.mk
-+      eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null"
-+      if grep '^REMOVED,,,' "$ac_top_srcdir/Makefile" >/dev/null
-+      then rm $ac_top_srcdir/Makefile ; fi
-+      cp $tmp/conftemp.mk $ac_top_srcdir/makefiles.mk~      ## DEBUGGING
-+    fi
-+    if test ! -f "$ac_top_srcdir/Makefile" ; then
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: create top_srcdir/Makefile guessed from local Makefile" >&5
-+$as_echo "$as_me: create top_srcdir/Makefile guessed from local Makefile" >&6;}
-+      x='`' ; cat >$tmp/conftemp.sed <<_EOF
-+/^\$/n
-+x
-+/^\$/bS
-+x
-+/\\\\\$/{H;d;}
-+{H;s/.*//;x;}
-+bM
-+:S
-+x
-+/\\\\\$/{h;d;}
-+{h;s/.*//;x;}
-+:M
-+s/\\(\\n\\)	/\\1 /g
-+/^	/d
-+/^[	 ]*[\\#]/d
-+/^VPATH *=/d
-+s/^srcdir *=.*/srcdir = ./
-+s/^top_srcdir *=.*/top_srcdir = ./
-+/[:=]/!d
-+/^\\./d
-+/ = /b
-+/ .= /b
-+/:/!b
-+s/:.*/:/
-+s/ /  /g
-+s/ \\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/ \\1 \\1-all\\2/g
-+s/^\\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/\\1 \\1-all\\2/
-+s/  / /g
-+/^all all-all[ :]/i\\
-+all-configured : all-all
-+s/ [a-zA-Z0-9-]*-all [a-zA-Z0-9-]*-all-all//g
-+/-all-all/d
-+a\\
-+	@ HOST="\$(HOST)\" \\\\\\
-+	; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
-+	; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
-+	; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
-+	; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" -eq "0" ; then : \\\\\\
-+	; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\
-+	; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
-+	; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\
-+	; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
-+	; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done
-+/dist-all *:/a\\
-+	@ HOST="\$(HOST)\" \\\\\\
-+	; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
-+	; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
-+	; found=$x echo \$\$BUILD | wc -w $x \\\\\\
-+	; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\
-+	; if test "\$\$found" -eq "0" ; then : \\\\\\
-+	; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
-+	; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
-+	; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\
-+	; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
-+/dist-[a-zA-Z0-9]*-all *:/a\\
-+	@ HOST="\$(HOST)\" \\\\\\
-+	; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\
-+	; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
-+	; found=$x echo \$\$BUILD | wc -w $x \\\\\\
-+	; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\
-+	; if test "\$\$found" -eq "0" ; then : \\\\\\
-+	; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
-+	; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
-+	; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\
-+	; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
-+/distclean-all *:/a\\
-+	@ HOST="\$(HOST)\" \\\\\\
-+	; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
-+	; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\
-+	; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
-+	; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\
-+	; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
-+	; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
-+	; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\
-+	; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
-+	; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\
-+	; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\
-+	; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile
-+_EOF
-+      cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefile.sed~"            ## DEBUGGING
-+      $ax_enable_builddir_sed -f $tmp/conftemp.sed Makefile >$ac_top_srcdir/Makefile
-+      if test -f "$ac_top_srcdir/Makefile.mk" ; then
-+        { $as_echo "$as_me:${as_lineno-$LINENO}: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&5
-+$as_echo "$as_me: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&6;}
-+        cat $ac_top_srcdir/Makefile.mk >>$ac_top_srcdir/Makefile
-+      fi ; xxxx="####"
-+      echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$ac_top_srcdir/Makefile
-+      # sanity check
-+      if grep '^; echo "MAKE ' $ac_top_srcdir/Makefile >/dev/null ; then
-+        { $as_echo "$as_me:${as_lineno-$LINENO}: buggy sed found - it deletes tab in \"a\" text parts" >&5
-+$as_echo "$as_me: buggy sed found - it deletes tab in \"a\" text parts" >&6;}
-+        $ax_enable_builddir_sed -e '/^@ HOST=/s/^/	/' -e '/^; /s/^/	/' $ac_top_srcdir/Makefile \
-+          >$ac_top_srcdir/Makefile~
-+        (test -s $ac_top_srcdir/Makefile~ && mv $ac_top_srcdir/Makefile~ $ac_top_srcdir/Makefile) 2>/dev/null
-+      fi
-+    else
-+      xxxx="\\#\\#\\#\\#"
-+      # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed
-+      echo "s!^$xxxx [^|]* | *$ax_enable_builddir *\$!$xxxx ...... $ax_enable_builddir!" >$tmp/conftemp.sed
-+      $ax_enable_builddir_sed -f "$tmp/conftemp.sed" "$ac_top_srcdir/Makefile" >$tmp/mkfile.tmp
-+        cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefiles.sed~"         ## DEBUGGING
-+        cp "$tmp/mkfile.tmp"   "$ac_top_srcdir/makefiles.out~"         ## DEBUGGING
-+      if cmp -s "$ac_top_srcdir/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then
-+        { $as_echo "$as_me:${as_lineno-$LINENO}: keeping top_srcdir/Makefile from earlier configure" >&5
-+$as_echo "$as_me: keeping top_srcdir/Makefile from earlier configure" >&6;}
-+        rm "$tmp/mkfile.tmp"
-+      else
-+        { $as_echo "$as_me:${as_lineno-$LINENO}: reusing top_srcdir/Makefile from earlier configure" >&5
-+$as_echo "$as_me: reusing top_srcdir/Makefile from earlier configure" >&6;}
-+        mv "$tmp/mkfile.tmp" "$ac_top_srcdir/Makefile"
-+      fi
-+    fi
-+    { $as_echo "$as_me:${as_lineno-$LINENO}: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&5
-+$as_echo "$as_me: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&6;}
-+    xxxx="####"
-+    echo "$xxxx" "$ax_enable_builddir_host" "|$ax_enable_builddir" >>$ac_top_srcdir/Makefile
-+  fi
-+ ;;
-     "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
--  # Autoconf 2.62 quotes --file arguments for eval, but not when files
-+  # Older Autoconf quotes --file arguments for eval, but not when files
-   # are listed without --file.  Let's play safe and only enable the eval
-   # if we detect the quoting.
-   case $CONFIG_FILES in
-   *\'*) eval set x "$CONFIG_FILES" ;;
-   *)   set x $CONFIG_FILES ;;
-   esac
-   shift
-   for mf
-   do
-     # Strip MF so we end up with the name of the file.
-     mf=`echo "$mf" | sed -e 's/:.*$//'`
-     # Check whether this is an Automake generated Makefile or not.
--    # We used to match only the files named `Makefile.in', but
-+    # We used to match only the files named 'Makefile.in', but
-     # some people rename them; so instead we look at the file content.
-     # Grep'ing the first line is not enough: some people post-process
-     # each Makefile.in and add a new line on top of each file to say so.
-     # Grep'ing the whole file is not good either: AIX grep has a line
-     # limit of 2048, but all sed's we know have understand at least 4000.
-     if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-       dirpart=`$as_dirname -- "$mf" ||
- $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-@@ -14388,31 +17040,29 @@ echo "timestamp for $_am_arg" >`$as_dirn
- 	    s//\1/
- 	    q
- 	  }
- 	  s/.*/./; q'`
-     else
-       continue
-     fi
-     # Extract the definition of DEPDIR, am__include, and am__quote
--    # from the Makefile without running `make'.
-+    # from the Makefile without running 'make'.
-     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-     test -z "$DEPDIR" && continue
-     am__include=`sed -n 's/^am__include = //p' < "$mf"`
--    test -z "am__include" && continue
-+    test -z "$am__include" && continue
-     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
--    # When using ansi2knr, U may be empty or an underscore; expand it
--    U=`sed -n 's/^U = //p' < "$mf"`
-     # Find all dependency output files, they are included files with
-     # $(DEPDIR) in their names.  We invoke sed twice because it is the
-     # simplest approach to changing $(DEPDIR) to its actual value in the
-     # expansion.
-     for file in `sed -n "
-       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
--	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-       # Make sure the directory exists.
-       test -f "$dirpart/$file" && continue
-       fdir=`$as_dirname -- "$file" ||
- $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- 	 X"$file" : 'X\(//\)[^/]' \| \
- 	 X"$file" : 'X\(//\)$' \| \
- 	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
- $as_echo X"$file" |
-@@ -14456,17 +17106,18 @@ echo "timestamp for $_am_arg" >`$as_dirn
- #! $SHELL
- 
- # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
- # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
- # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
- # NOTE: Changes made to this file will be lost: look at ltmain.sh.
- #
- #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
--#                 2006, 2007, 2008 Free Software Foundation, Inc.
-+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-+#                 Foundation, Inc.
- #   Written by Gordon Matzigkeit, 1996
- #
- #   This file is part of GNU Libtool.
- #
- # GNU Libtool is free software; you can redistribute it and/or
- # modify it under the terms of the GNU General Public License as
- # published by the Free Software Foundation; either version 2 of
- # the License, or (at your option) any later version.
-@@ -14504,16 +17155,25 @@ build_libtool_libs=$enable_shared
- build_old_libs=$enable_static
- 
- # What type of objects to build.
- pic_mode=$pic_mode
- 
- # Whether or not to optimize for fast installation.
- fast_install=$enable_fast_install
- 
-+# Shell to use when invoking shell scripts.
-+SHELL=$lt_SHELL
-+
-+# An echo program that protects backslashes.
-+ECHO=$lt_ECHO
-+
-+# The PATH separator for the build system.
-+PATH_SEPARATOR=$lt_PATH_SEPARATOR
-+
- # The host system.
- host_alias=$host_alias
- host=$host
- host_os=$host_os
- 
- # The build system.
- build_alias=$build_alias
- build=$build
-@@ -14553,41 +17213,63 @@ exeext=$exeext
- lt_unset=$lt_unset
- 
- # turn spaces into newlines.
- SP2NL=$lt_lt_SP2NL
- 
- # turn newlines into spaces.
- NL2SP=$lt_lt_NL2SP
- 
--# How to create reloadable object files.
--reload_flag=$lt_reload_flag
--reload_cmds=$lt_reload_cmds
-+# convert \$build file names to \$host format.
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+
-+# convert \$build files to toolchain format.
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
- 
- # An object symbol dumper.
- OBJDUMP=$lt_OBJDUMP
- 
- # Method to check whether dependent libraries are shared objects.
- deplibs_check_method=$lt_deplibs_check_method
- 
--# Command to use when deplibs_check_method == "file_magic".
-+# Command to use when deplibs_check_method = "file_magic".
- file_magic_cmd=$lt_file_magic_cmd
- 
-+# How to find potential files when deplibs_check_method = "file_magic".
-+file_magic_glob=$lt_file_magic_glob
-+
-+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-+want_nocaseglob=$lt_want_nocaseglob
-+
-+# DLL creation program.
-+DLLTOOL=$lt_DLLTOOL
-+
-+# Command to associate shared and link libraries.
-+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-+
- # The archiver.
- AR=$lt_AR
-+
-+# Flags to create an archive.
- AR_FLAGS=$lt_AR_FLAGS
- 
-+# How to feed a file listing to the archiver.
-+archiver_list_spec=$lt_archiver_list_spec
-+
- # A symbol stripping program.
- STRIP=$lt_STRIP
- 
- # Commands used to install an old-style archive.
- RANLIB=$lt_RANLIB
- old_postinstall_cmds=$lt_old_postinstall_cmds
- old_postuninstall_cmds=$lt_old_postuninstall_cmds
- 
-+# Whether to use a lock for old archive extraction.
-+lock_old_archive_extraction=$lock_old_archive_extraction
-+
- # A C compiler.
- LTCC=$lt_CC
- 
- # LTCC compiler flags.
- LTCFLAGS=$lt_CFLAGS
- 
- # Take the output of nm and produce a listing of raw symbols and C names.
- global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-@@ -14596,31 +17278,34 @@ global_symbol_pipe=$lt_lt_cv_sys_global_
- global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
- 
- # Transform the output of nm in a C name address pair.
- global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
- 
- # Transform the output of nm in a C name address pair when lib prefix is needed.
- global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
- 
-+# Specify filename containing input files for \$NM.
-+nm_file_list_spec=$lt_nm_file_list_spec
-+
-+# The root where to search for dependent libraries,and in which our libraries should be installed.
-+lt_sysroot=$lt_sysroot
-+
- # The name of the directory that contains temporary libtool files.
- objdir=$objdir
- 
--# Shell to use when invoking shell scripts.
--SHELL=$lt_SHELL
--
--# An echo program that does not interpret backslashes.
--ECHO=$lt_ECHO
--
- # Used to examine libraries when file_magic_cmd begins with "file".
- MAGIC_CMD=$MAGIC_CMD
- 
- # Must we lock files when doing compilation?
- need_locks=$lt_need_locks
- 
-+# Manifest tool.
-+MANIFEST_TOOL=$lt_MANIFEST_TOOL
-+
- # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
- DSYMUTIL=$lt_DSYMUTIL
- 
- # Tool to change global to local symbols on Mac OS X.
- NMEDIT=$lt_NMEDIT
- 
- # Tool to manipulate fat objects and archives on Mac OS X.
- LIPO=$lt_LIPO
-@@ -14667,16 +17352,19 @@ libname_spec=$lt_libname_spec
- 
- # List of archive names.  First name is the real one, the rest are links.
- # The last name is the one that the linker finds with -lNAME
- library_names_spec=$lt_library_names_spec
- 
- # The coded name of the library, if different from the real name.
- soname_spec=$lt_soname_spec
- 
-+# Permission mode override for installation of shared libraries.
-+install_override_mode=$lt_install_override_mode
-+
- # Command to use after installation of a shared archive.
- postinstall_cmds=$lt_postinstall_cmds
- 
- # Command to use after uninstallation of a shared archive.
- postuninstall_cmds=$lt_postuninstall_cmds
- 
- # Commands used to finish a libtool library installation in a directory.
- finish_cmds=$lt_finish_cmds
-@@ -14706,34 +17394,38 @@ dlopen_self_static=$enable_dlopen_self_s
- # Commands to strip libraries.
- old_striplib=$lt_old_striplib
- striplib=$lt_striplib
- 
- 
- # The linker used to build libraries.
- LD=$lt_LD
- 
-+# How to create reloadable object files.
-+reload_flag=$lt_reload_flag
-+reload_cmds=$lt_reload_cmds
-+
- # Commands used to build an old-style archive.
- old_archive_cmds=$lt_old_archive_cmds
- 
- # A language specific compiler.
- CC=$lt_compiler
- 
- # Is the compiler the GNU compiler?
- with_gcc=$GCC
- 
- # Compiler flag to turn off builtin functions.
- no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
- 
-+# Additional compiler flags for building library objects.
-+pic_flag=$lt_lt_prog_compiler_pic
-+
- # How to pass a linker flag through the compiler.
- wl=$lt_lt_prog_compiler_wl
- 
--# Additional compiler flags for building library objects.
--pic_flag=$lt_lt_prog_compiler_pic
--
- # Compiler flag to prevent dynamic linking.
- link_static_flag=$lt_lt_prog_compiler_static
- 
- # Does compiler simultaneously support -c and -o options?
- compiler_c_o=$lt_lt_cv_prog_compiler_c_o
- 
- # Whether or not to add -lc for building shared libraries.
- build_libtool_need_lc=$archive_cmds_need_lc
-@@ -14773,20 +17465,16 @@ allow_undefined_flag=$lt_allow_undefined
- 
- # Flag that enforces no undefined symbols.
- no_undefined_flag=$lt_no_undefined_flag
- 
- # Flag to hardcode \$libdir into a binary during linking.
- # This must work even if \$libdir does not exist
- hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
- 
--# If ld is used when linking, flag to hardcode \$libdir into a binary
--# during linking.  This must work even if \$libdir does not exist.
--hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
--
- # Whether we need a single "-rpath" flag with a separated argument.
- hardcode_libdir_separator=$lt_hardcode_libdir_separator
- 
- # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
- # DIR into the resulting binary.
- hardcode_direct=$hardcode_direct
- 
- # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-@@ -14810,34 +17498,34 @@ hardcode_automatic=$hardcode_automatic
- 
- # Set to yes if linker adds runtime paths of dependent libraries
- # to runtime path list.
- inherit_rpath=$inherit_rpath
- 
- # Whether libtool must link a program against all its dependency libraries.
- link_all_deplibs=$link_all_deplibs
- 
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path=$lt_fix_srcfile_path
--
- # Set to "yes" if exported symbols are required.
- always_export_symbols=$always_export_symbols
- 
- # The commands to list exported symbols.
- export_symbols_cmds=$lt_export_symbols_cmds
- 
- # Symbols that should not be listed in the preloaded symbols.
- exclude_expsyms=$lt_exclude_expsyms
- 
- # Symbols that must always be exported.
- include_expsyms=$lt_include_expsyms
- 
- # Commands necessary for linking programs (against libraries) with templates.
- prelink_cmds=$lt_prelink_cmds
- 
-+# Commands necessary for finishing linking programs.
-+postlink_cmds=$lt_postlink_cmds
-+
- # Specify filename containing input files.
- file_list_spec=$lt_file_list_spec
- 
- # How to hardcode a shared library path into an executable.
- hardcode_action=$hardcode_action
- 
- # ### END LIBTOOL CONFIG
- 
-@@ -14860,222 +17548,179 @@ fi
- 
- ltmain="$ac_aux_dir/ltmain.sh"
- 
- 
-   # We use sed instead of cat because bash on DJGPP gets confused if
-   # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-   # text mode, it properly converts lines to CR/LF.  This bash problem
-   # is reportedly fixed, but why not run on old versions too?
--  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
--    || (rm -f "$cfgfile"; exit 1)
--
--  case $xsi_shell in
--  yes)
--    cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
--  case ${1} in
--    */*) func_dirname_result="${1%/*}${2}" ;;
--    *  ) func_dirname_result="${3}" ;;
--  esac
--}
--
--# func_basename file
--func_basename ()
--{
--  func_basename_result="${1##*/}"
--}
--
--# func_dirname_and_basename file append nondir_replacement
--# perform func_basename and func_dirname in a single function
--# call:
--#   dirname:  Compute the dirname of FILE.  If nonempty,
--#             add APPEND to the result, otherwise set result
--#             to NONDIR_REPLACEMENT.
--#             value returned in "$func_dirname_result"
--#   basename: Compute filename of FILE.
--#             value retuned in "$func_basename_result"
--# Implementation must be kept synchronized with func_dirname
--# and func_basename. For efficiency, we do not delegate to
--# those functions but instead duplicate the functionality here.
--func_dirname_and_basename ()
--{
--  case ${1} in
--    */*) func_dirname_result="${1%/*}${2}" ;;
--    *  ) func_dirname_result="${3}" ;;
--  esac
--  func_basename_result="${1##*/}"
--}
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--func_stripname ()
--{
--  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
--  # positional parameters, so assign one to ordinary parameter first.
--  func_stripname_result=${3}
--  func_stripname_result=${func_stripname_result#"${1}"}
--  func_stripname_result=${func_stripname_result%"${2}"}
--}
--
--# func_opt_split
--func_opt_split ()
--{
--  func_opt_split_opt=${1%%=*}
--  func_opt_split_arg=${1#*=}
--}
--
--# func_lo2o object
--func_lo2o ()
--{
--  case ${1} in
--    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
--    *)    func_lo2o_result=${1} ;;
--  esac
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
--  func_xform_result=${1%.*}.lo
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
--  func_arith_result=$(( $* ))
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
--  func_len_result=${#1}
--}
--
--_LT_EOF
--    ;;
--  *) # Bourne compatible functions.
--    cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
--  # Extract subdirectory from the argument.
--  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
--  if test "X$func_dirname_result" = "X${1}"; then
--    func_dirname_result="${3}"
--  else
--    func_dirname_result="$func_dirname_result${2}"
--  fi
--}
--
--# func_basename file
--func_basename ()
--{
--  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
--}
--
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--# func_strip_suffix prefix name
--func_stripname ()
--{
--  case ${2} in
--    .*) func_stripname_result=`$ECHO "X${3}" \
--           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
--    *)  func_stripname_result=`$ECHO "X${3}" \
--           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
--  esac
--}
--
--# sed scripts:
--my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
--my_sed_long_arg='1s/^-[^=]*=//'
--
--# func_opt_split
--func_opt_split ()
--{
--  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
--  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
--}
--
--# func_lo2o object
--func_lo2o ()
--{
--  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
--  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'`
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
--  func_arith_result=`expr "$@"`
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
--  func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
--}
--
--_LT_EOF
--esac
--
--case $lt_shell_append in
--  yes)
--    cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
--  eval "$1+=\$2"
--}
--_LT_EOF
--    ;;
--  *)
--    cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
--  eval "$1=\$$1\$2"
--}
--
--_LT_EOF
--    ;;
--  esac
--
--
--  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
--    || (rm -f "$cfgfile"; exit 1)
--
--  mv -f "$cfgfile" "$ofile" ||
-+  sed '$q' "$ltmain" >> "$cfgfile" \
-+     || (rm -f "$cfgfile"; exit 1)
-+
-+  if test x"$xsi_shell" = xyes; then
-+  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-+func_dirname ()\
-+{\
-+\    case ${1} in\
-+\      */*) func_dirname_result="${1%/*}${2}" ;;\
-+\      *  ) func_dirname_result="${3}" ;;\
-+\    esac\
-+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-+  && mv -f "$cfgfile.tmp" "$cfgfile" \
-+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+  sed -e '/^func_basename ()$/,/^} # func_basename /c\
-+func_basename ()\
-+{\
-+\    func_basename_result="${1##*/}"\
-+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+  && mv -f "$cfgfile.tmp" "$cfgfile" \
-+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-+func_dirname_and_basename ()\
-+{\
-+\    case ${1} in\
-+\      */*) func_dirname_result="${1%/*}${2}" ;;\
-+\      *  ) func_dirname_result="${3}" ;;\
-+\    esac\
-+\    func_basename_result="${1##*/}"\
-+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-+  && mv -f "$cfgfile.tmp" "$cfgfile" \
-+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-+func_stripname ()\
-+{\
-+\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-+\    # positional parameters, so assign one to ordinary parameter first.\
-+\    func_stripname_result=${3}\
-+\    func_stripname_result=${func_stripname_result#"${1}"}\
-+\    func_stripname_result=${func_stripname_result%"${2}"}\
-+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-+  && mv -f "$cfgfile.tmp" "$cfgfile" \
-+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-+func_split_long_opt ()\
-+{\
-+\    func_split_long_opt_name=${1%%=*}\
-+\    func_split_long_opt_arg=${1#*=}\
-+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+  && mv -f "$cfgfile.tmp" "$cfgfile" \
-+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-+func_split_short_opt ()\
-+{\
-+\    func_split_short_opt_arg=${1#??}\
-+\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-+  && mv -f "$cfgfile.tmp" "$cfgfile" \
-+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-+func_lo2o ()\
-+{\
-+\    case ${1} in\
-+\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-+\      *)    func_lo2o_result=${1} ;;\
-+\    esac\
-+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-+  && mv -f "$cfgfile.tmp" "$cfgfile" \
-+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+  sed -e '/^func_xform ()$/,/^} # func_xform /c\
-+func_xform ()\
-+{\
-+    func_xform_result=${1%.*}.lo\
-+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-+  && mv -f "$cfgfile.tmp" "$cfgfile" \
-+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+  sed -e '/^func_arith ()$/,/^} # func_arith /c\
-+func_arith ()\
-+{\
-+    func_arith_result=$(( $* ))\
-+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-+  && mv -f "$cfgfile.tmp" "$cfgfile" \
-+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+  sed -e '/^func_len ()$/,/^} # func_len /c\
-+func_len ()\
-+{\
-+    func_len_result=${#1}\
-+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-+  && mv -f "$cfgfile.tmp" "$cfgfile" \
-+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+fi
-+
-+if test x"$lt_shell_append" = xyes; then
-+  sed -e '/^func_append ()$/,/^} # func_append /c\
-+func_append ()\
-+{\
-+    eval "${1}+=\\${2}"\
-+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-+  && mv -f "$cfgfile.tmp" "$cfgfile" \
-+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-+func_append_quoted ()\
-+{\
-+\    func_quote_for_eval "${2}"\
-+\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-+  && mv -f "$cfgfile.tmp" "$cfgfile" \
-+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+
-+
-+  # Save a `func_append' function call where possible by direct use of '+='
-+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-+    && mv -f "$cfgfile.tmp" "$cfgfile" \
-+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+  test 0 -eq $? || _lt_function_replace_fail=:
-+else
-+  # Save a `func_append' function call even when '+=' is not available
-+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-+    && mv -f "$cfgfile.tmp" "$cfgfile" \
-+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+  test 0 -eq $? || _lt_function_replace_fail=:
-+fi
-+
-+if test x"$_lt_function_replace_fail" = x":"; then
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-+fi
-+
-+
-+   mv -f "$cfgfile" "$ofile" ||
-     (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-   chmod +x "$ofile"
- 
-  ;;
-     "include":C) test -d include || mkdir include ;;
-     "src":C)
- test -d src || mkdir src
- test -d src/$TARGETDIR || mkdir src/$TARGETDIR
-@@ -15085,17 +17730,17 @@ test -d src/$TARGETDIR || mkdir src/$TAR
- done # for ac_tag
- 
- 
- as_fn_exit 0
- _ACEOF
- ac_clean_files=$ac_clean_files_save
- 
- test $ac_write_fail = 0 ||
--  as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
-+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
- 
- 
- # configure is writing to config.log, and then calls config.status.
- # config.status does its own redirection, appending to config.log.
- # Unfortunately, on DOS this fails, as config.log is still kept open
- # by configure, so config.status won't be able to write to it; its
- # output is simply discarded.  So we exec the FD to /dev/null,
- # effectively closing config.log, so it can be properly (re)opened and
-@@ -15106,15 +17751,15 @@ if test "$no_create" != yes; then
-   ac_config_status_args=
-   test "$silent" = yes &&
-     ac_config_status_args="$ac_config_status_args --quiet"
-   exec 5>/dev/null
-   $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-   exec 5>>config.log
-   # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-   # would make configure fail if this is the last instruction.
--  $ac_cs_success || as_fn_exit $?
-+  $ac_cs_success || as_fn_exit 1
- fi
- if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
- $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
- fi
- 
-diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
---- a/js/src/ctypes/libffi/configure.ac
-+++ b/js/src/ctypes/libffi/configure.ac
-@@ -1,152 +1,261 @@
- dnl Process this with autoconf to create configure
- 
--AC_PREREQ(2.63)
-+AC_PREREQ(2.68)
- 
--AC_INIT([libffi], [3.0.10rc0], [http://gcc.gnu.org/bugs.html])
-+AC_INIT([libffi], [3.1-rc1], [http://github.com/atgreen/libffi/issues])
- AC_CONFIG_HEADERS([fficonfig.h])
- 
- AC_CANONICAL_SYSTEM
- target_alias=${target_alias-$host_alias}
- 
--. ${srcdir}/configure.host
-+case "${host}" in
-+  frv*-elf)
-+    LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/
-+    ;;
-+esac
-+
-+AX_ENABLE_BUILDDIR
- 
- AM_INIT_AUTOMAKE
- 
- # The same as in boehm-gc and libstdc++. Have to borrow it from there.
- # We must force CC to /not/ be precious variables; otherwise
- # the wrong, non-multilib-adjusted value will be used in multilibs.
- # As a side effect, we have to subst CFLAGS ourselves.
- # Also save and restore CFLAGS, since AC_PROG_CC will come up with
- # defaults of its own if none are provided.
- 
- m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
- m4_define([_AC_ARG_VAR_PRECIOUS],[])
- save_CFLAGS=$CFLAGS
- AC_PROG_CC
- CFLAGS=$save_CFLAGS
- m4_undefine([_AC_ARG_VAR_PRECIOUS])
--m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
-+m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
- 
- AC_SUBST(CFLAGS)
- 
- AM_PROG_AS
- AM_PROG_CC_C_O
- AC_PROG_LIBTOOL
- AC_CONFIG_MACRO_DIR([m4])
- 
-+# Test for 64-bit build.
-+AC_CHECK_SIZEOF([size_t])
-+
-+AX_COMPILER_VENDOR
-+AX_CC_MAXOPT
-+# The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro
-+# compiler.
-+if test "$ax_cv_c_compiler_vendor" != "sun"; then
-+  AX_CFLAGS_WARN_ALL
-+fi
-+
-+if test "x$GCC" = "xyes"; then
-+  CFLAGS="$CFLAGS -fexceptions"
-+  touch local.exp
-+else
-+  cat > local.exp <<EOF
-+set CC_FOR_TARGET "$CC"
-+EOF
-+fi
-+
- AM_MAINTAINER_MODE
- 
- AC_CHECK_HEADERS(sys/mman.h)
- AC_CHECK_FUNCS(mmap)
- AC_FUNC_MMAP_BLACKLIST
- 
- dnl The -no-testsuite modules omit the test subdir.
- AM_CONDITIONAL(TESTSUBDIR, test -d $srcdir/testsuite)
- 
- TARGETDIR="unknown"
-+HAVE_LONG_DOUBLE_VARIANT=0
- case "$host" in
-+  aarch64*-*-*)
-+	TARGET=AARCH64; TARGETDIR=aarch64
-+	;;
-+
-   alpha*-*-*)
- 	TARGET=ALPHA; TARGETDIR=alpha;
- 	# Support 128-bit long double, changeable via command-line switch.
- 	HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)'
- 	;;
- 
-+  arc*-*-*)
-+	TARGET=ARC; TARGETDIR=arc
-+	;;
-+
-   arm*-*-*)
- 	TARGET=ARM; TARGETDIR=arm
- 	;;
- 
-   amd64-*-freebsd* | amd64-*-openbsd*)
- 	TARGET=X86_64; TARGETDIR=x86
-   	;;
- 
-   amd64-*-freebsd*)
- 	TARGET=X86_64; TARGETDIR=x86
-+  	;;
-+
-+  amd64-*-freebsd*)
-+	TARGET=X86_64; TARGETDIR=x86
- 	;;
- 
-   avr32*-*-*)
- 	TARGET=AVR32; TARGETDIR=avr32
- 	;;
- 
-+  bfin*)
-+  	TARGET=BFIN; TARGETDIR=bfin
-+  	;;
-+
-   cris-*-*)
- 	TARGET=LIBFFI_CRIS; TARGETDIR=cris
- 	;;
- 
-   frv-*-*)
- 	TARGET=FRV; TARGETDIR=frv
- 	;;
- 
--  hppa*-*-linux* | hppa*-*-openbsd* | parisc*-*-linux*)
-+  hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*)
- 	TARGET=PA_LINUX; TARGETDIR=pa
- 	;;
-   hppa*64-*-hpux*)
- 	TARGET=PA64_HPUX; TARGETDIR=pa
- 	;;
-   hppa*-*-hpux*)
- 	TARGET=PA_HPUX; TARGETDIR=pa
- 	;;
- 
-   i?86-*-freebsd* | i?86-*-openbsd*)
- 	TARGET=X86_FREEBSD; TARGETDIR=x86
- 	;;
--  i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2*)
-+  i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix*)
- 	TARGET=X86_WIN32; TARGETDIR=x86
--	# All mingw/cygwin/win32 builds require this for sharedlib
--	AM_LTLDFLAGS="-no-undefined"
-+	# All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
-+	# We must also check with_cross_host to decide if this is a native
-+	# or cross-build and select where to install dlls appropriately.
-+	if test -n "$with_cross_host" &&
-+	   test x"$with_cross_host" != x"no"; then
-+	  AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
-+	else
-+	  AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
-+	fi
- 	;;
-   i?86-*-darwin*)
- 	TARGET=X86_DARWIN; TARGETDIR=x86
- 	;;
-   i?86-*-solaris2.1[[0-9]]*)
--	TARGET=X86_64; TARGETDIR=x86
-+	TARGETDIR=x86
-+	if test $ac_cv_sizeof_size_t = 4; then
-+	  TARGET=X86; 
-+	else
-+	  TARGET=X86_64; 
-+	fi	  
- 	;;
--  i?86-*-*)
--	TARGET=X86; TARGETDIR=x86
-+
-+  x86_64-*-darwin*)
-+	TARGET=X86_DARWIN; TARGETDIR=x86
-+	;;
-+
-+  x86_64-*-cygwin* | x86_64-*-mingw*)
-+	TARGET=X86_WIN64; TARGETDIR=x86
-+	# All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
-+	# We must also check with_cross_host to decide if this is a native
-+	# or cross-build and select where to install dlls appropriately.
-+	if test -n "$with_cross_host" &&
-+	   test x"$with_cross_host" != x"no"; then
-+	  AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
-+	else
-+	  AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
-+	fi
-+	;;
-+
-+  i?86-*-* | x86_64-*-*)
-+	TARGETDIR=x86
-+	if test $ac_cv_sizeof_size_t = 4; then
-+	  case "$host" in
-+	    *-gnux32)
-+	      TARGET=X86_64
-+	      ;;
-+	    *)
-+	      TARGET=X86
-+	      ;;
-+          esac	
-+	else
-+	  TARGET=X86_64; 
-+	fi	  
- 	;;
- 
-   ia64*-*-*)
- 	TARGET=IA64; TARGETDIR=ia64
- 	;;
- 
-   m32r*-*-*)
- 	TARGET=M32R; TARGETDIR=m32r
- 	;;
- 
-   m68k-*-*)
- 	TARGET=M68K; TARGETDIR=m68k
- 	;;
- 
--  mips-sgi-irix5.* | mips-sgi-irix6.*)
-+  m88k-*-*)
-+	TARGET=M88K; TARGETDIR=m88k
-+	;;
-+
-+  microblaze*-*-*)
-+	TARGET=MICROBLAZE; TARGETDIR=microblaze
-+	;;
-+
-+  moxie-*-*)
-+	TARGET=MOXIE; TARGETDIR=moxie
-+	;;
-+
-+  metag-*-*)
-+	TARGET=METAG; TARGETDIR=metag
-+	;;
-+
-+  mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*)
- 	TARGET=MIPS; TARGETDIR=mips
- 	;;
-   mips*-*linux* | mips*-*-openbsd*)
- 	# Support 128-bit long double for NewABI.
- 	HAVE_LONG_DOUBLE='defined(__mips64)'
- 	TARGET=MIPS; TARGETDIR=mips
- 	;;
- 
--  moxie-*-*)
--        TARGET=MOXIE; TARGETDIR=moxie
-+  nios2*-linux*)
-+	TARGET=NIOS2; TARGETDIR=nios2
- 	;;
- 
-   powerpc*-*-linux* | powerpc-*-sysv*)
- 	TARGET=POWERPC; TARGETDIR=powerpc
-+	HAVE_LONG_DOUBLE_VARIANT=1
-+	;;
-+  powerpc-*-amigaos*)
-+	TARGET=POWERPC; TARGETDIR=powerpc
- 	;;
-   powerpc-*-beos*)
- 	TARGET=POWERPC; TARGETDIR=powerpc
- 	;;
--  powerpc-*-darwin*)
-+  powerpc-*-darwin* | powerpc64-*-darwin*)
- 	TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
- 	;;
-   powerpc-*-aix* | rs6000-*-aix*)
- 	TARGET=POWERPC_AIX; TARGETDIR=powerpc
- 	;;
-   powerpc-*-freebsd* | powerpc-*-openbsd*)
- 	TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
-+	HAVE_LONG_DOUBLE_VARIANT=1
-+	;;
-+  powerpc64-*-freebsd*)
-+	TARGET=POWERPC; TARGETDIR=powerpc
- 	;;
-   powerpc*-*-rtems*)
- 	TARGET=POWERPC; TARGETDIR=powerpc
- 	;;
- 
-   s390-*-* | s390x-*-*)
- 	TARGET=S390; TARGETDIR=s390
- 	;;
-@@ -157,96 +266,105 @@ case "$host" in
-   sh64-*-* | sh5*-*-*)
- 	TARGET=SH64; TARGETDIR=sh64
- 	;;
- 
-   sparc*-*-*)
- 	TARGET=SPARC; TARGETDIR=sparc
- 	;;
- 
--  x86_64-*-darwin*)
--	TARGET=X86_DARWIN; TARGETDIR=x86
-+  tile*-*)
-+        TARGET=TILE; TARGETDIR=tile
-+        ;;
-+
-+  vax-*-*)
-+	TARGET=VAX; TARGETDIR=vax
- 	;;
- 
--  x86_64-*-cygwin* | x86_64-*-mingw*)
--	TARGET=X86_WIN64; TARGETDIR=x86
-+  xtensa*-*)
-+	TARGET=XTENSA; TARGETDIR=xtensa
- 	;;
- 
--  x86_64-*-*)
--	TARGET=X86_64; TARGETDIR=x86
--	;;
- esac
- 
- AC_SUBST(AM_RUNTESTFLAGS)
- AC_SUBST(AM_LTLDFLAGS)
- 
- if test $TARGETDIR = unknown; then
-   AC_MSG_ERROR(["libffi has not been ported to $host."])
- fi
- 
- AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS)
-+AM_CONDITIONAL(BFIN, test x$TARGET = xBFIN)
- AM_CONDITIONAL(SPARC, test x$TARGET = xSPARC)
- AM_CONDITIONAL(X86, test x$TARGET = xX86)
- AM_CONDITIONAL(X86_FREEBSD, test x$TARGET = xX86_FREEBSD)
- AM_CONDITIONAL(X86_WIN32, test x$TARGET = xX86_WIN32)
- AM_CONDITIONAL(X86_WIN64, test x$TARGET = xX86_WIN64)
- AM_CONDITIONAL(X86_DARWIN, test x$TARGET = xX86_DARWIN)
-+AM_CONDITIONAL(X86_DARWIN32, test x$TARGET = xX86_DARWIN && test $ac_cv_sizeof_size_t = 4)
-+AM_CONDITIONAL(X86_DARWIN64, test x$TARGET = xX86_DARWIN && test $ac_cv_sizeof_size_t = 8)
- AM_CONDITIONAL(ALPHA, test x$TARGET = xALPHA)
- AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
- AM_CONDITIONAL(M32R, test x$TARGET = xM32R)
- AM_CONDITIONAL(M68K, test x$TARGET = xM68K)
-+AM_CONDITIONAL(M88K, test x$TARGET = xM88K)
-+AM_CONDITIONAL(MICROBLAZE, test x$TARGET = xMICROBLAZE)
-+AM_CONDITIONAL(METAG, test x$TARGET = xMETAG)
- AM_CONDITIONAL(MOXIE, test x$TARGET = xMOXIE)
-+AM_CONDITIONAL(NIOS2, test x$TARGET = xNIOS2)
- AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC)
- AM_CONDITIONAL(POWERPC_AIX, test x$TARGET = xPOWERPC_AIX)
- AM_CONDITIONAL(POWERPC_DARWIN, test x$TARGET = xPOWERPC_DARWIN)
- AM_CONDITIONAL(POWERPC_FREEBSD, test x$TARGET = xPOWERPC_FREEBSD)
-+AM_CONDITIONAL(AARCH64, test x$TARGET = xAARCH64)
-+AM_CONDITIONAL(ARC, test x$TARGET = xARC)
- AM_CONDITIONAL(ARM, test x$TARGET = xARM)
- AM_CONDITIONAL(AVR32, test x$TARGET = xAVR32)
- AM_CONDITIONAL(LIBFFI_CRIS, test x$TARGET = xLIBFFI_CRIS)
- AM_CONDITIONAL(FRV, test x$TARGET = xFRV)
- AM_CONDITIONAL(S390, test x$TARGET = xS390)
- AM_CONDITIONAL(X86_64, test x$TARGET = xX86_64)
- AM_CONDITIONAL(SH, test x$TARGET = xSH)
- AM_CONDITIONAL(SH64, test x$TARGET = xSH64)
- AM_CONDITIONAL(PA_LINUX, test x$TARGET = xPA_LINUX)
- AM_CONDITIONAL(PA_HPUX, test x$TARGET = xPA_HPUX)
- AM_CONDITIONAL(PA64_HPUX, test x$TARGET = xPA64_HPUX)
-+AM_CONDITIONAL(TILE, test x$TARGET = xTILE)
-+AM_CONDITIONAL(VAX, test x$TARGET = xVAX)
-+AM_CONDITIONAL(XTENSA, test x$TARGET = xXTENSA)
- 
- AC_HEADER_STDC
- AC_CHECK_FUNCS(memcpy)
- AC_FUNC_ALLOCA
- 
- AC_CHECK_SIZEOF(double)
- AC_CHECK_SIZEOF(long double)
- 
- # Also AC_SUBST this variable for ffi.h.
- if test -z "$HAVE_LONG_DOUBLE"; then
-   HAVE_LONG_DOUBLE=0
--  if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
--    if test $ac_cv_sizeof_long_double != 0; then
-+  if test $ac_cv_sizeof_long_double != 0; then
-+    if test $HAVE_LONG_DOUBLE_VARIANT != 0; then
-+      AC_DEFINE(HAVE_LONG_DOUBLE_VARIANT, 1, [Define if you support more than one size of the long double type])
-       HAVE_LONG_DOUBLE=1
--      AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the long double type and it is bigger than a double])
-+    else
-+      if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
-+        HAVE_LONG_DOUBLE=1
-+        AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the long double type and it is bigger than a double])
-+      fi
-     fi
-   fi
- fi
- AC_SUBST(HAVE_LONG_DOUBLE)
-+AC_SUBST(HAVE_LONG_DOUBLE_VARIANT)
- 
- AC_C_BIGENDIAN
- 
--AC_CACHE_CHECK([assembler .cfi pseudo-op support],
--    libffi_cv_as_cfi_pseudo_op, [
--    libffi_cv_as_cfi_pseudo_op=unknown
--    AC_TRY_COMPILE([asm (".cfi_startproc\n\t.cfi_endproc");],,
--		   [libffi_cv_as_cfi_pseudo_op=yes],
--		   [libffi_cv_as_cfi_pseudo_op=no])
--])
--if test "x$libffi_cv_as_cfi_pseudo_op" = xyes; then
--    AC_DEFINE(HAVE_AS_CFI_PSEUDO_OP, 1,
--	      [Define if your assembler supports .cfi_* directives.])
--fi
-+GCC_AS_CFI_PSEUDO_OP
- 
- if test x$TARGET = xSPARC; then
-     AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs],
- 	libffi_cv_as_sparc_ua_pcrel, [
- 	save_CFLAGS="$CFLAGS"
- 	save_LDFLAGS="$LDFLAGS"
- 	CFLAGS="$CFLAGS -fpic"
- 	LDFLAGS="$LDFLAGS -shared"
-@@ -259,82 +377,96 @@ if test x$TARGET = xSPARC; then
- 	AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
- 		  [Define if your assembler and linker support unaligned PC relative relocs.])
-     fi
- 
-     AC_CACHE_CHECK([assembler .register pseudo-op support],
-        libffi_cv_as_register_pseudo_op, [
-        libffi_cv_as_register_pseudo_op=unknown
-        # Check if we have .register
--       AC_TRY_COMPILE([asm (".register %g2, #scratch");],,
-+       AC_TRY_COMPILE(,[asm (".register %g2, #scratch");],
- 		       [libffi_cv_as_register_pseudo_op=yes],
- 		       [libffi_cv_as_register_pseudo_op=no])
-     ])
-     if test "x$libffi_cv_as_register_pseudo_op" = xyes; then
-        AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
- 	       [Define if your assembler supports .register.])
-     fi
- fi
- 
- if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then
-     AC_CACHE_CHECK([assembler supports pc related relocs],
- 	libffi_cv_as_x86_pcrel, [
- 	libffi_cv_as_x86_pcrel=no
- 	echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s
--	if $CC $CFLAGS -c conftest.s > /dev/null; then
-+	if $CC $CFLAGS -c conftest.s > /dev/null 2>&1; then
- 	    libffi_cv_as_x86_pcrel=yes
- 	fi
- 	])
-     if test "x$libffi_cv_as_x86_pcrel" = xyes; then
- 	AC_DEFINE(HAVE_AS_X86_PCREL, 1,
- 		  [Define if your assembler supports PC relative relocs.])
-     fi
- 
-     AC_CACHE_CHECK([assembler .ascii pseudo-op support],
-        libffi_cv_as_ascii_pseudo_op, [
-        libffi_cv_as_ascii_pseudo_op=unknown
-        # Check if we have .ascii
--       AC_TRY_COMPILE([asm (".ascii \"string\"");],,
-+       AC_TRY_COMPILE(,[asm (".ascii \\"string\\"");],
- 		       [libffi_cv_as_ascii_pseudo_op=yes],
- 		       [libffi_cv_as_ascii_pseudo_op=no])
-     ])
-     if test "x$libffi_cv_as_ascii_pseudo_op" = xyes; then
-        AC_DEFINE(HAVE_AS_ASCII_PSEUDO_OP, 1,
- 	       [Define if your assembler supports .ascii.])
-     fi
- 
-     AC_CACHE_CHECK([assembler .string pseudo-op support],
-        libffi_cv_as_string_pseudo_op, [
-        libffi_cv_as_string_pseudo_op=unknown
-        # Check if we have .string
--       AC_TRY_COMPILE([asm (".string \"string\"");],,
-+       AC_TRY_COMPILE(,[asm (".string \\"string\\"");],
- 		       [libffi_cv_as_string_pseudo_op=yes],
- 		       [libffi_cv_as_string_pseudo_op=no])
-     ])
-     if test "x$libffi_cv_as_string_pseudo_op" = xyes; then
-        AC_DEFINE(HAVE_AS_STRING_PSEUDO_OP, 1,
- 	       [Define if your assembler supports .string.])
-     fi
- fi
- 
--if test x$TARGET = xX86_WIN64; then
--    LT_SYS_SYMBOL_USCORE
--    if test "x$sys_symbol_underscore" = xyes; then
--        AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.])
--    fi
-+# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC.
-+AC_ARG_ENABLE(pax_emutramp,
-+  [  --enable-pax_emutramp       enable pax emulated trampolines, for we can't use PROT_EXEC],
-+  if test "$enable_pax_emutramp" = "yes"; then
-+    AC_DEFINE(FFI_MMAP_EXEC_EMUTRAMP_PAX, 1,
-+      [Define this if you want to enable pax emulated trampolines])
-+  fi)
-+
-+LT_SYS_SYMBOL_USCORE
-+if test "x$sys_symbol_underscore" = xyes; then
-+    AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.])
- fi
- 
-+FFI_EXEC_TRAMPOLINE_TABLE=0
- case "$target" in
--     # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages
--     *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
-+     *arm*-apple-darwin*)
-+       FFI_EXEC_TRAMPOLINE_TABLE=1
-+       AC_DEFINE(FFI_EXEC_TRAMPOLINE_TABLE, 1,
-+                 [Cannot use PROT_EXEC on this target, so, we revert to
-+                   alternative means])
-+     ;;
-+     *-apple-darwin1* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*)
-        AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
-                  [Cannot use malloc on this target, so, we revert to
-                    alternative means])
-      ;;
- esac
-+AM_CONDITIONAL(FFI_EXEC_TRAMPOLINE_TABLE, test x$FFI_EXEC_TRAMPOLINE_TABLE = x1)
-+AC_SUBST(FFI_EXEC_TRAMPOLINE_TABLE)
- 
- if test x$TARGET = xX86_64; then
-     AC_CACHE_CHECK([toolchain supports unwind section type],
- 	libffi_cv_as_x86_64_unwind_section_type, [
-         cat  > conftest1.s << EOF
- .text
- .globl foo
- foo:
-@@ -357,54 +489,57 @@ EOF
- 	fi
- 	])
-     if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
- 	AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1,
- 		  [Define if your assembler supports unwind section type.])
-     fi
- fi
- 
--AC_CACHE_CHECK([whether .eh_frame section should be read-only],
--    libffi_cv_ro_eh_frame, [
--	libffi_cv_ro_eh_frame=no
--	echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
--	if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
--	    if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
--		libffi_cv_ro_eh_frame=yes
--	    elif grep '.section.*eh_frame.*#alloc' conftest.c \
--		 | grep -v '#write' > /dev/null; then
--		libffi_cv_ro_eh_frame=yes
--	    fi
--	fi
--	rm -f conftest.*
--    ])
--if test "x$libffi_cv_ro_eh_frame" = xyes; then
--    AC_DEFINE(HAVE_RO_EH_FRAME, 1,
--	      [Define if .eh_frame sections should be read-only.])
--    AC_DEFINE(EH_FRAME_FLAGS, "a",
--	      [Define to the flags needed for the .section .eh_frame directive.])
--else
--    AC_DEFINE(EH_FRAME_FLAGS, "aw",
--	      [Define to the flags needed for the .section .eh_frame directive.])
--fi
-+if test "x$GCC" = "xyes"; then
-+  AC_CACHE_CHECK([whether .eh_frame section should be read-only],
-+      libffi_cv_ro_eh_frame, [
-+  	libffi_cv_ro_eh_frame=no
-+  	echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
-+  	if $CC $CFLAGS -c -fpic -fexceptions -o conftest.o conftest.c > /dev/null 2>&1; then
-+	    objdump -h conftest.o > conftest.dump 2>&1
-+	    libffi_eh_frame_line=`grep -n eh_frame conftest.dump | cut -d: -f 1`
-+	    libffi_test_line=`expr $libffi_eh_frame_line + 1`p
-+	    sed -n $libffi_test_line conftest.dump > conftest.line
-+  	    if grep READONLY conftest.line > /dev/null; then
-+  		libffi_cv_ro_eh_frame=yes
-+  	    fi
-+  	fi
-+  	rm -f conftest.*
-+      ])
-+  if test "x$libffi_cv_ro_eh_frame" = xyes; then
-+      AC_DEFINE(HAVE_RO_EH_FRAME, 1,
-+  	      [Define if .eh_frame sections should be read-only.])
-+      AC_DEFINE(EH_FRAME_FLAGS, "a",
-+  	      [Define to the flags needed for the .section .eh_frame directive.  ])
-+  else
-+      AC_DEFINE(EH_FRAME_FLAGS, "aw",
-+  	      [Define to the flags needed for the .section .eh_frame directive.  ])
-+  fi
- 
--AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
--    libffi_cv_hidden_visibility_attribute, [
--	echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
--	libffi_cv_hidden_visibility_attribute=no
--	if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
--	    if grep '\.hidden.*foo' conftest.s >/dev/null; then
--		libffi_cv_hidden_visibility_attribute=yes
--	    fi
--	fi
--	rm -f conftest.*
--    ])
--if test $libffi_cv_hidden_visibility_attribute = yes; then
--    AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
--	      [Define if __attribute__((visibility("hidden"))) is supported.])
-+  AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
-+      libffi_cv_hidden_visibility_attribute, [
-+  	echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1  ; }' > conftest.c
-+  	libffi_cv_hidden_visibility_attribute=no
-+  	if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
-+  	    if grep '\.hidden.*foo' conftest.s >/dev/null; then
-+  		libffi_cv_hidden_visibility_attribute=yes
-+  	    fi
-+  	fi
-+  	rm -f conftest.*
-+      ])
-+  if test $libffi_cv_hidden_visibility_attribute = yes; then
-+      AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
-+  	      [Define if __attribute__((visibility("hidden"))) is supported.])
-+  fi
- fi
- 
- AH_BOTTOM([
- #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
- #ifdef LIBFFI_ASM
- #define FFI_HIDDEN(name) .hidden name
- #else
- #define FFI_HIDDEN __attribute__ ((visibility ("hidden")))
-@@ -428,53 +563,54 @@ AC_ARG_ENABLE(debug,
-   if test "$enable_debug" = "yes"; then
-     AC_DEFINE(FFI_DEBUG, 1, [Define this if you want extra debugging.])
-   fi)
- AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes")
- 
- AC_ARG_ENABLE(structs,
- [  --disable-structs       omit code for struct support],
-   if test "$enable_structs" = "no"; then
--    AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this is you do not want support for aggregate types.])
-+    AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this if you do not want support for aggregate types.])
-   fi)
-+AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes")
- 
- AC_ARG_ENABLE(raw-api,
- [  --disable-raw-api       make the raw api unavailable],
-   if test "$enable_raw_api" = "no"; then
--    AC_DEFINE(FFI_NO_RAW_API, 1, [Define this is you do not want support for the raw API.])
-+    AC_DEFINE(FFI_NO_RAW_API, 1, [Define this if you do not want support for the raw API.])
-   fi)
- 
- AC_ARG_ENABLE(purify-safety,
- [  --enable-purify-safety  purify-safe mode],
-   if test "$enable_purify_safety" = "yes"; then
-     AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.])
-   fi)
- 
--if test -n "$with_cross_host" &&
--   test x"$with_cross_host" != x"no"; then
--  toolexecdir='$(exec_prefix)/$(target_alias)'
--  toolexeclibdir='$(toolexecdir)/lib'
-+# These variables are only ever used when we cross-build to X86_WIN32.
-+# And we only support this with GCC, so...
-+if test "x$GCC" = "xyes"; then
-+  if test -n "$with_cross_host" &&
-+     test x"$with_cross_host" != x"no"; then
-+    toolexecdir='$(exec_prefix)/$(target_alias)'
-+    toolexeclibdir='$(toolexecdir)/lib'
-+  else
-+    toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
-+    toolexeclibdir='$(libdir)'
-+  fi
-+  multi_os_directory=`$CC -print-multi-os-directory`
-+  case $multi_os_directory in
-+    .) ;; # Avoid trailing /.
-+    ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
-+  esac
-+  AC_SUBST(toolexecdir)
- else
--  toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
-   toolexeclibdir='$(libdir)'
- fi
--multi_os_directory=`$CC -print-multi-os-directory`
--case $multi_os_directory in
--  .) ;; # Avoid trailing /.
--  *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
--esac
--AC_SUBST(toolexecdir)
- AC_SUBST(toolexeclibdir)
- 
--if test "${multilib}" = "yes"; then
--  multilib_arg="--enable-multilib"
--else
--  multilib_arg=
--fi
--
- AC_CONFIG_COMMANDS(include, [test -d include || mkdir include])
- AC_CONFIG_COMMANDS(src, [
- test -d src || mkdir src
- test -d src/$TARGETDIR || mkdir src/$TARGETDIR
- ], [TARGETDIR="$TARGETDIR"])
- 
- AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h)
- 
-diff --git a/js/src/ctypes/libffi/configure.host b/js/src/ctypes/libffi/configure.host
-deleted file mode 100644
---- a/js/src/ctypes/libffi/configure.host
-+++ /dev/null
-@@ -1,11 +0,0 @@
--# configure.host
--#
--# This shell script handles all host based configuration for libffi.
--# 
--
--# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
--case "${host}" in
--  frv*-elf)
--    LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/
--    ;;
--esac
-diff --git a/js/src/ctypes/libffi/depcomp b/js/src/ctypes/libffi/depcomp
---- a/js/src/ctypes/libffi/depcomp
-+++ b/js/src/ctypes/libffi/depcomp
-@@ -1,95 +1,178 @@
- #! /bin/sh
- # depcomp - compile a program generating dependencies as side-effects
- 
--scriptversion=2006-10-15.18
-+scriptversion=2013-05-30.07; # UTC
- 
--# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
--# Foundation, Inc.
-+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
- 
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2, or (at your option)
- # any later version.
- 
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- # GNU General Public License for more details.
- 
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
--# 02110-1301, USA.
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
- 
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
- 
- # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
- 
- case $1 in
-   '')
--     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
--     exit 1;
--     ;;
-+    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-+    exit 1;
-+    ;;
-   -h | --h*)
-     cat <<\EOF
- Usage: depcomp [--help] [--version] PROGRAM [ARGS]
- 
- Run PROGRAMS ARGS to compile a file, generating dependencies
- as side-effects.
- 
- Environment variables:
-   depmode     Dependency tracking mode.
--  source      Source file read by `PROGRAMS ARGS'.
--  object      Object file output by `PROGRAMS ARGS'.
-+  source      Source file read by 'PROGRAMS ARGS'.
-+  object      Object file output by 'PROGRAMS ARGS'.
-   DEPDIR      directory where to store dependencies.
-   depfile     Dependency file to output.
--  tmpdepfile  Temporary file to use when outputing dependencies.
-+  tmpdepfile  Temporary file to use when outputting dependencies.
-   libtool     Whether libtool is used (yes/no).
- 
- Report bugs to <bug-automake@gnu.org>.
- EOF
-     exit $?
-     ;;
-   -v | --v*)
-     echo "depcomp $scriptversion"
-     exit $?
-     ;;
- esac
- 
-+# Get the directory component of the given path, and save it in the
-+# global variables '$dir'.  Note that this directory component will
-+# be either empty or ending with a '/' character.  This is deliberate.
-+set_dir_from ()
-+{
-+  case $1 in
-+    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
-+      *) dir=;;
-+  esac
-+}
-+
-+# Get the suffix-stripped basename of the given path, and save it the
-+# global variable '$base'.
-+set_base_from ()
-+{
-+  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
-+}
-+
-+# If no dependency file was actually created by the compiler invocation,
-+# we still have to create a dummy depfile, to avoid errors with the
-+# Makefile "include basename.Plo" scheme.
-+make_dummy_depfile ()
-+{
-+  echo "#dummy" > "$depfile"
-+}
-+
-+# Factor out some common post-processing of the generated depfile.
-+# Requires the auxiliary global variable '$tmpdepfile' to be set.
-+aix_post_process_depfile ()
-+{
-+  # If the compiler actually managed to produce a dependency file,
-+  # post-process it.
-+  if test -f "$tmpdepfile"; then
-+    # Each line is of the form 'foo.o: dependency.h'.
-+    # Do two passes, one to just change these to
-+    #   $object: dependency.h
-+    # and one to simply output
-+    #   dependency.h:
-+    # which is needed to avoid the deleted-header problem.
-+    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
-+      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
-+    } > "$depfile"
-+    rm -f "$tmpdepfile"
-+  else
-+    make_dummy_depfile
-+  fi
-+}
-+
-+# A tabulation character.
-+tab='	'
-+# A newline character.
-+nl='
-+'
-+# Character ranges might be problematic outside the C locale.
-+# These definitions help.
-+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
-+lower=abcdefghijklmnopqrstuvwxyz
-+digits=0123456789
-+alpha=${upper}${lower}
-+
- if test -z "$depmode" || test -z "$source" || test -z "$object"; then
-   echo "depcomp: Variables source, object and depmode must be set" 1>&2
-   exit 1
- fi
- 
- # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
- depfile=${depfile-`echo "$object" |
-   sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
- tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
- 
- rm -f "$tmpdepfile"
- 
-+# Avoid interferences from the environment.
-+gccflag= dashmflag=
-+
- # Some modes work just like other modes, but use different flags.  We
- # parameterize here, but still list the modes in the big case below,
- # to make depend.m4 easier to write.  Note that we *cannot* use a case
- # here, because this file can only contain one case statement.
- if test "$depmode" = hp; then
-   # HP compiler uses -M and no extra arg.
-   gccflag=-M
-   depmode=gcc
- fi
- 
- if test "$depmode" = dashXmstdout; then
--   # This is just like dashmstdout with a different argument.
--   dashmflag=-xM
--   depmode=dashmstdout
-+  # This is just like dashmstdout with a different argument.
-+  dashmflag=-xM
-+  depmode=dashmstdout
-+fi
-+
-+cygpath_u="cygpath -u -f -"
-+if test "$depmode" = msvcmsys; then
-+  # This is just like msvisualcpp but w/o cygpath translation.
-+  # Just convert the backslash-escaped backslashes to single forward
-+  # slashes to satisfy depend.m4
-+  cygpath_u='sed s,\\\\,/,g'
-+  depmode=msvisualcpp
-+fi
-+
-+if test "$depmode" = msvc7msys; then
-+  # This is just like msvc7 but w/o cygpath translation.
-+  # Just convert the backslash-escaped backslashes to single forward
-+  # slashes to satisfy depend.m4
-+  cygpath_u='sed s,\\\\,/,g'
-+  depmode=msvc7
-+fi
-+
-+if test "$depmode" = xlc; then
-+  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
-+  gccflag=-qmakedep=gcc,-MF
-+  depmode=gcc
- fi
- 
- case "$depmode" in
- gcc3)
- ## gcc 3 implements dependency tracking that does exactly what
- ## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
- ## it if -MD -MP comes after the -MF stuff.  Hmm.
- ## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-@@ -102,64 +185,67 @@ gcc3)
-     -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
-     *)  set fnord "$@" "$arg" ;;
-     esac
-     shift # fnord
-     shift # $arg
-   done
-   "$@"
-   stat=$?
--  if test $stat -eq 0; then :
--  else
-+  if test $stat -ne 0; then
-     rm -f "$tmpdepfile"
-     exit $stat
-   fi
-   mv "$tmpdepfile" "$depfile"
-   ;;
- 
- gcc)
-+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
-+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
-+## (see the conditional assignment to $gccflag above).
- ## There are various ways to get dependency output from gcc.  Here's
- ## why we pick this rather obscure method:
- ## - Don't want to use -MD because we'd like the dependencies to end
- ##   up in a subdir.  Having to rename by hand is ugly.
- ##   (We might end up doing this anyway to support other compilers.)
- ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
--##   -MM, not -M (despite what the docs say).
-+##   -MM, not -M (despite what the docs say).  Also, it might not be
-+##   supported by the other compilers which use the 'gcc' depmode.
- ## - Using -M directly means running the compiler twice (even worse
- ##   than renaming).
-   if test -z "$gccflag"; then
-     gccflag=-MD,
-   fi
-   "$@" -Wp,"$gccflag$tmpdepfile"
-   stat=$?
--  if test $stat -eq 0; then :
--  else
-+  if test $stat -ne 0; then
-     rm -f "$tmpdepfile"
-     exit $stat
-   fi
-   rm -f "$depfile"
-   echo "$object : \\" > "$depfile"
--  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
--## The second -e expression handles DOS-style file names with drive letters.
-+  # The second -e expression handles DOS-style file names with drive
-+  # letters.
-   sed -e 's/^[^:]*: / /' \
-       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
--## This next piece of magic avoids the `deleted header file' problem.
-+## This next piece of magic avoids the "deleted header file" problem.
- ## The problem is that when a header file which appears in a .P file
- ## is deleted, the dependency causes make to die (because there is
- ## typically no way to rebuild the header).  We avoid this by adding
- ## dummy dependencies for each header file.  Too bad gcc doesn't do
- ## this for us directly.
--  tr ' ' '
--' < "$tmpdepfile" |
--## Some versions of gcc put a space before the `:'.  On the theory
-+## Some versions of gcc put a space before the ':'.  On the theory
- ## that the space means something, we add a space to the output as
--## well.
-+## well.  hp depmode also adds that space, but also prefixes the VPATH
-+## to the object.  Take care to not repeat it in the output.
- ## Some versions of the HPUX 10.20 sed can't process this invocation
- ## correctly.  Breaking it into two sed invocations is a workaround.
--    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-+  tr ' ' "$nl" < "$tmpdepfile" \
-+    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
-+    | sed -e 's/$/ :/' >> "$depfile"
-   rm -f "$tmpdepfile"
-   ;;
- 
- hp)
-   # This case exists only to let depend.m4 do its work.  It works by
-   # looking at the text of this script.  This case will never be run,
-   # since it is checked for above.
-   exit 1
-@@ -167,250 +253,339 @@ hp)
- 
- sgi)
-   if test "$libtool" = yes; then
-     "$@" "-Wp,-MDupdate,$tmpdepfile"
-   else
-     "$@" -MDupdate "$tmpdepfile"
-   fi
-   stat=$?
--  if test $stat -eq 0; then :
--  else
-+  if test $stat -ne 0; then
-     rm -f "$tmpdepfile"
-     exit $stat
-   fi
-   rm -f "$depfile"
- 
-   if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
-     echo "$object : \\" > "$depfile"
--
-     # Clip off the initial element (the dependent).  Don't try to be
-     # clever and replace this with sed code, as IRIX sed won't handle
-     # lines with more than a fixed number of characters (4096 in
-     # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
--    # the IRIX cc adds comments like `#:fec' to the end of the
-+    # the IRIX cc adds comments like '#:fec' to the end of the
-     # dependency line.
--    tr ' ' '
--' < "$tmpdepfile" \
--    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
--    tr '
--' ' ' >> $depfile
--    echo >> $depfile
--
-+    tr ' ' "$nl" < "$tmpdepfile" \
-+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
-+      | tr "$nl" ' ' >> "$depfile"
-+    echo >> "$depfile"
-     # The second pass generates a dummy entry for each header file.
--    tr ' ' '
--' < "$tmpdepfile" \
--   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
--   >> $depfile
-+    tr ' ' "$nl" < "$tmpdepfile" \
-+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-+      >> "$depfile"
-   else
--    # The sourcefile does not contain any dependencies, so just
--    # store a dummy comment line, to avoid errors with the Makefile
--    # "include basename.Plo" scheme.
--    echo "#dummy" > "$depfile"
-+    make_dummy_depfile
-   fi
-   rm -f "$tmpdepfile"
-   ;;
- 
-+xlc)
-+  # This case exists only to let depend.m4 do its work.  It works by
-+  # looking at the text of this script.  This case will never be run,
-+  # since it is checked for above.
-+  exit 1
-+  ;;
-+
- aix)
-   # The C for AIX Compiler uses -M and outputs the dependencies
-   # in a .u file.  In older versions, this file always lives in the
--  # current directory.  Also, the AIX compiler puts `$object:' at the
-+  # current directory.  Also, the AIX compiler puts '$object:' at the
-   # start of each line; $object doesn't have directory information.
-   # Version 6 uses the directory in both cases.
--  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
--  tmpdepfile="$stripped.u"
-+  set_dir_from "$object"
-+  set_base_from "$object"
-   if test "$libtool" = yes; then
-+    tmpdepfile1=$dir$base.u
-+    tmpdepfile2=$base.u
-+    tmpdepfile3=$dir.libs/$base.u
-     "$@" -Wc,-M
-   else
-+    tmpdepfile1=$dir$base.u
-+    tmpdepfile2=$dir$base.u
-+    tmpdepfile3=$dir$base.u
-     "$@" -M
-   fi
-   stat=$?
--
--  if test -f "$tmpdepfile"; then :
--  else
--    stripped=`echo "$stripped" | sed 's,^.*/,,'`
--    tmpdepfile="$stripped.u"
-+  if test $stat -ne 0; then
-+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-+    exit $stat
-   fi
- 
--  if test $stat -eq 0; then :
--  else
-+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-+  do
-+    test -f "$tmpdepfile" && break
-+  done
-+  aix_post_process_depfile
-+  ;;
-+
-+tcc)
-+  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
-+  # FIXME: That version still under development at the moment of writing.
-+  #        Make that this statement remains true also for stable, released
-+  #        versions.
-+  # It will wrap lines (doesn't matter whether long or short) with a
-+  # trailing '\', as in:
-+  #
-+  #   foo.o : \
-+  #    foo.c \
-+  #    foo.h \
-+  #
-+  # It will put a trailing '\' even on the last line, and will use leading
-+  # spaces rather than leading tabs (at least since its commit 0394caf7
-+  # "Emit spaces for -MD").
-+  "$@" -MD -MF "$tmpdepfile"
-+  stat=$?
-+  if test $stat -ne 0; then
-     rm -f "$tmpdepfile"
-     exit $stat
-   fi
--
--  if test -f "$tmpdepfile"; then
--    outname="$stripped.o"
--    # Each line is of the form `foo.o: dependent.h'.
--    # Do two passes, one to just change these to
--    # `$object: dependent.h' and one to simply `dependent.h:'.
--    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
--    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
--  else
--    # The sourcefile does not contain any dependencies, so just
--    # store a dummy comment line, to avoid errors with the Makefile
--    # "include basename.Plo" scheme.
--    echo "#dummy" > "$depfile"
--  fi
-+  rm -f "$depfile"
-+  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
-+  # We have to change lines of the first kind to '$object: \'.
-+  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
-+  # And for each line of the second kind, we have to emit a 'dep.h:'
-+  # dummy dependency, to avoid the deleted-header problem.
-+  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
-   rm -f "$tmpdepfile"
-   ;;
- 
--icc)
--  # Intel's C compiler understands `-MD -MF file'.  However on
--  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
--  # ICC 7.0 will fill foo.d with something like
--  #    foo.o: sub/foo.c
--  #    foo.o: sub/foo.h
--  # which is wrong.  We want:
--  #    sub/foo.o: sub/foo.c
--  #    sub/foo.o: sub/foo.h
--  #    sub/foo.c:
--  #    sub/foo.h:
--  # ICC 7.1 will output
-+## The order of this option in the case statement is important, since the
-+## shell code in configure will try each of these formats in the order
-+## listed in this file.  A plain '-MD' option would be understood by many
-+## compilers, so we must ensure this comes after the gcc and icc options.
-+pgcc)
-+  # Portland's C compiler understands '-MD'.
-+  # Will always output deps to 'file.d' where file is the root name of the
-+  # source file under compilation, even if file resides in a subdirectory.
-+  # The object file name does not affect the name of the '.d' file.
-+  # pgcc 10.2 will output
-   #    foo.o: sub/foo.c sub/foo.h
--  # and will wrap long lines using \ :
-+  # and will wrap long lines using '\' :
-   #    foo.o: sub/foo.c ... \
-   #     sub/foo.h ... \
-   #     ...
-+  set_dir_from "$object"
-+  # Use the source, not the object, to determine the base name, since
-+  # that's sadly what pgcc will do too.
-+  set_base_from "$source"
-+  tmpdepfile=$base.d
- 
--  "$@" -MD -MF "$tmpdepfile"
--  stat=$?
--  if test $stat -eq 0; then :
--  else
-+  # For projects that build the same source file twice into different object
-+  # files, the pgcc approach of using the *source* file root name can cause
-+  # problems in parallel builds.  Use a locking strategy to avoid stomping on
-+  # the same $tmpdepfile.
-+  lockdir=$base.d-lock
-+  trap "
-+    echo '$0: caught signal, cleaning up...' >&2
-+    rmdir '$lockdir'
-+    exit 1
-+  " 1 2 13 15
-+  numtries=100
-+  i=$numtries
-+  while test $i -gt 0; do
-+    # mkdir is a portable test-and-set.
-+    if mkdir "$lockdir" 2>/dev/null; then
-+      # This process acquired the lock.
-+      "$@" -MD
-+      stat=$?
-+      # Release the lock.
-+      rmdir "$lockdir"
-+      break
-+    else
-+      # If the lock is being held by a different process, wait
-+      # until the winning process is done or we timeout.
-+      while test -d "$lockdir" && test $i -gt 0; do
-+        sleep 1
-+        i=`expr $i - 1`
-+      done
-+    fi
-+    i=`expr $i - 1`
-+  done
-+  trap - 1 2 13 15
-+  if test $i -le 0; then
-+    echo "$0: failed to acquire lock after $numtries attempts" >&2
-+    echo "$0: check lockdir '$lockdir'" >&2
-+    exit 1
-+  fi
-+
-+  if test $stat -ne 0; then
-     rm -f "$tmpdepfile"
-     exit $stat
-   fi
-   rm -f "$depfile"
-   # Each line is of the form `foo.o: dependent.h',
-   # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
-   # Do two passes, one to just change these to
-   # `$object: dependent.h' and one to simply `dependent.h:'.
-   sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-   # Some versions of the HPUX 10.20 sed can't process this invocation
-   # correctly.  Breaking it into two sed invocations is a workaround.
--  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
--    sed -e 's/$/ :/' >> "$depfile"
-+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
-+    | sed -e 's/$/ :/' >> "$depfile"
-   rm -f "$tmpdepfile"
-   ;;
- 
- hp2)
-   # The "hp" stanza above does not work with aCC (C++) and HP's ia64
-   # compilers, which have integrated preprocessors.  The correct option
-   # to use with these is +Maked; it writes dependencies to a file named
-   # 'foo.d', which lands next to the object file, wherever that
-   # happens to be.
-   # Much of this is similar to the tru64 case; see comments there.
--  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
--  test "x$dir" = "x$object" && dir=
--  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-+  set_dir_from  "$object"
-+  set_base_from "$object"
-   if test "$libtool" = yes; then
-     tmpdepfile1=$dir$base.d
-     tmpdepfile2=$dir.libs/$base.d
-     "$@" -Wc,+Maked
-   else
-     tmpdepfile1=$dir$base.d
-     tmpdepfile2=$dir$base.d
-     "$@" +Maked
-   fi
-   stat=$?
--  if test $stat -eq 0; then :
--  else
-+  if test $stat -ne 0; then
-      rm -f "$tmpdepfile1" "$tmpdepfile2"
-      exit $stat
-   fi
- 
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
-   do
-     test -f "$tmpdepfile" && break
-   done
-   if test -f "$tmpdepfile"; then
--    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
--    # Add `dependent.h:' lines.
--    sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
-+    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
-+    # Add 'dependent.h:' lines.
-+    sed -ne '2,${
-+               s/^ *//
-+               s/ \\*$//
-+               s/$/:/
-+               p
-+             }' "$tmpdepfile" >> "$depfile"
-   else
--    echo "#dummy" > "$depfile"
-+    make_dummy_depfile
-   fi
-   rm -f "$tmpdepfile" "$tmpdepfile2"
-   ;;
- 
- tru64)
--   # The Tru64 compiler uses -MD to generate dependencies as a side
--   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
--   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
--   # dependencies in `foo.d' instead, so we check for that too.
--   # Subdirectories are respected.
--   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
--   test "x$dir" = "x$object" && dir=
--   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-+  # The Tru64 compiler uses -MD to generate dependencies as a side
-+  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
-+  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-+  # dependencies in 'foo.d' instead, so we check for that too.
-+  # Subdirectories are respected.
-+  set_dir_from  "$object"
-+  set_base_from "$object"
- 
--   if test "$libtool" = yes; then
--      # With Tru64 cc, shared objects can also be used to make a
--      # static library.  This mechanism is used in libtool 1.4 series to
--      # handle both shared and static libraries in a single compilation.
--      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
--      #
--      # With libtool 1.5 this exception was removed, and libtool now
--      # generates 2 separate objects for the 2 libraries.  These two
--      # compilations output dependencies in $dir.libs/$base.o.d and
--      # in $dir$base.o.d.  We have to check for both files, because
--      # one of the two compilations can be disabled.  We should prefer
--      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
--      # automatically cleaned when .libs/ is deleted, while ignoring
--      # the former would cause a distcleancheck panic.
--      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
--      tmpdepfile2=$dir$base.o.d          # libtool 1.5
--      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
--      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
--      "$@" -Wc,-MD
--   else
--      tmpdepfile1=$dir$base.o.d
--      tmpdepfile2=$dir$base.d
--      tmpdepfile3=$dir$base.d
--      tmpdepfile4=$dir$base.d
--      "$@" -MD
--   fi
-+  if test "$libtool" = yes; then
-+    # Libtool generates 2 separate objects for the 2 libraries.  These
-+    # two compilations output dependencies in $dir.libs/$base.o.d and
-+    # in $dir$base.o.d.  We have to check for both files, because
-+    # one of the two compilations can be disabled.  We should prefer
-+    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-+    # automatically cleaned when .libs/ is deleted, while ignoring
-+    # the former would cause a distcleancheck panic.
-+    tmpdepfile1=$dir$base.o.d          # libtool 1.5
-+    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
-+    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
-+    "$@" -Wc,-MD
-+  else
-+    tmpdepfile1=$dir$base.d
-+    tmpdepfile2=$dir$base.d
-+    tmpdepfile3=$dir$base.d
-+    "$@" -MD
-+  fi
- 
--   stat=$?
--   if test $stat -eq 0; then :
--   else
--      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
--      exit $stat
--   fi
-+  stat=$?
-+  if test $stat -ne 0; then
-+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-+    exit $stat
-+  fi
- 
--   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
--   do
--     test -f "$tmpdepfile" && break
--   done
--   if test -f "$tmpdepfile"; then
--      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
--      # That's a tab and a space in the [].
--      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
--   else
--      echo "#dummy" > "$depfile"
--   fi
--   rm -f "$tmpdepfile"
--   ;;
-+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-+  do
-+    test -f "$tmpdepfile" && break
-+  done
-+  # Same post-processing that is required for AIX mode.
-+  aix_post_process_depfile
-+  ;;
-+
-+msvc7)
-+  if test "$libtool" = yes; then
-+    showIncludes=-Wc,-showIncludes
-+  else
-+    showIncludes=-showIncludes
-+  fi
-+  "$@" $showIncludes > "$tmpdepfile"
-+  stat=$?
-+  grep -v '^Note: including file: ' "$tmpdepfile"
-+  if test $stat -ne 0; then
-+    rm -f "$tmpdepfile"
-+    exit $stat
-+  fi
-+  rm -f "$depfile"
-+  echo "$object : \\" > "$depfile"
-+  # The first sed program below extracts the file names and escapes
-+  # backslashes for cygpath.  The second sed program outputs the file
-+  # name when reading, but also accumulates all include files in the
-+  # hold buffer in order to output them again at the end.  This only
-+  # works with sed implementations that can handle large buffers.
-+  sed < "$tmpdepfile" -n '
-+/^Note: including file:  *\(.*\)/ {
-+  s//\1/
-+  s/\\/\\\\/g
-+  p
-+}' | $cygpath_u | sort -u | sed -n '
-+s/ /\\ /g
-+s/\(.*\)/'"$tab"'\1 \\/p
-+s/.\(.*\) \\/\1:/
-+H
-+$ {
-+  s/.*/'"$tab"'/
-+  G
-+  p
-+}' >> "$depfile"
-+  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
-+  rm -f "$tmpdepfile"
-+  ;;
-+
-+msvc7msys)
-+  # This case exists only to let depend.m4 do its work.  It works by
-+  # looking at the text of this script.  This case will never be run,
-+  # since it is checked for above.
-+  exit 1
-+  ;;
- 
- #nosideeffect)
-   # This comment above is used by automake to tell side-effect
-   # dependency tracking mechanisms from slower ones.
- 
- dashmstdout)
-   # Important note: in order to support this mode, a compiler *must*
-   # always write the preprocessed file to stdout, regardless of -o.
-   "$@" || exit $?
- 
-   # Remove the call to Libtool.
-   if test "$libtool" = yes; then
--    while test $1 != '--mode=compile'; do
-+    while test "X$1" != 'X--mode=compile'; do
-       shift
-     done
-     shift
-   fi
- 
--  # Remove `-o $object'.
-+  # Remove '-o $object'.
-   IFS=" "
-   for arg
-   do
-     case $arg in
-     -o)
-       shift
-       ;;
-     $object)
-@@ -420,93 +595,103 @@ dashmstdout)
-       set fnord "$@" "$arg"
-       shift # fnord
-       shift # $arg
-       ;;
-     esac
-   done
- 
-   test -z "$dashmflag" && dashmflag=-M
--  # Require at least two characters before searching for `:'
-+  # Require at least two characters before searching for ':'
-   # in the target name.  This is to cope with DOS-style filenames:
--  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
-+  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
-   "$@" $dashmflag |
--    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
-+    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
-   rm -f "$depfile"
-   cat < "$tmpdepfile" > "$depfile"
--  tr ' ' '
--' < "$tmpdepfile" | \
--## Some versions of the HPUX 10.20 sed can't process this invocation
--## correctly.  Breaking it into two sed invocations is a workaround.
--    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-+  # Some versions of the HPUX 10.20 sed can't process this sed invocation
-+  # correctly.  Breaking it into two sed invocations is a workaround.
-+  tr ' ' "$nl" < "$tmpdepfile" \
-+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
-+    | sed -e 's/$/ :/' >> "$depfile"
-   rm -f "$tmpdepfile"
-   ;;
- 
- dashXmstdout)
-   # This case only exists to satisfy depend.m4.  It is never actually
-   # run, as this mode is specially recognized in the preamble.
-   exit 1
-   ;;
- 
- makedepend)
-   "$@" || exit $?
-   # Remove any Libtool call
-   if test "$libtool" = yes; then
--    while test $1 != '--mode=compile'; do
-+    while test "X$1" != 'X--mode=compile'; do
-       shift
-     done
-     shift
-   fi
-   # X makedepend
-   shift
--  cleared=no
--  for arg in "$@"; do
-+  cleared=no eat=no
-+  for arg
-+  do
-     case $cleared in
-     no)
-       set ""; shift
-       cleared=yes ;;
-     esac
-+    if test $eat = yes; then
-+      eat=no
-+      continue
-+    fi
-     case "$arg" in
-     -D*|-I*)
-       set fnord "$@" "$arg"; shift ;;
-     # Strip any option that makedepend may not understand.  Remove
-     # the object too, otherwise makedepend will parse it as a source file.
-+    -arch)
-+      eat=yes ;;
-     -*|$object)
-       ;;
-     *)
-       set fnord "$@" "$arg"; shift ;;
-     esac
-   done
--  obj_suffix="`echo $object | sed 's/^.*\././'`"
-+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
-   touch "$tmpdepfile"
-   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
-   rm -f "$depfile"
--  cat < "$tmpdepfile" > "$depfile"
--  sed '1,2d' "$tmpdepfile" | tr ' ' '
--' | \
--## Some versions of the HPUX 10.20 sed can't process this invocation
--## correctly.  Breaking it into two sed invocations is a workaround.
--    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-+  # makedepend may prepend the VPATH from the source file name to the object.
-+  # No need to regex-escape $object, excess matching of '.' is harmless.
-+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
-+  # Some versions of the HPUX 10.20 sed can't process the last invocation
-+  # correctly.  Breaking it into two sed invocations is a workaround.
-+  sed '1,2d' "$tmpdepfile" \
-+    | tr ' ' "$nl" \
-+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
-+    | sed -e 's/$/ :/' >> "$depfile"
-   rm -f "$tmpdepfile" "$tmpdepfile".bak
-   ;;
- 
- cpp)
-   # Important note: in order to support this mode, a compiler *must*
-   # always write the preprocessed file to stdout.
-   "$@" || exit $?
- 
-   # Remove the call to Libtool.
-   if test "$libtool" = yes; then
--    while test $1 != '--mode=compile'; do
-+    while test "X$1" != 'X--mode=compile'; do
-       shift
-     done
-     shift
-   fi
- 
--  # Remove `-o $object'.
-+  # Remove '-o $object'.
-   IFS=" "
-   for arg
-   do
-     case $arg in
-     -o)
-       shift
-       ;;
-     $object)
-@@ -515,58 +700,79 @@ cpp)
-     *)
-       set fnord "$@" "$arg"
-       shift # fnord
-       shift # $arg
-       ;;
-     esac
-   done
- 
--  "$@" -E |
--    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
--       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
--    sed '$ s: \\$::' > "$tmpdepfile"
-+  "$@" -E \
-+    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-+             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-+    | sed '$ s: \\$::' > "$tmpdepfile"
-   rm -f "$depfile"
-   echo "$object : \\" > "$depfile"
-   cat < "$tmpdepfile" >> "$depfile"
-   sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
-   rm -f "$tmpdepfile"
-   ;;
- 
- msvisualcpp)
-   # Important note: in order to support this mode, a compiler *must*
--  # always write the preprocessed file to stdout, regardless of -o,
--  # because we must use -o when running libtool.
-+  # always write the preprocessed file to stdout.
-   "$@" || exit $?
-+
-+  # Remove the call to Libtool.
-+  if test "$libtool" = yes; then
-+    while test "X$1" != 'X--mode=compile'; do
-+      shift
-+    done
-+    shift
-+  fi
-+
-   IFS=" "
-   for arg
-   do
-     case "$arg" in
-+    -o)
-+      shift
-+      ;;
-+    $object)
-+      shift
-+      ;;
-     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
--	set fnord "$@"
--	shift
--	shift
--	;;
-+        set fnord "$@"
-+        shift
-+        shift
-+        ;;
-     *)
--	set fnord "$@" "$arg"
--	shift
--	shift
--	;;
-+        set fnord "$@" "$arg"
-+        shift
-+        shift
-+        ;;
-     esac
-   done
--  "$@" -E |
--  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
-+  "$@" -E 2>/dev/null |
-+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
-   rm -f "$depfile"
-   echo "$object : \\" > "$depfile"
--  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
--  echo "	" >> "$depfile"
--  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
-+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
-+  echo "$tab" >> "$depfile"
-+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
-   rm -f "$tmpdepfile"
-   ;;
- 
-+msvcmsys)
-+  # This case exists only to let depend.m4 do its work.  It works by
-+  # looking at the text of this script.  This case will never be run,
-+  # since it is checked for above.
-+  exit 1
-+  ;;
-+
- none)
-   exec "$@"
-   ;;
- 
- *)
-   echo "Unknown depmode $depmode" 1>&2
-   exit 1
-   ;;
-@@ -575,10 +781,11 @@ esac
- exit 0
- 
- # Local Variables:
- # mode: shell-script
- # sh-indentation: 2
- # eval: (add-hook 'write-file-hooks 'time-stamp)
- # time-stamp-start: "scriptversion="
- # time-stamp-format: "%:y-%02m-%02d.%02H"
--# time-stamp-end: "$"
-+# time-stamp-time-zone: "UTC"
-+# time-stamp-end: "; # UTC"
- # End:
-diff --git a/js/src/ctypes/libffi/doc/stamp-vti b/js/src/ctypes/libffi/doc/stamp-vti
---- a/js/src/ctypes/libffi/doc/stamp-vti
-+++ b/js/src/ctypes/libffi/doc/stamp-vti
-@@ -1,4 +1,4 @@
--@set UPDATED 14 February 2008
--@set UPDATED-MONTH February 2008
--@set EDITION 3.0.8
--@set VERSION 3.0.8
-+@set UPDATED 25 March 2014
-+@set UPDATED-MONTH March 2014
-+@set EDITION 3.1-rc1
-+@set VERSION 3.1-rc1
---- a/js/src/ctypes/libffi/fficonfig.h.in
-+++ b/js/src/ctypes/libffi/fficonfig.h.in
-@@ -12,23 +12,29 @@
- #undef C_ALLOCA
- 
- /* Define to the flags needed for the .section .eh_frame directive. */
- #undef EH_FRAME_FLAGS
- 
- /* Define this if you want extra debugging. */
- #undef FFI_DEBUG
- 
-+/* Cannot use PROT_EXEC on this target, so, we revert to alternative means */
-+#undef FFI_EXEC_TRAMPOLINE_TABLE
-+
-+/* Define this if you want to enable pax emulated trampolines */
-+#undef FFI_MMAP_EXEC_EMUTRAMP_PAX
-+
- /* Cannot use malloc on this target, so, we revert to alternative means */
- #undef FFI_MMAP_EXEC_WRIT
- 
--/* Define this is you do not want support for the raw API. */
-+/* Define this if you do not want support for the raw API. */
- #undef FFI_NO_RAW_API
- 
--/* Define this is you do not want support for aggregate types. */
-+/* Define this if you do not want support for aggregate types. */
- #undef FFI_NO_STRUCTS
- 
- /* Define to 1 if you have `alloca', as a function or macro. */
- #undef HAVE_ALLOCA
- 
- /* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-    */
- #undef HAVE_ALLOCA_H
-@@ -62,16 +68,19 @@
- #undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
- 
- /* Define to 1 if you have the <inttypes.h> header file. */
- #undef HAVE_INTTYPES_H
- 
- /* Define if you have the long double type and it is bigger than a double */
- #undef HAVE_LONG_DOUBLE
- 
-+/* Define if you support more than one size of the long double type */
-+#undef HAVE_LONG_DOUBLE_VARIANT
-+
- /* Define to 1 if you have the `memcpy' function. */
- #undef HAVE_MEMCPY
- 
- /* Define to 1 if you have the <memory.h> header file. */
- #undef HAVE_MEMORY_H
- 
- /* Define to 1 if you have the `mmap' function. */
- #undef HAVE_MMAP
-@@ -141,27 +150,33 @@
- #undef PACKAGE_VERSION
- 
- /* The size of `double', as computed by sizeof. */
- #undef SIZEOF_DOUBLE
- 
- /* The size of `long double', as computed by sizeof. */
- #undef SIZEOF_LONG_DOUBLE
- 
-+/* The size of `size_t', as computed by sizeof. */
-+#undef SIZEOF_SIZE_T
-+
- /* If using the C implementation of alloca, define if you know the
-    direction of stack growth for your system; otherwise it will be
-    automatically deduced at runtime.
- 	STACK_DIRECTION > 0 => grows toward higher addresses
- 	STACK_DIRECTION < 0 => grows toward lower addresses
- 	STACK_DIRECTION = 0 => direction of growth unknown */
- #undef STACK_DIRECTION
- 
- /* Define to 1 if you have the ANSI C header files. */
- #undef STDC_HEADERS
- 
-+/* Define if symbols are underscored. */
-+#undef SYMBOL_UNDERSCORE
-+
- /* Define this if you are using Purify and want to suppress spurious messages.
-    */
- #undef USING_PURIFY
- 
- /* Version number of package */
- #undef VERSION
- 
- /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
-@@ -171,16 +186,19 @@
- #  define WORDS_BIGENDIAN 1
- # endif
- #else
- # ifndef WORDS_BIGENDIAN
- #  undef WORDS_BIGENDIAN
- # endif
- #endif
- 
-+/* Define to `unsigned int' if <sys/types.h> does not define. */
-+#undef size_t
-+
- 
- #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
- #ifdef LIBFFI_ASM
- #define FFI_HIDDEN(name) .hidden name
- #else
- #define FFI_HIDDEN __attribute__ ((visibility ("hidden")))
- #endif
- #else
-diff --git a/js/src/ctypes/libffi/generate-darwin-source-and-headers.py b/js/src/ctypes/libffi/generate-darwin-source-and-headers.py
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/generate-darwin-source-and-headers.py
-@@ -0,0 +1,209 @@
-+#!/usr/bin/env python
-+import subprocess
-+import os
-+import errno
-+import collections
-+import glob
-+import argparse
-+
-+class Platform(object):
-+    pass
-+
-+class simulator_platform(Platform):
-+    directory = 'darwin_ios'
-+    sdk = 'iphonesimulator'
-+    arch = 'i386'
-+    triple = 'i386-apple-darwin11'
-+    version_min = '-miphoneos-version-min=5.1.1'
-+
-+    prefix = "#ifdef __i386__\n\n"
-+    suffix = "\n\n#endif"
-+    src_dir = 'x86'
-+    src_files = ['darwin.S', 'win32.S', 'ffi.c']
-+
-+
-+class simulator64_platform(Platform):
-+    directory = 'darwin_ios'
-+    sdk = 'iphonesimulator'
-+    arch = 'x86_64'
-+    triple = 'x86_64-apple-darwin13'
-+    version_min = '-miphoneos-version-min=7.0'
-+
-+    prefix = "#ifdef __x86_64__\n\n"
-+    suffix = "\n\n#endif"
-+    src_dir = 'x86'
-+    src_files = ['darwin64.S', 'ffi64.c']
-+
-+
-+class device_platform(Platform):
-+    directory = 'darwin_ios'
-+    sdk = 'iphoneos'
-+    arch = 'armv7'
-+    triple = 'arm-apple-darwin11'
-+    version_min = '-miphoneos-version-min=5.1.1'
-+
-+    prefix = "#ifdef __arm__\n\n"
-+    suffix = "\n\n#endif"
-+    src_dir = 'arm'
-+    src_files = ['sysv.S', 'trampoline.S', 'ffi.c']
-+
-+
-+class device64_platform(Platform):
-+    directory = 'darwin_ios'
-+    sdk = 'iphoneos'
-+    arch = 'arm64'
-+    triple = 'aarch64-apple-darwin13'
-+    version_min = '-miphoneos-version-min=7.0'
-+
-+    prefix = "#ifdef __arm64__\n\n"
-+    suffix = "\n\n#endif"
-+    src_dir = 'aarch64'
-+    src_files = ['sysv.S', 'ffi.c']
-+
-+
-+class desktop32_platform(Platform):
-+    directory = 'darwin_osx'
-+    sdk = 'macosx'
-+    arch = 'i386'
-+    triple = 'i386-apple-darwin10'
-+    version_min = '-mmacosx-version-min=10.6'
-+    src_dir = 'x86'
-+    src_files = ['darwin.S', 'win32.S', 'ffi.c']
-+
-+    prefix = "#ifdef __i386__\n\n"
-+    suffix = "\n\n#endif"
-+
-+
-+class desktop64_platform(Platform):
-+    directory = 'darwin_osx'
-+    sdk = 'macosx'
-+    arch = 'x86_64'
-+    triple = 'x86_64-apple-darwin10'
-+    version_min = '-mmacosx-version-min=10.6'
-+
-+    prefix = "#ifdef __x86_64__\n\n"
-+    suffix = "\n\n#endif"
-+    src_dir = 'x86'
-+    src_files = ['darwin64.S', 'ffi64.c']
-+
-+
-+def mkdir_p(path):
-+    try:
-+        os.makedirs(path)
-+    except OSError as exc:  # Python >2.5
-+        if exc.errno == errno.EEXIST:
-+            pass
-+        else:
-+            raise
-+
-+
-+def move_file(src_dir, dst_dir, filename, file_suffix=None, prefix='', suffix=''):
-+    mkdir_p(dst_dir)
-+    out_filename = filename
-+
-+    if file_suffix:
-+        split_name = os.path.splitext(filename)
-+        out_filename = "%s_%s%s" % (split_name[0], file_suffix, split_name[1])
-+
-+    with open(os.path.join(src_dir, filename)) as in_file:
-+        with open(os.path.join(dst_dir, out_filename), 'w') as out_file:
-+            if prefix:
-+                out_file.write(prefix)
-+
-+            out_file.write(in_file.read())
-+
-+            if suffix:
-+                out_file.write(suffix)
-+
-+
-+def list_files(src_dir, pattern=None, filelist=None):
-+    if pattern: filelist = glob.iglob(os.path.join(src_dir, pattern))
-+    for file in filelist:
-+        yield os.path.basename(file)
-+
-+
-+def copy_files(src_dir, dst_dir, pattern=None, filelist=None, file_suffix=None, prefix=None, suffix=None):
-+    for filename in list_files(src_dir, pattern=pattern, filelist=filelist):
-+        move_file(src_dir, dst_dir, filename, file_suffix=file_suffix, prefix=prefix, suffix=suffix)
-+
-+
-+def copy_src_platform_files(platform):
-+    src_dir = os.path.join('src', platform.src_dir)
-+    dst_dir = os.path.join(platform.directory, 'src', platform.src_dir)
-+    copy_files(src_dir, dst_dir, filelist=platform.src_files, file_suffix=platform.arch, prefix=platform.prefix, suffix=platform.suffix)
-+
-+
-+def build_target(platform, platform_headers):
-+    def xcrun_cmd(cmd):
-+        return 'xcrun -sdk %s %s -arch %s' % (platform.sdk, cmd, platform.arch)
-+
-+    tag='%s-%s' % (platform.sdk, platform.arch)
-+    build_dir = 'build_%s' % tag
-+    mkdir_p(build_dir)
-+    env = dict(CC=xcrun_cmd('clang'),
-+               LD=xcrun_cmd('ld'),
-+               CFLAGS='%s' % (platform.version_min))
-+    working_dir = os.getcwd()
-+    try:
-+        os.chdir(build_dir)
-+        subprocess.check_call(['../configure', '-host', platform.triple], env=env)
-+    finally:
-+        os.chdir(working_dir)
-+
-+    for src_dir in [build_dir, os.path.join(build_dir, 'include')]:
-+        copy_files(src_dir,
-+                   os.path.join(platform.directory, 'include'),
-+                   pattern='*.h',
-+                   file_suffix=platform.arch,
-+                   prefix=platform.prefix,
-+                   suffix=platform.suffix)
-+
-+        for filename in list_files(src_dir, pattern='*.h'):
-+            platform_headers[filename].add((platform.prefix, platform.arch, platform.suffix))
-+
-+
-+def make_tramp():
-+    with open('src/arm/trampoline.S', 'w') as tramp_out:
-+        p = subprocess.Popen(['bash', 'src/arm/gentramp.sh'], stdout=tramp_out)
-+        p.wait()
-+
-+
-+def generate_source_and_headers(generate_osx=True, generate_ios=True):
-+    copy_files('src', 'darwin_common/src', pattern='*.c')
-+    copy_files('include', 'darwin_common/include', pattern='*.h')
-+
-+    if generate_ios:
-+        make_tramp()
-+        copy_src_platform_files(simulator_platform)
-+        copy_src_platform_files(simulator64_platform)
-+        copy_src_platform_files(device_platform)
-+        copy_src_platform_files(device64_platform)
-+    if generate_osx:
-+        copy_src_platform_files(desktop32_platform)
-+        copy_src_platform_files(desktop64_platform)
-+
-+    platform_headers = collections.defaultdict(set)
-+
-+    if generate_ios:
-+        build_target(simulator_platform, platform_headers)
-+        build_target(simulator64_platform, platform_headers)
-+        build_target(device_platform, platform_headers)
-+        build_target(device64_platform, platform_headers)
-+    if generate_osx:
-+        build_target(desktop32_platform, platform_headers)
-+        build_target(desktop64_platform, platform_headers)
-+
-+    mkdir_p('darwin_common/include')
-+    for header_name, tag_tuples in platform_headers.iteritems():
-+        basename, suffix = os.path.splitext(header_name)
-+        with open(os.path.join('darwin_common/include', header_name), 'w') as header:
-+            for tag_tuple in tag_tuples:
-+                header.write('%s#include <%s_%s%s>\n%s\n' % (tag_tuple[0], basename, tag_tuple[1], suffix, tag_tuple[2]))
-+
-+if __name__ == '__main__':
-+    parser = argparse.ArgumentParser()
-+    parser.add_argument('--only-ios', action='store_true', default=False)
-+    parser.add_argument('--only-osx', action='store_true', default=False)
-+    args = parser.parse_args()
-+
-+    generate_source_and_headers(generate_osx=not args.only_ios, generate_ios=not args.only_osx)
-diff --git a/js/src/ctypes/libffi/include/Makefile.in b/js/src/ctypes/libffi/include/Makefile.in
---- a/js/src/ctypes/libffi/include/Makefile.in
-+++ b/js/src/ctypes/libffi/include/Makefile.in
-@@ -1,26 +1,70 @@
--# Makefile.in generated by automake 1.11.1 from Makefile.am.
-+# Makefile.in generated by automake 1.13.4 from Makefile.am.
- # @configure_input@
- 
--# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
--# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
--# Inc.
-+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-+
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- # PARTICULAR PURPOSE.
- 
- @SET_MAKE@
- 
- VPATH = @srcdir@
-+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-+am__make_running_with_option = \
-+  case $${target_option-} in \
-+      ?) ;; \
-+      *) echo "am__make_running_with_option: internal error: invalid" \
-+              "target option '$${target_option-}' specified" >&2; \
-+         exit 1;; \
-+  esac; \
-+  has_opt=no; \
-+  sane_makeflags=$$MAKEFLAGS; \
-+  if $(am__is_gnu_make); then \
-+    sane_makeflags=$$MFLAGS; \
-+  else \
-+    case $$MAKEFLAGS in \
-+      *\\[\ \	]*) \
-+        bs=\\; \
-+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-+    esac; \
-+  fi; \
-+  skip_next=no; \
-+  strip_trailopt () \
-+  { \
-+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-+  }; \
-+  for flg in $$sane_makeflags; do \
-+    test $$skip_next = yes && { skip_next=no; continue; }; \
-+    case $$flg in \
-+      *=*|--*) continue;; \
-+        -*I) strip_trailopt 'I'; skip_next=yes;; \
-+      -*I?*) strip_trailopt 'I';; \
-+        -*O) strip_trailopt 'O'; skip_next=yes;; \
-+      -*O?*) strip_trailopt 'O';; \
-+        -*l) strip_trailopt 'l'; skip_next=yes;; \
-+      -*l?*) strip_trailopt 'l';; \
-+      -[dEDm]) skip_next=yes;; \
-+      -[JT]) skip_next=yes;; \
-+    esac; \
-+    case $$flg in \
-+      *$$target_option*) has_opt=yes; break;; \
-+    esac; \
-+  done; \
-+  test $$has_opt = yes
-+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
- pkgdatadir = $(datadir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
- pkglibdir = $(libdir)/@PACKAGE@
- pkglibexecdir = $(libexecdir)/@PACKAGE@
- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- install_sh_DATA = $(install_sh) -c -m 644
- install_sh_PROGRAM = $(install_sh) -c
- install_sh_SCRIPT = $(install_sh) -c
-@@ -31,29 +75,58 @@ PRE_INSTALL = :
- POST_INSTALL = :
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
- build_triplet = @build@
- host_triplet = @host@
- target_triplet = @target@
- subdir = include
--DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- 	$(srcdir)/ffi.h.in
- ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
--am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-+am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \
-+	$(top_srcdir)/m4/ax_append_flag.m4 \
-+	$(top_srcdir)/m4/ax_cc_maxopt.m4 \
-+	$(top_srcdir)/m4/ax_cflags_warn_all.m4 \
-+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
-+	$(top_srcdir)/m4/ax_compiler_vendor.m4 \
-+	$(top_srcdir)/m4/ax_configure_args.m4 \
-+	$(top_srcdir)/m4/ax_enable_builddir.m4 \
-+	$(top_srcdir)/m4/ax_gcc_archflag.m4 \
-+	$(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
-+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
- 	$(top_srcdir)/configure.ac
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- 	$(ACLOCAL_M4)
- mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/fficonfig.h
- CONFIG_CLEAN_FILES = ffi.h ffitarget.h
- CONFIG_CLEAN_VPATH_FILES =
-+AM_V_P = $(am__v_P_@AM_V@)
-+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-+am__v_P_0 = false
-+am__v_P_1 = :
-+AM_V_GEN = $(am__v_GEN_@AM_V@)
-+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-+am__v_GEN_0 = @echo "  GEN     " $@;
-+am__v_GEN_1 = 
-+AM_V_at = $(am__v_at_@AM_V@)
-+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-+am__v_at_0 = @
-+am__v_at_1 = 
- SOURCES =
- DIST_SOURCES =
-+am__can_run_installinfo = \
-+  case $$AM_UPDATE_INFO_DIR in \
-+    n|no|NO) false;; \
-+    *) (install-info --version) >/dev/null 2>&1;; \
-+  esac
- am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
- am__vpath_adj = case $$p in \
-     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-     *) f=$$p;; \
-   esac;
- am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
- am__install_max = 40
- am__nobase_strip_setup = \
-@@ -65,24 +138,48 @@ am__nobase_list = $(am__nobase_strip_set
-   sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-   $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-     if (++n[$$2] == $(am__install_max)) \
-       { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-     END { for (dir in files) print dir, files[dir] }'
- am__base_list = \
-   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-+am__uninstall_files_from_dir = { \
-+  test -z "$$files" \
-+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-+         $(am__cd) "$$dir" && rm -f $$files; }; \
-+  }
- am__installdirs = "$(DESTDIR)$(includesdir)"
- HEADERS = $(nodist_includes_HEADERS)
-+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-+# Read a list of newline-separated strings from the standard input,
-+# and print each of them once, without duplicates.  Input order is
-+# *not* preserved.
-+am__uniquify_input = $(AWK) '\
-+  BEGIN { nonempty = 0; } \
-+  { items[$$0] = 1; nonempty = 1; } \
-+  END { if (nonempty) { for (i in items) print i; }; } \
-+'
-+# Make sure the list of sources is unique.  This is necessary because,
-+# e.g., the same source file might be shared among _SOURCES variables
-+# for different programs/libraries.
-+am__define_uniq_tagged_files = \
-+  list='$(am__tagged_files)'; \
-+  unique=`for i in $$list; do \
-+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-+  done | $(am__uniquify_input)`
- ETAGS = etags
- CTAGS = ctags
- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
- ACLOCAL = @ACLOCAL@
- ALLOCA = @ALLOCA@
- AMTAR = @AMTAR@
-+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
- AM_LTLDFLAGS = @AM_LTLDFLAGS@
- AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@
- AR = @AR@
- AUTOCONF = @AUTOCONF@
- AUTOHEADER = @AUTOHEADER@
- AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
- CC = @CC@
-@@ -91,75 +188,82 @@ CCASDEPMODE = @CCASDEPMODE@
- CCASFLAGS = @CCASFLAGS@
- CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
- CPP = @CPP@
- CPPFLAGS = @CPPFLAGS@
- CYGPATH_W = @CYGPATH_W@
- DEFS = @DEFS@
- DEPDIR = @DEPDIR@
-+DLLTOOL = @DLLTOOL@
- DSYMUTIL = @DSYMUTIL@
- DUMPBIN = @DUMPBIN@
- ECHO_C = @ECHO_C@
- ECHO_N = @ECHO_N@
- ECHO_T = @ECHO_T@
- EGREP = @EGREP@
- EXEEXT = @EXEEXT@
-+FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@
- FGREP = @FGREP@
- GREP = @GREP@
- HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
-+HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@
- INSTALL = @INSTALL@
- INSTALL_DATA = @INSTALL_DATA@
- INSTALL_PROGRAM = @INSTALL_PROGRAM@
- INSTALL_SCRIPT = @INSTALL_SCRIPT@
- INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
- LD = @LD@
- LDFLAGS = @LDFLAGS@
- LIBOBJS = @LIBOBJS@
- LIBS = @LIBS@
- LIBTOOL = @LIBTOOL@
- LIPO = @LIPO@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
- MAINT = @MAINT@
- MAKEINFO = @MAKEINFO@
-+MANIFEST_TOOL = @MANIFEST_TOOL@
- MKDIR_P = @MKDIR_P@
- NM = @NM@
- NMEDIT = @NMEDIT@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- OTOOL = @OTOOL@
- OTOOL64 = @OTOOL64@
- PACKAGE = @PACKAGE@
- PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
- PACKAGE_NAME = @PACKAGE_NAME@
- PACKAGE_STRING = @PACKAGE_STRING@
- PACKAGE_TARNAME = @PACKAGE_TARNAME@
- PACKAGE_URL = @PACKAGE_URL@
- PACKAGE_VERSION = @PACKAGE_VERSION@
- PATH_SEPARATOR = @PATH_SEPARATOR@
-+PRTDIAG = @PRTDIAG@
- RANLIB = @RANLIB@
- SED = @SED@
- SET_MAKE = @SET_MAKE@
- SHELL = @SHELL@
- STRIP = @STRIP@
- TARGET = @TARGET@
- TARGETDIR = @TARGETDIR@
- VERSION = @VERSION@
- abs_builddir = @abs_builddir@
- abs_srcdir = @abs_srcdir@
- abs_top_builddir = @abs_top_builddir@
- abs_top_srcdir = @abs_top_srcdir@
-+ac_ct_AR = @ac_ct_AR@
- ac_ct_CC = @ac_ct_CC@
- ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
- am__include = @am__include@
- am__leading_dot = @am__leading_dot@
- am__quote = @am__quote@
- am__tar = @am__tar@
- am__untar = @am__untar@
-+ax_enable_builddir_sed = @ax_enable_builddir_sed@
- bindir = @bindir@
- build = @build@
- build_alias = @build_alias@
- build_cpu = @build_cpu@
- build_os = @build_os@
- build_vendor = @build_vendor@
- builddir = @builddir@
- datadir = @datadir@
-@@ -175,27 +279,27 @@ host_vendor = @host_vendor@
- htmldir = @htmldir@
- includedir = @includedir@
- infodir = @infodir@
- install_sh = @install_sh@
- libdir = @libdir@
- libexecdir = @libexecdir@
- localedir = @localedir@
- localstatedir = @localstatedir@
--lt_ECHO = @lt_ECHO@
- mandir = @mandir@
- mkdir_p = @mkdir_p@
- oldincludedir = @oldincludedir@
- pdfdir = @pdfdir@
- prefix = @prefix@
- program_transform_name = @program_transform_name@
- psdir = @psdir@
- sbindir = @sbindir@
- sharedstatedir = @sharedstatedir@
- srcdir = @srcdir@
-+sys_symbol_underscore = @sys_symbol_underscore@
- sysconfdir = @sysconfdir@
- target = @target@
- target_alias = @target_alias@
- target_cpu = @target_cpu@
- target_os = @target_os@
- target_vendor = @target_vendor@
- toolexecdir = @toolexecdir@
- toolexeclibdir = @toolexeclibdir@
-@@ -245,83 +349,84 @@ ffi.h: $(top_builddir)/config.status $(s
- 
- mostlyclean-libtool:
- 	-rm -f *.lo
- 
- clean-libtool:
- 	-rm -rf .libs _libs
- install-nodist_includesHEADERS: $(nodist_includes_HEADERS)
- 	@$(NORMAL_INSTALL)
--	test -z "$(includesdir)" || $(MKDIR_P) "$(DESTDIR)$(includesdir)"
- 	@list='$(nodist_includes_HEADERS)'; test -n "$(includesdir)" || list=; \
-+	if test -n "$$list"; then \
-+	  echo " $(MKDIR_P) '$(DESTDIR)$(includesdir)'"; \
-+	  $(MKDIR_P) "$(DESTDIR)$(includesdir)" || exit 1; \
-+	fi; \
- 	for p in $$list; do \
- 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- 	  echo "$$d$$p"; \
- 	done | $(am__base_list) | \
- 	while read files; do \
- 	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includesdir)'"; \
- 	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includesdir)" || exit $$?; \
- 	done
- 
- uninstall-nodist_includesHEADERS:
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(nodist_includes_HEADERS)'; test -n "$(includesdir)" || list=; \
- 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
--	test -n "$$files" || exit 0; \
--	echo " ( cd '$(DESTDIR)$(includesdir)' && rm -f" $$files ")"; \
--	cd "$(DESTDIR)$(includesdir)" && rm -f $$files
-+	dir='$(DESTDIR)$(includesdir)'; $(am__uninstall_files_from_dir)
- 
--ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
--	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
--	unique=`for i in $$list; do \
--	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
--	  done | \
--	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
--	      END { if (nonempty) { for (i in files) print i; }; }'`; \
--	mkid -fID $$unique
--tags: TAGS
-+ID: $(am__tagged_files)
-+	$(am__define_uniq_tagged_files); mkid -fID $$unique
-+tags: tags-am
-+TAGS: tags
- 
--TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
--		$(TAGS_FILES) $(LISP)
-+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- 	set x; \
- 	here=`pwd`; \
--	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
--	unique=`for i in $$list; do \
--	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
--	  done | \
--	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
--	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-+	$(am__define_uniq_tagged_files); \
- 	shift; \
- 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- 	  test -n "$$unique" || unique=$$empty_fix; \
- 	  if test $$# -gt 0; then \
- 	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- 	      "$$@" $$unique; \
- 	  else \
- 	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- 	      $$unique; \
- 	  fi; \
- 	fi
--ctags: CTAGS
--CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
--		$(TAGS_FILES) $(LISP)
--	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
--	unique=`for i in $$list; do \
--	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
--	  done | \
--	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
--	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-+ctags: ctags-am
-+
-+CTAGS: ctags
-+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-+	$(am__define_uniq_tagged_files); \
- 	test -z "$(CTAGS_ARGS)$$unique" \
- 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- 	     $$unique
- 
- GTAGS:
- 	here=`$(am__cd) $(top_builddir) && pwd` \
- 	  && $(am__cd) $(top_srcdir) \
- 	  && gtags -i $(GTAGS_ARGS) "$$here"
-+cscopelist: cscopelist-am
-+
-+cscopelist-am: $(am__tagged_files)
-+	list='$(am__tagged_files)'; \
-+	case "$(srcdir)" in \
-+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-+	  *) sdir=$(subdir)/$(srcdir) ;; \
-+	esac; \
-+	for i in $$list; do \
-+	  if test -f "$$i"; then \
-+	    echo "$(subdir)/$$i"; \
-+	  else \
-+	    echo "$$sdir/$$i"; \
-+	  fi; \
-+	done >> $(top_builddir)/cscope.files
- 
- distclean-tags:
- 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
- 
- distdir: $(DISTFILES)
- 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- 	list='$(DISTFILES)'; \
-@@ -363,20 +468,25 @@ install-exec: install-exec-am
- install-data: install-data-am
- uninstall: uninstall-am
- 
- install-am: all-am
- 	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
- 
- installcheck: installcheck-am
- install-strip:
--	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
--	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
--	  `test -z '$(STRIP)' || \
--	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-+	if test -z '$(STRIP)'; then \
-+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+	      install; \
-+	else \
-+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-+	fi
- mostlyclean-generic:
- 
- clean-generic:
- 
- distclean-generic:
- 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
- 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
-@@ -447,25 +557,26 @@ pdf-am:
- ps: ps-am
- 
- ps-am:
- 
- uninstall-am: uninstall-nodist_includesHEADERS
- 
- .MAKE: install-am install-strip
- 
--.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
--	clean-libtool ctags distclean distclean-generic \
--	distclean-libtool distclean-tags distdir dvi dvi-am html \
--	html-am info info-am install install-am install-data \
--	install-data-am install-dvi install-dvi-am install-exec \
--	install-exec-am install-html install-html-am install-info \
--	install-info-am install-man install-nodist_includesHEADERS \
--	install-pdf install-pdf-am install-ps install-ps-am \
--	install-strip installcheck installcheck-am installdirs \
--	maintainer-clean maintainer-clean-generic mostlyclean \
--	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
--	tags uninstall uninstall-am uninstall-nodist_includesHEADERS
-+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-+	clean-libtool cscopelist-am ctags ctags-am distclean \
-+	distclean-generic distclean-libtool distclean-tags distdir dvi \
-+	dvi-am html html-am info info-am install install-am \
-+	install-data install-data-am install-dvi install-dvi-am \
-+	install-exec install-exec-am install-html install-html-am \
-+	install-info install-info-am install-man \
-+	install-nodist_includesHEADERS install-pdf install-pdf-am \
-+	install-ps install-ps-am install-strip installcheck \
-+	installcheck-am installdirs maintainer-clean \
-+	maintainer-clean-generic mostlyclean mostlyclean-generic \
-+	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-+	uninstall-am uninstall-nodist_includesHEADERS
- 
- 
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
-diff --git a/js/src/ctypes/libffi/include/ffi.h.in b/js/src/ctypes/libffi/include/ffi.h.in
---- a/js/src/ctypes/libffi/include/ffi.h.in
-+++ b/js/src/ctypes/libffi/include/ffi.h.in
-@@ -1,21 +1,22 @@
- /* -----------------------------------------------------------------*-C-*-
--   libffi @VERSION@ - Copyright (c) 1996-2003, 2007, 2008  Red Hat, Inc.
-+   libffi @VERSION@ - Copyright (c) 2011 Anthony Green
-+                    - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
- 
--   Permission is hereby granted, free of charge, to any person obtaining
--   a copy of this software and associated documentation files (the
--   ``Software''), to deal in the Software without restriction, including
--   without limitation the rights to use, copy, modify, merge, publish,
--   distribute, sublicense, and/or sell copies of the Software, and to
--   permit persons to whom the Software is furnished to do so, subject to
--   the following conditions:
-+   Permission is hereby granted, free of charge, to any person
-+   obtaining a copy of this software and associated documentation
-+   files (the ``Software''), to deal in the Software without
-+   restriction, including without limitation the rights to use, copy,
-+   modify, merge, publish, distribute, sublicense, and/or sell copies
-+   of the Software, and to permit persons to whom the Software is
-+   furnished to do so, subject to the following conditions:
- 
--   The above copyright notice and this permission notice shall be included
--   in all copies or substantial portions of the Software.
-+   The above copyright notice and this permission notice shall be
-+   included in all copies or substantial portions of the Software.
- 
-    THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-    NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-    HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-    WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-@@ -80,21 +81,25 @@ extern "C" {
- 
- #define FFI_64_BIT_MAX 9223372036854775807
- 
- #ifdef LONG_LONG_MAX
- # define FFI_LONG_LONG_MAX LONG_LONG_MAX
- #else
- # ifdef LLONG_MAX
- #  define FFI_LONG_LONG_MAX LLONG_MAX
-+#  ifdef _AIX52 /* or newer has C99 LLONG_MAX */
-+#   undef FFI_64_BIT_MAX
-+#   define FFI_64_BIT_MAX 9223372036854775807LL
-+#  endif /* _AIX52 or newer */
- # else
- #  ifdef __GNUC__
- #   define FFI_LONG_LONG_MAX __LONG_LONG_MAX__
- #  endif
--#  ifdef _AIX
-+#  ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */
- #   ifndef __PPC64__
- #    if defined (__IBMC__) || defined (__IBMCPP__)
- #     define FFI_LONG_LONG_MAX LONGLONG_MAX
- #    endif
- #   endif /* __PPC64__ */
- #   undef  FFI_64_BIT_MAX
- #   define FFI_64_BIT_MAX 9223372036854775807LL
- #  endif
-@@ -156,32 +161,46 @@ typedef struct _ffi_type
- # define ffi_type_slong        ffi_type_sint32
- #elif LONG_MAX == FFI_64_BIT_MAX
- # define ffi_type_ulong        ffi_type_uint64
- # define ffi_type_slong        ffi_type_sint64
- #else
-  #error "long size not supported"
- #endif
- 
-+/* Need minimal decorations for DLLs to works on Windows. */
-+/* GCC has autoimport and autoexport.  Rely on Libtool to */
-+/* help MSVC export from a DLL, but always declare data   */
-+/* to be imported for MSVC clients.  This costs an extra  */
-+/* indirection for MSVC clients using the static version  */
-+/* of the library, but don't worry about that.  Besides,  */
-+/* as a workaround, they can define FFI_BUILDING if they  */
-+/* *know* they are going to link with the static library. */
-+#if defined _MSC_VER && !defined FFI_BUILDING
-+#define FFI_EXTERN extern __declspec(dllimport)
-+#else
-+#define FFI_EXTERN extern
-+#endif
-+
- /* These are defined in types.c */
--extern ffi_type ffi_type_void;
--extern ffi_type ffi_type_uint8;
--extern ffi_type ffi_type_sint8;
--extern ffi_type ffi_type_uint16;
--extern ffi_type ffi_type_sint16;
--extern ffi_type ffi_type_uint32;
--extern ffi_type ffi_type_sint32;
--extern ffi_type ffi_type_uint64;
--extern ffi_type ffi_type_sint64;
--extern ffi_type ffi_type_float;
--extern ffi_type ffi_type_double;
--extern ffi_type ffi_type_pointer;
-+FFI_EXTERN ffi_type ffi_type_void;
-+FFI_EXTERN ffi_type ffi_type_uint8;
-+FFI_EXTERN ffi_type ffi_type_sint8;
-+FFI_EXTERN ffi_type ffi_type_uint16;
-+FFI_EXTERN ffi_type ffi_type_sint16;
-+FFI_EXTERN ffi_type ffi_type_uint32;
-+FFI_EXTERN ffi_type ffi_type_sint32;
-+FFI_EXTERN ffi_type ffi_type_uint64;
-+FFI_EXTERN ffi_type ffi_type_sint64;
-+FFI_EXTERN ffi_type ffi_type_float;
-+FFI_EXTERN ffi_type ffi_type_double;
-+FFI_EXTERN ffi_type ffi_type_pointer;
- 
- #if @HAVE_LONG_DOUBLE@
--extern ffi_type ffi_type_longdouble;
-+FFI_EXTERN ffi_type ffi_type_longdouble;
- #else
- #define ffi_type_longdouble ffi_type_double
- #endif
- #endif /* LIBFFI_HIDE_BASIC_TYPES */
- 
- typedef enum {
-   FFI_OK = 0,
-   FFI_BAD_TYPEDEF,
-@@ -197,16 +216,30 @@ typedef struct {
-   ffi_type *rtype;
-   unsigned bytes;
-   unsigned flags;
- #ifdef FFI_EXTRA_CIF_FIELDS
-   FFI_EXTRA_CIF_FIELDS;
- #endif
- } ffi_cif;
- 
-+#if HAVE_LONG_DOUBLE_VARIANT
-+/* Used to adjust size/alignment of ffi types.  */
-+void ffi_prep_types (ffi_abi abi);
-+# endif
-+
-+/* Used internally, but overridden by some architectures */
-+ffi_status ffi_prep_cif_core(ffi_cif *cif,
-+			     ffi_abi abi,
-+			     unsigned int isvariadic,
-+			     unsigned int nfixedargs,
-+			     unsigned int ntotalargs,
-+			     ffi_type *rtype,
-+			     ffi_type **atypes);
-+
- /* ---- Definitions for the raw API -------------------------------------- */
- 
- #ifndef FFI_SIZEOF_ARG
- # if LONG_MAX == 2147483647
- #  define FFI_SIZEOF_ARG        4
- # elif LONG_MAX == FFI_64_BIT_MAX
- #  define FFI_SIZEOF_ARG        8
- # endif
-@@ -264,24 +297,32 @@ size_t ffi_java_raw_size (ffi_cif *cif);
- /* ---- Definitions for closures ----------------------------------------- */
- 
- #if FFI_CLOSURES
- 
- #ifdef _MSC_VER
- __declspec(align(8))
- #endif
- typedef struct {
-+#if @FFI_EXEC_TRAMPOLINE_TABLE@
-+  void *trampoline_table;
-+  void *trampoline_table_entry;
-+#else
-   char tramp[FFI_TRAMPOLINE_SIZE];
-+#endif
-   ffi_cif   *cif;
-   void     (*fun)(ffi_cif*,void*,void**,void*);
-   void      *user_data;
- #ifdef __GNUC__
- } ffi_closure __attribute__((aligned (8)));
- #else
- } ffi_closure;
-+# ifdef __sgi
-+#  pragma pack 0
-+# endif
- #endif
- 
- void *ffi_closure_alloc (size_t size, void **code);
- void ffi_closure_free (void *);
- 
- ffi_status
- ffi_prep_closure (ffi_closure*,
- 		  ffi_cif *,
-@@ -290,19 +331,26 @@ ffi_prep_closure (ffi_closure*,
- 
- ffi_status
- ffi_prep_closure_loc (ffi_closure*,
- 		      ffi_cif *,
- 		      void (*fun)(ffi_cif*,void*,void**,void*),
- 		      void *user_data,
- 		      void*codeloc);
- 
-+#ifdef __sgi
-+# pragma pack 8
-+#endif
- typedef struct {
-+#if @FFI_EXEC_TRAMPOLINE_TABLE@
-+  void *trampoline_table;
-+  void *trampoline_table_entry;
-+#else
-   char tramp[FFI_TRAMPOLINE_SIZE];
--
-+#endif
-   ffi_cif   *cif;
- 
- #if !FFI_NATIVE_RAW_API
- 
-   /* if this is enabled, then a raw closure has the same layout 
-      as a regular closure.  We use this to install an intermediate 
-      handler to do the transaltion, void** -> ffi_raw*. */
- 
-@@ -312,17 +360,22 @@ typedef struct {
- #endif
- 
-   void     (*fun)(ffi_cif*,void*,ffi_raw*,void*);
-   void      *user_data;
- 
- } ffi_raw_closure;
- 
- typedef struct {
-+#if @FFI_EXEC_TRAMPOLINE_TABLE@
-+  void *trampoline_table;
-+  void *trampoline_table_entry;
-+#else
-   char tramp[FFI_TRAMPOLINE_SIZE];
-+#endif
- 
-   ffi_cif   *cif;
- 
- #if !FFI_NATIVE_RAW_API
- 
-   /* if this is enabled, then a raw closure has the same layout 
-      as a regular closure.  We use this to install an intermediate 
-      handler to do the transaltion, void** -> ffi_raw*. */
-@@ -368,16 +421,23 @@ ffi_prep_java_raw_closure_loc (ffi_java_
- /* ---- Public interface definition -------------------------------------- */
- 
- ffi_status ffi_prep_cif(ffi_cif *cif,
- 			ffi_abi abi,
- 			unsigned int nargs,
- 			ffi_type *rtype,
- 			ffi_type **atypes);
- 
-+ffi_status ffi_prep_cif_var(ffi_cif *cif,
-+			    ffi_abi abi,
-+			    unsigned int nfixedargs,
-+			    unsigned int ntotalargs,
-+			    ffi_type *rtype,
-+			    ffi_type **atypes);
-+
- void ffi_call(ffi_cif *cif,
- 	      void (*fn)(void),
- 	      void *rvalue,
- 	      void **avalue);
- 
- /* Useful for eliminating compiler warnings */
- #define FFI_FN(f) ((void (*)(void))f)
- 
-diff --git a/js/src/ctypes/libffi/include/ffi_common.h b/js/src/ctypes/libffi/include/ffi_common.h
---- a/js/src/ctypes/libffi/include/ffi_common.h
-+++ b/js/src/ctypes/libffi/include/ffi_common.h
-@@ -1,50 +1,55 @@
- /* -----------------------------------------------------------------------
--   ffi_common.h - Copyright (c) 1996  Red Hat, Inc.
--   Copyright (C) 2007 Free Software Foundation, Inc
--
-+   ffi_common.h - Copyright (C) 2011, 2012, 2013  Anthony Green
-+                  Copyright (C) 2007  Free Software Foundation, Inc
-+                  Copyright (c) 1996  Red Hat, Inc.
-+                  
-    Common internal definitions and macros. Only necessary for building
-    libffi.
-    ----------------------------------------------------------------------- */
- 
- #ifndef FFI_COMMON_H
- #define FFI_COMMON_H
- 
- #ifdef __cplusplus
- extern "C" {
- #endif
- 
- #include <fficonfig.h>
- 
- /* Do not move this. Some versions of AIX are very picky about where
-    this is positioned. */
- #ifdef __GNUC__
--/* mingw64 defines this already in malloc.h. */
--#ifndef alloca
--# define alloca __builtin_alloca
--#endif
-+# if HAVE_ALLOCA_H
-+#  include <alloca.h>
-+# else
-+  /* mingw64 defines this already in malloc.h. */
-+#  ifndef alloca
-+#    define alloca __builtin_alloca
-+#  endif
-+# endif
- # define MAYBE_UNUSED __attribute__((__unused__))
- #else
- # define MAYBE_UNUSED
- # if HAVE_ALLOCA_H
- #  include <alloca.h>
- # else
- #  ifdef _AIX
-- #pragma alloca
-+#   pragma alloca
- #  else
- #   ifndef alloca /* predefined by HP cc +Olibcalls */
- #    ifdef _MSC_VER
- #     define alloca _alloca
- #    else
- char *alloca ();
--#    endif
- #   endif
- #  endif
- # endif
-+# endif
- #endif
- 
- /* Check for the existence of memcpy. */
- #if STDC_HEADERS
- # include <string.h>
- #else
- # ifndef HAVE_MEMCPY
- #  define memcpy(d, s, n) bcopy ((s), (d), (n))
-@@ -69,27 +74,29 @@ void ffi_type_test(ffi_type *a, char *fi
- #define FFI_ASSERT_VALID_TYPE(x)
- #endif
- 
- #define ALIGN(v, a)  (((((size_t) (v))-1) | ((a)-1))+1)
- #define ALIGN_DOWN(v, a) (((size_t) (v)) & -a)
- 
- /* Perform machine dependent cif processing */
- ffi_status ffi_prep_cif_machdep(ffi_cif *cif);
-+ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif,
-+	 unsigned int nfixedargs, unsigned int ntotalargs);
- 
- /* Extended cif, used in callback from assembly routine */
- typedef struct
- {
-   ffi_cif *cif;
-   void *rvalue;
-   void **avalue;
- } extended_cif;
- 
- /* Terse sized type definitions.  */
--#if defined(_MSC_VER) || defined(__sgi)
-+#if defined(_MSC_VER) || defined(__sgi) || defined(__SUNPRO_C)
- typedef unsigned char UINT8;
- typedef signed char   SINT8;
- typedef unsigned short UINT16;
- typedef signed short   SINT16;
- typedef unsigned int UINT32;
- typedef signed int   SINT32;
- # ifdef _MSC_VER
- typedef unsigned __int64 UINT64;
-@@ -107,16 +114,19 @@ typedef signed int   SINT16 __attribute_
- typedef unsigned int UINT32 __attribute__((__mode__(__SI__)));
- typedef signed int   SINT32 __attribute__((__mode__(__SI__)));
- typedef unsigned int UINT64 __attribute__((__mode__(__DI__)));
- typedef signed int   SINT64 __attribute__((__mode__(__DI__)));
- #endif
- 
- typedef float FLOAT32;
- 
-+#ifndef __GNUC__
-+#define __builtin_expect(x, expected_value) (x)
-+#endif
-+#define LIKELY(x)    __builtin_expect(!!(x),1)
-+#define UNLIKELY(x)  __builtin_expect((x)!=0,0)
- 
- #ifdef __cplusplus
- }
- #endif
- 
- #endif
--
--
-diff --git a/js/src/ctypes/libffi/install-sh b/js/src/ctypes/libffi/install-sh
---- a/js/src/ctypes/libffi/install-sh
-+++ b/js/src/ctypes/libffi/install-sh
-@@ -1,12 +1,12 @@
- #!/bin/sh
- # install - install a program, script, or datafile
- 
--scriptversion=2004-12-17.09
-+scriptversion=2011-11-20.07; # UTC
- 
- # This originates from X11R5 (mit/util/scripts/install.sh), which was
- # later released in X11R6 (xc/config/util/install.sh) with the
- # following copyright and license.
- #
- # Copyright (C) 1994 X Consortium
- #
- # Permission is hereby granted, free of charge, to any person obtaining a copy
-@@ -30,294 +30,498 @@ scriptversion=2004-12-17.09
- # be used in advertising or otherwise to promote the sale, use or other deal-
- # ings in this Software without prior written authorization from the X Consor-
- # tium.
- #
- #
- # FSF changes to this file are in the public domain.
- #
- # Calling this script install-sh is preferred over install.sh, to prevent
--# `make' implicit rules from creating a file called install from it
-+# 'make' implicit rules from creating a file called install from it
- # when there is no Makefile.
- #
- # This script is compatible with the BSD install script, but was written
--# from scratch.  It can only install one file at a time, a restriction
--# shared with many OS's install programs.
-+# from scratch.
-+
-+nl='
-+'
-+IFS=" ""	$nl"
- 
- # set DOITPROG to echo to test this script
- 
- # Don't use :- since 4.3BSD and earlier shells don't like it.
--doit="${DOITPROG-}"
-+doit=${DOITPROG-}
-+if test -z "$doit"; then
-+  doit_exec=exec
-+else
-+  doit_exec=$doit
-+fi
- 
--# put in absolute paths if you don't have them in your path; or use env. vars.
-+# Put in absolute file names if you don't have them in your path;
-+# or use environment vars.
- 
--mvprog="${MVPROG-mv}"
--cpprog="${CPPROG-cp}"
--chmodprog="${CHMODPROG-chmod}"
--chownprog="${CHOWNPROG-chown}"
--chgrpprog="${CHGRPPROG-chgrp}"
--stripprog="${STRIPPROG-strip}"
--rmprog="${RMPROG-rm}"
--mkdirprog="${MKDIRPROG-mkdir}"
-+chgrpprog=${CHGRPPROG-chgrp}
-+chmodprog=${CHMODPROG-chmod}
-+chownprog=${CHOWNPROG-chown}
-+cmpprog=${CMPPROG-cmp}
-+cpprog=${CPPROG-cp}
-+mkdirprog=${MKDIRPROG-mkdir}
-+mvprog=${MVPROG-mv}
-+rmprog=${RMPROG-rm}
-+stripprog=${STRIPPROG-strip}
- 
--chmodcmd="$chmodprog 0755"
-+posix_glob='?'
-+initialize_posix_glob='
-+  test "$posix_glob" != "?" || {
-+    if (set -f) 2>/dev/null; then
-+      posix_glob=
-+    else
-+      posix_glob=:
-+    fi
-+  }
-+'
-+
-+posix_mkdir=
-+
-+# Desired mode of installed file.
-+mode=0755
-+
-+chgrpcmd=
-+chmodcmd=$chmodprog
- chowncmd=
--chgrpcmd=
-+mvcmd=$mvprog
-+rmcmd="$rmprog -f"
- stripcmd=
--rmcmd="$rmprog -f"
--mvcmd="$mvprog"
-+
- src=
- dst=
- dir_arg=
--dstarg=
-+dst_arg=
-+
-+copy_on_change=false
- no_target_directory=
- 
--usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-+usage="\
-+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-    or: $0 [OPTION]... SRCFILES... DIRECTORY
-    or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-    or: $0 [OPTION]... -d DIRECTORIES...
- 
- In the 1st form, copy SRCFILE to DSTFILE.
- In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
- In the 4th, create DIRECTORIES.
- 
- Options:
---c         (ignored)
---d         create directories instead of installing files.
---g GROUP   $chgrpprog installed files to GROUP.
---m MODE    $chmodprog installed files to MODE.
---o USER    $chownprog installed files to USER.
---s         $stripprog installed files.
---t DIRECTORY  install into DIRECTORY.
---T         report an error if DSTFILE is a directory.
----help     display this help and exit.
----version  display version info and exit.
-+     --help     display this help and exit.
-+     --version  display version info and exit.
-+
-+  -c            (ignored)
-+  -C            install only if different (preserve the last data modification time)
-+  -d            create directories instead of installing files.
-+  -g GROUP      $chgrpprog installed files to GROUP.
-+  -m MODE       $chmodprog installed files to MODE.
-+  -o USER       $chownprog installed files to USER.
-+  -s            $stripprog installed files.
-+  -t DIRECTORY  install into DIRECTORY.
-+  -T            report an error if DSTFILE is a directory.
- 
- Environment variables override the default commands:
--  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
-+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
-+  RMPROG STRIPPROG
- "
- 
--while test -n "$1"; do
-+while test $# -ne 0; do
-   case $1 in
--    -c) shift
--        continue;;
-+    -c) ;;
- 
--    -d) dir_arg=true
--        shift
--        continue;;
-+    -C) copy_on_change=true;;
-+
-+    -d) dir_arg=true;;
- 
-     -g) chgrpcmd="$chgrpprog $2"
--        shift
--        shift
--        continue;;
-+	shift;;
- 
--    --help) echo "$usage"; exit 0;;
-+    --help) echo "$usage"; exit $?;;
- 
--    -m) chmodcmd="$chmodprog $2"
--        shift
--        shift
--        continue;;
-+    -m) mode=$2
-+	case $mode in
-+	  *' '* | *'	'* | *'
-+'*	  | *'*'* | *'?'* | *'['*)
-+	    echo "$0: invalid mode: $mode" >&2
-+	    exit 1;;
-+	esac
-+	shift;;
- 
-     -o) chowncmd="$chownprog $2"
--        shift
--        shift
--        continue;;
-+	shift;;
- 
--    -s) stripcmd=$stripprog
--        shift
--        continue;;
-+    -s) stripcmd=$stripprog;;
- 
--    -t) dstarg=$2
--	shift
--	shift
--	continue;;
-+    -t) dst_arg=$2
-+	# Protect names problematic for 'test' and other utilities.
-+	case $dst_arg in
-+	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
-+	esac
-+	shift;;
- 
--    -T) no_target_directory=true
--	shift
--	continue;;
-+    -T) no_target_directory=true;;
- 
--    --version) echo "$0 $scriptversion"; exit 0;;
-+    --version) echo "$0 $scriptversion"; exit $?;;
- 
--    *)  # When -d is used, all remaining arguments are directories to create.
--	# When -t is used, the destination is already specified.
--	test -n "$dir_arg$dstarg" && break
--        # Otherwise, the last argument is the destination.  Remove it from $@.
--	for arg
--	do
--          if test -n "$dstarg"; then
--	    # $@ is not empty: it contains at least $arg.
--	    set fnord "$@" "$dstarg"
--	    shift # fnord
--	  fi
--	  shift # arg
--	  dstarg=$arg
--	done
-+    --)	shift
- 	break;;
-+
-+    -*)	echo "$0: invalid option: $1" >&2
-+	exit 1;;
-+
-+    *)  break;;
-   esac
-+  shift
- done
- 
--if test -z "$1"; then
-+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
-+  # When -d is used, all remaining arguments are directories to create.
-+  # When -t is used, the destination is already specified.
-+  # Otherwise, the last argument is the destination.  Remove it from $@.
-+  for arg
-+  do
-+    if test -n "$dst_arg"; then
-+      # $@ is not empty: it contains at least $arg.
-+      set fnord "$@" "$dst_arg"
-+      shift # fnord
-+    fi
-+    shift # arg
-+    dst_arg=$arg
-+    # Protect names problematic for 'test' and other utilities.
-+    case $dst_arg in
-+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
-+    esac
-+  done
-+fi
-+
-+if test $# -eq 0; then
-   if test -z "$dir_arg"; then
-     echo "$0: no input file specified." >&2
-     exit 1
-   fi
--  # It's OK to call `install-sh -d' without argument.
-+  # It's OK to call 'install-sh -d' without argument.
-   # This can happen when creating conditional directories.
-   exit 0
- fi
- 
-+if test -z "$dir_arg"; then
-+  do_exit='(exit $ret); exit $ret'
-+  trap "ret=129; $do_exit" 1
-+  trap "ret=130; $do_exit" 2
-+  trap "ret=141; $do_exit" 13
-+  trap "ret=143; $do_exit" 15
-+
-+  # Set umask so as not to create temps with too-generous modes.
-+  # However, 'strip' requires both read and write access to temps.
-+  case $mode in
-+    # Optimize common cases.
-+    *644) cp_umask=133;;
-+    *755) cp_umask=22;;
-+
-+    *[0-7])
-+      if test -z "$stripcmd"; then
-+	u_plus_rw=
-+      else
-+	u_plus_rw='% 200'
-+      fi
-+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
-+    *)
-+      if test -z "$stripcmd"; then
-+	u_plus_rw=
-+      else
-+	u_plus_rw=,u+rw
-+      fi
-+      cp_umask=$mode$u_plus_rw;;
-+  esac
-+fi
-+
- for src
- do
--  # Protect names starting with `-'.
-+  # Protect names problematic for 'test' and other utilities.
-   case $src in
--    -*) src=./$src ;;
-+    -* | [=\(\)!]) src=./$src;;
-   esac
- 
-   if test -n "$dir_arg"; then
-     dst=$src
--    src=
-+    dstdir=$dst
-+    test -d "$dstdir"
-+    dstdir_status=$?
-+  else
- 
--    if test -d "$dst"; then
--      mkdircmd=:
--      chmodcmd=
--    else
--      mkdircmd=$mkdirprog
--    fi
--  else
-     # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-     # might cause directories to be created, which would be especially bad
-     # if $src (and thus $dsttmp) contains '*'.
-     if test ! -f "$src" && test ! -d "$src"; then
-       echo "$0: $src does not exist." >&2
-       exit 1
-     fi
- 
--    if test -z "$dstarg"; then
-+    if test -z "$dst_arg"; then
-       echo "$0: no destination specified." >&2
-       exit 1
-     fi
--
--    dst=$dstarg
--    # Protect names starting with `-'.
--    case $dst in
--      -*) dst=./$dst ;;
--    esac
-+    dst=$dst_arg
- 
-     # If destination is a directory, append the input filename; won't work
-     # if double slashes aren't ignored.
-     if test -d "$dst"; then
-       if test -n "$no_target_directory"; then
--	echo "$0: $dstarg: Is a directory" >&2
-+	echo "$0: $dst_arg: Is a directory" >&2
- 	exit 1
-       fi
--      dst=$dst/`basename "$src"`
-+      dstdir=$dst
-+      dst=$dstdir/`basename "$src"`
-+      dstdir_status=0
-+    else
-+      # Prefer dirname, but fall back on a substitute if dirname fails.
-+      dstdir=`
-+	(dirname "$dst") 2>/dev/null ||
-+	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+	     X"$dst" : 'X\(//\)[^/]' \| \
-+	     X"$dst" : 'X\(//\)$' \| \
-+	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
-+	echo X"$dst" |
-+	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-+		   s//\1/
-+		   q
-+		 }
-+		 /^X\(\/\/\)[^/].*/{
-+		   s//\1/
-+		   q
-+		 }
-+		 /^X\(\/\/\)$/{
-+		   s//\1/
-+		   q
-+		 }
-+		 /^X\(\/\).*/{
-+		   s//\1/
-+		   q
-+		 }
-+		 s/.*/./; q'
-+      `
-+
-+      test -d "$dstdir"
-+      dstdir_status=$?
-     fi
-   fi
- 
--  # This sed command emulates the dirname command.
--  dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
-+  obsolete_mkdir_used=false
- 
--  # Make sure that the destination directory exists.
-+  if test $dstdir_status != 0; then
-+    case $posix_mkdir in
-+      '')
-+	# Create intermediate dirs using mode 755 as modified by the umask.
-+	# This is like FreeBSD 'install' as of 1997-10-28.
-+	umask=`umask`
-+	case $stripcmd.$umask in
-+	  # Optimize common cases.
-+	  *[2367][2367]) mkdir_umask=$umask;;
-+	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
- 
--  # Skip lots of stat calls in the usual case.
--  if test ! -d "$dstdir"; then
--    defaultIFS='
--	 '
--    IFS="${IFS-$defaultIFS}"
-+	  *[0-7])
-+	    mkdir_umask=`expr $umask + 22 \
-+	      - $umask % 100 % 40 + $umask % 20 \
-+	      - $umask % 10 % 4 + $umask % 2
-+	    `;;
-+	  *) mkdir_umask=$umask,go-w;;
-+	esac
- 
--    oIFS=$IFS
--    # Some sh's can't handle IFS=/ for some reason.
--    IFS='%'
--    set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
--    shift
--    IFS=$oIFS
-+	# With -d, create the new directory with the user-specified mode.
-+	# Otherwise, rely on $mkdir_umask.
-+	if test -n "$dir_arg"; then
-+	  mkdir_mode=-m$mode
-+	else
-+	  mkdir_mode=
-+	fi
- 
--    pathcomp=
-+	posix_mkdir=false
-+	case $umask in
-+	  *[123567][0-7][0-7])
-+	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
-+	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-+	    ;;
-+	  *)
-+	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-+	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
- 
--    while test $# -ne 0 ; do
--      pathcomp=$pathcomp$1
-+	    if (umask $mkdir_umask &&
-+		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
-+	    then
-+	      if test -z "$dir_arg" || {
-+		   # Check for POSIX incompatibilities with -m.
-+		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-+		   # other-writable bit of parent directory when it shouldn't.
-+		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-+		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
-+		   case $ls_ld_tmpdir in
-+		     d????-?r-*) different_mode=700;;
-+		     d????-?--*) different_mode=755;;
-+		     *) false;;
-+		   esac &&
-+		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-+		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
-+		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-+		   }
-+		 }
-+	      then posix_mkdir=:
-+	      fi
-+	      rmdir "$tmpdir/d" "$tmpdir"
-+	    else
-+	      # Remove any dirs left behind by ancient mkdir implementations.
-+	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
-+	    fi
-+	    trap '' 0;;
-+	esac;;
-+    esac
-+
-+    if
-+      $posix_mkdir && (
-+	umask $mkdir_umask &&
-+	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
-+      )
-+    then :
-+    else
-+
-+      # The umask is ridiculous, or mkdir does not conform to POSIX,
-+      # or it failed possibly due to a race condition.  Create the
-+      # directory the slow way, step by step, checking for races as we go.
-+
-+      case $dstdir in
-+	/*) prefix='/';;
-+	[-=\(\)!]*) prefix='./';;
-+	*)  prefix='';;
-+      esac
-+
-+      eval "$initialize_posix_glob"
-+
-+      oIFS=$IFS
-+      IFS=/
-+      $posix_glob set -f
-+      set fnord $dstdir
-       shift
--      if test ! -d "$pathcomp"; then
--        $mkdirprog "$pathcomp"
--	# mkdir can fail with a `File exist' error in case several
--	# install-sh are creating the directory concurrently.  This
--	# is OK.
--	test -d "$pathcomp" || exit
-+      $posix_glob set +f
-+      IFS=$oIFS
-+
-+      prefixes=
-+
-+      for d
-+      do
-+	test X"$d" = X && continue
-+
-+	prefix=$prefix$d
-+	if test -d "$prefix"; then
-+	  prefixes=
-+	else
-+	  if $posix_mkdir; then
-+	    (umask=$mkdir_umask &&
-+	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-+	    # Don't fail if two instances are running concurrently.
-+	    test -d "$prefix" || exit 1
-+	  else
-+	    case $prefix in
-+	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-+	      *) qprefix=$prefix;;
-+	    esac
-+	    prefixes="$prefixes '$qprefix'"
-+	  fi
-+	fi
-+	prefix=$prefix/
-+      done
-+
-+      if test -n "$prefixes"; then
-+	# Don't fail if two instances are running concurrently.
-+	(umask $mkdir_umask &&
-+	 eval "\$doit_exec \$mkdirprog $prefixes") ||
-+	  test -d "$dstdir" || exit 1
-+	obsolete_mkdir_used=true
-       fi
--      pathcomp=$pathcomp/
--    done
-+    fi
-   fi
- 
-   if test -n "$dir_arg"; then
--    $doit $mkdircmd "$dst" \
--      && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
--      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
--      && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
--      && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
--
-+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
-+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
-+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
-+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
-   else
--    dstfile=`basename "$dst"`
- 
-     # Make a couple of temp file names in the proper directory.
-     dsttmp=$dstdir/_inst.$$_
-     rmtmp=$dstdir/_rm.$$_
- 
-     # Trap to clean up those temp files at exit.
-     trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
--    trap '(exit $?); exit' 1 2 13 15
- 
-     # Copy the file name to the temp name.
--    $doit $cpprog "$src" "$dsttmp" &&
-+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
- 
-     # and set any options; do chmod last to preserve setuid bits.
-     #
-     # If any of these fail, we abort the whole thing.  If we want to
-     # ignore errors from any of these, just make sure not to ignore
-     # errors from the above "$doit $cpprog $src $dsttmp" command.
-     #
--    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
--      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
--      && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
--      && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
-+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
-+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
-+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
-+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
- 
--    # Now rename the file to the real destination.
--    { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
--      || {
--	   # The rename failed, perhaps because mv can't rename something else
--	   # to itself, or perhaps because mv is so ancient that it does not
--	   # support -f.
-+    # If -C, don't bother to copy if it wouldn't change the file.
-+    if $copy_on_change &&
-+       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
-+       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
- 
--	   # Now remove or move aside any old file at destination location.
--	   # We try this two ways since rm can't unlink itself on some
--	   # systems and the destination file might be busy for other
--	   # reasons.  In this case, the final cleanup might fail but the new
--	   # file should still install successfully.
--	   {
--	     if test -f "$dstdir/$dstfile"; then
--	       $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
--	       || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
--	       || {
--		 echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
--		 (exit 1); exit 1
--	       }
--	     else
--	       :
--	     fi
--	   } &&
-+       eval "$initialize_posix_glob" &&
-+       $posix_glob set -f &&
-+       set X $old && old=:$2:$4:$5:$6 &&
-+       set X $new && new=:$2:$4:$5:$6 &&
-+       $posix_glob set +f &&
- 
--	   # Now rename the file to the real destination.
--	   $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
--	 }
--    }
--  fi || { (exit 1); exit 1; }
-+       test "$old" = "$new" &&
-+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
-+    then
-+      rm -f "$dsttmp"
-+    else
-+      # Rename the file to the real destination.
-+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-+
-+      # The rename failed, perhaps because mv can't rename something else
-+      # to itself, or perhaps because mv is so ancient that it does not
-+      # support -f.
-+      {
-+	# Now remove or move aside any old file at destination location.
-+	# We try this two ways since rm can't unlink itself on some
-+	# systems and the destination file might be busy for other
-+	# reasons.  In this case, the final cleanup might fail but the new
-+	# file should still install successfully.
-+	{
-+	  test ! -f "$dst" ||
-+	  $doit $rmcmd -f "$dst" 2>/dev/null ||
-+	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-+	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-+	  } ||
-+	  { echo "$0: cannot unlink or rename $dst" >&2
-+	    (exit 1); exit 1
-+	  }
-+	} &&
-+
-+	# Now rename the file to the real destination.
-+	$doit $mvcmd "$dsttmp" "$dst"
-+      }
-+    fi || exit 1
-+
-+    trap '' 0
-+  fi
- done
- 
--# The final little trick to "correctly" pass the exit status to the exit trap.
--{
--  (exit 0); exit 0
--}
--
- # Local variables:
- # eval: (add-hook 'write-file-hooks 'time-stamp)
- # time-stamp-start: "scriptversion="
- # time-stamp-format: "%:y-%02m-%02d.%02H"
--# time-stamp-end: "$"
-+# time-stamp-time-zone: "UTC"
-+# time-stamp-end: "; # UTC"
- # End:
-diff --git a/js/src/ctypes/libffi/libffi.pc.in b/js/src/ctypes/libffi/libffi.pc.in
---- a/js/src/ctypes/libffi/libffi.pc.in
-+++ b/js/src/ctypes/libffi/libffi.pc.in
-@@ -1,10 +1,11 @@
- prefix=@prefix@
- exec_prefix=@exec_prefix@
- libdir=@libdir@
-+toolexeclibdir=@toolexeclibdir@
- includedir=${libdir}/@PACKAGE_NAME@-@PACKAGE_VERSION@/include
- 
- Name: @PACKAGE_NAME@
- Description: Library supporting Foreign Function Interfaces
- Version: @PACKAGE_VERSION@
--Libs: -L${libdir} -lffi
-+Libs: -L${toolexeclibdir} -lffi
- Cflags: -I${includedir}
-diff --git a/js/src/ctypes/libffi/libffi.xcodeproj/project.pbxproj b/js/src/ctypes/libffi/libffi.xcodeproj/project.pbxproj
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/libffi.xcodeproj/project.pbxproj
-@@ -0,0 +1,637 @@
-+// !$*UTF8*$!
-+{
-+	archiveVersion = 1;
-+	classes = {
-+	};
-+	objectVersion = 46;
-+	objects = {
-+
-+/* Begin PBXBuildFile section */
-+		DBFA714A187F1D8600A76262 /* ffi.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA713E187F1D8600A76262 /* ffi.h */; };
-+		DBFA714B187F1D8600A76262 /* ffi_common.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA713F187F1D8600A76262 /* ffi_common.h */; };
-+		DBFA714C187F1D8600A76262 /* fficonfig.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7140187F1D8600A76262 /* fficonfig.h */; };
-+		DBFA714D187F1D8600A76262 /* ffitarget.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7141187F1D8600A76262 /* ffitarget.h */; };
-+		DBFA714E187F1D8600A76262 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7143187F1D8600A76262 /* closures.c */; };
-+		DBFA714F187F1D8600A76262 /* closures.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7143187F1D8600A76262 /* closures.c */; };
-+		DBFA7156187F1D8600A76262 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7147187F1D8600A76262 /* prep_cif.c */; };
-+		DBFA7157187F1D8600A76262 /* prep_cif.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7147187F1D8600A76262 /* prep_cif.c */; };
-+		DBFA7158187F1D8600A76262 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7148187F1D8600A76262 /* raw_api.c */; };
-+		DBFA7159187F1D8600A76262 /* raw_api.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7148187F1D8600A76262 /* raw_api.c */; };
-+		DBFA715A187F1D8600A76262 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7149187F1D8600A76262 /* types.c */; };
-+		DBFA715B187F1D8600A76262 /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7149187F1D8600A76262 /* types.c */; };
-+		DBFA7177187F1D9B00A76262 /* ffi_arm64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716C187F1D9B00A76262 /* ffi_arm64.c */; };
-+		DBFA7178187F1D9B00A76262 /* sysv_arm64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716D187F1D9B00A76262 /* sysv_arm64.S */; };
-+		DBFA7179187F1D9B00A76262 /* ffi_armv7.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716F187F1D9B00A76262 /* ffi_armv7.c */; };
-+		DBFA717A187F1D9B00A76262 /* sysv_armv7.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7170187F1D9B00A76262 /* sysv_armv7.S */; };
-+		DBFA717B187F1D9B00A76262 /* trampoline_armv7.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */; };
-+		DBFA717C187F1D9B00A76262 /* darwin64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */; };
-+		DBFA717D187F1D9B00A76262 /* darwin_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7174187F1D9B00A76262 /* darwin_i386.S */; };
-+		DBFA717E187F1D9B00A76262 /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */; };
-+		DBFA717F187F1D9B00A76262 /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7176187F1D9B00A76262 /* ffi_i386.c */; };
-+		DBFA718E187F1DA100A76262 /* ffi_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7182187F1DA100A76262 /* ffi_i386.h */; };
-+		DBFA718F187F1DA100A76262 /* ffi_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7183187F1DA100A76262 /* ffi_x86_64.h */; };
-+		DBFA7190187F1DA100A76262 /* fficonfig_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7184187F1DA100A76262 /* fficonfig_i386.h */; };
-+		DBFA7191187F1DA100A76262 /* fficonfig_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */; };
-+		DBFA7192187F1DA100A76262 /* ffitarget_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7186187F1DA100A76262 /* ffitarget_i386.h */; };
-+		DBFA7193187F1DA100A76262 /* ffitarget_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */; };
-+		DBFA7194187F1DA100A76262 /* darwin64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */; };
-+		DBFA7195187F1DA100A76262 /* darwin_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718B187F1DA100A76262 /* darwin_i386.S */; };
-+		DBFA7196187F1DA100A76262 /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */; };
-+		DBFA7197187F1DA100A76262 /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718D187F1DA100A76262 /* ffi_i386.c */; };
-+/* End PBXBuildFile section */
-+
-+/* Begin PBXCopyFilesBuildPhase section */
-+		DB13B1641849DF1E0010F42D /* CopyFiles */ = {
-+			isa = PBXCopyFilesBuildPhase;
-+			buildActionMask = 8;
-+			dstPath = "include/$(PRODUCT_NAME)";
-+			dstSubfolderSpec = 16;
-+			files = (
-+			);
-+			runOnlyForDeploymentPostprocessing = 1;
-+		};
-+/* End PBXCopyFilesBuildPhase section */
-+
-+/* Begin PBXFileReference section */
-+		DB13B1661849DF1E0010F42D /* libffi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; };
-+		DB13B1911849DF510010F42D /* ffi.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = ffi.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
-+		DBFA713E187F1D8600A76262 /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = "<group>"; };
-+		DBFA713F187F1D8600A76262 /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = "<group>"; };
-+		DBFA7140187F1D8600A76262 /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = "<group>"; };
-+		DBFA7141187F1D8600A76262 /* ffitarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget.h; sourceTree = "<group>"; };
-+		DBFA7143187F1D8600A76262 /* closures.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = closures.c; sourceTree = "<group>"; };
-+		DBFA7145187F1D8600A76262 /* dlmalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dlmalloc.c; sourceTree = "<group>"; };
-+		DBFA7147187F1D8600A76262 /* prep_cif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prep_cif.c; sourceTree = "<group>"; };
-+		DBFA7148187F1D8600A76262 /* raw_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = raw_api.c; sourceTree = "<group>"; };
-+		DBFA7149187F1D8600A76262 /* types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = types.c; sourceTree = "<group>"; };
-+		DBFA715E187F1D9B00A76262 /* ffi_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_arm64.h; sourceTree = "<group>"; };
-+		DBFA715F187F1D9B00A76262 /* ffi_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_armv7.h; sourceTree = "<group>"; };
-+		DBFA7160187F1D9B00A76262 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = "<group>"; };
-+		DBFA7161187F1D9B00A76262 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = "<group>"; };
-+		DBFA7162187F1D9B00A76262 /* fficonfig_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_arm64.h; sourceTree = "<group>"; };
-+		DBFA7163187F1D9B00A76262 /* fficonfig_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_armv7.h; sourceTree = "<group>"; };
-+		DBFA7164187F1D9B00A76262 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = "<group>"; };
-+		DBFA7165187F1D9B00A76262 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = "<group>"; };
-+		DBFA7166187F1D9B00A76262 /* ffitarget_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_arm64.h; sourceTree = "<group>"; };
-+		DBFA7167187F1D9B00A76262 /* ffitarget_armv7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_armv7.h; sourceTree = "<group>"; };
-+		DBFA7168187F1D9B00A76262 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = "<group>"; };
-+		DBFA7169187F1D9B00A76262 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = "<group>"; };
-+		DBFA716C187F1D9B00A76262 /* ffi_arm64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_arm64.c; sourceTree = "<group>"; };
-+		DBFA716D187F1D9B00A76262 /* sysv_arm64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv_arm64.S; sourceTree = "<group>"; };
-+		DBFA716F187F1D9B00A76262 /* ffi_armv7.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_armv7.c; sourceTree = "<group>"; };
-+		DBFA7170187F1D9B00A76262 /* sysv_armv7.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv_armv7.S; sourceTree = "<group>"; };
-+		DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = trampoline_armv7.S; sourceTree = "<group>"; };
-+		DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64_x86_64.S; sourceTree = "<group>"; };
-+		DBFA7174187F1D9B00A76262 /* darwin_i386.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin_i386.S; sourceTree = "<group>"; };
-+		DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64_x86_64.c; sourceTree = "<group>"; };
-+		DBFA7176187F1D9B00A76262 /* ffi_i386.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_i386.c; sourceTree = "<group>"; };
-+		DBFA7182187F1DA100A76262 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = "<group>"; };
-+		DBFA7183187F1DA100A76262 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = "<group>"; };
-+		DBFA7184187F1DA100A76262 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = "<group>"; };
-+		DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = "<group>"; };
-+		DBFA7186187F1DA100A76262 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = "<group>"; };
-+		DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = "<group>"; };
-+		DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64_x86_64.S; sourceTree = "<group>"; };
-+		DBFA718B187F1DA100A76262 /* darwin_i386.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin_i386.S; sourceTree = "<group>"; };
-+		DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64_x86_64.c; sourceTree = "<group>"; };
-+		DBFA718D187F1DA100A76262 /* ffi_i386.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_i386.c; sourceTree = "<group>"; };
-+/* End PBXFileReference section */
-+
-+/* Begin PBXGroup section */
-+		DB13B15B1849DEB70010F42D = {
-+			isa = PBXGroup;
-+			children = (
-+				DBFA713C187F1D8600A76262 /* darwin_common */,
-+				DBFA715C187F1D9B00A76262 /* darwin_ios */,
-+				DBFA7180187F1DA100A76262 /* darwin_osx */,
-+				DB13B1671849DF1E0010F42D /* Products */,
-+			);
-+			sourceTree = "<group>";
-+		};
-+		DB13B1671849DF1E0010F42D /* Products */ = {
-+			isa = PBXGroup;
-+			children = (
-+				DB13B1661849DF1E0010F42D /* libffi.a */,
-+				DB13B1911849DF510010F42D /* ffi.dylib */,
-+			);
-+			name = Products;
-+			sourceTree = "<group>";
-+		};
-+		DBFA713C187F1D8600A76262 /* darwin_common */ = {
-+			isa = PBXGroup;
-+			children = (
-+				DBFA713D187F1D8600A76262 /* include */,
-+				DBFA7142187F1D8600A76262 /* src */,
-+			);
-+			path = "darwin_common";
-+			sourceTree = "<group>";
-+		};
-+		DBFA713D187F1D8600A76262 /* include */ = {
-+			isa = PBXGroup;
-+			children = (
-+				DBFA713E187F1D8600A76262 /* ffi.h */,
-+				DBFA713F187F1D8600A76262 /* ffi_common.h */,
-+				DBFA7140187F1D8600A76262 /* fficonfig.h */,
-+				DBFA7141187F1D8600A76262 /* ffitarget.h */,
-+			);
-+			path = include;
-+			sourceTree = "<group>";
-+		};
-+		DBFA7142187F1D8600A76262 /* src */ = {
-+			isa = PBXGroup;
-+			children = (
-+				DBFA7143187F1D8600A76262 /* closures.c */,
-+				DBFA7145187F1D8600A76262 /* dlmalloc.c */,
-+				DBFA7147187F1D8600A76262 /* prep_cif.c */,
-+				DBFA7148187F1D8600A76262 /* raw_api.c */,
-+				DBFA7149187F1D8600A76262 /* types.c */,
-+			);
-+			path = src;
-+			sourceTree = "<group>";
-+		};
-+		DBFA715C187F1D9B00A76262 /* darwin_ios */ = {
-+			isa = PBXGroup;
-+			children = (
-+				DBFA715D187F1D9B00A76262 /* include */,
-+				DBFA716A187F1D9B00A76262 /* src */,
-+			);
-+			path = "darwin_ios";
-+			sourceTree = "<group>";
-+		};
-+		DBFA715D187F1D9B00A76262 /* include */ = {
-+			isa = PBXGroup;
-+			children = (
-+				DBFA715E187F1D9B00A76262 /* ffi_arm64.h */,
-+				DBFA715F187F1D9B00A76262 /* ffi_armv7.h */,
-+				DBFA7160187F1D9B00A76262 /* ffi_i386.h */,
-+				DBFA7161187F1D9B00A76262 /* ffi_x86_64.h */,
-+				DBFA7162187F1D9B00A76262 /* fficonfig_arm64.h */,
-+				DBFA7163187F1D9B00A76262 /* fficonfig_armv7.h */,
-+				DBFA7164187F1D9B00A76262 /* fficonfig_i386.h */,
-+				DBFA7165187F1D9B00A76262 /* fficonfig_x86_64.h */,
-+				DBFA7166187F1D9B00A76262 /* ffitarget_arm64.h */,
-+				DBFA7167187F1D9B00A76262 /* ffitarget_armv7.h */,
-+				DBFA7168187F1D9B00A76262 /* ffitarget_i386.h */,
-+				DBFA7169187F1D9B00A76262 /* ffitarget_x86_64.h */,
-+			);
-+			path = include;
-+			sourceTree = "<group>";
-+		};
-+		DBFA716A187F1D9B00A76262 /* src */ = {
-+			isa = PBXGroup;
-+			children = (
-+				DBFA716B187F1D9B00A76262 /* aarch64 */,
-+				DBFA716E187F1D9B00A76262 /* arm */,
-+				DBFA7172187F1D9B00A76262 /* x86 */,
-+			);
-+			path = src;
-+			sourceTree = "<group>";
-+		};
-+		DBFA716B187F1D9B00A76262 /* aarch64 */ = {
-+			isa = PBXGroup;
-+			children = (
-+				DBFA716C187F1D9B00A76262 /* ffi_arm64.c */,
-+				DBFA716D187F1D9B00A76262 /* sysv_arm64.S */,
-+			);
-+			path = aarch64;
-+			sourceTree = "<group>";
-+		};
-+		DBFA716E187F1D9B00A76262 /* arm */ = {
-+			isa = PBXGroup;
-+			children = (
-+				DBFA716F187F1D9B00A76262 /* ffi_armv7.c */,
-+				DBFA7170187F1D9B00A76262 /* sysv_armv7.S */,
-+				DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */,
-+			);
-+			path = arm;
-+			sourceTree = "<group>";
-+		};
-+		DBFA7172187F1D9B00A76262 /* x86 */ = {
-+			isa = PBXGroup;
-+			children = (
-+				DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */,
-+				DBFA7174187F1D9B00A76262 /* darwin_i386.S */,
-+				DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */,
-+				DBFA7176187F1D9B00A76262 /* ffi_i386.c */,
-+			);
-+			path = x86;
-+			sourceTree = "<group>";
-+		};
-+		DBFA7180187F1DA100A76262 /* darwin_osx */ = {
-+			isa = PBXGroup;
-+			children = (
-+				DBFA7181187F1DA100A76262 /* include */,
-+				DBFA7188187F1DA100A76262 /* src */,
-+			);
-+			path = "darwin_osx";
-+			sourceTree = "<group>";
-+		};
-+		DBFA7181187F1DA100A76262 /* include */ = {
-+			isa = PBXGroup;
-+			children = (
-+				DBFA7182187F1DA100A76262 /* ffi_i386.h */,
-+				DBFA7183187F1DA100A76262 /* ffi_x86_64.h */,
-+				DBFA7184187F1DA100A76262 /* fficonfig_i386.h */,
-+				DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */,
-+				DBFA7186187F1DA100A76262 /* ffitarget_i386.h */,
-+				DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */,
-+			);
-+			path = include;
-+			sourceTree = "<group>";
-+		};
-+		DBFA7188187F1DA100A76262 /* src */ = {
-+			isa = PBXGroup;
-+			children = (
-+				DBFA7189187F1DA100A76262 /* x86 */,
-+			);
-+			path = src;
-+			sourceTree = "<group>";
-+		};
-+		DBFA7189187F1DA100A76262 /* x86 */ = {
-+			isa = PBXGroup;
-+			children = (
-+				DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */,
-+				DBFA718B187F1DA100A76262 /* darwin_i386.S */,
-+				DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */,
-+				DBFA718D187F1DA100A76262 /* ffi_i386.c */,
-+			);
-+			path = x86;
-+			sourceTree = "<group>";
-+		};
-+/* End PBXGroup section */
-+
-+/* Begin PBXHeadersBuildPhase section */
-+		DB13B18F1849DF510010F42D /* Headers */ = {
-+			isa = PBXHeadersBuildPhase;
-+			buildActionMask = 2147483647;
-+			files = (
-+				DBFA714C187F1D8600A76262 /* fficonfig.h in Headers */,
-+				DBFA714D187F1D8600A76262 /* ffitarget.h in Headers */,
-+				DBFA714A187F1D8600A76262 /* ffi.h in Headers */,
-+				DBFA718F187F1DA100A76262 /* ffi_x86_64.h in Headers */,
-+				DBFA7191187F1DA100A76262 /* fficonfig_x86_64.h in Headers */,
-+				DBFA718E187F1DA100A76262 /* ffi_i386.h in Headers */,
-+				DBFA7190187F1DA100A76262 /* fficonfig_i386.h in Headers */,
-+				DBFA714B187F1D8600A76262 /* ffi_common.h in Headers */,
-+				DBFA7193187F1DA100A76262 /* ffitarget_x86_64.h in Headers */,
-+				DBFA7192187F1DA100A76262 /* ffitarget_i386.h in Headers */,
-+			);
-+			runOnlyForDeploymentPostprocessing = 0;
-+		};
-+/* End PBXHeadersBuildPhase section */
-+
-+/* Begin PBXNativeTarget section */
-+		DB13B1651849DF1E0010F42D /* libffi-iOS */ = {
-+			isa = PBXNativeTarget;
-+			buildConfigurationList = DB13B18B1849DF1E0010F42D /* Build configuration list for PBXNativeTarget "libffi-iOS" */;
-+			buildPhases = (
-+				DB13B3051849E01C0010F42D /* ShellScript */,
-+				DB13B1621849DF1E0010F42D /* Sources */,
-+				DB13B1641849DF1E0010F42D /* CopyFiles */,
-+			);
-+			buildRules = (
-+			);
-+			dependencies = (
-+			);
-+			name = "libffi-iOS";
-+			productName = ffi;
-+			productReference = DB13B1661849DF1E0010F42D /* libffi.a */;
-+			productType = "com.apple.product-type.library.static";
-+		};
-+		DB13B1901849DF510010F42D /* libffi-Mac */ = {
-+			isa = PBXNativeTarget;
-+			buildConfigurationList = DB13B1B01849DF520010F42D /* Build configuration list for PBXNativeTarget "libffi-Mac" */;
-+			buildPhases = (
-+				DB13B3061849E0490010F42D /* ShellScript */,
-+				DB13B18D1849DF510010F42D /* Sources */,
-+				DB13B18F1849DF510010F42D /* Headers */,
-+			);
-+			buildRules = (
-+			);
-+			dependencies = (
-+			);
-+			name = "libffi-Mac";
-+			productName = ffi;
-+			productReference = DB13B1911849DF510010F42D /* ffi.dylib */;
-+			productType = "com.apple.product-type.library.dynamic";
-+		};
-+/* End PBXNativeTarget section */
-+
-+/* Begin PBXProject section */
-+		DB13B15C1849DEB70010F42D /* Project object */ = {
-+			isa = PBXProject;
-+			attributes = {
-+				LastUpgradeCheck = 0510;
-+			};
-+			buildConfigurationList = DB13B15F1849DEB70010F42D /* Build configuration list for PBXProject "libffi" */;
-+			compatibilityVersion = "Xcode 3.2";
-+			developmentRegion = English;
-+			hasScannedForEncodings = 0;
-+			knownRegions = (
-+				en,
-+			);
-+			mainGroup = DB13B15B1849DEB70010F42D;
-+			productRefGroup = DB13B1671849DF1E0010F42D /* Products */;
-+			projectDirPath = "";
-+			projectRoot = "";
-+			targets = (
-+				DB13B1651849DF1E0010F42D /* libffi-iOS */,
-+				DB13B1901849DF510010F42D /* libffi-Mac */,
-+			);
-+		};
-+/* End PBXProject section */
-+
-+/* Begin PBXShellScriptBuildPhase section */
-+		DB13B3051849E01C0010F42D /* ShellScript */ = {
-+			isa = PBXShellScriptBuildPhase;
-+			buildActionMask = 2147483647;
-+			files = (
-+			);
-+			inputPaths = (
-+			);
-+			outputPaths = (
-+			);
-+			runOnlyForDeploymentPostprocessing = 0;
-+			shellPath = /bin/sh;
-+			shellScript = "/usr/bin/python generate-darwin-source-and-headers.py --only-ios";
-+		};
-+		DB13B3061849E0490010F42D /* ShellScript */ = {
-+			isa = PBXShellScriptBuildPhase;
-+			buildActionMask = 2147483647;
-+			files = (
-+			);
-+			inputPaths = (
-+			);
-+			outputPaths = (
-+			);
-+			runOnlyForDeploymentPostprocessing = 0;
-+			shellPath = /bin/sh;
-+			shellScript = "/usr/bin/python generate-darwin-source-and-headers.py --only-osx";
-+		};
-+/* End PBXShellScriptBuildPhase section */
-+
-+/* Begin PBXSourcesBuildPhase section */
-+		DB13B1621849DF1E0010F42D /* Sources */ = {
-+			isa = PBXSourcesBuildPhase;
-+			buildActionMask = 2147483647;
-+			files = (
-+				DBFA717E187F1D9B00A76262 /* ffi64_x86_64.c in Sources */,
-+				DBFA7179187F1D9B00A76262 /* ffi_armv7.c in Sources */,
-+				DBFA717B187F1D9B00A76262 /* trampoline_armv7.S in Sources */,
-+				DBFA714E187F1D8600A76262 /* closures.c in Sources */,
-+				DBFA717A187F1D9B00A76262 /* sysv_armv7.S in Sources */,
-+				DBFA717D187F1D9B00A76262 /* darwin_i386.S in Sources */,
-+				DBFA7156187F1D8600A76262 /* prep_cif.c in Sources */,
-+				DBFA717F187F1D9B00A76262 /* ffi_i386.c in Sources */,
-+				DBFA7158187F1D8600A76262 /* raw_api.c in Sources */,
-+				DBFA7178187F1D9B00A76262 /* sysv_arm64.S in Sources */,
-+				DBFA717C187F1D9B00A76262 /* darwin64_x86_64.S in Sources */,
-+				DBFA715A187F1D8600A76262 /* types.c in Sources */,
-+				DBFA7177187F1D9B00A76262 /* ffi_arm64.c in Sources */,
-+			);
-+			runOnlyForDeploymentPostprocessing = 0;
-+		};
-+		DB13B18D1849DF510010F42D /* Sources */ = {
-+			isa = PBXSourcesBuildPhase;
-+			buildActionMask = 2147483647;
-+			files = (
-+				DBFA7196187F1DA100A76262 /* ffi64_x86_64.c in Sources */,
-+				DBFA7195187F1DA100A76262 /* darwin_i386.S in Sources */,
-+				DBFA7157187F1D8600A76262 /* prep_cif.c in Sources */,
-+				DBFA7197187F1DA100A76262 /* ffi_i386.c in Sources */,
-+				DBFA715B187F1D8600A76262 /* types.c in Sources */,
-+				DBFA7159187F1D8600A76262 /* raw_api.c in Sources */,
-+				DBFA714F187F1D8600A76262 /* closures.c in Sources */,
-+				DBFA7194187F1DA100A76262 /* darwin64_x86_64.S in Sources */,
-+			);
-+			runOnlyForDeploymentPostprocessing = 0;
-+		};
-+/* End PBXSourcesBuildPhase section */
-+
-+/* Begin XCBuildConfiguration section */
-+		DB13B1601849DEB70010F42D /* Debug */ = {
-+			isa = XCBuildConfiguration;
-+			buildSettings = {
-+				HEADER_SEARCH_PATHS = (
-+					"$(inherited)",
-+					"darwin_common/include",
-+				);
-+				ONLY_ACTIVE_ARCH = YES;
-+			};
-+			name = Debug;
-+		};
-+		DB13B1611849DEB70010F42D /* Release */ = {
-+			isa = XCBuildConfiguration;
-+			buildSettings = {
-+				HEADER_SEARCH_PATHS = (
-+					"$(inherited)",
-+					"darwin_common/include",
-+				);
-+			};
-+			name = Release;
-+		};
-+		DB13B1871849DF1E0010F42D /* Debug */ = {
-+			isa = XCBuildConfiguration;
-+			buildSettings = {
-+				ALWAYS_SEARCH_USER_PATHS = NO;
-+				ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
-+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-+				CLANG_CXX_LIBRARY = "libc++";
-+				CLANG_ENABLE_MODULES = YES;
-+				CLANG_ENABLE_OBJC_ARC = YES;
-+				CLANG_WARN_BOOL_CONVERSION = YES;
-+				CLANG_WARN_CONSTANT_CONVERSION = YES;
-+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-+				CLANG_WARN_EMPTY_BODY = YES;
-+				CLANG_WARN_ENUM_CONVERSION = YES;
-+				CLANG_WARN_INT_CONVERSION = YES;
-+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-+				COPY_PHASE_STRIP = NO;
-+				DSTROOT = /tmp/ffi.dst;
-+				GCC_C_LANGUAGE_STANDARD = gnu99;
-+				GCC_DYNAMIC_NO_PIC = NO;
-+				GCC_OPTIMIZATION_LEVEL = 0;
-+				GCC_PREPROCESSOR_DEFINITIONS = (
-+					"DEBUG=1",
-+					"$(inherited)",
-+				);
-+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
-+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-+				GCC_WARN_UNDECLARED_SELECTOR = YES;
-+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-+				GCC_WARN_UNUSED_FUNCTION = YES;
-+				GCC_WARN_UNUSED_VARIABLE = YES;
-+				HEADER_SEARCH_PATHS = (
-+					"$(inherited)",
-+					"darwin_ios/include",
-+				);
-+				IPHONEOS_DEPLOYMENT_TARGET = 5.0;
-+				"IPHONEOS_DEPLOYMENT_TARGET[arch=arm64]" = 7.0;
-+				OTHER_LDFLAGS = "-ObjC";
-+				PRODUCT_NAME = ffi;
-+				SDKROOT = iphoneos;
-+				SKIP_INSTALL = YES;
-+			};
-+			name = Debug;
-+		};
-+		DB13B1881849DF1E0010F42D /* Release */ = {
-+			isa = XCBuildConfiguration;
-+			buildSettings = {
-+				ALWAYS_SEARCH_USER_PATHS = NO;
-+				ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
-+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-+				CLANG_CXX_LIBRARY = "libc++";
-+				CLANG_ENABLE_MODULES = YES;
-+				CLANG_ENABLE_OBJC_ARC = YES;
-+				CLANG_WARN_BOOL_CONVERSION = YES;
-+				CLANG_WARN_CONSTANT_CONVERSION = YES;
-+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-+				CLANG_WARN_EMPTY_BODY = YES;
-+				CLANG_WARN_ENUM_CONVERSION = YES;
-+				CLANG_WARN_INT_CONVERSION = YES;
-+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-+				COPY_PHASE_STRIP = YES;
-+				DSTROOT = /tmp/ffi.dst;
-+				ENABLE_NS_ASSERTIONS = NO;
-+				GCC_C_LANGUAGE_STANDARD = gnu99;
-+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-+				GCC_WARN_UNDECLARED_SELECTOR = YES;
-+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-+				GCC_WARN_UNUSED_FUNCTION = YES;
-+				GCC_WARN_UNUSED_VARIABLE = YES;
-+				HEADER_SEARCH_PATHS = (
-+					"$(inherited)",
-+					"darwin_ios/include",
-+				);
-+				IPHONEOS_DEPLOYMENT_TARGET = 5.0;
-+				"IPHONEOS_DEPLOYMENT_TARGET[arch=arm64]" = 7.0;
-+				OTHER_LDFLAGS = "-ObjC";
-+				PRODUCT_NAME = ffi;
-+				SDKROOT = iphoneos;
-+				SKIP_INSTALL = YES;
-+				VALIDATE_PRODUCT = YES;
-+			};
-+			name = Release;
-+		};
-+		DB13B1B11849DF520010F42D /* Debug */ = {
-+			isa = XCBuildConfiguration;
-+			buildSettings = {
-+				ALWAYS_SEARCH_USER_PATHS = NO;
-+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-+				CLANG_CXX_LIBRARY = "libc++";
-+				CLANG_ENABLE_OBJC_ARC = YES;
-+				CLANG_WARN_BOOL_CONVERSION = YES;
-+				CLANG_WARN_CONSTANT_CONVERSION = YES;
-+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-+				CLANG_WARN_EMPTY_BODY = YES;
-+				CLANG_WARN_ENUM_CONVERSION = YES;
-+				CLANG_WARN_INT_CONVERSION = YES;
-+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-+				COPY_PHASE_STRIP = NO;
-+				DYLIB_COMPATIBILITY_VERSION = 1;
-+				DYLIB_CURRENT_VERSION = 1;
-+				GCC_C_LANGUAGE_STANDARD = gnu99;
-+				GCC_DYNAMIC_NO_PIC = NO;
-+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-+				GCC_OPTIMIZATION_LEVEL = 0;
-+				GCC_PREPROCESSOR_DEFINITIONS = (
-+					"DEBUG=1",
-+					"$(inherited)",
-+				);
-+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
-+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-+				GCC_WARN_UNDECLARED_SELECTOR = YES;
-+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-+				GCC_WARN_UNUSED_FUNCTION = YES;
-+				GCC_WARN_UNUSED_VARIABLE = YES;
-+				HEADER_SEARCH_PATHS = (
-+					"$(inherited)",
-+					"darwin_osx/include",
-+				);
-+				MACOSX_DEPLOYMENT_TARGET = 10.6;
-+				ONLY_ACTIVE_ARCH = YES;
-+				OTHER_LDFLAGS = "-Wl,-no_compact_unwind";
-+				PRODUCT_NAME = ffi;
-+				SDKROOT = macosx;
-+			};
-+			name = Debug;
-+		};
-+		DB13B1B21849DF520010F42D /* Release */ = {
-+			isa = XCBuildConfiguration;
-+			buildSettings = {
-+				ALWAYS_SEARCH_USER_PATHS = NO;
-+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-+				CLANG_CXX_LIBRARY = "libc++";
-+				CLANG_ENABLE_OBJC_ARC = YES;
-+				CLANG_WARN_BOOL_CONVERSION = YES;
-+				CLANG_WARN_CONSTANT_CONVERSION = YES;
-+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-+				CLANG_WARN_EMPTY_BODY = YES;
-+				CLANG_WARN_ENUM_CONVERSION = YES;
-+				CLANG_WARN_INT_CONVERSION = YES;
-+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-+				COPY_PHASE_STRIP = YES;
-+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-+				DYLIB_COMPATIBILITY_VERSION = 1;
-+				DYLIB_CURRENT_VERSION = 1;
-+				ENABLE_NS_ASSERTIONS = NO;
-+				GCC_C_LANGUAGE_STANDARD = gnu99;
-+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-+				GCC_WARN_UNDECLARED_SELECTOR = YES;
-+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-+				GCC_WARN_UNUSED_FUNCTION = YES;
-+				GCC_WARN_UNUSED_VARIABLE = YES;
-+				HEADER_SEARCH_PATHS = (
-+					"$(inherited)",
-+					"darwin_osx/include",
-+				);
-+				MACOSX_DEPLOYMENT_TARGET = 10.6;
-+				OTHER_LDFLAGS = "-Wl,-no_compact_unwind";
-+				PRODUCT_NAME = ffi;
-+				SDKROOT = macosx;
-+			};
-+			name = Release;
-+		};
-+/* End XCBuildConfiguration section */
-+
-+/* Begin XCConfigurationList section */
-+		DB13B15F1849DEB70010F42D /* Build configuration list for PBXProject "libffi" */ = {
-+			isa = XCConfigurationList;
-+			buildConfigurations = (
-+				DB13B1601849DEB70010F42D /* Debug */,
-+				DB13B1611849DEB70010F42D /* Release */,
-+			);
-+			defaultConfigurationIsVisible = 0;
-+			defaultConfigurationName = Release;
-+		};
-+		DB13B18B1849DF1E0010F42D /* Build configuration list for PBXNativeTarget "libffi-iOS" */ = {
-+			isa = XCConfigurationList;
-+			buildConfigurations = (
-+				DB13B1871849DF1E0010F42D /* Debug */,
-+				DB13B1881849DF1E0010F42D /* Release */,
-+			);
-+			defaultConfigurationIsVisible = 0;
-+			defaultConfigurationName = Release;
-+		};
-+		DB13B1B01849DF520010F42D /* Build configuration list for PBXNativeTarget "libffi-Mac" */ = {
-+			isa = XCConfigurationList;
-+			buildConfigurations = (
-+				DB13B1B11849DF520010F42D /* Debug */,
-+				DB13B1B21849DF520010F42D /* Release */,
-+			);
-+			defaultConfigurationIsVisible = 0;
-+			defaultConfigurationName = Release;
-+		};
-+/* End XCConfigurationList section */
-+	};
-+	rootObject = DB13B15C1849DEB70010F42D /* Project object */;
-+}
-diff --git a/js/src/ctypes/libffi/libtool-ldflags b/js/src/ctypes/libffi/libtool-ldflags
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/libtool-ldflags
-@@ -0,0 +1,106 @@
-+#! /bin/sh
-+
-+# Script to translate LDFLAGS into a form suitable for use with libtool.
-+
-+# Copyright (C) 2005 Free Software Foundation, Inc.
-+#
-+# This file is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+# 
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+# 
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
-+# MA 02110-1301, USA. 
-+
-+# Contributed by CodeSourcery, LLC.
-+
-+# This script is designed to be used from a Makefile that uses libtool
-+# to build libraries as follows: 
-+#
-+#   LTLDFLAGS = $(shell libtool-ldflags $(LDFLAGS))
-+#
-+# Then, use (LTLDFLAGS) in place of $(LDFLAGS) in your link line.
-+
-+# The output of the script.  This string is built up as we process the
-+# arguments.
-+result=
-+prev_arg=
-+
-+for arg
-+do
-+    case $arg in
-+	-f*|--*)
-+	    # Libtool does not ascribe any special meaning options
-+	    # that begin with -f or with a double-dash.  So, it will
-+	    # think these options are linker options, and prefix them
-+	    # with "-Wl,".  Then, the compiler driver will ignore the
-+	    # options.  So, we prefix these options with -Xcompiler to
-+	    # make clear to libtool that they are in fact compiler
-+	    # options.
-+	    case $prev_arg in
-+		-Xpreprocessor|-Xcompiler|-Xlinker)
-+		    # This option is already prefixed; don't prefix it again.
-+		    ;;
-+		*)
-+		    result="$result -Xcompiler"
-+		    ;;
-+	    esac
-+	    ;;
-+	*)
-+	    # We do not want to add -Xcompiler to other options because
-+	    # that would prevent libtool itself from recognizing them.
-+	    ;;
-+    esac
-+    prev_arg=$arg
-+
-+    # If $(LDFLAGS) is (say):
-+    #   a "b'c d" e
-+    # then the user expects that:
-+    #   $(LD) $(LDFLAGS)
-+    # will pass three arguments to $(LD):
-+    #   1) a
-+    #   2) b'c d
-+    #   3) e
-+    # We must ensure, therefore, that the arguments are appropriately
-+    # quoted so that using:
-+    #   libtool --mode=link ... $(LTLDFLAGS)
-+    # will result in the same number of arguments being passed to
-+    # libtool.   In other words, when this script was invoked, the shell 
-+    # removed one level of quoting, present in $(LDFLAGS); we have to put 
-+    # it back.
-+
-+    # Quote any embedded single quotes.
-+    case $arg in
-+	*"'"*)
-+	    # The following command creates the script:
-+	    #   1s,^X,,;s|'|'"'"'|g
-+	    # which removes a leading X, and then quotes and embedded single
-+	    # quotes.
-+	    sed_script="1s,^X,,;s|'|'\"'\"'|g"
-+	    # Add a leading "X" so that if $arg starts with a dash,
-+	    # the echo command will not try to interpret the argument
-+	    # as a command-line option.
-+	    arg="X$arg"
-+	    # Generate the quoted string.
-+	    quoted_arg=`echo "$arg" | sed -e "$sed_script"`
-+	    ;;
-+	*)
-+	    quoted_arg=$arg
-+	    ;;
-+    esac
-+    # Surround the entire argument with single quotes.
-+    quoted_arg="'"$quoted_arg"'" 
-+
-+    # Add it to the string.
-+    result="$result $quoted_arg"
-+done
-+
-+# Output the string we have built up.
-+echo "$result"
-diff --git a/js/src/ctypes/libffi/libtool-version b/js/src/ctypes/libffi/libtool-version
---- a/js/src/ctypes/libffi/libtool-version
-+++ b/js/src/ctypes/libffi/libtool-version
-@@ -21,9 +21,9 @@
- #
- # 5. If any interfaces have been added since the last public release,
- #    then increment age.
- #
- # 6. If any interfaces have been removed since the last public
- #    release, then set age to 0.
- #
- # CURRENT:REVISION:AGE
--5:10:0
-+6:1:0
-diff --git a/js/src/ctypes/libffi/ltmain.sh b/js/src/ctypes/libffi/ltmain.sh
---- a/js/src/ctypes/libffi/ltmain.sh
-+++ b/js/src/ctypes/libffi/ltmain.sh
-@@ -1,14 +1,14 @@
--# Generated from ltmain.m4sh.
--
--# ltmain.sh (GNU libtool) 2.2.6b
-+
-+# libtool (GNU libtool) 2.4.2
- # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
- 
--# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
-+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-+# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
- # This is free software; see the source for copying conditions.  There is NO
- # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- 
- # GNU Libtool is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2 of the License, or
- # (at your option) any later version.
- #
-@@ -27,109 +27,125 @@
- # can be downloaded from http://www.gnu.org/licenses/gpl.html,
- # or obtained by writing to the Free Software Foundation, Inc.,
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- 
- # Usage: $progname [OPTION]... [MODE-ARG]...
- #
- # Provide generalized library-building support services.
- #
--#     --config             show all configuration variables
--#     --debug              enable verbose shell tracing
--# -n, --dry-run            display commands without modifying any files
--#     --features           display basic configuration information and exit
--#     --mode=MODE          use operation mode MODE
--#     --preserve-dup-deps  don't remove duplicate dependency libraries
--#     --quiet, --silent    don't print informational messages
--#     --tag=TAG            use configuration variables from tag TAG
--# -v, --verbose            print informational messages (default)
--#     --version            print version information
--# -h, --help               print short or long help message
-+#       --config             show all configuration variables
-+#       --debug              enable verbose shell tracing
-+#   -n, --dry-run            display commands without modifying any files
-+#       --features           display basic configuration information and exit
-+#       --mode=MODE          use operation mode MODE
-+#       --preserve-dup-deps  don't remove duplicate dependency libraries
-+#       --quiet, --silent    don't print informational messages
-+#       --no-quiet, --no-silent
-+#                            print informational messages (default)
-+#       --no-warn            don't display warning messages
-+#       --tag=TAG            use configuration variables from tag TAG
-+#   -v, --verbose            print more informational messages than default
-+#       --no-verbose         don't print the extra informational messages
-+#       --version            print version information
-+#   -h, --help, --help-all   print short, long, or detailed help message
- #
- # MODE must be one of the following:
- #
--#       clean              remove files from the build directory
--#       compile            compile a source file into a libtool object
--#       execute            automatically set library path, then run a program
--#       finish             complete the installation of libtool libraries
--#       install            install libraries or executables
--#       link               create a library or an executable
--#       uninstall          remove libraries from an installed directory
-+#         clean              remove files from the build directory
-+#         compile            compile a source file into a libtool object
-+#         execute            automatically set library path, then run a program
-+#         finish             complete the installation of libtool libraries
-+#         install            install libraries or executables
-+#         link               create a library or an executable
-+#         uninstall          remove libraries from an installed directory
- #
--# MODE-ARGS vary depending on the MODE.
-+# MODE-ARGS vary depending on the MODE.  When passed as first option,
-+# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
- # Try `$progname --help --mode=MODE' for a more detailed description of MODE.
- #
- # When reporting a bug, please describe a test case to reproduce it and
- # include the following information:
- #
--#       host-triplet:	$host
--#       shell:		$SHELL
--#       compiler:		$LTCC
--#       compiler flags:		$LTCFLAGS
--#       linker:		$LD (gnu? $with_gnu_ld)
--#       $progname:		(GNU libtool) 2.2.6b
--#       automake:		$automake_version
--#       autoconf:		$autoconf_version
-+#         host-triplet:	$host
-+#         shell:		$SHELL
-+#         compiler:		$LTCC
-+#         compiler flags:		$LTCFLAGS
-+#         linker:		$LD (gnu? $with_gnu_ld)
-+#         $progname:	(GNU libtool) 2.4.2
-+#         automake:	$automake_version
-+#         autoconf:	$autoconf_version
- #
- # Report bugs to <bug-libtool@gnu.org>.
--
--PROGRAM=ltmain.sh
-+# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
-+# General help using GNU software: <http://www.gnu.org/gethelp/>.
-+
-+PROGRAM=libtool
- PACKAGE=libtool
--VERSION=2.2.6b
-+VERSION=2.4.2
- TIMESTAMP=""
--package_revision=1.3017
-+package_revision=1.3337
- 
- # Be Bourne compatible
- if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-   emulate sh
-   NULLCMD=:
-   # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-   # is contrary to our usage.  Disable this feature.
-   alias -g '${1+"$@"}'='"$@"'
-   setopt NO_GLOB_SUBST
- else
-   case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
- fi
- BIN_SH=xpg4; export BIN_SH # for Tru64
- DUALCASE=1; export DUALCASE # for MKS sh
- 
-+# A function that is used when there is no print builtin or printf.
-+func_fallback_echo ()
-+{
-+  eval 'cat <<_LTECHO_EOF
-+$1
-+_LTECHO_EOF'
-+}
-+
- # NLS nuisances: We save the old values to restore during execute mode.
--# Only set LANG and LC_ALL to C if already set.
--# These must not be set unconditionally because not all systems understand
--# e.g. LANG=C (notably SCO).
- lt_user_locale=
- lt_safe_locale=
- for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
- do
-   eval "if test \"\${$lt_var+set}\" = set; then
-           save_$lt_var=\$$lt_var
-           $lt_var=C
- 	  export $lt_var
- 	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
- 	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
- 	fi"
- done
-+LC_ALL=C
-+LANGUAGE=C
-+export LANGUAGE LC_ALL
- 
- $lt_unset CDPATH
- 
- 
-+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-+# is ksh but when the shell is invoked as "sh" and the current value of
-+# the _XPG environment variable is not equal to 1 (one), the special
-+# positional parameter $0, within a function call, is the name of the
-+# function.
-+progpath="$0"
- 
- 
- 
- : ${CP="cp -f"}
--: ${ECHO="echo"}
--: ${EGREP="/bin/grep -E"}
--: ${FGREP="/bin/grep -F"}
--: ${GREP="/bin/grep"}
--: ${LN_S="ln -s"}
-+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
- : ${MAKE="make"}
- : ${MKDIR="mkdir"}
- : ${MV="mv -f"}
- : ${RM="rm -f"}
--: ${SED="/bin/sed"}
- : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
- : ${Xsed="$SED -e 1s/^X//"}
- 
- # Global variables:
- EXIT_SUCCESS=0
- EXIT_FAILURE=1
- EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
- EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
-@@ -139,69 +155,240 @@ exit_status=$EXIT_SUCCESS
- # Make sure IFS has a sensible default
- lt_nl='
- '
- IFS=" 	$lt_nl"
- 
- dirname="s,/[^/]*$,,"
- basename="s,^.*/,,"
- 
-+# func_dirname file append nondir_replacement
-+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-+# otherwise set result to NONDIR_REPLACEMENT.
-+func_dirname ()
-+{
-+    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
-+    if test "X$func_dirname_result" = "X${1}"; then
-+      func_dirname_result="${3}"
-+    else
-+      func_dirname_result="$func_dirname_result${2}"
-+    fi
-+} # func_dirname may be replaced by extended shell implementation
-+
-+
-+# func_basename file
-+func_basename ()
-+{
-+    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
-+} # func_basename may be replaced by extended shell implementation
-+
-+
- # func_dirname_and_basename file append nondir_replacement
- # perform func_basename and func_dirname in a single function
- # call:
- #   dirname:  Compute the dirname of FILE.  If nonempty,
- #             add APPEND to the result, otherwise set result
- #             to NONDIR_REPLACEMENT.
- #             value returned in "$func_dirname_result"
- #   basename: Compute filename of FILE.
- #             value retuned in "$func_basename_result"
- # Implementation must be kept synchronized with func_dirname
- # and func_basename. For efficiency, we do not delegate to
- # those functions but instead duplicate the functionality here.
- func_dirname_and_basename ()
- {
--  # Extract subdirectory from the argument.
--  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
--  if test "X$func_dirname_result" = "X${1}"; then
--    func_dirname_result="${3}"
--  else
--    func_dirname_result="$func_dirname_result${2}"
-+    # Extract subdirectory from the argument.
-+    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
-+    if test "X$func_dirname_result" = "X${1}"; then
-+      func_dirname_result="${3}"
-+    else
-+      func_dirname_result="$func_dirname_result${2}"
-+    fi
-+    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
-+} # func_dirname_and_basename may be replaced by extended shell implementation
-+
-+
-+# func_stripname prefix suffix name
-+# strip PREFIX and SUFFIX off of NAME.
-+# PREFIX and SUFFIX must not contain globbing or regex special
-+# characters, hashes, percent signs, but SUFFIX may contain a leading
-+# dot (in which case that matches only a dot).
-+# func_strip_suffix prefix name
-+func_stripname ()
-+{
-+    case ${2} in
-+      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-+      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-+    esac
-+} # func_stripname may be replaced by extended shell implementation
-+
-+
-+# These SED scripts presuppose an absolute path with a trailing slash.
-+pathcar='s,^/\([^/]*\).*$,\1,'
-+pathcdr='s,^/[^/]*,,'
-+removedotparts=':dotsl
-+		s@/\./@/@g
-+		t dotsl
-+		s,/\.$,/,'
-+collapseslashes='s@/\{1,\}@/@g'
-+finalslash='s,/*$,/,'
-+
-+# func_normal_abspath PATH
-+# Remove doubled-up and trailing slashes, "." path components,
-+# and cancel out any ".." path components in PATH after making
-+# it an absolute path.
-+#             value returned in "$func_normal_abspath_result"
-+func_normal_abspath ()
-+{
-+  # Start from root dir and reassemble the path.
-+  func_normal_abspath_result=
-+  func_normal_abspath_tpath=$1
-+  func_normal_abspath_altnamespace=
-+  case $func_normal_abspath_tpath in
-+    "")
-+      # Empty path, that just means $cwd.
-+      func_stripname '' '/' "`pwd`"
-+      func_normal_abspath_result=$func_stripname_result
-+      return
-+    ;;
-+    # The next three entries are used to spot a run of precisely
-+    # two leading slashes without using negated character classes;
-+    # we take advantage of case's first-match behaviour.
-+    ///*)
-+      # Unusual form of absolute path, do nothing.
-+    ;;
-+    //*)
-+      # Not necessarily an ordinary path; POSIX reserves leading '//'
-+      # and for example Cygwin uses it to access remote file shares
-+      # over CIFS/SMB, so we conserve a leading double slash if found.
-+      func_normal_abspath_altnamespace=/
-+    ;;
-+    /*)
-+      # Absolute path, do nothing.
-+    ;;
-+    *)
-+      # Relative path, prepend $cwd.
-+      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
-+    ;;
-+  esac
-+  # Cancel out all the simple stuff to save iterations.  We also want
-+  # the path to end with a slash for ease of parsing, so make sure
-+  # there is one (and only one) here.
-+  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-+        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
-+  while :; do
-+    # Processed it all yet?
-+    if test "$func_normal_abspath_tpath" = / ; then
-+      # If we ascended to the root using ".." the result may be empty now.
-+      if test -z "$func_normal_abspath_result" ; then
-+        func_normal_abspath_result=/
-+      fi
-+      break
-+    fi
-+    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
-+        -e "$pathcar"`
-+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-+        -e "$pathcdr"`
-+    # Figure out what to do with it
-+    case $func_normal_abspath_tcomponent in
-+      "")
-+        # Trailing empty path component, ignore it.
-+      ;;
-+      ..)
-+        # Parent dir; strip last assembled component from result.
-+        func_dirname "$func_normal_abspath_result"
-+        func_normal_abspath_result=$func_dirname_result
-+      ;;
-+      *)
-+        # Actual path component, append it.
-+        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
-+      ;;
-+    esac
-+  done
-+  # Restore leading double-slash if one was found on entry.
-+  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
-+}
-+
-+# func_relative_path SRCDIR DSTDIR
-+# generates a relative path from SRCDIR to DSTDIR, with a trailing
-+# slash if non-empty, suitable for immediately appending a filename
-+# without needing to append a separator.
-+#             value returned in "$func_relative_path_result"
-+func_relative_path ()
-+{
-+  func_relative_path_result=
-+  func_normal_abspath "$1"
-+  func_relative_path_tlibdir=$func_normal_abspath_result
-+  func_normal_abspath "$2"
-+  func_relative_path_tbindir=$func_normal_abspath_result
-+
-+  # Ascend the tree starting from libdir
-+  while :; do
-+    # check if we have found a prefix of bindir
-+    case $func_relative_path_tbindir in
-+      $func_relative_path_tlibdir)
-+        # found an exact match
-+        func_relative_path_tcancelled=
-+        break
-+        ;;
-+      $func_relative_path_tlibdir*)
-+        # found a matching prefix
-+        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
-+        func_relative_path_tcancelled=$func_stripname_result
-+        if test -z "$func_relative_path_result"; then
-+          func_relative_path_result=.
-+        fi
-+        break
-+        ;;
-+      *)
-+        func_dirname $func_relative_path_tlibdir
-+        func_relative_path_tlibdir=${func_dirname_result}
-+        if test "x$func_relative_path_tlibdir" = x ; then
-+          # Have to descend all the way to the root!
-+          func_relative_path_result=../$func_relative_path_result
-+          func_relative_path_tcancelled=$func_relative_path_tbindir
-+          break
-+        fi
-+        func_relative_path_result=../$func_relative_path_result
-+        ;;
-+    esac
-+  done
-+
-+  # Now calculate path; take care to avoid doubling-up slashes.
-+  func_stripname '' '/' "$func_relative_path_result"
-+  func_relative_path_result=$func_stripname_result
-+  func_stripname '/' '/' "$func_relative_path_tcancelled"
-+  if test "x$func_stripname_result" != x ; then
-+    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
-   fi
--  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
--}
--
--# Generated shell functions inserted here.
--
--# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
--# is ksh but when the shell is invoked as "sh" and the current value of
--# the _XPG environment variable is not equal to 1 (one), the special
--# positional parameter $0, within a function call, is the name of the
--# function.
--progpath="$0"
-+
-+  # Normalisation. If bindir is libdir, return empty string,
-+  # else relative path ending with a slash; either way, target
-+  # file name can be directly appended.
-+  if test ! -z "$func_relative_path_result"; then
-+    func_stripname './' '' "$func_relative_path_result/"
-+    func_relative_path_result=$func_stripname_result
-+  fi
-+}
- 
- # The name of this program:
--# In the unlikely event $progname began with a '-', it would play havoc with
--# func_echo (imagine progname=-n), so we prepend ./ in that case:
- func_dirname_and_basename "$progpath"
- progname=$func_basename_result
--case $progname in
--  -*) progname=./$progname ;;
--esac
- 
- # Make sure we have an absolute path for reexecution:
- case $progpath in
-   [\\/]*|[A-Za-z]:\\*) ;;
-   *[\\/]*)
-      progdir=$func_dirname_result
-      progdir=`cd "$progdir" && pwd`
-      progpath="$progdir/$progname"
-      ;;
-   *)
-      save_IFS="$IFS"
--     IFS=:
-+     IFS=${PATH_SEPARATOR-:}
-      for progdir in $PATH; do
-        IFS="$save_IFS"
-        test -x "$progdir/$progname" && break
-      done
-      IFS="$save_IFS"
-      test -n "$progdir" || progdir=`pwd`
-      progpath="$progdir/$progname"
-      ;;
-@@ -210,16 +397,25 @@ esac
- # Sed substitution that helps us do robust quoting.  It backslashifies
- # metacharacters that are still active within double-quoted strings.
- Xsed="${SED}"' -e 1s/^X//'
- sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
- 
- # Same as above, but do not quote variable references.
- double_quote_subst='s/\(["`\\]\)/\\\1/g'
- 
-+# Sed substitution that turns a string into a regex matching for the
-+# string literally.
-+sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
-+
-+# Sed substitution that converts a w32 file name or path
-+# which contains forward slashes, into one that contains
-+# (escaped) backslashes.  A very naive implementation.
-+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-+
- # Re-`\' parameter expansions in output of double_quote_subst that were
- # `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
- # in input to double_quote_subst, that '$' was protected from expansion.
- # Since each input `\' is now two `\'s, look for any number of runs of
- # four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
- bs='\\'
- bs2='\\\\'
- bs4='\\\\\\\\'
-@@ -238,43 +434,50 @@ opt_quiet=false
- opt_verbose=false
- opt_warning=:
- 
- # func_echo arg...
- # Echo program name prefixed message, along with the current mode
- # name if it has been set yet.
- func_echo ()
- {
--    $ECHO "$progname${mode+: }$mode: $*"
-+    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
- }
- 
- # func_verbose arg...
- # Echo program name prefixed message in verbose mode only.
- func_verbose ()
- {
-     $opt_verbose && func_echo ${1+"$@"}
- 
-     # A bug in bash halts the script if the last line of a function
-     # fails when set -e is in force, so we need another command to
-     # work around that:
-     :
- }
- 
-+# func_echo_all arg...
-+# Invoke $ECHO with all args, space-separated.
-+func_echo_all ()
-+{
-+    $ECHO "$*"
-+}
-+
- # func_error arg...
- # Echo program name prefixed message to standard error.
- func_error ()
- {
--    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
-+    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
- }
- 
- # func_warning arg...
- # Echo program name prefixed warning message to standard error.
- func_warning ()
- {
--    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
-+    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
- 
-     # bash bug again:
-     :
- }
- 
- # func_fatal_error arg...
- # Echo program name prefixed message to standard error, and exit.
- func_fatal_error ()
-@@ -321,19 +524,19 @@ func_mkdir_p ()
-         # ...make a list in topmost first order.  Use a colon delimited
- 	# list incase some portion of path contains whitespace.
-         my_dir_list="$my_directory_path:$my_dir_list"
- 
-         # If the last portion added has no slash in it, the list is done
-         case $my_directory_path in */*) ;; *) break ;; esac
- 
-         # ...otherwise throw away the child directory and loop
--        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
-+        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
-       done
--      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
-+      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
- 
-       save_mkdir_p_IFS="$IFS"; IFS=':'
-       for my_dir in $my_dir_list; do
- 	IFS="$save_mkdir_p_IFS"
-         # mkdir can fail with a `File exist' error if two processes
-         # try to create one of the directories concurrently.  Don't
-         # stop in that case!
-         $MKDIR "$my_dir" 2>/dev/null || :
-@@ -373,31 +576,31 @@ func_mktempdir ()
-         umask $save_mktempdir_umask
-       fi
- 
-       # If we're not in dry-run mode, bomb out on failure
-       test -d "$my_tmpdir" || \
-         func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
-     fi
- 
--    $ECHO "X$my_tmpdir" | $Xsed
-+    $ECHO "$my_tmpdir"
- }
- 
- 
- # func_quote_for_eval arg
- # Aesthetically quote ARG to be evaled later.
- # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
- # is double-quoted, suitable for a subsequent eval, whereas
- # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
- # which are still active within double quotes backslashified.
- func_quote_for_eval ()
- {
-     case $1 in
-       *[\\\`\"\$]*)
--	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
-+	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
-       *)
-         func_quote_for_eval_unquoted_result="$1" ;;
-     esac
- 
-     case $func_quote_for_eval_unquoted_result in
-       # Double-quote args containing shell metacharacters to delay
-       # word splitting, command substitution and and variable
-       # expansion for a subsequent eval.
-@@ -414,17 +617,17 @@ func_quote_for_eval ()
- 
- # func_quote_for_expand arg
- # Aesthetically quote ARG to be evaled later; same as above,
- # but do not quote variable references.
- func_quote_for_expand ()
- {
-     case $1 in
-       *[\\\`\"]*)
--	my_arg=`$ECHO "X$1" | $Xsed \
-+	my_arg=`$ECHO "$1" | $SED \
- 	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
-       *)
-         my_arg="$1" ;;
-     esac
- 
-     case $my_arg in
-       # Double-quote args containing shell metacharacters to delay
-       # word splitting and command substitution for a subsequent eval.
-@@ -483,131 +686,211 @@ func_show_eval_locale ()
-       my_status=$?
-       eval "$lt_safe_locale"
-       if test "$my_status" -eq 0; then :; else
- 	eval "(exit $my_status); $my_fail_exp"
-       fi
-     fi
- }
- 
--
--
-+# func_tr_sh
-+# Turn $1 into a string suitable for a shell variable name.
-+# Result is stored in $func_tr_sh_result.  All characters
-+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
-+# if $1 begins with a digit, a '_' is prepended as well.
-+func_tr_sh ()
-+{
-+  case $1 in
-+  [0-9]* | *[!a-zA-Z0-9_]*)
-+    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
-+    ;;
-+  * )
-+    func_tr_sh_result=$1
-+    ;;
-+  esac
-+}
- 
- 
- # func_version
- # Echo version message to standard output and exit.
- func_version ()
- {
--    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
-+    $opt_debug
-+
-+    $SED -n '/(C)/!b go
-+	:more
-+	/\./!{
-+	  N
-+	  s/\n# / /
-+	  b more
-+	}
-+	:go
-+	/^# '$PROGRAM' (GNU /,/# warranty; / {
-         s/^# //
- 	s/^# *$//
-         s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
-         p
-      }' < "$progpath"
-      exit $?
- }
- 
- # func_usage
- # Echo short help message to standard output and exit.
- func_usage ()
- {
--    $SED -n '/^# Usage:/,/# -h/ {
-+    $opt_debug
-+
-+    $SED -n '/^# Usage:/,/^#  *.*--help/ {
-         s/^# //
- 	s/^# *$//
- 	s/\$progname/'$progname'/
- 	p
-     }' < "$progpath"
--    $ECHO
-+    echo
-     $ECHO "run \`$progname --help | more' for full usage"
-     exit $?
- }
- 
--# func_help
--# Echo long help message to standard output and exit.
-+# func_help [NOEXIT]
-+# Echo long help message to standard output and exit,
-+# unless 'noexit' is passed as argument.
- func_help ()
- {
-+    $opt_debug
-+
-     $SED -n '/^# Usage:/,/# Report bugs to/ {
-+	:print
-         s/^# //
- 	s/^# *$//
- 	s*\$progname*'$progname'*
- 	s*\$host*'"$host"'*
- 	s*\$SHELL*'"$SHELL"'*
- 	s*\$LTCC*'"$LTCC"'*
- 	s*\$LTCFLAGS*'"$LTCFLAGS"'*
- 	s*\$LD*'"$LD"'*
- 	s/\$with_gnu_ld/'"$with_gnu_ld"'/
--	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
--	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
-+	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
-+	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
- 	p
--     }' < "$progpath"
--    exit $?
-+	d
-+     }
-+     /^# .* home page:/b print
-+     /^# General help using/b print
-+     ' < "$progpath"
-+    ret=$?
-+    if test -z "$1"; then
-+      exit $ret
-+    fi
- }
- 
- # func_missing_arg argname
- # Echo program name prefixed message to standard error and set global
- # exit_cmd.
- func_missing_arg ()
- {
--    func_error "missing argument for $1"
-+    $opt_debug
-+
-+    func_error "missing argument for $1."
-     exit_cmd=exit
- }
- 
-+
-+# func_split_short_opt shortopt
-+# Set func_split_short_opt_name and func_split_short_opt_arg shell
-+# variables after splitting SHORTOPT after the 2nd character.
-+func_split_short_opt ()
-+{
-+    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
-+    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
-+
-+    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
-+    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
-+} # func_split_short_opt may be replaced by extended shell implementation
-+
-+
-+# func_split_long_opt longopt
-+# Set func_split_long_opt_name and func_split_long_opt_arg shell
-+# variables after splitting LONGOPT at the `=' sign.
-+func_split_long_opt ()
-+{
-+    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
-+    my_sed_long_arg='1s/^--[^=]*=//'
-+
-+    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
-+    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
-+} # func_split_long_opt may be replaced by extended shell implementation
-+
- exit_cmd=:
- 
- 
- 
- 
- 
--# Check that we have a working $ECHO.
--if test "X$1" = X--no-reexec; then
--  # Discard the --no-reexec flag, and continue.
--  shift
--elif test "X$1" = X--fallback-echo; then
--  # Avoid inline document here, it may be left over
--  :
--elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
--  # Yippee, $ECHO works!
--  :
--else
--  # Restart under the correct shell, and then maybe $ECHO will work.
--  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
--fi
--
--if test "X$1" = X--fallback-echo; then
--  # used as fallback echo
--  shift
--  cat <<EOF
--$*
--EOF
--  exit $EXIT_SUCCESS
--fi
--
- magic="%%%MAGIC variable%%%"
- magic_exe="%%%MAGIC EXE variable%%%"
- 
- # Global variables.
--# $mode is unset
- nonopt=
--execute_dlfiles=
- preserve_args=
- lo2o="s/\\.lo\$/.${objext}/"
- o2lo="s/\\.${objext}\$/.lo/"
- extracted_archives=
- extracted_serial=0
- 
--opt_dry_run=false
--opt_duplicate_deps=false
--opt_silent=false
--opt_debug=:
--
- # If this variable is set in any of the actions, the command in it
- # will be execed at the end.  This prevents here-documents from being
- # left over by shells.
- exec_cmd=
- 
-+# func_append var value
-+# Append VALUE to the end of shell variable VAR.
-+func_append ()
-+{
-+    eval "${1}=\$${1}\${2}"
-+} # func_append may be replaced by extended shell implementation
-+
-+# func_append_quoted var value
-+# Quote VALUE and append to the end of shell variable VAR, separated
-+# by a space.
-+func_append_quoted ()
-+{
-+    func_quote_for_eval "${2}"
-+    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
-+} # func_append_quoted may be replaced by extended shell implementation
-+
-+
-+# func_arith arithmetic-term...
-+func_arith ()
-+{
-+    func_arith_result=`expr "${@}"`
-+} # func_arith may be replaced by extended shell implementation
-+
-+
-+# func_len string
-+# STRING may not start with a hyphen.
-+func_len ()
-+{
-+    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
-+} # func_len may be replaced by extended shell implementation
-+
-+
-+# func_lo2o object
-+func_lo2o ()
-+{
-+    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
-+} # func_lo2o may be replaced by extended shell implementation
-+
-+
-+# func_xform libobj-or-source
-+func_xform ()
-+{
-+    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
-+} # func_xform may be replaced by extended shell implementation
-+
-+
- # func_fatal_configuration arg...
- # Echo program name prefixed message to standard error, followed by
- # a configuration failure hint, and exit.
- func_fatal_configuration ()
- {
-     func_error ${1+"$@"}
-     func_error "See the $PACKAGE documentation for more information."
-     func_fatal_error "Fatal configuration error."
-@@ -631,26 +914,26 @@ func_config ()
- 
-     exit $?
- }
- 
- # func_features
- # Display the features supported by this script.
- func_features ()
- {
--    $ECHO "host: $host"
-+    echo "host: $host"
-     if test "$build_libtool_libs" = yes; then
--      $ECHO "enable shared libraries"
-+      echo "enable shared libraries"
-     else
--      $ECHO "disable shared libraries"
-+      echo "disable shared libraries"
-     fi
-     if test "$build_old_libs" = yes; then
--      $ECHO "enable static libraries"
-+      echo "enable static libraries"
-     else
--      $ECHO "disable static libraries"
-+      echo "disable static libraries"
-     fi
- 
-     exit $?
- }
- 
- # func_enable_tag tagname
- # Verify that TAGNAME is valid, and either flag an error and exit, or
- # enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
-@@ -687,143 +970,16 @@ func_enable_tag ()
- 	eval "$extractedcf"
-       else
- 	func_error "ignoring unknown tag $tagname"
-       fi
-       ;;
-   esac
- }
- 
--# Parse options once, thoroughly.  This comes as soon as possible in
--# the script to make things like `libtool --version' happen quickly.
--{
--
--  # Shorthand for --mode=foo, only valid as the first argument
--  case $1 in
--  clean|clea|cle|cl)
--    shift; set dummy --mode clean ${1+"$@"}; shift
--    ;;
--  compile|compil|compi|comp|com|co|c)
--    shift; set dummy --mode compile ${1+"$@"}; shift
--    ;;
--  execute|execut|execu|exec|exe|ex|e)
--    shift; set dummy --mode execute ${1+"$@"}; shift
--    ;;
--  finish|finis|fini|fin|fi|f)
--    shift; set dummy --mode finish ${1+"$@"}; shift
--    ;;
--  install|instal|insta|inst|ins|in|i)
--    shift; set dummy --mode install ${1+"$@"}; shift
--    ;;
--  link|lin|li|l)
--    shift; set dummy --mode link ${1+"$@"}; shift
--    ;;
--  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
--    shift; set dummy --mode uninstall ${1+"$@"}; shift
--    ;;
--  esac
--
--  # Parse non-mode specific arguments:
--  while test "$#" -gt 0; do
--    opt="$1"
--    shift
--
--    case $opt in
--      --config)		func_config					;;
--
--      --debug)		preserve_args="$preserve_args $opt"
--			func_echo "enabling shell trace mode"
--			opt_debug='set -x'
--			$opt_debug
--			;;
--
--      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
--			execute_dlfiles="$execute_dlfiles $1"
--			shift
--			;;
--
--      --dry-run | -n)	opt_dry_run=:					;;
--      --features)       func_features					;;
--      --finish)		mode="finish"					;;
--
--      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
--			case $1 in
--			  # Valid mode arguments:
--			  clean)	;;
--			  compile)	;;
--			  execute)	;;
--			  finish)	;;
--			  install)	;;
--			  link)		;;
--			  relink)	;;
--			  uninstall)	;;
--
--			  # Catch anything else as an error
--			  *) func_error "invalid argument for $opt"
--			     exit_cmd=exit
--			     break
--			     ;;
--		        esac
--
--			mode="$1"
--			shift
--			;;
--
--      --preserve-dup-deps)
--			opt_duplicate_deps=:				;;
--
--      --quiet|--silent)	preserve_args="$preserve_args $opt"
--			opt_silent=:
--			;;
--
--      --verbose| -v)	preserve_args="$preserve_args $opt"
--			opt_silent=false
--			;;
--
--      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
--			preserve_args="$preserve_args $opt $1"
--			func_enable_tag "$1"	# tagname is set here
--			shift
--			;;
--
--      # Separate optargs to long options:
--      -dlopen=*|--mode=*|--tag=*)
--			func_opt_split "$opt"
--			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
--			shift
--			;;
--
--      -\?|-h)		func_usage					;;
--      --help)		opt_help=:					;;
--      --version)	func_version					;;
--
--      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
--
--      *)		nonopt="$opt"
--			break
--			;;
--    esac
--  done
--
--
--  case $host in
--    *cygwin* | *mingw* | *pw32* | *cegcc*)
--      # don't eliminate duplications in $postdeps and $predeps
--      opt_duplicate_compiler_generated_deps=:
--      ;;
--    *)
--      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
--      ;;
--  esac
--
--  # Having warned about all mis-specified options, bail out if
--  # anything was wrong.
--  $exit_cmd $EXIT_FAILURE
--}
--
- # func_check_version_match
- # Ensure that we are using m4 macros, and libtool script from the same
- # release of libtool.
- func_check_version_match ()
- {
-   if test "$package_revision" != "$macro_revision"; then
-     if test "$VERSION" != "$macro_version"; then
-       if test -z "$macro_version"; then
-@@ -850,48 +1006,229 @@ func_check_version_match ()
- _LT_EOF
-     fi
- 
-     exit $EXIT_MISMATCH
-   fi
- }
- 
- 
-+# Shorthand for --mode=foo, only valid as the first argument
-+case $1 in
-+clean|clea|cle|cl)
-+  shift; set dummy --mode clean ${1+"$@"}; shift
-+  ;;
-+compile|compil|compi|comp|com|co|c)
-+  shift; set dummy --mode compile ${1+"$@"}; shift
-+  ;;
-+execute|execut|execu|exec|exe|ex|e)
-+  shift; set dummy --mode execute ${1+"$@"}; shift
-+  ;;
-+finish|finis|fini|fin|fi|f)
-+  shift; set dummy --mode finish ${1+"$@"}; shift
-+  ;;
-+install|instal|insta|inst|ins|in|i)
-+  shift; set dummy --mode install ${1+"$@"}; shift
-+  ;;
-+link|lin|li|l)
-+  shift; set dummy --mode link ${1+"$@"}; shift
-+  ;;
-+uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-+  shift; set dummy --mode uninstall ${1+"$@"}; shift
-+  ;;
-+esac
-+
-+
-+
-+# Option defaults:
-+opt_debug=:
-+opt_dry_run=false
-+opt_config=false
-+opt_preserve_dup_deps=false
-+opt_features=false
-+opt_finish=false
-+opt_help=false
-+opt_help_all=false
-+opt_silent=:
-+opt_warning=:
-+opt_verbose=:
-+opt_silent=false
-+opt_verbose=false
-+
-+
-+# Parse options once, thoroughly.  This comes as soon as possible in the
-+# script to make things like `--version' happen as quickly as we can.
-+{
-+  # this just eases exit handling
-+  while test $# -gt 0; do
-+    opt="$1"
-+    shift
-+    case $opt in
-+      --debug|-x)	opt_debug='set -x'
-+			func_echo "enabling shell trace mode"
-+			$opt_debug
-+			;;
-+      --dry-run|--dryrun|-n)
-+			opt_dry_run=:
-+			;;
-+      --config)
-+			opt_config=:
-+func_config
-+			;;
-+      --dlopen|-dlopen)
-+			optarg="$1"
-+			opt_dlopen="${opt_dlopen+$opt_dlopen
-+}$optarg"
-+			shift
-+			;;
-+      --preserve-dup-deps)
-+			opt_preserve_dup_deps=:
-+			;;
-+      --features)
-+			opt_features=:
-+func_features
-+			;;
-+      --finish)
-+			opt_finish=:
-+set dummy --mode finish ${1+"$@"}; shift
-+			;;
-+      --help)
-+			opt_help=:
-+			;;
-+      --help-all)
-+			opt_help_all=:
-+opt_help=': help-all'
-+			;;
-+      --mode)
-+			test $# = 0 && func_missing_arg $opt && break
-+			optarg="$1"
-+			opt_mode="$optarg"
-+case $optarg in
-+  # Valid mode arguments:
-+  clean|compile|execute|finish|install|link|relink|uninstall) ;;
-+
-+  # Catch anything else as an error
-+  *) func_error "invalid argument for $opt"
-+     exit_cmd=exit
-+     break
-+     ;;
-+esac
-+			shift
-+			;;
-+      --no-silent|--no-quiet)
-+			opt_silent=false
-+func_append preserve_args " $opt"
-+			;;
-+      --no-warning|--no-warn)
-+			opt_warning=false
-+func_append preserve_args " $opt"
-+			;;
-+      --no-verbose)
-+			opt_verbose=false
-+func_append preserve_args " $opt"
-+			;;
-+      --silent|--quiet)
-+			opt_silent=:
-+func_append preserve_args " $opt"
-+        opt_verbose=false
-+			;;
-+      --verbose|-v)
-+			opt_verbose=:
-+func_append preserve_args " $opt"
-+opt_silent=false
-+			;;
-+      --tag)
-+			test $# = 0 && func_missing_arg $opt && break
-+			optarg="$1"
-+			opt_tag="$optarg"
-+func_append preserve_args " $opt $optarg"
-+func_enable_tag "$optarg"
-+			shift
-+			;;
-+
-+      -\?|-h)		func_usage				;;
-+      --help)		func_help				;;
-+      --version)	func_version				;;
-+
-+      # Separate optargs to long options:
-+      --*=*)
-+			func_split_long_opt "$opt"
-+			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
-+			shift
-+			;;
-+
-+      # Separate non-argument short options:
-+      -\?*|-h*|-n*|-v*)
-+			func_split_short_opt "$opt"
-+			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
-+			shift
-+			;;
-+
-+      --)		break					;;
-+      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
-+      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
-+    esac
-+  done
-+
-+  # Validate options:
-+
-+  # save first non-option argument
-+  if test "$#" -gt 0; then
-+    nonopt="$opt"
-+    shift
-+  fi
-+
-+  # preserve --debug
-+  test "$opt_debug" = : || func_append preserve_args " --debug"
-+
-+  case $host in
-+    *cygwin* | *mingw* | *pw32* | *cegcc*)
-+      # don't eliminate duplications in $postdeps and $predeps
-+      opt_duplicate_compiler_generated_deps=:
-+      ;;
-+    *)
-+      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
-+      ;;
-+  esac
-+
-+  $opt_help || {
-+    # Sanity checks first:
-+    func_check_version_match
-+
-+    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-+      func_fatal_configuration "not configured to build any kind of library"
-+    fi
-+
-+    # Darwin sucks
-+    eval std_shrext=\"$shrext_cmds\"
-+
-+    # Only execute mode is allowed to have -dlopen flags.
-+    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
-+      func_error "unrecognized option \`-dlopen'"
-+      $ECHO "$help" 1>&2
-+      exit $EXIT_FAILURE
-+    fi
-+
-+    # Change the help message to a mode-specific one.
-+    generic_help="$help"
-+    help="Try \`$progname --help --mode=$opt_mode' for more information."
-+  }
-+
-+
-+  # Bail if the options were screwed
-+  $exit_cmd $EXIT_FAILURE
-+}
-+
-+
-+
-+
- ## ----------- ##
- ##    Main.    ##
- ## ----------- ##
- 
--$opt_help || {
--  # Sanity checks first:
--  func_check_version_match
--
--  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
--    func_fatal_configuration "not configured to build any kind of library"
--  fi
--
--  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
--
--
--  # Darwin sucks
--  eval std_shrext=\"$shrext_cmds\"
--
--
--  # Only execute mode is allowed to have -dlopen flags.
--  if test -n "$execute_dlfiles" && test "$mode" != execute; then
--    func_error "unrecognized option \`-dlopen'"
--    $ECHO "$help" 1>&2
--    exit $EXIT_FAILURE
--  fi
--
--  # Change the help message to a mode-specific one.
--  generic_help="$help"
--  help="Try \`$progname --help --mode=$mode' for more information."
--}
--
--
- # func_lalib_p file
- # True iff FILE is a libtool `.la' library or `.lo' object file.
- # This function is only a basic sanity check; it will hardly flush out
- # determined imposters.
- func_lalib_p ()
- {
-     test -f "$1" &&
-       $SED -e 4q "$1" 2>/dev/null \
-@@ -945,22 +1282,19 @@ func_ltwrapper_executable_p ()
- }
- 
- # func_ltwrapper_scriptname file
- # Assumes file is an ltwrapper_executable
- # uses $file to determine the appropriate filename for a
- # temporary ltwrapper_script.
- func_ltwrapper_scriptname ()
- {
--    func_ltwrapper_scriptname_result=""
--    if func_ltwrapper_executable_p "$1"; then
--	func_dirname_and_basename "$1" "" "."
--	func_stripname '' '.exe' "$func_basename_result"
--	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
--    fi
-+    func_dirname_and_basename "$1" "" "."
-+    func_stripname '' '.exe' "$func_basename_result"
-+    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
- }
- 
- # func_ltwrapper_p file
- # True iff FILE is a libtool wrapper script or wrapper executable
- # This function is only a basic sanity check; it will hardly flush out
- # determined imposters.
- func_ltwrapper_p ()
- {
-@@ -996,50 +1330,85 @@ func_source ()
-     $opt_debug
-     case $1 in
-     */* | *\\*)	. "$1" ;;
-     *)		. "./$1" ;;
-     esac
- }
- 
- 
-+# func_resolve_sysroot PATH
-+# Replace a leading = in PATH with a sysroot.  Store the result into
-+# func_resolve_sysroot_result
-+func_resolve_sysroot ()
-+{
-+  func_resolve_sysroot_result=$1
-+  case $func_resolve_sysroot_result in
-+  =*)
-+    func_stripname '=' '' "$func_resolve_sysroot_result"
-+    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
-+    ;;
-+  esac
-+}
-+
-+# func_replace_sysroot PATH
-+# If PATH begins with the sysroot, replace it with = and
-+# store the result into func_replace_sysroot_result.
-+func_replace_sysroot ()
-+{
-+  case "$lt_sysroot:$1" in
-+  ?*:"$lt_sysroot"*)
-+    func_stripname "$lt_sysroot" '' "$1"
-+    func_replace_sysroot_result="=$func_stripname_result"
-+    ;;
-+  *)
-+    # Including no sysroot.
-+    func_replace_sysroot_result=$1
-+    ;;
-+  esac
-+}
-+
- # func_infer_tag arg
- # Infer tagged configuration to use if any are available and
- # if one wasn't chosen via the "--tag" command line option.
- # Only attempt this if the compiler in the base compile
- # command doesn't match the default compiler.
- # arg is usually of the form 'gcc ...'
- func_infer_tag ()
- {
-     $opt_debug
-     if test -n "$available_tags" && test -z "$tagname"; then
-       CC_quoted=
-       for arg in $CC; do
--        func_quote_for_eval "$arg"
--	CC_quoted="$CC_quoted $func_quote_for_eval_result"
-+	func_append_quoted CC_quoted "$arg"
-       done
-+      CC_expanded=`func_echo_all $CC`
-+      CC_quoted_expanded=`func_echo_all $CC_quoted`
-       case $@ in
-       # Blanks in the command may have been stripped by the calling shell,
-       # but not from the CC environment variable when configure was run.
--      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
-+      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
-+      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
-       # Blanks at the start of $base_compile will cause this to fail
-       # if we don't check for them as well.
-       *)
- 	for z in $available_tags; do
- 	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
- 	    # Evaluate the configuration.
- 	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
- 	    CC_quoted=
- 	    for arg in $CC; do
- 	      # Double-quote args containing other shell metacharacters.
--	      func_quote_for_eval "$arg"
--	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
-+	      func_append_quoted CC_quoted "$arg"
- 	    done
-+	    CC_expanded=`func_echo_all $CC`
-+	    CC_quoted_expanded=`func_echo_all $CC_quoted`
- 	    case "$@ " in
--	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
-+	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
-+	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
- 	      # The compiler in the base compile command matches
- 	      # the one in the tagged configuration.
- 	      # Assume this is the tagged configuration we want.
- 	      tagname=$z
- 	      break
- 	      ;;
- 	    esac
- 	  fi
-@@ -1092,16 +1461,496 @@ pic_object=$write_lobj
- # Name of the non-PIC object
- non_pic_object=$write_oldobj
- 
- EOF
-       $MV "${write_libobj}T" "${write_libobj}"
-     }
- }
- 
-+
-+##################################################
-+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
-+##################################################
-+
-+# func_convert_core_file_wine_to_w32 ARG
-+# Helper function used by file name conversion functions when $build is *nix,
-+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
-+# correctly configured wine environment available, with the winepath program
-+# in $build's $PATH.
-+#
-+# ARG is the $build file name to be converted to w32 format.
-+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
-+# be empty on error (or when ARG is empty)
-+func_convert_core_file_wine_to_w32 ()
-+{
-+  $opt_debug
-+  func_convert_core_file_wine_to_w32_result="$1"
-+  if test -n "$1"; then
-+    # Unfortunately, winepath does not exit with a non-zero error code, so we
-+    # are forced to check the contents of stdout. On the other hand, if the
-+    # command is not found, the shell will set an exit code of 127 and print
-+    # *an error message* to stdout. So we must check for both error code of
-+    # zero AND non-empty stdout, which explains the odd construction:
-+    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
-+    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
-+      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
-+        $SED -e "$lt_sed_naive_backslashify"`
-+    else
-+      func_convert_core_file_wine_to_w32_result=
-+    fi
-+  fi
-+}
-+# end: func_convert_core_file_wine_to_w32
-+
-+
-+# func_convert_core_path_wine_to_w32 ARG
-+# Helper function used by path conversion functions when $build is *nix, and
-+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
-+# configured wine environment available, with the winepath program in $build's
-+# $PATH. Assumes ARG has no leading or trailing path separator characters.
-+#
-+# ARG is path to be converted from $build format to win32.
-+# Result is available in $func_convert_core_path_wine_to_w32_result.
-+# Unconvertible file (directory) names in ARG are skipped; if no directory names
-+# are convertible, then the result may be empty.
-+func_convert_core_path_wine_to_w32 ()
-+{
-+  $opt_debug
-+  # unfortunately, winepath doesn't convert paths, only file names
-+  func_convert_core_path_wine_to_w32_result=""
-+  if test -n "$1"; then
-+    oldIFS=$IFS
-+    IFS=:
-+    for func_convert_core_path_wine_to_w32_f in $1; do
-+      IFS=$oldIFS
-+      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
-+      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
-+        if test -z "$func_convert_core_path_wine_to_w32_result"; then
-+          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
-+        else
-+          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
-+        fi
-+      fi
-+    done
-+    IFS=$oldIFS
-+  fi
-+}
-+# end: func_convert_core_path_wine_to_w32
-+
-+
-+# func_cygpath ARGS...
-+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
-+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
-+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
-+# (2), returns the Cygwin file name or path in func_cygpath_result (input
-+# file name or path is assumed to be in w32 format, as previously converted
-+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
-+# or path in func_cygpath_result (input file name or path is assumed to be in
-+# Cygwin format). Returns an empty string on error.
-+#
-+# ARGS are passed to cygpath, with the last one being the file name or path to
-+# be converted.
-+#
-+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
-+# environment variable; do not put it in $PATH.
-+func_cygpath ()
-+{
-+  $opt_debug
-+  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
-+    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
-+    if test "$?" -ne 0; then
-+      # on failure, ensure result is empty
-+      func_cygpath_result=
-+    fi
-+  else
-+    func_cygpath_result=
-+    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
-+  fi
-+}
-+#end: func_cygpath
-+
-+
-+# func_convert_core_msys_to_w32 ARG
-+# Convert file name or path ARG from MSYS format to w32 format.  Return
-+# result in func_convert_core_msys_to_w32_result.
-+func_convert_core_msys_to_w32 ()
-+{
-+  $opt_debug
-+  # awkward: cmd appends spaces to result
-+  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
-+    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
-+}
-+#end: func_convert_core_msys_to_w32
-+
-+
-+# func_convert_file_check ARG1 ARG2
-+# Verify that ARG1 (a file name in $build format) was converted to $host
-+# format in ARG2. Otherwise, emit an error message, but continue (resetting
-+# func_to_host_file_result to ARG1).
-+func_convert_file_check ()
-+{
-+  $opt_debug
-+  if test -z "$2" && test -n "$1" ; then
-+    func_error "Could not determine host file name corresponding to"
-+    func_error "  \`$1'"
-+    func_error "Continuing, but uninstalled executables may not work."
-+    # Fallback:
-+    func_to_host_file_result="$1"
-+  fi
-+}
-+# end func_convert_file_check
-+
-+
-+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
-+# Verify that FROM_PATH (a path in $build format) was converted to $host
-+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
-+# func_to_host_file_result to a simplistic fallback value (see below).
-+func_convert_path_check ()
-+{
-+  $opt_debug
-+  if test -z "$4" && test -n "$3"; then
-+    func_error "Could not determine the host path corresponding to"
-+    func_error "  \`$3'"
-+    func_error "Continuing, but uninstalled executables may not work."
-+    # Fallback.  This is a deliberately simplistic "conversion" and
-+    # should not be "improved".  See libtool.info.
-+    if test "x$1" != "x$2"; then
-+      lt_replace_pathsep_chars="s|$1|$2|g"
-+      func_to_host_path_result=`echo "$3" |
-+        $SED -e "$lt_replace_pathsep_chars"`
-+    else
-+      func_to_host_path_result="$3"
-+    fi
-+  fi
-+}
-+# end func_convert_path_check
-+
-+
-+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
-+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
-+# and appending REPL if ORIG matches BACKPAT.
-+func_convert_path_front_back_pathsep ()
-+{
-+  $opt_debug
-+  case $4 in
-+  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
-+    ;;
-+  esac
-+  case $4 in
-+  $2 ) func_append func_to_host_path_result "$3"
-+    ;;
-+  esac
-+}
-+# end func_convert_path_front_back_pathsep
-+
-+
-+##################################################
-+# $build to $host FILE NAME CONVERSION FUNCTIONS #
-+##################################################
-+# invoked via `$to_host_file_cmd ARG'
-+#
-+# In each case, ARG is the path to be converted from $build to $host format.
-+# Result will be available in $func_to_host_file_result.
-+
-+
-+# func_to_host_file ARG
-+# Converts the file name ARG from $build format to $host format. Return result
-+# in func_to_host_file_result.
-+func_to_host_file ()
-+{
-+  $opt_debug
-+  $to_host_file_cmd "$1"
-+}
-+# end func_to_host_file
-+
-+
-+# func_to_tool_file ARG LAZY
-+# converts the file name ARG from $build format to toolchain format. Return
-+# result in func_to_tool_file_result.  If the conversion in use is listed
-+# in (the comma separated) LAZY, no conversion takes place.
-+func_to_tool_file ()
-+{
-+  $opt_debug
-+  case ,$2, in
-+    *,"$to_tool_file_cmd",*)
-+      func_to_tool_file_result=$1
-+      ;;
-+    *)
-+      $to_tool_file_cmd "$1"
-+      func_to_tool_file_result=$func_to_host_file_result
-+      ;;
-+  esac
-+}
-+# end func_to_tool_file
-+
-+
-+# func_convert_file_noop ARG
-+# Copy ARG to func_to_host_file_result.
-+func_convert_file_noop ()
-+{
-+  func_to_host_file_result="$1"
-+}
-+# end func_convert_file_noop
-+
-+
-+# func_convert_file_msys_to_w32 ARG
-+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
-+# conversion to w32 is not available inside the cwrapper.  Returns result in
-+# func_to_host_file_result.
-+func_convert_file_msys_to_w32 ()
-+{
-+  $opt_debug
-+  func_to_host_file_result="$1"
-+  if test -n "$1"; then
-+    func_convert_core_msys_to_w32 "$1"
-+    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
-+  fi
-+  func_convert_file_check "$1" "$func_to_host_file_result"
-+}
-+# end func_convert_file_msys_to_w32
-+
-+
-+# func_convert_file_cygwin_to_w32 ARG
-+# Convert file name ARG from Cygwin to w32 format.  Returns result in
-+# func_to_host_file_result.
-+func_convert_file_cygwin_to_w32 ()
-+{
-+  $opt_debug
-+  func_to_host_file_result="$1"
-+  if test -n "$1"; then
-+    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
-+    # LT_CYGPATH in this case.
-+    func_to_host_file_result=`cygpath -m "$1"`
-+  fi
-+  func_convert_file_check "$1" "$func_to_host_file_result"
-+}
-+# end func_convert_file_cygwin_to_w32
-+
-+
-+# func_convert_file_nix_to_w32 ARG
-+# Convert file name ARG from *nix to w32 format.  Requires a wine environment
-+# and a working winepath. Returns result in func_to_host_file_result.
-+func_convert_file_nix_to_w32 ()
-+{
-+  $opt_debug
-+  func_to_host_file_result="$1"
-+  if test -n "$1"; then
-+    func_convert_core_file_wine_to_w32 "$1"
-+    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
-+  fi
-+  func_convert_file_check "$1" "$func_to_host_file_result"
-+}
-+# end func_convert_file_nix_to_w32
-+
-+
-+# func_convert_file_msys_to_cygwin ARG
-+# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
-+# Returns result in func_to_host_file_result.
-+func_convert_file_msys_to_cygwin ()
-+{
-+  $opt_debug
-+  func_to_host_file_result="$1"
-+  if test -n "$1"; then
-+    func_convert_core_msys_to_w32 "$1"
-+    func_cygpath -u "$func_convert_core_msys_to_w32_result"
-+    func_to_host_file_result="$func_cygpath_result"
-+  fi
-+  func_convert_file_check "$1" "$func_to_host_file_result"
-+}
-+# end func_convert_file_msys_to_cygwin
-+
-+
-+# func_convert_file_nix_to_cygwin ARG
-+# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
-+# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
-+# in func_to_host_file_result.
-+func_convert_file_nix_to_cygwin ()
-+{
-+  $opt_debug
-+  func_to_host_file_result="$1"
-+  if test -n "$1"; then
-+    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
-+    func_convert_core_file_wine_to_w32 "$1"
-+    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
-+    func_to_host_file_result="$func_cygpath_result"
-+  fi
-+  func_convert_file_check "$1" "$func_to_host_file_result"
-+}
-+# end func_convert_file_nix_to_cygwin
-+
-+
-+#############################################
-+# $build to $host PATH CONVERSION FUNCTIONS #
-+#############################################
-+# invoked via `$to_host_path_cmd ARG'
-+#
-+# In each case, ARG is the path to be converted from $build to $host format.
-+# The result will be available in $func_to_host_path_result.
-+#
-+# Path separators are also converted from $build format to $host format.  If
-+# ARG begins or ends with a path separator character, it is preserved (but
-+# converted to $host format) on output.
-+#
-+# All path conversion functions are named using the following convention:
-+#   file name conversion function    : func_convert_file_X_to_Y ()
-+#   path conversion function         : func_convert_path_X_to_Y ()
-+# where, for any given $build/$host combination the 'X_to_Y' value is the
-+# same.  If conversion functions are added for new $build/$host combinations,
-+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
-+# will break.
-+
-+
-+# func_init_to_host_path_cmd
-+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
-+# appropriate value, based on the value of $to_host_file_cmd.
-+to_host_path_cmd=
-+func_init_to_host_path_cmd ()
-+{
-+  $opt_debug
-+  if test -z "$to_host_path_cmd"; then
-+    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
-+    to_host_path_cmd="func_convert_path_${func_stripname_result}"
-+  fi
-+}
-+
-+
-+# func_to_host_path ARG
-+# Converts the path ARG from $build format to $host format. Return result
-+# in func_to_host_path_result.
-+func_to_host_path ()
-+{
-+  $opt_debug
-+  func_init_to_host_path_cmd
-+  $to_host_path_cmd "$1"
-+}
-+# end func_to_host_path
-+
-+
-+# func_convert_path_noop ARG
-+# Copy ARG to func_to_host_path_result.
-+func_convert_path_noop ()
-+{
-+  func_to_host_path_result="$1"
-+}
-+# end func_convert_path_noop
-+
-+
-+# func_convert_path_msys_to_w32 ARG
-+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
-+# conversion to w32 is not available inside the cwrapper.  Returns result in
-+# func_to_host_path_result.
-+func_convert_path_msys_to_w32 ()
-+{
-+  $opt_debug
-+  func_to_host_path_result="$1"
-+  if test -n "$1"; then
-+    # Remove leading and trailing path separator characters from ARG.  MSYS
-+    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
-+    # and winepath ignores them completely.
-+    func_stripname : : "$1"
-+    func_to_host_path_tmp1=$func_stripname_result
-+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-+    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
-+    func_convert_path_check : ";" \
-+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-+  fi
-+}
-+# end func_convert_path_msys_to_w32
-+
-+
-+# func_convert_path_cygwin_to_w32 ARG
-+# Convert path ARG from Cygwin to w32 format.  Returns result in
-+# func_to_host_file_result.
-+func_convert_path_cygwin_to_w32 ()
-+{
-+  $opt_debug
-+  func_to_host_path_result="$1"
-+  if test -n "$1"; then
-+    # See func_convert_path_msys_to_w32:
-+    func_stripname : : "$1"
-+    func_to_host_path_tmp1=$func_stripname_result
-+    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
-+    func_convert_path_check : ";" \
-+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-+  fi
-+}
-+# end func_convert_path_cygwin_to_w32
-+
-+
-+# func_convert_path_nix_to_w32 ARG
-+# Convert path ARG from *nix to w32 format.  Requires a wine environment and
-+# a working winepath.  Returns result in func_to_host_file_result.
-+func_convert_path_nix_to_w32 ()
-+{
-+  $opt_debug
-+  func_to_host_path_result="$1"
-+  if test -n "$1"; then
-+    # See func_convert_path_msys_to_w32:
-+    func_stripname : : "$1"
-+    func_to_host_path_tmp1=$func_stripname_result
-+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-+    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
-+    func_convert_path_check : ";" \
-+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-+  fi
-+}
-+# end func_convert_path_nix_to_w32
-+
-+
-+# func_convert_path_msys_to_cygwin ARG
-+# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
-+# Returns result in func_to_host_file_result.
-+func_convert_path_msys_to_cygwin ()
-+{
-+  $opt_debug
-+  func_to_host_path_result="$1"
-+  if test -n "$1"; then
-+    # See func_convert_path_msys_to_w32:
-+    func_stripname : : "$1"
-+    func_to_host_path_tmp1=$func_stripname_result
-+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-+    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
-+    func_to_host_path_result="$func_cygpath_result"
-+    func_convert_path_check : : \
-+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-+  fi
-+}
-+# end func_convert_path_msys_to_cygwin
-+
-+
-+# func_convert_path_nix_to_cygwin ARG
-+# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
-+# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
-+# func_to_host_file_result.
-+func_convert_path_nix_to_cygwin ()
-+{
-+  $opt_debug
-+  func_to_host_path_result="$1"
-+  if test -n "$1"; then
-+    # Remove leading and trailing path separator characters from
-+    # ARG. msys behavior is inconsistent here, cygpath turns them
-+    # into '.;' and ';.', and winepath ignores them completely.
-+    func_stripname : : "$1"
-+    func_to_host_path_tmp1=$func_stripname_result
-+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-+    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
-+    func_to_host_path_result="$func_cygpath_result"
-+    func_convert_path_check : : \
-+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-+  fi
-+}
-+# end func_convert_path_nix_to_cygwin
-+
-+
- # func_mode_compile arg...
- func_mode_compile ()
- {
-     $opt_debug
-     # Get the compilation command and the source file.
-     base_compile=
-     srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
-     suppress_opt=yes
-@@ -1132,22 +1981,22 @@ func_mode_compile ()
- 	-o)
- 	  test -n "$libobj" && \
- 	    func_fatal_error "you cannot specify \`-o' more than once"
- 	  arg_mode=target
- 	  continue
- 	  ;;
- 
- 	-pie | -fpie | -fPIE)
--          pie_flag="$pie_flag $arg"
-+          func_append pie_flag " $arg"
- 	  continue
- 	  ;;
- 
- 	-shared | -static | -prefer-pic | -prefer-non-pic)
--	  later="$later $arg"
-+	  func_append later " $arg"
- 	  continue
- 	  ;;
- 
- 	-no-suppress)
- 	  suppress_opt=no
- 	  continue
- 	  ;;
- 
-@@ -1158,42 +2007,40 @@ func_mode_compile ()
- 
- 	-Wc,*)
- 	  func_stripname '-Wc,' '' "$arg"
- 	  args=$func_stripname_result
- 	  lastarg=
- 	  save_ifs="$IFS"; IFS=','
- 	  for arg in $args; do
- 	    IFS="$save_ifs"
--	    func_quote_for_eval "$arg"
--	    lastarg="$lastarg $func_quote_for_eval_result"
-+	    func_append_quoted lastarg "$arg"
- 	  done
- 	  IFS="$save_ifs"
- 	  func_stripname ' ' '' "$lastarg"
- 	  lastarg=$func_stripname_result
- 
- 	  # Add the arguments to base_compile.
--	  base_compile="$base_compile $lastarg"
-+	  func_append base_compile " $lastarg"
- 	  continue
- 	  ;;
- 
- 	*)
- 	  # Accept the current argument as the source file.
- 	  # The previous "srcfile" becomes the current argument.
- 	  #
- 	  lastarg="$srcfile"
- 	  srcfile="$arg"
- 	  ;;
- 	esac  #  case $arg
- 	;;
-       esac    #  case $arg_mode
- 
-       # Aesthetically quote the previous argument.
--      func_quote_for_eval "$lastarg"
--      base_compile="$base_compile $func_quote_for_eval_result"
-+      func_append_quoted base_compile "$lastarg"
-     done # for arg
- 
-     case $arg_mode in
-     arg)
-       func_fatal_error "you must specify an argument for -Xcompile"
-       ;;
-     target)
-       func_fatal_error "you must specify a target with \`-o'"
-@@ -1208,17 +2055,17 @@ func_mode_compile ()
-     esac
- 
-     # Recognize several different file suffixes.
-     # If the user specifies -o file.o, it is replaced with file.lo
-     case $libobj in
-     *.[cCFSifmso] | \
-     *.ada | *.adb | *.ads | *.asm | \
-     *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
--    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
-+    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
-       func_xform "$libobj"
-       libobj=$func_xform_result
-       ;;
-     esac
- 
-     case $libobj in
-     *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
-     *)
-@@ -1283,17 +2130,17 @@ func_mode_compile ()
-     if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
-       # non-PIC code in shared libraries is not supported
-       pic_mode=default
-     fi
- 
-     # Calculate the filename of the output object if compiler does
-     # not support -o with -c
-     if test "$compiler_c_o" = no; then
--      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
-+      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
-       lockfile="$output_obj.lock"
-     else
-       output_obj=
-       need_locks=no
-       lockfile=
-     fi
- 
-     # Lock this critical section if it is needed
-@@ -1314,27 +2161,26 @@ temporary object file, and libtool could
- your compiler does not support \`-c' and \`-o' together.  If you
- repeat this compilation, it may succeed, by chance, but you had better
- avoid parallel builds (make -j) in this platform, or get a better
- compiler."
- 
- 	$opt_dry_run || $RM $removelist
- 	exit $EXIT_FAILURE
-       fi
--      removelist="$removelist $output_obj"
-+      func_append removelist " $output_obj"
-       $ECHO "$srcfile" > "$lockfile"
-     fi
- 
-     $opt_dry_run || $RM $removelist
--    removelist="$removelist $lockfile"
-+    func_append removelist " $lockfile"
-     trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
- 
--    if test -n "$fix_srcfile_path"; then
--      eval srcfile=\"$fix_srcfile_path\"
--    fi
-+    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
-+    srcfile=$func_to_tool_file_result
-     func_quote_for_eval "$srcfile"
-     qsrcfile=$func_quote_for_eval_result
- 
-     # Only build a PIC object if we are building libtool libraries.
-     if test "$build_libtool_libs" = yes; then
-       # Without this assignment, base_compile gets emptied.
-       fbsd_hideous_sh_bug=$base_compile
- 
-@@ -1344,17 +2190,17 @@ compiler."
- 	# Don't build PIC code
- 	command="$base_compile $qsrcfile"
-       fi
- 
-       func_mkdir_p "$xdir$objdir"
- 
-       if test -z "$output_obj"; then
- 	# Place PIC objects in $objdir
--	command="$command -o $lobj"
-+	func_append command " -o $lobj"
-       fi
- 
-       func_show_eval_locale "$command"	\
-           'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
- 
-       if test "$need_locks" = warn &&
- 	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
- 	$ECHO "\
-@@ -1391,21 +2237,21 @@ compiler."
-     if test "$build_old_libs" = yes; then
-       if test "$pic_mode" != yes; then
- 	# Don't build PIC code
- 	command="$base_compile $qsrcfile$pie_flag"
-       else
- 	command="$base_compile $qsrcfile $pic_flag"
-       fi
-       if test "$compiler_c_o" = yes; then
--	command="$command -o $obj"
-+	func_append command " -o $obj"
-       fi
- 
-       # Suppress compiler output if we already did a PIC compilation.
--      command="$command$suppress_output"
-+      func_append command "$suppress_output"
-       func_show_eval_locale "$command" \
-         '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
- 
-       if test "$need_locks" = warn &&
- 	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
- 	$ECHO "\
- *** ERROR, $lockfile contains:
- `cat $lockfile 2>/dev/null`
-@@ -1440,23 +2286,23 @@ compiler."
-         $RM "$lockfile"
-       fi
-     }
- 
-     exit $EXIT_SUCCESS
- }
- 
- $opt_help || {
--test "$mode" = compile && func_mode_compile ${1+"$@"}
-+  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
- }
- 
- func_mode_help ()
- {
-     # We need to display help for each of the modes.
--    case $mode in
-+    case $opt_mode in
-       "")
-         # Generic help is extracted from the usage comments
-         # at the start of this file.
-         func_help
-         ;;
- 
-       clean)
-         $ECHO \
-@@ -1477,20 +2323,21 @@ with it are deleted. Otherwise, only FIL
- "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
- 
- Compile a source file into a libtool library object.
- 
- This mode accepts the following additional options:
- 
-   -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
-   -no-suppress      do not suppress compiler output for multiple passes
--  -prefer-pic       try to building PIC objects only
--  -prefer-non-pic   try to building non-PIC objects only
-+  -prefer-pic       try to build PIC objects only
-+  -prefer-non-pic   try to build non-PIC objects only
-   -shared           do not build a \`.o' file suitable for static linking
-   -static           only build a \`.o' file suitable for static linking
-+  -Wc,FLAG          pass FLAG directly to the compiler
- 
- COMPILE-COMMAND is a command to be used in creating a \`standard' object file
- from the given SOURCEFILE.
- 
- The output file name is determined by removing the directory component from
- SOURCEFILE, then substituting the C source code suffix \`.c' with the
- library object suffix, \`.lo'."
-         ;;
-@@ -1533,17 +2380,17 @@ the \`--dry-run' option if you just want
- 
- Install executables or libraries.
- 
- INSTALL-COMMAND is the installation command.  The first component should be
- either the \`install' or \`cp' program.
- 
- The following components of INSTALL-COMMAND are treated specially:
- 
--  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
-+  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
- 
- The rest of the components are interpreted as arguments to that command (only
- BSD-compatible install options are recognized)."
-         ;;
- 
-       link)
-         $ECHO \
- "Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
-@@ -1553,16 +2400,18 @@ create an executable program.
- 
- LINK-COMMAND is a command using the C compiler that you would use to create
- a program from several object files.
- 
- The following components of LINK-COMMAND are treated specially:
- 
-   -all-static       do not do any dynamic linking at all
-   -avoid-version    do not add a version suffix if possible
-+  -bindir BINDIR    specify path to binaries directory (for systems where
-+                    libraries must be found in the PATH setting at runtime)
-   -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
-   -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
-   -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-   -export-symbols SYMFILE
-                     try to export only the symbols listed in SYMFILE
-   -export-symbols-regex REGEX
-                     try to export only the symbols matching REGEX
-   -LLIBDIR          search LIBDIR for required installed libraries
-@@ -1581,16 +2430,21 @@ The following components of LINK-COMMAND
-   -shared           only do dynamic linking of libtool libraries
-   -shrext SUFFIX    override the standard shared library file extension
-   -static           do not do any dynamic linking of uninstalled libtool libraries
-   -static-libtool-libs
-                     do not do any dynamic linking of libtool libraries
-   -version-info CURRENT[:REVISION[:AGE]]
-                     specify library version info [each variable defaults to 0]
-   -weak LIBNAME     declare that the target provides the LIBNAME interface
-+  -Wc,FLAG
-+  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
-+  -Wl,FLAG
-+  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
-+  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
- 
- All other options (arguments beginning with \`-') are ignored.
- 
- Every other argument is treated as a filename.  Files ending in \`.la' are
- treated as uninstalled libtool libraries, other files are standard or library
- object files.
- 
- If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-@@ -1614,47 +2468,76 @@ RM is the name of the program to use to 
- (typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
- to RM.
- 
- If FILE is a libtool library, all the files associated with it are deleted.
- Otherwise, only FILE itself is deleted using RM."
-         ;;
- 
-       *)
--        func_fatal_help "invalid operation mode \`$mode'"
-+        func_fatal_help "invalid operation mode \`$opt_mode'"
-         ;;
-     esac
- 
--    $ECHO
-+    echo
-     $ECHO "Try \`$progname --help' for more information about other modes."
--
--    exit $?
--}
--
--  # Now that we've collected a possible --mode arg, show help if necessary
--  $opt_help && func_mode_help
-+}
-+
-+# Now that we've collected a possible --mode arg, show help if necessary
-+if $opt_help; then
-+  if test "$opt_help" = :; then
-+    func_mode_help
-+  else
-+    {
-+      func_help noexit
-+      for opt_mode in compile link execute install finish uninstall clean; do
-+	func_mode_help
-+      done
-+    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
-+    {
-+      func_help noexit
-+      for opt_mode in compile link execute install finish uninstall clean; do
-+	echo
-+	func_mode_help
-+      done
-+    } |
-+    sed '1d
-+      /^When reporting/,/^Report/{
-+	H
-+	d
-+      }
-+      $x
-+      /information about other modes/d
-+      /more detailed .*MODE/d
-+      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
-+  fi
-+  exit $?
-+fi
- 
- 
- # func_mode_execute arg...
- func_mode_execute ()
- {
-     $opt_debug
-     # The first argument is the command name.
-     cmd="$nonopt"
-     test -z "$cmd" && \
-       func_fatal_help "you must specify a COMMAND"
- 
-     # Handle -dlopen flags immediately.
--    for file in $execute_dlfiles; do
-+    for file in $opt_dlopen; do
-       test -f "$file" \
- 	|| func_fatal_help "\`$file' is not a file"
- 
-       dir=
-       case $file in
-       *.la)
-+	func_resolve_sysroot "$file"
-+	file=$func_resolve_sysroot_result
-+
- 	# Check to see that this really is a libtool archive.
- 	func_lalib_unsafe_p "$file" \
- 	  || func_fatal_help "\`$lib' is not a valid libtool archive"
- 
- 	# Read the libtool library.
- 	dlname=
- 	library_names=
- 	func_source "$file"
-@@ -1666,17 +2549,17 @@ func_mode_execute ()
- 	    func_warning "\`$file' was not linked with \`-export-dynamic'"
- 	  continue
- 	fi
- 
- 	func_dirname "$file" "" "."
- 	dir="$func_dirname_result"
- 
- 	if test -f "$dir/$objdir/$dlname"; then
--	  dir="$dir/$objdir"
-+	  func_append dir "/$objdir"
- 	else
- 	  if test ! -f "$dir/$dlname"; then
- 	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
- 	  fi
- 	fi
- 	;;
- 
-       *.lo)
-@@ -1707,34 +2590,33 @@ func_mode_execute ()
-     # rather than running their programs.
-     libtool_execute_magic="$magic"
- 
-     # Check if any of the arguments is a wrapper script.
-     args=
-     for file
-     do
-       case $file in
--      -*) ;;
-+      -* | *.la | *.lo ) ;;
-       *)
- 	# Do a test to see if this is really a libtool program.
- 	if func_ltwrapper_script_p "$file"; then
- 	  func_source "$file"
- 	  # Transform arg to wrapped name.
- 	  file="$progdir/$program"
- 	elif func_ltwrapper_executable_p "$file"; then
- 	  func_ltwrapper_scriptname "$file"
- 	  func_source "$func_ltwrapper_scriptname_result"
- 	  # Transform arg to wrapped name.
- 	  file="$progdir/$program"
- 	fi
- 	;;
-       esac
-       # Quote arguments (to preserve shell metacharacters).
--      func_quote_for_eval "$file"
--      args="$args $func_quote_for_eval_result"
-+      func_append_quoted args "$file"
-     done
- 
-     if test "X$opt_dry_run" = Xfalse; then
-       if test -n "$shlibpath_var"; then
- 	# Export the shlibpath_var.
- 	eval "export $shlibpath_var"
-       fi
- 
-@@ -1749,185 +2631,245 @@ func_mode_execute ()
-       done
- 
-       # Now prepare to actually exec the command.
-       exec_cmd="\$cmd$args"
-     else
-       # Display what would be done.
-       if test -n "$shlibpath_var"; then
- 	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
--	$ECHO "export $shlibpath_var"
-+	echo "export $shlibpath_var"
-       fi
-       $ECHO "$cmd$args"
-       exit $EXIT_SUCCESS
-     fi
- }
- 
--test "$mode" = execute && func_mode_execute ${1+"$@"}
-+test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
- 
- 
- # func_mode_finish arg...
- func_mode_finish ()
- {
-     $opt_debug
--    libdirs="$nonopt"
-+    libs=
-+    libdirs=
-     admincmds=
- 
-+    for opt in "$nonopt" ${1+"$@"}
-+    do
-+      if test -d "$opt"; then
-+	func_append libdirs " $opt"
-+
-+      elif test -f "$opt"; then
-+	if func_lalib_unsafe_p "$opt"; then
-+	  func_append libs " $opt"
-+	else
-+	  func_warning "\`$opt' is not a valid libtool archive"
-+	fi
-+
-+      else
-+	func_fatal_error "invalid argument \`$opt'"
-+      fi
-+    done
-+
-+    if test -n "$libs"; then
-+      if test -n "$lt_sysroot"; then
-+        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
-+        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
-+      else
-+        sysroot_cmd=
-+      fi
-+
-+      # Remove sysroot references
-+      if $opt_dry_run; then
-+        for lib in $libs; do
-+          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
-+        done
-+      else
-+        tmpdir=`func_mktempdir`
-+        for lib in $libs; do
-+	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
-+	    > $tmpdir/tmp-la
-+	  mv -f $tmpdir/tmp-la $lib
-+	done
-+        ${RM}r "$tmpdir"
-+      fi
-+    fi
-+
-     if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
--      for dir
--      do
--	libdirs="$libdirs $dir"
--      done
--
-       for libdir in $libdirs; do
- 	if test -n "$finish_cmds"; then
- 	  # Do each command in the finish commands.
- 	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
- '"$cmd"'"'
- 	fi
- 	if test -n "$finish_eval"; then
- 	  # Do the single finish_eval.
- 	  eval cmds=\"$finish_eval\"
--	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
-+	  $opt_dry_run || eval "$cmds" || func_append admincmds "
-        $cmds"
- 	fi
-       done
-     fi
- 
-     # Exit here if they wanted silent mode.
-     $opt_silent && exit $EXIT_SUCCESS
- 
--    $ECHO "X----------------------------------------------------------------------" | $Xsed
--    $ECHO "Libraries have been installed in:"
--    for libdir in $libdirs; do
--      $ECHO "   $libdir"
--    done
--    $ECHO
--    $ECHO "If you ever happen to want to link against installed libraries"
--    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
--    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
--    $ECHO "flag during linking and do at least one of the following:"
--    if test -n "$shlibpath_var"; then
--      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
--      $ECHO "     during execution"
-+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-+      echo "----------------------------------------------------------------------"
-+      echo "Libraries have been installed in:"
-+      for libdir in $libdirs; do
-+	$ECHO "   $libdir"
-+      done
-+      echo
-+      echo "If you ever happen to want to link against installed libraries"
-+      echo "in a given directory, LIBDIR, you must either use libtool, and"
-+      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
-+      echo "flag during linking and do at least one of the following:"
-+      if test -n "$shlibpath_var"; then
-+	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
-+	echo "     during execution"
-+      fi
-+      if test -n "$runpath_var"; then
-+	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
-+	echo "     during linking"
-+      fi
-+      if test -n "$hardcode_libdir_flag_spec"; then
-+	libdir=LIBDIR
-+	eval flag=\"$hardcode_libdir_flag_spec\"
-+
-+	$ECHO "   - use the \`$flag' linker flag"
-+      fi
-+      if test -n "$admincmds"; then
-+	$ECHO "   - have your system administrator run these commands:$admincmds"
-+      fi
-+      if test -f /etc/ld.so.conf; then
-+	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
-+      fi
-+      echo
-+
-+      echo "See any operating system documentation about shared libraries for"
-+      case $host in
-+	solaris2.[6789]|solaris2.1[0-9])
-+	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
-+	  echo "pages."
-+	  ;;
-+	*)
-+	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
-+	  ;;
-+      esac
-+      echo "----------------------------------------------------------------------"
-     fi
--    if test -n "$runpath_var"; then
--      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
--      $ECHO "     during linking"
--    fi
--    if test -n "$hardcode_libdir_flag_spec"; then
--      libdir=LIBDIR
--      eval flag=\"$hardcode_libdir_flag_spec\"
--
--      $ECHO "   - use the \`$flag' linker flag"
--    fi
--    if test -n "$admincmds"; then
--      $ECHO "   - have your system administrator run these commands:$admincmds"
--    fi
--    if test -f /etc/ld.so.conf; then
--      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
--    fi
--    $ECHO
--
--    $ECHO "See any operating system documentation about shared libraries for"
--    case $host in
--      solaris2.[6789]|solaris2.1[0-9])
--        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
--	$ECHO "pages."
--	;;
--      *)
--        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
--        ;;
--    esac
--    $ECHO "X----------------------------------------------------------------------" | $Xsed
-     exit $EXIT_SUCCESS
- }
- 
--test "$mode" = finish && func_mode_finish ${1+"$@"}
-+test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
- 
- 
- # func_mode_install arg...
- func_mode_install ()
- {
-     $opt_debug
-     # There may be an optional sh(1) argument at the beginning of
-     # install_prog (especially on Windows NT).
-     if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
-        # Allow the use of GNU shtool's install command.
--       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
-+       case $nonopt in *shtool*) :;; *) false;; esac; then
-       # Aesthetically quote it.
-       func_quote_for_eval "$nonopt"
-       install_prog="$func_quote_for_eval_result "
-       arg=$1
-       shift
-     else
-       install_prog=
-       arg=$nonopt
-     fi
- 
-     # The real first argument should be the name of the installation program.
-     # Aesthetically quote it.
-     func_quote_for_eval "$arg"
--    install_prog="$install_prog$func_quote_for_eval_result"
-+    func_append install_prog "$func_quote_for_eval_result"
-+    install_shared_prog=$install_prog
-+    case " $install_prog " in
-+      *[\\\ /]cp\ *) install_cp=: ;;
-+      *) install_cp=false ;;
-+    esac
- 
-     # We need to accept at least all the BSD install flags.
-     dest=
-     files=
-     opts=
-     prev=
-     install_type=
-     isdir=no
-     stripme=
-+    no_mode=:
-     for arg
-     do
-+      arg2=
-       if test -n "$dest"; then
--	files="$files $dest"
-+	func_append files " $dest"
- 	dest=$arg
- 	continue
-       fi
- 
-       case $arg in
-       -d) isdir=yes ;;
-       -f)
--	case " $install_prog " in
--	*[\\\ /]cp\ *) ;;
--	*) prev=$arg ;;
--	esac
-+	if $install_cp; then :; else
-+	  prev=$arg
-+	fi
- 	;;
-       -g | -m | -o)
- 	prev=$arg
- 	;;
-       -s)
- 	stripme=" -s"
- 	continue
- 	;;
-       -*)
- 	;;
-       *)
- 	# If the previous option needed an argument, then skip it.
- 	if test -n "$prev"; then
-+	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
-+	    arg2=$install_override_mode
-+	    no_mode=false
-+	  fi
- 	  prev=
- 	else
- 	  dest=$arg
- 	  continue
- 	fi
- 	;;
-       esac
- 
-       # Aesthetically quote the argument.
-       func_quote_for_eval "$arg"
--      install_prog="$install_prog $func_quote_for_eval_result"
-+      func_append install_prog " $func_quote_for_eval_result"
-+      if test -n "$arg2"; then
-+	func_quote_for_eval "$arg2"
-+      fi
-+      func_append install_shared_prog " $func_quote_for_eval_result"
-     done
- 
-     test -z "$install_prog" && \
-       func_fatal_help "you must specify an install program"
- 
-     test -n "$prev" && \
-       func_fatal_help "the \`$prev' option requires an argument"
- 
-+    if test -n "$install_override_mode" && $no_mode; then
-+      if $install_cp; then :; else
-+	func_quote_for_eval "$install_override_mode"
-+	func_append install_shared_prog " -m $func_quote_for_eval_result"
-+      fi
-+    fi
-+
-     if test -z "$files"; then
-       if test -z "$dest"; then
- 	func_fatal_help "no file or destination specified"
-       else
- 	func_fatal_help "you must specify a destination"
-       fi
-     fi
- 
-@@ -1972,65 +2914,68 @@ func_mode_install ()
-     future_libdirs=
-     current_libdirs=
-     for file in $files; do
- 
-       # Do each installation.
-       case $file in
-       *.$libext)
- 	# Do the static libraries later.
--	staticlibs="$staticlibs $file"
-+	func_append staticlibs " $file"
- 	;;
- 
-       *.la)
-+	func_resolve_sysroot "$file"
-+	file=$func_resolve_sysroot_result
-+
- 	# Check to see that this really is a libtool archive.
- 	func_lalib_unsafe_p "$file" \
- 	  || func_fatal_help "\`$file' is not a valid libtool archive"
- 
- 	library_names=
- 	old_library=
- 	relink_command=
- 	func_source "$file"
- 
- 	# Add the libdir to current_libdirs if it is the destination.
- 	if test "X$destdir" = "X$libdir"; then
- 	  case "$current_libdirs " in
- 	  *" $libdir "*) ;;
--	  *) current_libdirs="$current_libdirs $libdir" ;;
-+	  *) func_append current_libdirs " $libdir" ;;
- 	  esac
- 	else
- 	  # Note the libdir as a future libdir.
- 	  case "$future_libdirs " in
- 	  *" $libdir "*) ;;
--	  *) future_libdirs="$future_libdirs $libdir" ;;
-+	  *) func_append future_libdirs " $libdir" ;;
- 	  esac
- 	fi
- 
- 	func_dirname "$file" "/" ""
- 	dir="$func_dirname_result"
--	dir="$dir$objdir"
-+	func_append dir "$objdir"
- 
- 	if test -n "$relink_command"; then
- 	  # Determine the prefix the user has applied to our future dir.
--	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
-+	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
- 
- 	  # Don't allow the user to place us outside of our expected
- 	  # location b/c this prevents finding dependent libraries that
- 	  # are installed to the same prefix.
- 	  # At present, this check doesn't affect windows .dll's that
- 	  # are installed into $libdir/../bin (currently, that works fine)
- 	  # but it's something to keep an eye on.
- 	  test "$inst_prefix_dir" = "$destdir" && \
- 	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
- 
- 	  if test -n "$inst_prefix_dir"; then
- 	    # Stick the inst_prefix_dir data into the link command.
--	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
-+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
- 	  else
--	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
-+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
- 	  fi
- 
- 	  func_warning "relinking \`$file'"
- 	  func_show_eval "$relink_command" \
- 	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
- 	fi
- 
- 	# See the names of the shared library.
-@@ -2038,17 +2983,17 @@ func_mode_install ()
- 	if test -n "$1"; then
- 	  realname="$1"
- 	  shift
- 
- 	  srcname="$realname"
- 	  test -n "$relink_command" && srcname="$realname"T
- 
- 	  # Install the shared library and build the symlinks.
--	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
-+	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
- 	      'exit $?'
- 	  tstripme="$stripme"
- 	  case $host_os in
- 	  cygwin* | mingw* | pw32* | cegcc*)
- 	    case $realname in
- 	    *.dll.a)
- 	      tstripme=""
- 	      ;;
-@@ -2078,17 +3023,17 @@ func_mode_install ()
- 
- 	# Install the pseudo-library for information purposes.
- 	func_basename "$file"
- 	name="$func_basename_result"
- 	instname="$dir/$name"i
- 	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
- 
- 	# Maybe install the static library, too.
--	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
-+	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
- 	;;
- 
-       *.lo)
- 	# Install (i.e. copy) a libtool object.
- 
- 	# Figure out destination file name, if it wasn't already specified.
- 	if test -n "$destname"; then
- 	  destfile="$destdir/$destname"
-@@ -2178,17 +3123,17 @@ func_mode_install ()
- 
- 	  finalize=yes
- 	  for lib in $notinst_deplibs; do
- 	    # Check to see that each library is installed.
- 	    libdir=
- 	    if test -f "$lib"; then
- 	      func_source "$lib"
- 	    fi
--	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
-+	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
- 	    if test -n "$libdir" && test ! -f "$libfile"; then
- 	      func_warning "\`$lib' has not been installed in \`$libdir'"
- 	      finalize=no
- 	    fi
- 	  done
- 
- 	  relink_command=
- 	  func_source "$wrapper"
-@@ -2197,17 +3142,17 @@ func_mode_install ()
- 	  if test "$fast_install" = no && test -n "$relink_command"; then
- 	    $opt_dry_run || {
- 	      if test "$finalize" = yes; then
- 	        tmpdir=`func_mktempdir`
- 		func_basename "$file$stripped_ext"
- 		file="$func_basename_result"
- 	        outputname="$tmpdir/$file"
- 	        # Replace the output file specification.
--	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
-+	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
- 
- 	        $opt_silent || {
- 	          func_quote_for_expand "$relink_command"
- 		  eval "func_echo $func_quote_for_expand_result"
- 	        }
- 	        if eval "$relink_command"; then :
- 	          else
- 		  func_error "error: relink \`$file' with the above command before installing it"
-@@ -2216,17 +3161,17 @@ func_mode_install ()
- 	        fi
- 	        file="$outputname"
- 	      else
- 	        func_warning "cannot relink \`$file'"
- 	      fi
- 	    }
- 	  else
- 	    # Install the binary that we compiled earlier.
--	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
-+	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
- 	  fi
- 	fi
- 
- 	# remove .exe since cygwin /usr/bin/install will append another
- 	# one anyway
- 	case $install_prog,$host in
- 	*/usr/bin/install*,*cygwin*)
- 	  case $file:$destfile in
-@@ -2252,21 +3197,23 @@ func_mode_install ()
-     done
- 
-     for file in $staticlibs; do
-       func_basename "$file"
-       name="$func_basename_result"
- 
-       # Set up the ranlib parameters.
-       oldlib="$destdir/$name"
-+      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-+      tool_oldlib=$func_to_tool_file_result
- 
-       func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
- 
-       if test -n "$stripme" && test -n "$old_striplib"; then
--	func_show_eval "$old_striplib $oldlib" 'exit $?'
-+	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
-       fi
- 
-       # Do each command in the postinstall commands.
-       func_execute_cmds "$old_postinstall_cmds" 'exit $?'
-     done
- 
-     test -n "$future_libdirs" && \
-       func_warning "remember to run \`$progname --finish$future_libdirs'"
-@@ -2275,17 +3222,17 @@ func_mode_install ()
-       # Maybe just do a dry run.
-       $opt_dry_run && current_libdirs=" -n$current_libdirs"
-       exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
-     else
-       exit $EXIT_SUCCESS
-     fi
- }
- 
--test "$mode" = install && func_mode_install ${1+"$@"}
-+test "$opt_mode" = install && func_mode_install ${1+"$@"}
- 
- 
- # func_generate_dlsyms outputname originator pic_p
- # Extract symbols from dlprefiles and create ${outputname}S.o with
- # a dlpreopen symbol table.
- func_generate_dlsyms ()
- {
-     $opt_debug
-@@ -2318,29 +3265,46 @@ func_generate_dlsyms ()
- 	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
- /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
- /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
- 
- #ifdef __cplusplus
- extern \"C\" {
- #endif
- 
-+#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
-+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
-+#endif
-+
-+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-+/* DATA imports from DLLs on WIN32 con't be const, because runtime
-+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-+# define LT_DLSYM_CONST
-+#elif defined(__osf__)
-+/* This system does not cope well with relocations in const data.  */
-+# define LT_DLSYM_CONST
-+#else
-+# define LT_DLSYM_CONST const
-+#endif
-+
- /* External symbol declarations for the compiler. */\
- "
- 
- 	if test "$dlself" = yes; then
- 	  func_verbose "generating symbol list for \`$output'"
- 
- 	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
- 
- 	  # Add our own program objects to the symbol list.
--	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-+	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
- 	  for progfile in $progfiles; do
--	    func_verbose "extracting global C symbols from \`$progfile'"
--	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
-+	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
-+	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
-+	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
- 	  done
- 
- 	  if test -n "$exclude_expsyms"; then
- 	    $opt_dry_run || {
- 	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
- 	      eval '$MV "$nlist"T "$nlist"'
- 	    }
- 	  fi
-@@ -2366,33 +3330,75 @@ extern \"C\" {
- 	      esac
- 	    }
- 	  else
- 	    $opt_dry_run || {
- 	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
- 	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
- 	      eval '$MV "$nlist"T "$nlist"'
- 	      case $host in
--	        *cygwin | *mingw* | *cegcc* )
-+	        *cygwin* | *mingw* | *cegcc* )
- 	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
- 	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
- 	          ;;
- 	      esac
- 	    }
- 	  fi
- 	fi
- 
- 	for dlprefile in $dlprefiles; do
- 	  func_verbose "extracting global C symbols from \`$dlprefile'"
- 	  func_basename "$dlprefile"
- 	  name="$func_basename_result"
--	  $opt_dry_run || {
--	    eval '$ECHO ": $name " >> "$nlist"'
--	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
--	  }
-+          case $host in
-+	    *cygwin* | *mingw* | *cegcc* )
-+	      # if an import library, we need to obtain dlname
-+	      if func_win32_import_lib_p "$dlprefile"; then
-+	        func_tr_sh "$dlprefile"
-+	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
-+	        dlprefile_dlbasename=""
-+	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
-+	          # Use subshell, to avoid clobbering current variable values
-+	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
-+	          if test -n "$dlprefile_dlname" ; then
-+	            func_basename "$dlprefile_dlname"
-+	            dlprefile_dlbasename="$func_basename_result"
-+	          else
-+	            # no lafile. user explicitly requested -dlpreopen <import library>.
-+	            $sharedlib_from_linklib_cmd "$dlprefile"
-+	            dlprefile_dlbasename=$sharedlib_from_linklib_result
-+	          fi
-+	        fi
-+	        $opt_dry_run || {
-+	          if test -n "$dlprefile_dlbasename" ; then
-+	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
-+	          else
-+	            func_warning "Could not compute DLL name from $name"
-+	            eval '$ECHO ": $name " >> "$nlist"'
-+	          fi
-+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
-+	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
-+	        }
-+	      else # not an import lib
-+	        $opt_dry_run || {
-+	          eval '$ECHO ": $name " >> "$nlist"'
-+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-+	        }
-+	      fi
-+	    ;;
-+	    *)
-+	      $opt_dry_run || {
-+	        eval '$ECHO ": $name " >> "$nlist"'
-+	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-+	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-+	      }
-+	    ;;
-+          esac
- 	done
- 
- 	$opt_dry_run || {
- 	  # Make sure we have at least an empty file.
- 	  test -f "$nlist" || : > "$nlist"
- 
- 	  if test -n "$exclude_expsyms"; then
- 	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
-@@ -2410,59 +3416,42 @@ extern \"C\" {
- 	    :
- 	  else
- 	    $GREP -v "^: " < "$nlist" > "$nlist"S
- 	  fi
- 
- 	  if test -f "$nlist"S; then
- 	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
- 	  else
--	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
-+	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
- 	  fi
- 
--	  $ECHO >> "$output_objdir/$my_dlsyms" "\
-+	  echo >> "$output_objdir/$my_dlsyms" "\
- 
- /* The mapping between symbol names and symbols.  */
- typedef struct {
-   const char *name;
-   void *address;
- } lt_dlsymlist;
--"
--	  case $host in
--	  *cygwin* | *mingw* | *cegcc* )
--	    $ECHO >> "$output_objdir/$my_dlsyms" "\
--/* DATA imports from DLLs on WIN32 con't be const, because
--   runtime relocations are performed -- see ld's documentation
--   on pseudo-relocs.  */"
--	    lt_dlsym_const= ;;
--	  *osf5*)
--	    echo >> "$output_objdir/$my_dlsyms" "\
--/* This system does not cope well with relocations in const data */"
--	    lt_dlsym_const= ;;
--	  *)
--	    lt_dlsym_const=const ;;
--	  esac
--
--	  $ECHO >> "$output_objdir/$my_dlsyms" "\
--extern $lt_dlsym_const lt_dlsymlist
-+extern LT_DLSYM_CONST lt_dlsymlist
- lt_${my_prefix}_LTX_preloaded_symbols[];
--$lt_dlsym_const lt_dlsymlist
-+LT_DLSYM_CONST lt_dlsymlist
- lt_${my_prefix}_LTX_preloaded_symbols[] =
- {\
-   { \"$my_originator\", (void *) 0 },"
- 
- 	  case $need_lib_prefix in
- 	  no)
- 	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
- 	    ;;
- 	  *)
- 	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
- 	    ;;
- 	  esac
--	  $ECHO >> "$output_objdir/$my_dlsyms" "\
-+	  echo >> "$output_objdir/$my_dlsyms" "\
-   {0, (void *) 0}
- };
- 
- /* This works around a problem in FreeBSD linker */
- #ifdef FREEBSD_WORKAROUND
- static const void *lt_preloaded_setup() {
-   return lt_${my_prefix}_LTX_preloaded_symbols;
- }
-@@ -2479,94 +3468,97 @@ static const void *lt_preloaded_setup() 
- 	*" -static "*) ;;
- 	*)
- 	  case $host in
- 	  # compiling the symbol table file with pic_flag works around
- 	  # a FreeBSD bug that causes programs to crash when -lm is
- 	  # linked before any other PIC object.  But we must not use
- 	  # pic_flag when linking with -static.  The problem exists in
- 	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
--	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
-+	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
- 	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
- 	  *-*-hpux*)
- 	    pic_flag_for_symtable=" $pic_flag"  ;;
- 	  *)
- 	    if test "X$my_pic_p" != Xno; then
- 	      pic_flag_for_symtable=" $pic_flag"
- 	    fi
- 	    ;;
- 	  esac
- 	  ;;
- 	esac
- 	symtab_cflags=
- 	for arg in $LTCFLAGS; do
- 	  case $arg in
- 	  -pie | -fpie | -fPIE) ;;
--	  *) symtab_cflags="$symtab_cflags $arg" ;;
-+	  *) func_append symtab_cflags " $arg" ;;
- 	  esac
- 	done
- 
- 	# Now compile the dynamic symbol file.
- 	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
- 
- 	# Clean up the generated files.
- 	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
- 
- 	# Transform the symbol file into the correct name.
- 	symfileobj="$output_objdir/${my_outputname}S.$objext"
- 	case $host in
- 	*cygwin* | *mingw* | *cegcc* )
- 	  if test -f "$output_objdir/$my_outputname.def"; then
--	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
--	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
- 	  else
--	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
--	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
- 	  fi
- 	  ;;
- 	*)
--	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
--	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-+	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-+	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
- 	  ;;
- 	esac
- 	;;
-       *)
- 	func_fatal_error "unknown suffix for \`$my_dlsyms'"
- 	;;
-       esac
-     else
-       # We keep going just in case the user didn't refer to
-       # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
-       # really was required.
- 
-       # Nullify the symbol file.
--      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
--      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
-+      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
-+      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
-     fi
- }
- 
- # func_win32_libid arg
- # return the library type of file 'arg'
- #
- # Need a lot of goo to handle *both* DLLs and import libs
- # Has to be a shell function in order to 'eat' the argument
- # that is supplied when $file_magic_command is called.
-+# Despite the name, also deal with 64 bit binaries.
- func_win32_libid ()
- {
-   $opt_debug
-   win32_libid_type="unknown"
-   win32_fileres=`file -L $1 2>/dev/null`
-   case $win32_fileres in
-   *ar\ archive\ import\ library*) # definitely import
-     win32_libid_type="x86 archive import"
-     ;;
-   *ar\ archive*) # could be an import, or static
-+    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
-     if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
--       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
--      win32_nmres=`eval $NM -f posix -A $1 |
-+       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
-+      func_to_tool_file "$1" func_convert_file_msys_to_w32
-+      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
- 	$SED -n -e '
- 	    1,100{
- 		/ I /{
- 		    s,.*,import,
- 		    p
- 		    q
- 		}
- 	    }'`
-@@ -2585,25 +3577,161 @@ func_win32_libid ()
-       win32_libid_type="x86 DLL"
-       ;;
-     esac
-     ;;
-   esac
-   $ECHO "$win32_libid_type"
- }
- 
-+# func_cygming_dll_for_implib ARG
-+#
-+# Platform-specific function to extract the
-+# name of the DLL associated with the specified
-+# import library ARG.
-+# Invoked by eval'ing the libtool variable
-+#    $sharedlib_from_linklib_cmd
-+# Result is available in the variable
-+#    $sharedlib_from_linklib_result
-+func_cygming_dll_for_implib ()
-+{
-+  $opt_debug
-+  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
-+}
-+
-+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
-+#
-+# The is the core of a fallback implementation of a
-+# platform-specific function to extract the name of the
-+# DLL associated with the specified import library LIBNAME.
-+#
-+# SECTION_NAME is either .idata$6 or .idata$7, depending
-+# on the platform and compiler that created the implib.
-+#
-+# Echos the name of the DLL associated with the
-+# specified import library.
-+func_cygming_dll_for_implib_fallback_core ()
-+{
-+  $opt_debug
-+  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
-+  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
-+    $SED '/^Contents of section '"$match_literal"':/{
-+      # Place marker at beginning of archive member dllname section
-+      s/.*/====MARK====/
-+      p
-+      d
-+    }
-+    # These lines can sometimes be longer than 43 characters, but
-+    # are always uninteresting
-+    /:[	 ]*file format pe[i]\{,1\}-/d
-+    /^In archive [^:]*:/d
-+    # Ensure marker is printed
-+    /^====MARK====/p
-+    # Remove all lines with less than 43 characters
-+    /^.\{43\}/!d
-+    # From remaining lines, remove first 43 characters
-+    s/^.\{43\}//' |
-+    $SED -n '
-+      # Join marker and all lines until next marker into a single line
-+      /^====MARK====/ b para
-+      H
-+      $ b para
-+      b
-+      :para
-+      x
-+      s/\n//g
-+      # Remove the marker
-+      s/^====MARK====//
-+      # Remove trailing dots and whitespace
-+      s/[\. \t]*$//
-+      # Print
-+      /./p' |
-+    # we now have a list, one entry per line, of the stringified
-+    # contents of the appropriate section of all members of the
-+    # archive which possess that section. Heuristic: eliminate
-+    # all those which have a first or second character that is
-+    # a '.' (that is, objdump's representation of an unprintable
-+    # character.) This should work for all archives with less than
-+    # 0x302f exports -- but will fail for DLLs whose name actually
-+    # begins with a literal '.' or a single character followed by
-+    # a '.'.
-+    #
-+    # Of those that remain, print the first one.
-+    $SED -e '/^\./d;/^.\./d;q'
-+}
-+
-+# func_cygming_gnu_implib_p ARG
-+# This predicate returns with zero status (TRUE) if
-+# ARG is a GNU/binutils-style import library. Returns
-+# with nonzero status (FALSE) otherwise.
-+func_cygming_gnu_implib_p ()
-+{
-+  $opt_debug
-+  func_to_tool_file "$1" func_convert_file_msys_to_w32
-+  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
-+  test -n "$func_cygming_gnu_implib_tmp"
-+}
-+
-+# func_cygming_ms_implib_p ARG
-+# This predicate returns with zero status (TRUE) if
-+# ARG is an MS-style import library. Returns
-+# with nonzero status (FALSE) otherwise.
-+func_cygming_ms_implib_p ()
-+{
-+  $opt_debug
-+  func_to_tool_file "$1" func_convert_file_msys_to_w32
-+  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
-+  test -n "$func_cygming_ms_implib_tmp"
-+}
-+
-+# func_cygming_dll_for_implib_fallback ARG
-+# Platform-specific function to extract the
-+# name of the DLL associated with the specified
-+# import library ARG.
-+#
-+# This fallback implementation is for use when $DLLTOOL
-+# does not support the --identify-strict option.
-+# Invoked by eval'ing the libtool variable
-+#    $sharedlib_from_linklib_cmd
-+# Result is available in the variable
-+#    $sharedlib_from_linklib_result
-+func_cygming_dll_for_implib_fallback ()
-+{
-+  $opt_debug
-+  if func_cygming_gnu_implib_p "$1" ; then
-+    # binutils import library
-+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
-+  elif func_cygming_ms_implib_p "$1" ; then
-+    # ms-generated import library
-+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
-+  else
-+    # unknown
-+    sharedlib_from_linklib_result=""
-+  fi
-+}
- 
- 
- # func_extract_an_archive dir oldlib
- func_extract_an_archive ()
- {
-     $opt_debug
-     f_ex_an_ar_dir="$1"; shift
-     f_ex_an_ar_oldlib="$1"
--    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
-+    if test "$lock_old_archive_extraction" = yes; then
-+      lockfile=$f_ex_an_ar_oldlib.lock
-+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-+	func_echo "Waiting for $lockfile to be removed"
-+	sleep 2
-+      done
-+    fi
-+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
-+		   'stat=$?; rm -f "$lockfile"; exit $stat'
-+    if test "$lock_old_archive_extraction" = yes; then
-+      $opt_dry_run || rm -f "$lockfile"
-+    fi
-     if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
-      :
-     else
-       func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
-     fi
- }
- 
- 
-@@ -2664,471 +3792,349 @@ func_extract_archives ()
- 	      cd "$darwin_curdir"
- 	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
- 	    done # $darwin_arches
-             ## Okay now we've a bunch of thin objects, gotta fatten them up :)
- 	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
- 	    darwin_file=
- 	    darwin_files=
- 	    for darwin_file in $darwin_filelist; do
--	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
-+	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
- 	      $LIPO -create -output "$darwin_file" $darwin_files
- 	    done # $darwin_filelist
- 	    $RM -rf unfat-$$
- 	    cd "$darwin_orig_dir"
- 	  else
- 	    cd $darwin_orig_dir
- 	    func_extract_an_archive "$my_xdir" "$my_xabs"
- 	  fi # $darwin_arches
- 	} # !$opt_dry_run
- 	;;
-       *)
-         func_extract_an_archive "$my_xdir" "$my_xabs"
- 	;;
-       esac
--      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
-+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
-     done
- 
-     func_extract_archives_result="$my_oldobjs"
- }
- 
- 
--
--# func_emit_wrapper_part1 [arg=no]
--#
--# Emit the first part of a libtool wrapper script on stdout.
--# For more information, see the description associated with
--# func_emit_wrapper(), below.
--func_emit_wrapper_part1 ()
--{
--	func_emit_wrapper_part1_arg1=no
--	if test -n "$1" ; then
--	  func_emit_wrapper_part1_arg1=$1
--	fi
--
--	$ECHO "\
--#! $SHELL
--
--# $output - temporary wrapper script for $objdir/$outputname
--# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
--#
--# The $output program cannot be directly executed until all the libtool
--# libraries that it depends on are installed.
--#
--# This wrapper script should never be moved out of the build directory.
--# If it is, it will not operate correctly.
--
--# Sed substitution that helps us do robust quoting.  It backslashifies
--# metacharacters that are still active within double-quoted strings.
--Xsed='${SED} -e 1s/^X//'
--sed_quote_subst='$sed_quote_subst'
--
--# Be Bourne compatible
--if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
--  emulate sh
--  NULLCMD=:
--  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
--  # is contrary to our usage.  Disable this feature.
--  alias -g '\${1+\"\$@\"}'='\"\$@\"'
--  setopt NO_GLOB_SUBST
--else
--  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
--fi
--BIN_SH=xpg4; export BIN_SH # for Tru64
--DUALCASE=1; export DUALCASE # for MKS sh
--
--# The HP-UX ksh and POSIX shell print the target directory to stdout
--# if CDPATH is set.
--(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
--
--relink_command=\"$relink_command\"
--
--# This environment variable determines our operation mode.
--if test \"\$libtool_install_magic\" = \"$magic\"; then
--  # install mode needs the following variables:
--  generated_by_libtool_version='$macro_version'
--  notinst_deplibs='$notinst_deplibs'
--else
--  # When we are sourced in execute mode, \$file and \$ECHO are already set.
--  if test \"\$libtool_execute_magic\" != \"$magic\"; then
--    ECHO=\"$qecho\"
--    file=\"\$0\"
--    # Make sure echo works.
--    if test \"X\$1\" = X--no-reexec; then
--      # Discard the --no-reexec flag, and continue.
--      shift
--    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
--      # Yippee, \$ECHO works!
--      :
--    else
--      # Restart under the correct shell, and then maybe \$ECHO will work.
--      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
--    fi
--  fi\
--"
--	$ECHO "\
--
--  # Find the directory that this script lives in.
--  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
--  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
--
--  # Follow symbolic links until we get to the real thisdir.
--  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
--  while test -n \"\$file\"; do
--    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
--
--    # If there was a directory component, then change thisdir.
--    if test \"x\$destdir\" != \"x\$file\"; then
--      case \"\$destdir\" in
--      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
--      *) thisdir=\"\$thisdir/\$destdir\" ;;
--      esac
--    fi
--
--    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
--    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
--  done
--"
--}
--# end: func_emit_wrapper_part1
--
--# func_emit_wrapper_part2 [arg=no]
--#
--# Emit the second part of a libtool wrapper script on stdout.
--# For more information, see the description associated with
--# func_emit_wrapper(), below.
--func_emit_wrapper_part2 ()
--{
--	func_emit_wrapper_part2_arg1=no
--	if test -n "$1" ; then
--	  func_emit_wrapper_part2_arg1=$1
--	fi
--
--	$ECHO "\
--
--  # Usually 'no', except on cygwin/mingw when embedded into
--  # the cwrapper.
--  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
--  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
--    # special case for '.'
--    if test \"\$thisdir\" = \".\"; then
--      thisdir=\`pwd\`
--    fi
--    # remove .libs from thisdir
--    case \"\$thisdir\" in
--    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
--    $objdir )   thisdir=. ;;
--    esac
--  fi
--
--  # Try to get the absolute directory name.
--  absdir=\`cd \"\$thisdir\" && pwd\`
--  test -n \"\$absdir\" && thisdir=\"\$absdir\"
--"
--
--	if test "$fast_install" = yes; then
--	  $ECHO "\
--  program=lt-'$outputname'$exeext
--  progdir=\"\$thisdir/$objdir\"
--
--  if test ! -f \"\$progdir/\$program\" ||
--     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
--       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
--
--    file=\"\$\$-\$program\"
--
--    if test ! -d \"\$progdir\"; then
--      $MKDIR \"\$progdir\"
--    else
--      $RM \"\$progdir/\$file\"
--    fi"
--
--	  $ECHO "\
--
--    # relink executable if necessary
--    if test -n \"\$relink_command\"; then
--      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
--      else
--	$ECHO \"\$relink_command_output\" >&2
--	$RM \"\$progdir/\$file\"
--	exit 1
--      fi
--    fi
--
--    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
--    { $RM \"\$progdir/\$program\";
--      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
--    $RM \"\$progdir/\$file\"
--  fi"
--	else
--	  $ECHO "\
--  program='$outputname'
--  progdir=\"\$thisdir/$objdir\"
--"
--	fi
--
--	$ECHO "\
--
--  if test -f \"\$progdir/\$program\"; then"
--
--	# Export our shlibpath_var if we have one.
--	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
--	  $ECHO "\
--    # Add our own library path to $shlibpath_var
--    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
--
--    # Some systems cannot cope with colon-terminated $shlibpath_var
--    # The second colon is a workaround for a bug in BeOS R4 sed
--    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
--
--    export $shlibpath_var
--"
--	fi
--
--	# fixup the dll searchpath if we need to.
--	if test -n "$dllsearchpath"; then
--	  $ECHO "\
--    # Add the dll search path components to the executable PATH
--    PATH=$dllsearchpath:\$PATH
--"
--	fi
--
--	$ECHO "\
--    if test \"\$libtool_execute_magic\" != \"$magic\"; then
--      # Run the actual program with our arguments.
--"
--	case $host in
--	# Backslashes separate directories on plain windows
--	*-*-mingw | *-*-os2* | *-cegcc*)
--	  $ECHO "\
--      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
--"
--	  ;;
--
--	*)
--	  $ECHO "\
--      exec \"\$progdir/\$program\" \${1+\"\$@\"}
--"
--	  ;;
--	esac
--	$ECHO "\
--      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
--      exit 1
--    fi
--  else
--    # The program doesn't exist.
--    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
--    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
--    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
--    exit 1
--  fi
--fi\
--"
--}
--# end: func_emit_wrapper_part2
--
--
- # func_emit_wrapper [arg=no]
- #
- # Emit a libtool wrapper script on stdout.
- # Don't directly open a file because we may want to
- # incorporate the script contents within a cygwin/mingw
- # wrapper executable.  Must ONLY be called from within
- # func_mode_link because it depends on a number of variables
- # set therein.
- #
- # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
- # variable will take.  If 'yes', then the emitted script
- # will assume that the directory in which it is stored is
- # the $objdir directory.  This is a cygwin/mingw-specific
- # behavior.
- func_emit_wrapper ()
- {
--	func_emit_wrapper_arg1=no
--	if test -n "$1" ; then
--	  func_emit_wrapper_arg1=$1
--	fi
--
--	# split this up so that func_emit_cwrapperexe_src
--	# can call each part independently.
--	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
--	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
--}
--
--
--# func_to_host_path arg
-+	func_emit_wrapper_arg1=${1-no}
-+
-+	$ECHO "\
-+#! $SHELL
-+
-+# $output - temporary wrapper script for $objdir/$outputname
-+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
- #
--# Convert paths to host format when used with build tools.
--# Intended for use with "native" mingw (where libtool itself
--# is running under the msys shell), or in the following cross-
--# build environments:
--#    $build          $host
--#    mingw (msys)    mingw  [e.g. native]
--#    cygwin          mingw
--#    *nix + wine     mingw
--# where wine is equipped with the `winepath' executable.
--# In the native mingw case, the (msys) shell automatically
--# converts paths for any non-msys applications it launches,
--# but that facility isn't available from inside the cwrapper.
--# Similar accommodations are necessary for $host mingw and
--# $build cygwin.  Calling this function does no harm for other
--# $host/$build combinations not listed above.
-+# The $output program cannot be directly executed until all the libtool
-+# libraries that it depends on are installed.
- #
--# ARG is the path (on $build) that should be converted to
--# the proper representation for $host. The result is stored
--# in $func_to_host_path_result.
--func_to_host_path ()
--{
--  func_to_host_path_result="$1"
--  if test -n "$1" ; then
--    case $host in
--      *mingw* )
--        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
--        case $build in
--          *mingw* ) # actually, msys
--            # awkward: cmd appends spaces to result
--            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
--            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
--              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
--            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
--              $SED -e "$lt_sed_naive_backslashify"`
--            ;;
--          *cygwin* )
--            func_to_host_path_tmp1=`cygpath -w "$1"`
--            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
--              $SED -e "$lt_sed_naive_backslashify"`
--            ;;
--          * )
--            # Unfortunately, winepath does not exit with a non-zero
--            # error code, so we are forced to check the contents of
--            # stdout. On the other hand, if the command is not
--            # found, the shell will set an exit code of 127 and print
--            # *an error message* to stdout. So we must check for both
--            # error code of zero AND non-empty stdout, which explains
--            # the odd construction:
--            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
--            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
--              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
--                $SED -e "$lt_sed_naive_backslashify"`
--            else
--              # Allow warning below.
--              func_to_host_path_result=""
--            fi
--            ;;
--        esac
--        if test -z "$func_to_host_path_result" ; then
--          func_error "Could not determine host path corresponding to"
--          func_error "  '$1'"
--          func_error "Continuing, but uninstalled executables may not work."
--          # Fallback:
--          func_to_host_path_result="$1"
--        fi
--        ;;
-+# This wrapper script should never be moved out of the build directory.
-+# If it is, it will not operate correctly.
-+
-+# Sed substitution that helps us do robust quoting.  It backslashifies
-+# metacharacters that are still active within double-quoted strings.
-+sed_quote_subst='$sed_quote_subst'
-+
-+# Be Bourne compatible
-+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
-+  emulate sh
-+  NULLCMD=:
-+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
-+  # is contrary to our usage.  Disable this feature.
-+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-+  setopt NO_GLOB_SUBST
-+else
-+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
-+fi
-+BIN_SH=xpg4; export BIN_SH # for Tru64
-+DUALCASE=1; export DUALCASE # for MKS sh
-+
-+# The HP-UX ksh and POSIX shell print the target directory to stdout
-+# if CDPATH is set.
-+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-+
-+relink_command=\"$relink_command\"
-+
-+# This environment variable determines our operation mode.
-+if test \"\$libtool_install_magic\" = \"$magic\"; then
-+  # install mode needs the following variables:
-+  generated_by_libtool_version='$macro_version'
-+  notinst_deplibs='$notinst_deplibs'
-+else
-+  # When we are sourced in execute mode, \$file and \$ECHO are already set.
-+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
-+    file=\"\$0\""
-+
-+    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
-+    $ECHO "\
-+
-+# A function that is used when there is no print builtin or printf.
-+func_fallback_echo ()
-+{
-+  eval 'cat <<_LTECHO_EOF
-+\$1
-+_LTECHO_EOF'
-+}
-+    ECHO=\"$qECHO\"
-+  fi
-+
-+# Very basic option parsing. These options are (a) specific to
-+# the libtool wrapper, (b) are identical between the wrapper
-+# /script/ and the wrapper /executable/ which is used only on
-+# windows platforms, and (c) all begin with the string "--lt-"
-+# (application programs are unlikely to have options which match
-+# this pattern).
-+#
-+# There are only two supported options: --lt-debug and
-+# --lt-dump-script. There is, deliberately, no --lt-help.
-+#
-+# The first argument to this parsing function should be the
-+# script's $0 value, followed by "$@".
-+lt_option_debug=
-+func_parse_lt_options ()
-+{
-+  lt_script_arg0=\$0
-+  shift
-+  for lt_opt
-+  do
-+    case \"\$lt_opt\" in
-+    --lt-debug) lt_option_debug=1 ;;
-+    --lt-dump-script)
-+        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
-+        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
-+        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
-+        cat \"\$lt_dump_D/\$lt_dump_F\"
-+        exit 0
-+      ;;
-+    --lt-*)
-+        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
-+        exit 1
-+      ;;
-+    esac
-+  done
-+
-+  # Print the debug banner immediately:
-+  if test -n \"\$lt_option_debug\"; then
-+    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
-+  fi
-+}
-+
-+# Used when --lt-debug. Prints its arguments to stdout
-+# (redirection is the responsibility of the caller)
-+func_lt_dump_args ()
-+{
-+  lt_dump_args_N=1;
-+  for lt_arg
-+  do
-+    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
-+    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
-+  done
-+}
-+
-+# Core function for launching the target application
-+func_exec_program_core ()
-+{
-+"
-+  case $host in
-+  # Backslashes separate directories on plain windows
-+  *-*-mingw | *-*-os2* | *-cegcc*)
-+    $ECHO "\
-+      if test -n \"\$lt_option_debug\"; then
-+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
-+        func_lt_dump_args \${1+\"\$@\"} 1>&2
-+      fi
-+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-+"
-+    ;;
-+
-+  *)
-+    $ECHO "\
-+      if test -n \"\$lt_option_debug\"; then
-+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
-+        func_lt_dump_args \${1+\"\$@\"} 1>&2
-+      fi
-+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
-+"
-+    ;;
-+  esac
-+  $ECHO "\
-+      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
-+      exit 1
-+}
-+
-+# A function to encapsulate launching the target application
-+# Strips options in the --lt-* namespace from \$@ and
-+# launches target application with the remaining arguments.
-+func_exec_program ()
-+{
-+  case \" \$* \" in
-+  *\\ --lt-*)
-+    for lt_wr_arg
-+    do
-+      case \$lt_wr_arg in
-+      --lt-*) ;;
-+      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-+      esac
-+      shift
-+    done ;;
-+  esac
-+  func_exec_program_core \${1+\"\$@\"}
-+}
-+
-+  # Parse options
-+  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
-+
-+  # Find the directory that this script lives in.
-+  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
-+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-+
-+  # Follow symbolic links until we get to the real thisdir.
-+  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
-+  while test -n \"\$file\"; do
-+    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
-+
-+    # If there was a directory component, then change thisdir.
-+    if test \"x\$destdir\" != \"x\$file\"; then
-+      case \"\$destdir\" in
-+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
-+      *) thisdir=\"\$thisdir/\$destdir\" ;;
-+      esac
-+    fi
-+
-+    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
-+    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
-+  done
-+
-+  # Usually 'no', except on cygwin/mingw when embedded into
-+  # the cwrapper.
-+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
-+  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
-+    # special case for '.'
-+    if test \"\$thisdir\" = \".\"; then
-+      thisdir=\`pwd\`
-+    fi
-+    # remove .libs from thisdir
-+    case \"\$thisdir\" in
-+    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
-+    $objdir )   thisdir=. ;;
-     esac
-   fi
--}
--# end: func_to_host_path
--
--# func_to_host_pathlist arg
--#
--# Convert pathlists to host format when used with build tools.
--# See func_to_host_path(), above. This function supports the
--# following $build/$host combinations (but does no harm for
--# combinations not listed here):
--#    $build          $host
--#    mingw (msys)    mingw  [e.g. native]
--#    cygwin          mingw
--#    *nix + wine     mingw
--#
--# Path separators are also converted from $build format to
--# $host format. If ARG begins or ends with a path separator
--# character, it is preserved (but converted to $host format)
--# on output.
--#
--# ARG is a pathlist (on $build) that should be converted to
--# the proper representation on $host. The result is stored
--# in $func_to_host_pathlist_result.
--func_to_host_pathlist ()
--{
--  func_to_host_pathlist_result="$1"
--  if test -n "$1" ; then
--    case $host in
--      *mingw* )
--        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
--        # Remove leading and trailing path separator characters from
--        # ARG. msys behavior is inconsistent here, cygpath turns them
--        # into '.;' and ';.', and winepath ignores them completely.
--        func_to_host_pathlist_tmp2="$1"
--        # Once set for this call, this variable should not be
--        # reassigned. It is used in tha fallback case.
--        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
--          $SED -e 's|^:*||' -e 's|:*$||'`
--        case $build in
--          *mingw* ) # Actually, msys.
--            # Awkward: cmd appends spaces to result.
--            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
--            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
--              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
--            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
--              $SED -e "$lt_sed_naive_backslashify"`
--            ;;
--          *cygwin* )
--            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
--            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
--              $SED -e "$lt_sed_naive_backslashify"`
--            ;;
--          * )
--            # unfortunately, winepath doesn't convert pathlists
--            func_to_host_pathlist_result=""
--            func_to_host_pathlist_oldIFS=$IFS
--            IFS=:
--            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
--              IFS=$func_to_host_pathlist_oldIFS
--              if test -n "$func_to_host_pathlist_f" ; then
--                func_to_host_path "$func_to_host_pathlist_f"
--                if test -n "$func_to_host_path_result" ; then
--                  if test -z "$func_to_host_pathlist_result" ; then
--                    func_to_host_pathlist_result="$func_to_host_path_result"
--                  else
--                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
--                  fi
--                fi
--              fi
--              IFS=:
--            done
--            IFS=$func_to_host_pathlist_oldIFS
--            ;;
--        esac
--        if test -z "$func_to_host_pathlist_result" ; then
--          func_error "Could not determine the host path(s) corresponding to"
--          func_error "  '$1'"
--          func_error "Continuing, but uninstalled executables may not work."
--          # Fallback. This may break if $1 contains DOS-style drive
--          # specifications. The fix is not to complicate the expression
--          # below, but for the user to provide a working wine installation
--          # with winepath so that path translation in the cross-to-mingw
--          # case works properly.
--          lt_replace_pathsep_nix_to_dos="s|:|;|g"
--          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
--            $SED -e "$lt_replace_pathsep_nix_to_dos"`
--        fi
--        # Now, add the leading and trailing path separators back
--        case "$1" in
--          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
--            ;;
--        esac
--        case "$1" in
--          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
--            ;;
--        esac
--        ;;
--    esac
-+
-+  # Try to get the absolute directory name.
-+  absdir=\`cd \"\$thisdir\" && pwd\`
-+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
-+"
-+
-+	if test "$fast_install" = yes; then
-+	  $ECHO "\
-+  program=lt-'$outputname'$exeext
-+  progdir=\"\$thisdir/$objdir\"
-+
-+  if test ! -f \"\$progdir/\$program\" ||
-+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
-+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-+
-+    file=\"\$\$-\$program\"
-+
-+    if test ! -d \"\$progdir\"; then
-+      $MKDIR \"\$progdir\"
-+    else
-+      $RM \"\$progdir/\$file\"
-+    fi"
-+
-+	  $ECHO "\
-+
-+    # relink executable if necessary
-+    if test -n \"\$relink_command\"; then
-+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
-+      else
-+	$ECHO \"\$relink_command_output\" >&2
-+	$RM \"\$progdir/\$file\"
-+	exit 1
-+      fi
-+    fi
-+
-+    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
-+    { $RM \"\$progdir/\$program\";
-+      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
-+    $RM \"\$progdir/\$file\"
-+  fi"
-+	else
-+	  $ECHO "\
-+  program='$outputname'
-+  progdir=\"\$thisdir/$objdir\"
-+"
-+	fi
-+
-+	$ECHO "\
-+
-+  if test -f \"\$progdir/\$program\"; then"
-+
-+	# fixup the dll searchpath if we need to.
-+	#
-+	# Fix the DLL searchpath if we need to.  Do this before prepending
-+	# to shlibpath, because on Windows, both are PATH and uninstalled
-+	# libraries must come first.
-+	if test -n "$dllsearchpath"; then
-+	  $ECHO "\
-+    # Add the dll search path components to the executable PATH
-+    PATH=$dllsearchpath:\$PATH
-+"
-+	fi
-+
-+	# Export our shlibpath_var if we have one.
-+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-+	  $ECHO "\
-+    # Add our own library path to $shlibpath_var
-+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-+
-+    # Some systems cannot cope with colon-terminated $shlibpath_var
-+    # The second colon is a workaround for a bug in BeOS R4 sed
-+    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
-+
-+    export $shlibpath_var
-+"
-+	fi
-+
-+	$ECHO "\
-+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
-+      # Run the actual program with our arguments.
-+      func_exec_program \${1+\"\$@\"}
-+    fi
-+  else
-+    # The program doesn't exist.
-+    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
-+    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
-+    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
-+    exit 1
-   fi
--}
--# end: func_to_host_pathlist
-+fi\
-+"
-+}
-+
- 
- # func_emit_cwrapperexe_src
- # emit the source code for a wrapper executable on stdout
- # Must ONLY be called from within func_mode_link because
- # it depends on a number of variable set therein.
- func_emit_cwrapperexe_src ()
- {
- 	cat <<EOF
-@@ -3136,75 +4142,98 @@ func_emit_cwrapperexe_src ()
- /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-    Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
- 
-    The $output program cannot be directly executed until all the libtool
-    libraries that it depends on are installed.
- 
-    This wrapper executable should never be moved out of the build directory.
-    If it is, it will not operate correctly.
--
--   Currently, it simply execs the wrapper *script* "$SHELL $output",
--   but could eventually absorb all of the scripts functionality and
--   exec $objdir/$outputname directly.
- */
- EOF
- 	    cat <<"EOF"
-+#ifdef _MSC_VER
-+# define _CRT_SECURE_NO_DEPRECATE 1
-+#endif
- #include <stdio.h>
- #include <stdlib.h>
- #ifdef _MSC_VER
- # include <direct.h>
- # include <process.h>
- # include <io.h>
--# define setmode _setmode
- #else
- # include <unistd.h>
- # include <stdint.h>
- # ifdef __CYGWIN__
- #  include <io.h>
--#  define HAVE_SETENV
--#  ifdef __STRICT_ANSI__
--char *realpath (const char *, char *);
--int putenv (char *);
--int setenv (const char *, const char *, int);
--#  endif
- # endif
- #endif
- #include <malloc.h>
- #include <stdarg.h>
- #include <assert.h>
- #include <string.h>
- #include <ctype.h>
- #include <errno.h>
- #include <fcntl.h>
- #include <sys/stat.h>
- 
-+/* declarations of non-ANSI functions */
-+#if defined(__MINGW32__)
-+# ifdef __STRICT_ANSI__
-+int _putenv (const char *);
-+# endif
-+#elif defined(__CYGWIN__)
-+# ifdef __STRICT_ANSI__
-+char *realpath (const char *, char *);
-+int putenv (char *);
-+int setenv (const char *, const char *, int);
-+# endif
-+/* #elif defined (other platforms) ... */
-+#endif
-+
-+/* portability defines, excluding path handling macros */
-+#if defined(_MSC_VER)
-+# define setmode _setmode
-+# define stat    _stat
-+# define chmod   _chmod
-+# define getcwd  _getcwd
-+# define putenv  _putenv
-+# define S_IXUSR _S_IEXEC
-+# ifndef _INTPTR_T_DEFINED
-+#  define _INTPTR_T_DEFINED
-+#  define intptr_t int
-+# endif
-+#elif defined(__MINGW32__)
-+# define setmode _setmode
-+# define stat    _stat
-+# define chmod   _chmod
-+# define getcwd  _getcwd
-+# define putenv  _putenv
-+#elif defined(__CYGWIN__)
-+# define HAVE_SETENV
-+# define FOPEN_WB "wb"
-+/* #elif defined (other platforms) ... */
-+#endif
-+
- #if defined(PATH_MAX)
- # define LT_PATHMAX PATH_MAX
- #elif defined(MAXPATHLEN)
- # define LT_PATHMAX MAXPATHLEN
- #else
- # define LT_PATHMAX 1024
- #endif
- 
- #ifndef S_IXOTH
- # define S_IXOTH 0
- #endif
- #ifndef S_IXGRP
- # define S_IXGRP 0
- #endif
- 
--#ifdef _MSC_VER
--# define S_IXUSR _S_IEXEC
--# define stat _stat
--# ifndef _INTPTR_T_DEFINED
--#  define intptr_t int
--# endif
--#endif
--
-+/* path handling portability macros */
- #ifndef DIR_SEPARATOR
- # define DIR_SEPARATOR '/'
- # define PATH_SEPARATOR ':'
- #endif
- 
- #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
-   defined (__OS2__)
- # define HAVE_DOS_BASED_FILE_SYSTEM
-@@ -3225,104 +4254,77 @@ int setenv (const char *, const char *, 
- #endif /* DIR_SEPARATOR_2 */
- 
- #ifndef PATH_SEPARATOR_2
- # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
- #else /* PATH_SEPARATOR_2 */
- # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
- #endif /* PATH_SEPARATOR_2 */
- 
--#ifdef __CYGWIN__
--# define FOPEN_WB "wb"
--#endif
--
- #ifndef FOPEN_WB
- # define FOPEN_WB "w"
- #endif
- #ifndef _O_BINARY
- # define _O_BINARY 0
- #endif
- 
- #define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
- #define XFREE(stale) do { \
-   if (stale) { free ((void *) stale); stale = 0; } \
- } while (0)
- 
--#undef LTWRAPPER_DEBUGPRINTF
--#if defined DEBUGWRAPPER
--# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
--static void
--ltwrapper_debugprintf (const char *fmt, ...)
--{
--    va_list args;
--    va_start (args, fmt);
--    (void) vfprintf (stderr, fmt, args);
--    va_end (args);
--}
-+#if defined(LT_DEBUGWRAPPER)
-+static int lt_debug = 1;
- #else
--# define LTWRAPPER_DEBUGPRINTF(args)
-+static int lt_debug = 0;
- #endif
- 
--const char *program_name = NULL;
-+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
- 
- void *xmalloc (size_t num);
- char *xstrdup (const char *string);
- const char *base_name (const char *name);
- char *find_executable (const char *wrapper);
- char *chase_symlinks (const char *pathspec);
- int make_executable (const char *path);
- int check_executable (const char *path);
- char *strendzap (char *str, const char *pat);
--void lt_fatal (const char *message, ...);
-+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
-+void lt_fatal (const char *file, int line, const char *message, ...);
-+static const char *nonnull (const char *s);
-+static const char *nonempty (const char *s);
- void lt_setenv (const char *name, const char *value);
- char *lt_extend_str (const char *orig_value, const char *add, int to_end);
--void lt_opt_process_env_set (const char *arg);
--void lt_opt_process_env_prepend (const char *arg);
--void lt_opt_process_env_append (const char *arg);
--int lt_split_name_value (const char *arg, char** name, char** value);
- void lt_update_exe_path (const char *name, const char *value);
- void lt_update_lib_path (const char *name, const char *value);
--
--static const char *script_text_part1 =
-+char **prepare_spawn (char **argv);
-+void lt_dump_script (FILE *f);
- EOF
- 
--	    func_emit_wrapper_part1 yes |
--	        $SED -e 's/\([\\"]\)/\\\1/g' \
--	             -e 's/^/  "/' -e 's/$/\\n"/'
--	    echo ";"
- 	    cat <<EOF
--
--static const char *script_text_part2 =
--EOF
--	    func_emit_wrapper_part2 yes |
--	        $SED -e 's/\([\\"]\)/\\\1/g' \
--	             -e 's/^/  "/' -e 's/$/\\n"/'
--	    echo ";"
--
--	    cat <<EOF
--const char * MAGIC_EXE = "$magic_exe";
-+volatile const char * MAGIC_EXE = "$magic_exe";
- const char * LIB_PATH_VARNAME = "$shlibpath_var";
- EOF
- 
- 	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
--              func_to_host_pathlist "$temp_rpath"
-+              func_to_host_path "$temp_rpath"
- 	      cat <<EOF
--const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
-+const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
- EOF
- 	    else
- 	      cat <<"EOF"
- const char * LIB_PATH_VALUE   = "";
- EOF
- 	    fi
- 
- 	    if test -n "$dllsearchpath"; then
--              func_to_host_pathlist "$dllsearchpath:"
-+              func_to_host_path "$dllsearchpath:"
- 	      cat <<EOF
- const char * EXE_PATH_VARNAME = "PATH";
--const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
-+const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
- EOF
- 	    else
- 	      cat <<"EOF"
- const char * EXE_PATH_VARNAME = "";
- const char * EXE_PATH_VALUE   = "";
- EOF
- 	    fi
- 
-@@ -3335,86 +4337,107 @@ EOF
- const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
- EOF
- 	    fi
- 
- 
- 	    cat <<"EOF"
- 
- #define LTWRAPPER_OPTION_PREFIX         "--lt-"
--#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
--
--static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
-+
- static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
--
- static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
--
--static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
--static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
--  /* argument is putenv-style "foo=bar", value of foo is set to bar */
--
--static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
--static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
--  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
--
--static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
--static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
--  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
-+static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
- 
- int
- main (int argc, char *argv[])
- {
-   char **newargz;
-   int  newargc;
-   char *tmp_pathspec;
-   char *actual_cwrapper_path;
-   char *actual_cwrapper_name;
-   char *target_name;
-   char *lt_argv_zero;
-   intptr_t rval = 127;
- 
-   int i;
- 
-   program_name = (char *) xstrdup (base_name (argv[0]));
--  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
--  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
--
--  /* very simple arg parsing; don't want to rely on getopt */
-+  newargz = XMALLOC (char *, argc + 1);
-+
-+  /* very simple arg parsing; don't want to rely on getopt
-+   * also, copy all non cwrapper options to newargz, except
-+   * argz[0], which is handled differently
-+   */
-+  newargc=0;
-   for (i = 1; i < argc; i++)
-     {
-       if (strcmp (argv[i], dumpscript_opt) == 0)
- 	{
- EOF
- 	    case "$host" in
- 	      *mingw* | *cygwin* )
- 		# make stdout use "unix" line endings
- 		echo "          setmode(1,_O_BINARY);"
- 		;;
- 	      esac
- 
- 	    cat <<"EOF"
--	  printf ("%s", script_text_part1);
--	  printf ("%s", script_text_part2);
-+	  lt_dump_script (stdout);
- 	  return 0;
- 	}
-+      if (strcmp (argv[i], debug_opt) == 0)
-+	{
-+          lt_debug = 1;
-+          continue;
-+	}
-+      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
-+        {
-+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
-+             namespace, but it is not one of the ones we know about and
-+             have already dealt with, above (inluding dump-script), then
-+             report an error. Otherwise, targets might begin to believe
-+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
-+             namespace. The first time any user complains about this, we'll
-+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
-+             or a configure.ac-settable value.
-+           */
-+          lt_fatal (__FILE__, __LINE__,
-+		    "unrecognized %s option: '%s'",
-+                    ltwrapper_option_prefix, argv[i]);
-+        }
-+      /* otherwise ... */
-+      newargz[++newargc] = xstrdup (argv[i]);
-     }
--
--  newargz = XMALLOC (char *, argc + 1);
-+  newargz[++newargc] = NULL;
-+
-+EOF
-+	    cat <<EOF
-+  /* The GNU banner must be the first non-error debug message */
-+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
-+EOF
-+	    cat <<"EOF"
-+  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
-+  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
-+
-   tmp_pathspec = find_executable (argv[0]);
-   if (tmp_pathspec == NULL)
--    lt_fatal ("Couldn't find %s", argv[0]);
--  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
--			  tmp_pathspec));
-+    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
-+  lt_debugprintf (__FILE__, __LINE__,
-+                  "(main) found exe (before symlink chase) at: %s\n",
-+		  tmp_pathspec);
- 
-   actual_cwrapper_path = chase_symlinks (tmp_pathspec);
--  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
--			  actual_cwrapper_path));
-+  lt_debugprintf (__FILE__, __LINE__,
-+                  "(main) found exe (after symlink chase) at: %s\n",
-+		  actual_cwrapper_path);
-   XFREE (tmp_pathspec);
- 
--  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
-+  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
-   strendzap (actual_cwrapper_path, actual_cwrapper_name);
- 
-   /* wrapper name transforms */
-   strendzap (actual_cwrapper_name, ".exe");
-   tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
-   XFREE (actual_cwrapper_name);
-   actual_cwrapper_name = tmp_pathspec;
-   tmp_pathspec = 0;
-@@ -3422,18 +4445,19 @@ EOF
-   /* target_name transforms -- use actual target program name; might have lt- prefix */
-   target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
-   strendzap (target_name, ".exe");
-   tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
-   XFREE (target_name);
-   target_name = tmp_pathspec;
-   tmp_pathspec = 0;
- 
--  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
--			  target_name));
-+  lt_debugprintf (__FILE__, __LINE__,
-+		  "(main) libtool target name: %s\n",
-+		  target_name);
- EOF
- 
- 	    cat <<EOF
-   newargz[0] =
-     XMALLOC (char, (strlen (actual_cwrapper_path) +
- 		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
-   strcpy (newargz[0], actual_cwrapper_path);
-   strcat (newargz[0], "$objdir");
-@@ -3473,103 +4497,45 @@ EOF
- 
- 	    cat <<"EOF"
-   XFREE (target_name);
-   XFREE (actual_cwrapper_path);
-   XFREE (actual_cwrapper_name);
- 
-   lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
-   lt_setenv ("DUALCASE", "1");  /* for MSK sh */
-+  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
-+     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
-+     because on Windows, both *_VARNAMEs are PATH but uninstalled
-+     libraries must come first. */
-+  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
-   lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
--  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
--
--  newargc=0;
--  for (i = 1; i < argc; i++)
--    {
--      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
--        {
--          if (argv[i][env_set_opt_len] == '=')
--            {
--              const char *p = argv[i] + env_set_opt_len + 1;
--              lt_opt_process_env_set (p);
--            }
--          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
--            {
--              lt_opt_process_env_set (argv[++i]); /* don't copy */
--            }
--          else
--            lt_fatal ("%s missing required argument", env_set_opt);
--          continue;
--        }
--      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
--        {
--          if (argv[i][env_prepend_opt_len] == '=')
--            {
--              const char *p = argv[i] + env_prepend_opt_len + 1;
--              lt_opt_process_env_prepend (p);
--            }
--          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
--            {
--              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
--            }
--          else
--            lt_fatal ("%s missing required argument", env_prepend_opt);
--          continue;
--        }
--      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
--        {
--          if (argv[i][env_append_opt_len] == '=')
--            {
--              const char *p = argv[i] + env_append_opt_len + 1;
--              lt_opt_process_env_append (p);
--            }
--          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
--            {
--              lt_opt_process_env_append (argv[++i]); /* don't copy */
--            }
--          else
--            lt_fatal ("%s missing required argument", env_append_opt);
--          continue;
--        }
--      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
--        {
--          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
--             namespace, but it is not one of the ones we know about and
--             have already dealt with, above (inluding dump-script), then
--             report an error. Otherwise, targets might begin to believe
--             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
--             namespace. The first time any user complains about this, we'll
--             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
--             or a configure.ac-settable value.
--           */
--          lt_fatal ("Unrecognized option in %s namespace: '%s'",
--                    ltwrapper_option_prefix, argv[i]);
--        }
--      /* otherwise ... */
--      newargz[++newargc] = xstrdup (argv[i]);
--    }
--  newargz[++newargc] = NULL;
--
--  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
-+
-+  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
-+		  nonnull (lt_argv_zero));
-   for (i = 0; i < newargc; i++)
-     {
--      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
-+      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
-+		      i, nonnull (newargz[i]));
-     }
- 
- EOF
- 
- 	    case $host_os in
- 	      mingw*)
- 		cat <<"EOF"
-   /* execv doesn't actually work on mingw as expected on unix */
-+  newargz = prepare_spawn (newargz);
-   rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
-   if (rval == -1)
-     {
-       /* failed to start process */
--      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
-+      lt_debugprintf (__FILE__, __LINE__,
-+		      "(main) failed to launch target \"%s\": %s\n",
-+		      lt_argv_zero, nonnull (strerror (errno)));
-       return 127;
-     }
-   return rval;
- EOF
- 		;;
- 	      *)
- 		cat <<"EOF"
-   execv (lt_argv_zero, newargz);
-@@ -3581,17 +4547,17 @@ EOF
- 	    cat <<"EOF"
- }
- 
- void *
- xmalloc (size_t num)
- {
-   void *p = (void *) malloc (num);
-   if (!p)
--    lt_fatal ("Memory exhausted");
-+    lt_fatal (__FILE__, __LINE__, "memory exhausted");
- 
-   return p;
- }
- 
- char *
- xstrdup (const char *string)
- {
-   return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
-@@ -3615,36 +4581,36 @@ base_name (const char *name)
-   return base;
- }
- 
- int
- check_executable (const char *path)
- {
-   struct stat st;
- 
--  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
--			  path ? (*path ? path : "EMPTY!") : "NULL!"));
-+  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
-+                  nonempty (path));
-   if ((!path) || (!*path))
-     return 0;
- 
-   if ((stat (path, &st) >= 0)
-       && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
-     return 1;
-   else
-     return 0;
- }
- 
- int
- make_executable (const char *path)
- {
-   int rval = 0;
-   struct stat st;
- 
--  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
--			  path ? (*path ? path : "EMPTY!") : "NULL!"));
-+  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
-+                  nonempty (path));
-   if ((!path) || (!*path))
-     return 0;
- 
-   if (stat (path, &st) >= 0)
-     {
-       rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
-     }
-   return rval;
-@@ -3660,18 +4626,18 @@ find_executable (const char *wrapper)
-   int has_slash = 0;
-   const char *p;
-   const char *p_next;
-   /* static buffer for getcwd */
-   char tmp[LT_PATHMAX + 1];
-   int tmp_len;
-   char *concat_name;
- 
--  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
--			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
-+  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
-+                  nonempty (wrapper));
- 
-   if ((wrapper == NULL) || (*wrapper == '\0'))
-     return NULL;
- 
-   /* Absolute path? */
- #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-   if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
-     {
-@@ -3714,17 +4680,18 @@ find_executable (const char *wrapper)
- 		if (IS_PATH_SEPARATOR (*q))
- 		  break;
- 	      p_len = q - p;
- 	      p_next = (*q == '\0' ? q : q + 1);
- 	      if (p_len == 0)
- 		{
- 		  /* empty path: current directory */
- 		  if (getcwd (tmp, LT_PATHMAX) == NULL)
--		    lt_fatal ("getcwd failed");
-+		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-+                              nonnull (strerror (errno)));
- 		  tmp_len = strlen (tmp);
- 		  concat_name =
- 		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
- 		  memcpy (concat_name, tmp, tmp_len);
- 		  concat_name[tmp_len] = '/';
- 		  strcpy (concat_name + tmp_len + 1, wrapper);
- 		}
- 	      else
-@@ -3739,17 +4706,18 @@ find_executable (const char *wrapper)
- 		return concat_name;
- 	      XFREE (concat_name);
- 	    }
- 	}
-       /* not found in PATH; assume curdir */
-     }
-   /* Relative path | not found in path: prepend cwd */
-   if (getcwd (tmp, LT_PATHMAX) == NULL)
--    lt_fatal ("getcwd failed");
-+    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-+              nonnull (strerror (errno)));
-   tmp_len = strlen (tmp);
-   concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-   memcpy (concat_name, tmp, tmp_len);
-   concat_name[tmp_len] = '/';
-   strcpy (concat_name + tmp_len + 1, wrapper);
- 
-   if (check_executable (concat_name))
-     return concat_name;
-@@ -3765,18 +4733,19 @@ chase_symlinks (const char *pathspec)
- #else
-   char buf[LT_PATHMAX];
-   struct stat s;
-   char *tmp_pathspec = xstrdup (pathspec);
-   char *p;
-   int has_symlinks = 0;
-   while (strlen (tmp_pathspec) && !has_symlinks)
-     {
--      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
--			      tmp_pathspec));
-+      lt_debugprintf (__FILE__, __LINE__,
-+		      "checking path component for symlinks: %s\n",
-+		      tmp_pathspec);
-       if (lstat (tmp_pathspec, &s) == 0)
- 	{
- 	  if (S_ISLNK (s.st_mode) != 0)
- 	    {
- 	      has_symlinks = 1;
- 	      break;
- 	    }
- 
-@@ -3788,31 +4757,33 @@ chase_symlinks (const char *pathspec)
- 	    {
- 	      /* no more DIR_SEPARATORS left */
- 	      break;
- 	    }
- 	  *p = '\0';
- 	}
-       else
- 	{
--	  char *errstr = strerror (errno);
--	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
-+	  lt_fatal (__FILE__, __LINE__,
-+		    "error accessing file \"%s\": %s",
-+		    tmp_pathspec, nonnull (strerror (errno)));
- 	}
-     }
-   XFREE (tmp_pathspec);
- 
-   if (!has_symlinks)
-     {
-       return xstrdup (pathspec);
-     }
- 
-   tmp_pathspec = realpath (pathspec, buf);
-   if (tmp_pathspec == 0)
-     {
--      lt_fatal ("Could not follow symlinks for %s", pathspec);
-+      lt_fatal (__FILE__, __LINE__,
-+		"could not follow symlinks for %s", pathspec);
-     }
-   return xstrdup (tmp_pathspec);
- #endif
- }
- 
- char *
- strendzap (char *str, const char *pat)
- {
-@@ -3828,43 +4799,69 @@ strendzap (char *str, const char *pat)
-     {
-       str += len - patlen;
-       if (strcmp (str, pat) == 0)
- 	*str = '\0';
-     }
-   return str;
- }
- 
-+void
-+lt_debugprintf (const char *file, int line, const char *fmt, ...)
-+{
-+  va_list args;
-+  if (lt_debug)
-+    {
-+      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
-+      va_start (args, fmt);
-+      (void) vfprintf (stderr, fmt, args);
-+      va_end (args);
-+    }
-+}
-+
- static void
--lt_error_core (int exit_status, const char *mode,
-+lt_error_core (int exit_status, const char *file,
-+	       int line, const char *mode,
- 	       const char *message, va_list ap)
- {
--  fprintf (stderr, "%s: %s: ", program_name, mode);
-+  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
-   vfprintf (stderr, message, ap);
-   fprintf (stderr, ".\n");
- 
-   if (exit_status >= 0)
-     exit (exit_status);
- }
- 
- void
--lt_fatal (const char *message, ...)
-+lt_fatal (const char *file, int line, const char *message, ...)
- {
-   va_list ap;
-   va_start (ap, message);
--  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
-+  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
-   va_end (ap);
- }
- 
-+static const char *
-+nonnull (const char *s)
-+{
-+  return s ? s : "(null)";
-+}
-+
-+static const char *
-+nonempty (const char *s)
-+{
-+  return (s && !*s) ? "(empty)" : nonnull (s);
-+}
-+
- void
- lt_setenv (const char *name, const char *value)
- {
--  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
--                          (name ? name : "<NULL>"),
--                          (value ? value : "<NULL>")));
-+  lt_debugprintf (__FILE__, __LINE__,
-+		  "(lt_setenv) setting '%s' to '%s'\n",
-+                  nonnull (name), nonnull (value));
-   {
- #ifdef HAVE_SETENV
-     /* always make a copy, for consistency with !HAVE_SETENV */
-     char *str = xstrdup (value);
-     setenv (name, str, 1);
- #else
-     int len = strlen (name) + 1 + strlen (value) + 1;
-     char *str = XMALLOC (char, len);
-@@ -3899,105 +4896,22 @@ lt_extend_str (const char *orig_value, c
-     }
-   else
-     {
-       new_value = xstrdup (add);
-     }
-   return new_value;
- }
- 
--int
--lt_split_name_value (const char *arg, char** name, char** value)
--{
--  const char *p;
--  int len;
--  if (!arg || !*arg)
--    return 1;
--
--  p = strchr (arg, (int)'=');
--
--  if (!p)
--    return 1;
--
--  *value = xstrdup (++p);
--
--  len = strlen (arg) - strlen (*value);
--  *name = XMALLOC (char, len);
--  strncpy (*name, arg, len-1);
--  (*name)[len - 1] = '\0';
--
--  return 0;
--}
--
--void
--lt_opt_process_env_set (const char *arg)
--{
--  char *name = NULL;
--  char *value = NULL;
--
--  if (lt_split_name_value (arg, &name, &value) != 0)
--    {
--      XFREE (name);
--      XFREE (value);
--      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
--    }
--
--  lt_setenv (name, value);
--  XFREE (name);
--  XFREE (value);
--}
--
--void
--lt_opt_process_env_prepend (const char *arg)
--{
--  char *name = NULL;
--  char *value = NULL;
--  char *new_value = NULL;
--
--  if (lt_split_name_value (arg, &name, &value) != 0)
--    {
--      XFREE (name);
--      XFREE (value);
--      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
--    }
--
--  new_value = lt_extend_str (getenv (name), value, 0);
--  lt_setenv (name, new_value);
--  XFREE (new_value);
--  XFREE (name);
--  XFREE (value);
--}
--
--void
--lt_opt_process_env_append (const char *arg)
--{
--  char *name = NULL;
--  char *value = NULL;
--  char *new_value = NULL;
--
--  if (lt_split_name_value (arg, &name, &value) != 0)
--    {
--      XFREE (name);
--      XFREE (value);
--      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
--    }
--
--  new_value = lt_extend_str (getenv (name), value, 1);
--  lt_setenv (name, new_value);
--  XFREE (new_value);
--  XFREE (name);
--  XFREE (value);
--}
--
- void
- lt_update_exe_path (const char *name, const char *value)
- {
--  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
--                          (name ? name : "<NULL>"),
--                          (value ? value : "<NULL>")));
-+  lt_debugprintf (__FILE__, __LINE__,
-+		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
-+                  nonnull (name), nonnull (value));
- 
-   if (name && *name && value && *value)
-     {
-       char *new_value = lt_extend_str (getenv (name), value, 0);
-       /* some systems can't cope with a ':'-terminated path #' */
-       int len = strlen (new_value);
-       while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
-         {
-@@ -4006,33 +4920,180 @@ lt_update_exe_path (const char *name, co
-       lt_setenv (name, new_value);
-       XFREE (new_value);
-     }
- }
- 
- void
- lt_update_lib_path (const char *name, const char *value)
- {
--  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
--                          (name ? name : "<NULL>"),
--                          (value ? value : "<NULL>")));
-+  lt_debugprintf (__FILE__, __LINE__,
-+		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
-+                  nonnull (name), nonnull (value));
- 
-   if (name && *name && value && *value)
-     {
-       char *new_value = lt_extend_str (getenv (name), value, 0);
-       lt_setenv (name, new_value);
-       XFREE (new_value);
-     }
- }
- 
--
- EOF
-+	    case $host_os in
-+	      mingw*)
-+		cat <<"EOF"
-+
-+/* Prepares an argument vector before calling spawn().
-+   Note that spawn() does not by itself call the command interpreter
-+     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
-+      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-+         GetVersionEx(&v);
-+         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
-+      }) ? "cmd.exe" : "command.com").
-+   Instead it simply concatenates the arguments, separated by ' ', and calls
-+   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
-+   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
-+   special way:
-+   - Space and tab are interpreted as delimiters. They are not treated as
-+     delimiters if they are surrounded by double quotes: "...".
-+   - Unescaped double quotes are removed from the input. Their only effect is
-+     that within double quotes, space and tab are treated like normal
-+     characters.
-+   - Backslashes not followed by double quotes are not special.
-+   - But 2*n+1 backslashes followed by a double quote become
-+     n backslashes followed by a double quote (n >= 0):
-+       \" -> "
-+       \\\" -> \"
-+       \\\\\" -> \\"
-+ */
-+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-+char **
-+prepare_spawn (char **argv)
-+{
-+  size_t argc;
-+  char **new_argv;
-+  size_t i;
-+
-+  /* Count number of arguments.  */
-+  for (argc = 0; argv[argc] != NULL; argc++)
-+    ;
-+
-+  /* Allocate new argument vector.  */
-+  new_argv = XMALLOC (char *, argc + 1);
-+
-+  /* Put quoted arguments into the new argument vector.  */
-+  for (i = 0; i < argc; i++)
-+    {
-+      const char *string = argv[i];
-+
-+      if (string[0] == '\0')
-+	new_argv[i] = xstrdup ("\"\"");
-+      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
-+	{
-+	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
-+	  size_t length;
-+	  unsigned int backslashes;
-+	  const char *s;
-+	  char *quoted_string;
-+	  char *p;
-+
-+	  length = 0;
-+	  backslashes = 0;
-+	  if (quote_around)
-+	    length++;
-+	  for (s = string; *s != '\0'; s++)
-+	    {
-+	      char c = *s;
-+	      if (c == '"')
-+		length += backslashes + 1;
-+	      length++;
-+	      if (c == '\\')
-+		backslashes++;
-+	      else
-+		backslashes = 0;
-+	    }
-+	  if (quote_around)
-+	    length += backslashes + 1;
-+
-+	  quoted_string = XMALLOC (char, length + 1);
-+
-+	  p = quoted_string;
-+	  backslashes = 0;
-+	  if (quote_around)
-+	    *p++ = '"';
-+	  for (s = string; *s != '\0'; s++)
-+	    {
-+	      char c = *s;
-+	      if (c == '"')
-+		{
-+		  unsigned int j;
-+		  for (j = backslashes + 1; j > 0; j--)
-+		    *p++ = '\\';
-+		}
-+	      *p++ = c;
-+	      if (c == '\\')
-+		backslashes++;
-+	      else
-+		backslashes = 0;
-+	    }
-+	  if (quote_around)
-+	    {
-+	      unsigned int j;
-+	      for (j = backslashes; j > 0; j--)
-+		*p++ = '\\';
-+	      *p++ = '"';
-+	    }
-+	  *p = '\0';
-+
-+	  new_argv[i] = quoted_string;
-+	}
-+      else
-+	new_argv[i] = (char *) string;
-+    }
-+  new_argv[argc] = NULL;
-+
-+  return new_argv;
-+}
-+EOF
-+		;;
-+	    esac
-+
-+            cat <<"EOF"
-+void lt_dump_script (FILE* f)
-+{
-+EOF
-+	    func_emit_wrapper yes |
-+	      $SED -n -e '
-+s/^\(.\{79\}\)\(..*\)/\1\
-+\2/
-+h
-+s/\([\\"]\)/\\\1/g
-+s/$/\\n/
-+s/\([^\n]*\).*/  fputs ("\1", f);/p
-+g
-+D'
-+            cat <<"EOF"
-+}
-+EOF
- }
- # end: func_emit_cwrapperexe_src
- 
-+# func_win32_import_lib_p ARG
-+# True if ARG is an import lib, as indicated by $file_magic_cmd
-+func_win32_import_lib_p ()
-+{
-+    $opt_debug
-+    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
-+    *import*) : ;;
-+    *) false ;;
-+    esac
-+}
-+
- # func_mode_link arg...
- func_mode_link ()
- {
-     $opt_debug
-     case $host in
-     *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-       # It is impossible to link a dll without this setting, and
-       # we shouldn't force the makefile maintainer to figure out
-@@ -4067,16 +5128,17 @@ func_mode_link ()
-     compiler_flags=
-     linker_flags=
-     dllsearchpath=
-     lib_search_path=`pwd`
-     inst_prefix_dir=
-     new_inherited_linker_flags=
- 
-     avoid_version=no
-+    bindir=
-     dlfiles=
-     dlprefiles=
-     dlself=no
-     export_dynamic=no
-     export_symbols=
-     export_symbols_regex=
-     generated=
-     libobjs=
-@@ -4159,16 +5221,21 @@ func_mode_link ()
- 	case $prev in
- 	output)
- 	  func_append compile_command " @OUTPUT@"
- 	  func_append finalize_command " @OUTPUT@"
- 	  ;;
- 	esac
- 
- 	case $prev in
-+	bindir)
-+	  bindir="$arg"
-+	  prev=
-+	  continue
-+	  ;;
- 	dlfiles|dlprefiles)
- 	  if test "$preload" = no; then
- 	    # Add the symbol object into the linking commands.
- 	    func_append compile_command " @SYMFILE@"
- 	    func_append finalize_command " @SYMFILE@"
- 	    preload=yes
- 	  fi
- 	  case $arg in
-@@ -4190,19 +5257,19 @@ func_mode_link ()
- 	      dlself=needless
- 	      export_dynamic=yes
- 	    fi
- 	    prev=
- 	    continue
- 	    ;;
- 	  *)
- 	    if test "$prev" = dlfiles; then
--	      dlfiles="$dlfiles $arg"
-+	      func_append dlfiles " $arg"
- 	    else
--	      dlprefiles="$dlprefiles $arg"
-+	      func_append dlprefiles " $arg"
- 	    fi
- 	    prev=
- 	    continue
- 	    ;;
- 	  esac
- 	  ;;
- 	expsyms)
- 	  export_symbols="$arg"
-@@ -4216,17 +5283,17 @@ func_mode_link ()
- 	  prev=
- 	  continue
- 	  ;;
- 	framework)
- 	  case $host in
- 	    *-*-darwin*)
- 	      case "$deplibs " in
- 		*" $qarg.ltframework "*) ;;
--		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
-+		*) func_append deplibs " $qarg.ltframework" # this is fixed later
- 		   ;;
- 	      esac
- 	      ;;
- 	  esac
- 	  prev=
- 	  continue
- 	  ;;
- 	inst_prefix)
-@@ -4235,17 +5302,17 @@ func_mode_link ()
- 	  continue
- 	  ;;
- 	objectlist)
- 	  if test -f "$arg"; then
- 	    save_arg=$arg
- 	    moreargs=
- 	    for fil in `cat "$save_arg"`
- 	    do
--#	      moreargs="$moreargs $fil"
-+#	      func_append moreargs " $fil"
- 	      arg=$fil
- 	      # A libtool-controlled object.
- 
- 	      # Check to see that this really is a libtool object.
- 	      if func_lalib_unsafe_p "$arg"; then
- 		pic_object=
- 		non_pic_object=
- 
-@@ -4264,29 +5331,29 @@ func_mode_link ()
- 		xdir="$func_dirname_result"
- 
- 		if test "$pic_object" != none; then
- 		  # Prepend the subdirectory the object is found in.
- 		  pic_object="$xdir$pic_object"
- 
- 		  if test "$prev" = dlfiles; then
- 		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
--		      dlfiles="$dlfiles $pic_object"
-+		      func_append dlfiles " $pic_object"
- 		      prev=
- 		      continue
- 		    else
- 		      # If libtool objects are unsupported, then we need to preload.
- 		      prev=dlprefiles
- 		    fi
- 		  fi
- 
- 		  # CHECK ME:  I think I busted this.  -Ossama
- 		  if test "$prev" = dlprefiles; then
- 		    # Preload the old-style object.
--		    dlprefiles="$dlprefiles $pic_object"
-+		    func_append dlprefiles " $pic_object"
- 		    prev=
- 		  fi
- 
- 		  # A PIC object.
- 		  func_append libobjs " $pic_object"
- 		  arg="$pic_object"
- 		fi
- 
-@@ -4346,55 +5413,55 @@ func_mode_link ()
- 	  [\\/]* | [A-Za-z]:[\\/]*) ;;
- 	  *)
- 	    func_fatal_error "only absolute run-paths are allowed"
- 	    ;;
- 	  esac
- 	  if test "$prev" = rpath; then
- 	    case "$rpath " in
- 	    *" $arg "*) ;;
--	    *) rpath="$rpath $arg" ;;
-+	    *) func_append rpath " $arg" ;;
- 	    esac
- 	  else
- 	    case "$xrpath " in
- 	    *" $arg "*) ;;
--	    *) xrpath="$xrpath $arg" ;;
-+	    *) func_append xrpath " $arg" ;;
- 	    esac
- 	  fi
- 	  prev=
- 	  continue
- 	  ;;
- 	shrext)
- 	  shrext_cmds="$arg"
- 	  prev=
- 	  continue
- 	  ;;
- 	weak)
--	  weak_libs="$weak_libs $arg"
-+	  func_append weak_libs " $arg"
- 	  prev=
- 	  continue
- 	  ;;
- 	xcclinker)
--	  linker_flags="$linker_flags $qarg"
--	  compiler_flags="$compiler_flags $qarg"
-+	  func_append linker_flags " $qarg"
-+	  func_append compiler_flags " $qarg"
- 	  prev=
- 	  func_append compile_command " $qarg"
- 	  func_append finalize_command " $qarg"
- 	  continue
- 	  ;;
- 	xcompiler)
--	  compiler_flags="$compiler_flags $qarg"
-+	  func_append compiler_flags " $qarg"
- 	  prev=
- 	  func_append compile_command " $qarg"
- 	  func_append finalize_command " $qarg"
- 	  continue
- 	  ;;
- 	xlinker)
--	  linker_flags="$linker_flags $qarg"
--	  compiler_flags="$compiler_flags $wl$qarg"
-+	  func_append linker_flags " $qarg"
-+	  func_append compiler_flags " $wl$qarg"
- 	  prev=
- 	  func_append compile_command " $wl$qarg"
- 	  func_append finalize_command " $wl$qarg"
- 	  continue
- 	  ;;
- 	*)
- 	  eval "$prev=\"\$arg\""
- 	  prev=
-@@ -4420,16 +5487,21 @@ func_mode_link ()
- 	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
- 	;;
- 
-       -avoid-version)
- 	avoid_version=yes
- 	continue
- 	;;
- 
-+      -bindir)
-+	prev=bindir
-+	continue
-+	;;
-+
-       -dlopen)
- 	prev=dlfiles
- 	continue
- 	;;
- 
-       -dlpreopen)
- 	prev=dlprefiles
- 	continue
-@@ -4470,78 +5542,85 @@ func_mode_link ()
- 	  func_append compile_command " $arg"
- 	  func_append finalize_command " $arg"
- 	  ;;
- 	esac
- 	continue
- 	;;
- 
-       -L*)
--	func_stripname '-L' '' "$arg"
--	dir=$func_stripname_result
--	if test -z "$dir"; then
-+	func_stripname "-L" '' "$arg"
-+	if test -z "$func_stripname_result"; then
- 	  if test "$#" -gt 0; then
- 	    func_fatal_error "require no space between \`-L' and \`$1'"
- 	  else
- 	    func_fatal_error "need path for \`-L' option"
- 	  fi
- 	fi
-+	func_resolve_sysroot "$func_stripname_result"
-+	dir=$func_resolve_sysroot_result
- 	# We need an absolute path.
- 	case $dir in
- 	[\\/]* | [A-Za-z]:[\\/]*) ;;
- 	*)
- 	  absdir=`cd "$dir" && pwd`
- 	  test -z "$absdir" && \
- 	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
- 	  dir="$absdir"
- 	  ;;
- 	esac
- 	case "$deplibs " in
--	*" -L$dir "*) ;;
-+	*" -L$dir "* | *" $arg "*)
-+	  # Will only happen for absolute or sysroot arguments
-+	  ;;
- 	*)
--	  deplibs="$deplibs -L$dir"
--	  lib_search_path="$lib_search_path $dir"
-+	  # Preserve sysroot, but never include relative directories
-+	  case $dir in
-+	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
-+	    *) func_append deplibs " -L$dir" ;;
-+	  esac
-+	  func_append lib_search_path " $dir"
- 	  ;;
- 	esac
- 	case $host in
- 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
--	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
-+	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
- 	  case :$dllsearchpath: in
- 	  *":$dir:"*) ;;
- 	  ::) dllsearchpath=$dir;;
--	  *) dllsearchpath="$dllsearchpath:$dir";;
-+	  *) func_append dllsearchpath ":$dir";;
- 	  esac
- 	  case :$dllsearchpath: in
- 	  *":$testbindir:"*) ;;
- 	  ::) dllsearchpath=$testbindir;;
--	  *) dllsearchpath="$dllsearchpath:$testbindir";;
-+	  *) func_append dllsearchpath ":$testbindir";;
- 	  esac
- 	  ;;
- 	esac
- 	continue
- 	;;
- 
-       -l*)
- 	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
- 	  case $host in
--	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
-+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
- 	    # These systems don't actually have a C or math library (as such)
- 	    continue
- 	    ;;
- 	  *-*-os2*)
- 	    # These systems don't actually have a C library (as such)
- 	    test "X$arg" = "X-lc" && continue
- 	    ;;
- 	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
- 	    # Do not include libc due to us having libc/libc_r.
- 	    test "X$arg" = "X-lc" && continue
- 	    ;;
- 	  *-*-rhapsody* | *-*-darwin1.[012])
- 	    # Rhapsody C and math libraries are in the System framework
--	    deplibs="$deplibs System.ltframework"
-+	    func_append deplibs " System.ltframework"
- 	    continue
- 	    ;;
- 	  *-*-sco3.2v5* | *-*-sco5v6*)
- 	    # Causes problems with __ctype
- 	    test "X$arg" = "X-lc" && continue
- 	    ;;
- 	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
- 	    # Compiler inserts libc in the correct place for threads to work
-@@ -4551,43 +5630,44 @@ func_mode_link ()
- 	elif test "X$arg" = "X-lc_r"; then
- 	 case $host in
- 	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
- 	   # Do not include libc_r directly, use -pthread flag.
- 	   continue
- 	   ;;
- 	 esac
- 	fi
--	deplibs="$deplibs $arg"
-+	func_append deplibs " $arg"
- 	continue
- 	;;
- 
-       -module)
- 	module=yes
- 	continue
- 	;;
- 
-       # Tru64 UNIX uses -model [arg] to determine the layout of C++
-       # classes, name mangling, and exception handling.
-       # Darwin uses the -arch flag to determine output architecture.
--      -model|-arch|-isysroot)
--	compiler_flags="$compiler_flags $arg"
-+      -model|-arch|-isysroot|--sysroot)
-+	func_append compiler_flags " $arg"
- 	func_append compile_command " $arg"
- 	func_append finalize_command " $arg"
- 	prev=xcompiler
- 	continue
- 	;;
- 
--      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
--	compiler_flags="$compiler_flags $arg"
-+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
-+      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-+	func_append compiler_flags " $arg"
- 	func_append compile_command " $arg"
- 	func_append finalize_command " $arg"
- 	case "$new_inherited_linker_flags " in
- 	    *" $arg "*) ;;
--	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
-+	    * ) func_append new_inherited_linker_flags " $arg" ;;
- 	esac
- 	continue
- 	;;
- 
-       -multi_module)
- 	single_module="${wl}-multi_module"
- 	continue
- 	;;
-@@ -4644,23 +5724,27 @@ func_mode_link ()
- 	;;
- 
-       -R*)
- 	func_stripname '-R' '' "$arg"
- 	dir=$func_stripname_result
- 	# We need an absolute path.
- 	case $dir in
- 	[\\/]* | [A-Za-z]:[\\/]*) ;;
-+	=*)
-+	  func_stripname '=' '' "$dir"
-+	  dir=$lt_sysroot$func_stripname_result
-+	  ;;
- 	*)
- 	  func_fatal_error "only absolute run-paths are allowed"
- 	  ;;
- 	esac
- 	case "$xrpath " in
- 	*" $dir "*) ;;
--	*) xrpath="$xrpath $dir" ;;
-+	*) func_append xrpath " $dir" ;;
- 	esac
- 	continue
- 	;;
- 
-       -shared)
- 	# The effects of -shared are defined in a previous loop.
- 	continue
- 	;;
-@@ -4703,35 +5787,35 @@ func_mode_link ()
-       -Wc,*)
- 	func_stripname '-Wc,' '' "$arg"
- 	args=$func_stripname_result
- 	arg=
- 	save_ifs="$IFS"; IFS=','
- 	for flag in $args; do
- 	  IFS="$save_ifs"
-           func_quote_for_eval "$flag"
--	  arg="$arg $wl$func_quote_for_eval_result"
--	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
-+	  func_append arg " $func_quote_for_eval_result"
-+	  func_append compiler_flags " $func_quote_for_eval_result"
- 	done
- 	IFS="$save_ifs"
- 	func_stripname ' ' '' "$arg"
- 	arg=$func_stripname_result
- 	;;
- 
-       -Wl,*)
- 	func_stripname '-Wl,' '' "$arg"
- 	args=$func_stripname_result
- 	arg=
- 	save_ifs="$IFS"; IFS=','
- 	for flag in $args; do
- 	  IFS="$save_ifs"
-           func_quote_for_eval "$flag"
--	  arg="$arg $wl$func_quote_for_eval_result"
--	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
--	  linker_flags="$linker_flags $func_quote_for_eval_result"
-+	  func_append arg " $wl$func_quote_for_eval_result"
-+	  func_append compiler_flags " $wl$func_quote_for_eval_result"
-+	  func_append linker_flags " $func_quote_for_eval_result"
- 	done
- 	IFS="$save_ifs"
- 	func_stripname ' ' '' "$arg"
- 	arg=$func_stripname_result
- 	;;
- 
-       -Xcompiler)
- 	prev=xcompiler
-@@ -4749,45 +5833,49 @@ func_mode_link ()
- 	;;
- 
-       # -msg_* for osf cc
-       -msg_*)
- 	func_quote_for_eval "$arg"
- 	arg="$func_quote_for_eval_result"
- 	;;
- 
--      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
--      # -r[0-9][0-9]* specifies the processor on the SGI compiler
--      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
--      # +DA*, +DD* enable 64-bit mode on the HP compiler
--      # -q* pass through compiler args for the IBM compiler
--      # -m*, -t[45]*, -txscale* pass through architecture-specific
--      # compiler args for GCC
--      # -F/path gives path to uninstalled frameworks, gcc on darwin
--      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
--      # @file GCC response files
-+      # Flags to be passed through unchanged, with rationale:
-+      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
-+      # -r[0-9][0-9]*        specify processor for the SGI compiler
-+      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
-+      # +DA*, +DD*           enable 64-bit mode for the HP compiler
-+      # -q*                  compiler args for the IBM compiler
-+      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
-+      # -F/path              path to uninstalled frameworks, gcc on darwin
-+      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
-+      # @file                GCC response files
-+      # -tp=*                Portland pgcc target processor selection
-+      # --sysroot=*          for sysroot support
-+      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
-       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
--      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
-+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-+      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
-         func_quote_for_eval "$arg"
- 	arg="$func_quote_for_eval_result"
-         func_append compile_command " $arg"
-         func_append finalize_command " $arg"
--        compiler_flags="$compiler_flags $arg"
-+        func_append compiler_flags " $arg"
-         continue
-         ;;
- 
-       # Some other compiler flag.
-       -* | +*)
-         func_quote_for_eval "$arg"
- 	arg="$func_quote_for_eval_result"
- 	;;
- 
-       *.$objext)
- 	# A standard object.
--	objs="$objs $arg"
-+	func_append objs " $arg"
- 	;;
- 
-       *.lo)
- 	# A libtool-controlled object.
- 
- 	# Check to see that this really is a libtool object.
- 	if func_lalib_unsafe_p "$arg"; then
- 	  pic_object=
-@@ -4808,29 +5896,29 @@ func_mode_link ()
- 	  xdir="$func_dirname_result"
- 
- 	  if test "$pic_object" != none; then
- 	    # Prepend the subdirectory the object is found in.
- 	    pic_object="$xdir$pic_object"
- 
- 	    if test "$prev" = dlfiles; then
- 	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
--		dlfiles="$dlfiles $pic_object"
-+		func_append dlfiles " $pic_object"
- 		prev=
- 		continue
- 	      else
- 		# If libtool objects are unsupported, then we need to preload.
- 		prev=dlprefiles
- 	      fi
- 	    fi
- 
- 	    # CHECK ME:  I think I busted this.  -Ossama
- 	    if test "$prev" = dlprefiles; then
- 	      # Preload the old-style object.
--	      dlprefiles="$dlprefiles $pic_object"
-+	      func_append dlprefiles " $pic_object"
- 	      prev=
- 	    fi
- 
- 	    # A PIC object.
- 	    func_append libobjs " $pic_object"
- 	    arg="$pic_object"
- 	  fi
- 
-@@ -4865,34 +5953,35 @@ func_mode_link ()
- 	  else
- 	    func_fatal_error "\`$arg' is not a valid libtool object"
- 	  fi
- 	fi
- 	;;
- 
-       *.$libext)
- 	# An archive.
--	deplibs="$deplibs $arg"
--	old_deplibs="$old_deplibs $arg"
-+	func_append deplibs " $arg"
-+	func_append old_deplibs " $arg"
- 	continue
- 	;;
- 
-       *.la)
- 	# A libtool-controlled library.
- 
-+	func_resolve_sysroot "$arg"
- 	if test "$prev" = dlfiles; then
- 	  # This library was specified with -dlopen.
--	  dlfiles="$dlfiles $arg"
-+	  func_append dlfiles " $func_resolve_sysroot_result"
- 	  prev=
- 	elif test "$prev" = dlprefiles; then
- 	  # The library was specified with -dlpreopen.
--	  dlprefiles="$dlprefiles $arg"
-+	  func_append dlprefiles " $func_resolve_sysroot_result"
- 	  prev=
- 	else
--	  deplibs="$deplibs $arg"
-+	  func_append deplibs " $func_resolve_sysroot_result"
- 	fi
- 	continue
- 	;;
- 
-       # Some other compiler argument.
-       *)
- 	# Unknown arguments in both finalize_command and compile_command need
- 	# to be aesthetically quoted because they are evaled later.
-@@ -4920,25 +6009,27 @@ func_mode_link ()
-     oldlibs=
-     # calculate the name of the file, without its directory
-     func_basename "$output"
-     outputname="$func_basename_result"
-     libobjs_save="$libobjs"
- 
-     if test -n "$shlibpath_var"; then
-       # get the directories listed in $shlibpath_var
--      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
-+      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
-     else
-       shlib_search_path=
-     fi
-     eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
-     eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
- 
-     func_dirname "$output" "/" ""
-     output_objdir="$func_dirname_result$objdir"
-+    func_to_tool_file "$output_objdir/"
-+    tool_output_objdir=$func_to_tool_file_result
-     # Create the object directory.
-     func_mkdir_p "$output_objdir"
- 
-     # Determine the type of output
-     case $output in
-     "")
-       func_fatal_help "you must specify an output file"
-       ;;
-@@ -4949,37 +6040,37 @@ func_mode_link ()
-     esac
- 
-     specialdeplibs=
- 
-     libs=
-     # Find all interdependent deplibs by searching for libraries
-     # that are linked more than once (e.g. -la -lb -la)
-     for deplib in $deplibs; do
--      if $opt_duplicate_deps ; then
-+      if $opt_preserve_dup_deps ; then
- 	case "$libs " in
--	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
- 	esac
-       fi
--      libs="$libs $deplib"
-+      func_append libs " $deplib"
-     done
- 
-     if test "$linkmode" = lib; then
-       libs="$predeps $libs $compiler_lib_search_path $postdeps"
- 
-       # Compute libraries that are listed more than once in $predeps
-       # $postdeps and mark them as special (i.e., whose duplicates are
-       # not to be eliminated).
-       pre_post_deps=
-       if $opt_duplicate_compiler_generated_deps; then
- 	for pre_post_dep in $predeps $postdeps; do
- 	  case "$pre_post_deps " in
--	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
-+	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
- 	  esac
--	  pre_post_deps="$pre_post_deps $pre_post_dep"
-+	  func_append pre_post_deps " $pre_post_dep"
- 	done
-       fi
-       pre_post_deps=
-     fi
- 
-     deplibs=
-     newdependency_libs=
-     newlib_search_path=
-@@ -5036,52 +6127,55 @@ func_mode_link ()
- 	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
- 	esac
-       fi
-       if test "$linkmode,$pass" = "lib,dlpreopen"; then
- 	# Collect and forward deplibs of preopened libtool libs
- 	for lib in $dlprefiles; do
- 	  # Ignore non-libtool-libs
- 	  dependency_libs=
-+	  func_resolve_sysroot "$lib"
- 	  case $lib in
--	  *.la)	func_source "$lib" ;;
-+	  *.la)	func_source "$func_resolve_sysroot_result" ;;
- 	  esac
- 
- 	  # Collect preopened libtool deplibs, except any this library
- 	  # has declared as weak libs
- 	  for deplib in $dependency_libs; do
--            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
-+	    func_basename "$deplib"
-+            deplib_base=$func_basename_result
- 	    case " $weak_libs " in
- 	    *" $deplib_base "*) ;;
--	    *) deplibs="$deplibs $deplib" ;;
-+	    *) func_append deplibs " $deplib" ;;
- 	    esac
- 	  done
- 	done
- 	libs="$dlprefiles"
-       fi
-       if test "$pass" = dlopen; then
- 	# Collect dlpreopened libraries
- 	save_deplibs="$deplibs"
- 	deplibs=
-       fi
- 
-       for deplib in $libs; do
- 	lib=
- 	found=no
- 	case $deplib in
--	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
-+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
-+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
- 	  if test "$linkmode,$pass" = "prog,link"; then
- 	    compile_deplibs="$deplib $compile_deplibs"
- 	    finalize_deplibs="$deplib $finalize_deplibs"
- 	  else
--	    compiler_flags="$compiler_flags $deplib"
-+	    func_append compiler_flags " $deplib"
- 	    if test "$linkmode" = lib ; then
- 		case "$new_inherited_linker_flags " in
- 		    *" $deplib "*) ;;
--		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
-+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
- 		esac
- 	    fi
- 	  fi
- 	  continue
- 	  ;;
- 	-l*)
- 	  if test "$linkmode" != lib && test "$linkmode" != prog; then
- 	    func_warning "\`-l' is ignored for archives/objects"
-@@ -5156,65 +6250,71 @@ func_mode_link ()
- 	  if test "$linkmode,$pass" = "prog,link"; then
- 	    compile_deplibs="$deplib $compile_deplibs"
- 	    finalize_deplibs="$deplib $finalize_deplibs"
- 	  else
- 	    deplibs="$deplib $deplibs"
- 	    if test "$linkmode" = lib ; then
- 		case "$new_inherited_linker_flags " in
- 		    *" $deplib "*) ;;
--		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
-+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
- 		esac
- 	    fi
- 	  fi
- 	  continue
- 	  ;;
- 	-L*)
- 	  case $linkmode in
- 	  lib)
- 	    deplibs="$deplib $deplibs"
- 	    test "$pass" = conv && continue
- 	    newdependency_libs="$deplib $newdependency_libs"
- 	    func_stripname '-L' '' "$deplib"
--	    newlib_search_path="$newlib_search_path $func_stripname_result"
-+	    func_resolve_sysroot "$func_stripname_result"
-+	    func_append newlib_search_path " $func_resolve_sysroot_result"
- 	    ;;
- 	  prog)
- 	    if test "$pass" = conv; then
- 	      deplibs="$deplib $deplibs"
- 	      continue
- 	    fi
- 	    if test "$pass" = scan; then
- 	      deplibs="$deplib $deplibs"
- 	    else
- 	      compile_deplibs="$deplib $compile_deplibs"
- 	      finalize_deplibs="$deplib $finalize_deplibs"
- 	    fi
- 	    func_stripname '-L' '' "$deplib"
--	    newlib_search_path="$newlib_search_path $func_stripname_result"
-+	    func_resolve_sysroot "$func_stripname_result"
-+	    func_append newlib_search_path " $func_resolve_sysroot_result"
- 	    ;;
- 	  *)
- 	    func_warning "\`-L' is ignored for archives/objects"
- 	    ;;
- 	  esac # linkmode
- 	  continue
- 	  ;; # -L
- 	-R*)
- 	  if test "$pass" = link; then
- 	    func_stripname '-R' '' "$deplib"
--	    dir=$func_stripname_result
-+	    func_resolve_sysroot "$func_stripname_result"
-+	    dir=$func_resolve_sysroot_result
- 	    # Make sure the xrpath contains only unique directories.
- 	    case "$xrpath " in
- 	    *" $dir "*) ;;
--	    *) xrpath="$xrpath $dir" ;;
-+	    *) func_append xrpath " $dir" ;;
- 	    esac
- 	  fi
- 	  deplibs="$deplib $deplibs"
- 	  continue
- 	  ;;
--	*.la) lib="$deplib" ;;
-+	*.la)
-+	  func_resolve_sysroot "$deplib"
-+	  lib=$func_resolve_sysroot_result
-+	  ;;
- 	*.$libext)
- 	  if test "$pass" = conv; then
- 	    deplibs="$deplib $deplibs"
- 	    continue
- 	  fi
- 	  case $linkmode in
- 	  lib)
- 	    # Linking convenience modules into shared libraries is allowed,
-@@ -5222,35 +6322,35 @@ func_mode_link ()
- 	    case " $dlpreconveniencelibs " in
- 	    *" $deplib "*) ;;
- 	    *)
- 	      valid_a_lib=no
- 	      case $deplibs_check_method in
- 		match_pattern*)
- 		  set dummy $deplibs_check_method; shift
- 		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
--		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
-+		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
- 		    | $EGREP "$match_pattern_regex" > /dev/null; then
- 		    valid_a_lib=yes
- 		  fi
- 		;;
- 		pass_all)
- 		  valid_a_lib=yes
- 		;;
- 	      esac
- 	      if test "$valid_a_lib" != yes; then
--		$ECHO
-+		echo
- 		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
--		$ECHO "*** I have the capability to make that library automatically link in when"
--		$ECHO "*** you link to this library.  But I can only do this if you have a"
--		$ECHO "*** shared version of the library, which you do not appear to have"
--		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
--		$ECHO "*** that it is just a static archive that I should not use here."
-+		echo "*** I have the capability to make that library automatically link in when"
-+		echo "*** you link to this library.  But I can only do this if you have a"
-+		echo "*** shared version of the library, which you do not appear to have"
-+		echo "*** because the file extensions .$libext of this argument makes me believe"
-+		echo "*** that it is just a static archive that I should not use here."
- 	      else
--		$ECHO
-+		echo
- 		$ECHO "*** Warning: Linking the shared library $output against the"
- 		$ECHO "*** static library $deplib is not portable!"
- 		deplibs="$deplib $deplibs"
- 	      fi
- 	      ;;
- 	    esac
- 	    continue
- 	    ;;
-@@ -5267,21 +6367,21 @@ func_mode_link ()
- 	  ;; # *.$libext
- 	*.lo | *.$objext)
- 	  if test "$pass" = conv; then
- 	    deplibs="$deplib $deplibs"
- 	  elif test "$linkmode" = prog; then
- 	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
- 	      # If there is no dlopen support or we're linking statically,
- 	      # we need to preload.
--	      newdlprefiles="$newdlprefiles $deplib"
-+	      func_append newdlprefiles " $deplib"
- 	      compile_deplibs="$deplib $compile_deplibs"
- 	      finalize_deplibs="$deplib $finalize_deplibs"
- 	    else
--	      newdlfiles="$newdlfiles $deplib"
-+	      func_append newdlfiles " $deplib"
- 	    fi
- 	  fi
- 	  continue
- 	  ;;
- 	%DEPLIBS%)
- 	  alldeplibs=yes
- 	  continue
- 	  ;;
-@@ -5313,83 +6413,89 @@ func_mode_link ()
- 	avoidtemprpath=
- 
- 
- 	# Read the .la file
- 	func_source "$lib"
- 
- 	# Convert "-framework foo" to "foo.ltframework"
- 	if test -n "$inherited_linker_flags"; then
--	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
-+	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
- 	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
- 	    case " $new_inherited_linker_flags " in
- 	      *" $tmp_inherited_linker_flag "*) ;;
--	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
-+	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
- 	    esac
- 	  done
- 	fi
--	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-+	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
- 	if test "$linkmode,$pass" = "lib,link" ||
- 	   test "$linkmode,$pass" = "prog,scan" ||
- 	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
--	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
--	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
-+	  test -n "$dlopen" && func_append dlfiles " $dlopen"
-+	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
- 	fi
- 
- 	if test "$pass" = conv; then
- 	  # Only check for convenience libraries
- 	  deplibs="$lib $deplibs"
- 	  if test -z "$libdir"; then
- 	    if test -z "$old_library"; then
- 	      func_fatal_error "cannot find name of link library for \`$lib'"
- 	    fi
- 	    # It is a libtool convenience library, so add in its objects.
--	    convenience="$convenience $ladir/$objdir/$old_library"
--	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
-+	    func_append convenience " $ladir/$objdir/$old_library"
-+	    func_append old_convenience " $ladir/$objdir/$old_library"
- 	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
- 	    func_fatal_error "\`$lib' is not a convenience library"
- 	  fi
- 	  tmp_libs=
- 	  for deplib in $dependency_libs; do
- 	    deplibs="$deplib $deplibs"
--	    if $opt_duplicate_deps ; then
-+	    if $opt_preserve_dup_deps ; then
- 	      case "$tmp_libs " in
--	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
- 	      esac
- 	    fi
--	    tmp_libs="$tmp_libs $deplib"
-+	    func_append tmp_libs " $deplib"
- 	  done
- 	  continue
- 	fi # $pass = conv
- 
- 
- 	# Get the name of the library we link against.
- 	linklib=
--	for l in $old_library $library_names; do
--	  linklib="$l"
--	done
-+	if test -n "$old_library" &&
-+	   { test "$prefer_static_libs" = yes ||
-+	     test "$prefer_static_libs,$installed" = "built,no"; }; then
-+	  linklib=$old_library
-+	else
-+	  for l in $old_library $library_names; do
-+	    linklib="$l"
-+	  done
-+	fi
- 	if test -z "$linklib"; then
- 	  func_fatal_error "cannot find name of link library for \`$lib'"
- 	fi
- 
- 	# This library was specified with -dlopen.
- 	if test "$pass" = dlopen; then
- 	  if test -z "$libdir"; then
- 	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
- 	  fi
- 	  if test -z "$dlname" ||
- 	     test "$dlopen_support" != yes ||
- 	     test "$build_libtool_libs" = no; then
- 	    # If there is no dlname, no dlopen support or we're linking
- 	    # statically, we need to preload.  We also need to preload any
- 	    # dependent libraries so libltdl's deplib preloader doesn't
- 	    # bomb out in the load deplibs phase.
--	    dlprefiles="$dlprefiles $lib $dependency_libs"
-+	    func_append dlprefiles " $lib $dependency_libs"
- 	  else
--	    newdlfiles="$newdlfiles $lib"
-+	    func_append newdlfiles " $lib"
- 	  fi
- 	  continue
- 	fi # $pass = dlopen
- 
- 	# We need an absolute path.
- 	case $ladir in
- 	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
- 	*)
-@@ -5401,61 +6507,87 @@ func_mode_link ()
- 	  fi
- 	  ;;
- 	esac
- 	func_basename "$lib"
- 	laname="$func_basename_result"
- 
- 	# Find the relevant object directory and library name.
- 	if test "X$installed" = Xyes; then
--	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-+	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
- 	    func_warning "library \`$lib' was moved."
- 	    dir="$ladir"
- 	    absdir="$abs_ladir"
- 	    libdir="$abs_ladir"
- 	  else
--	    dir="$libdir"
--	    absdir="$libdir"
-+	    dir="$lt_sysroot$libdir"
-+	    absdir="$lt_sysroot$libdir"
- 	  fi
- 	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
- 	else
- 	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
- 	    dir="$ladir"
- 	    absdir="$abs_ladir"
- 	    # Remove this search path later
--	    notinst_path="$notinst_path $abs_ladir"
-+	    func_append notinst_path " $abs_ladir"
- 	  else
- 	    dir="$ladir/$objdir"
- 	    absdir="$abs_ladir/$objdir"
- 	    # Remove this search path later
--	    notinst_path="$notinst_path $abs_ladir"
-+	    func_append notinst_path " $abs_ladir"
- 	  fi
- 	fi # $installed = yes
- 	func_stripname 'lib' '.la' "$laname"
- 	name=$func_stripname_result
- 
- 	# This library was specified with -dlpreopen.
- 	if test "$pass" = dlpreopen; then
- 	  if test -z "$libdir" && test "$linkmode" = prog; then
- 	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
- 	  fi
--	  # Prefer using a static library (so that no silly _DYNAMIC symbols
--	  # are required to link).
--	  if test -n "$old_library"; then
--	    newdlprefiles="$newdlprefiles $dir/$old_library"
--	    # Keep a list of preopened convenience libraries to check
--	    # that they are being used correctly in the link pass.
--	    test -z "$libdir" && \
--		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
--	  # Otherwise, use the dlname, so that lt_dlopen finds it.
--	  elif test -n "$dlname"; then
--	    newdlprefiles="$newdlprefiles $dir/$dlname"
--	  else
--	    newdlprefiles="$newdlprefiles $dir/$linklib"
--	  fi
-+	  case "$host" in
-+	    # special handling for platforms with PE-DLLs.
-+	    *cygwin* | *mingw* | *cegcc* )
-+	      # Linker will automatically link against shared library if both
-+	      # static and shared are present.  Therefore, ensure we extract
-+	      # symbols from the import library if a shared library is present
-+	      # (otherwise, the dlopen module name will be incorrect).  We do
-+	      # this by putting the import library name into $newdlprefiles.
-+	      # We recover the dlopen module name by 'saving' the la file
-+	      # name in a special purpose variable, and (later) extracting the
-+	      # dlname from the la file.
-+	      if test -n "$dlname"; then
-+	        func_tr_sh "$dir/$linklib"
-+	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
-+	        func_append newdlprefiles " $dir/$linklib"
-+	      else
-+	        func_append newdlprefiles " $dir/$old_library"
-+	        # Keep a list of preopened convenience libraries to check
-+	        # that they are being used correctly in the link pass.
-+	        test -z "$libdir" && \
-+	          func_append dlpreconveniencelibs " $dir/$old_library"
-+	      fi
-+	    ;;
-+	    * )
-+	      # Prefer using a static library (so that no silly _DYNAMIC symbols
-+	      # are required to link).
-+	      if test -n "$old_library"; then
-+	        func_append newdlprefiles " $dir/$old_library"
-+	        # Keep a list of preopened convenience libraries to check
-+	        # that they are being used correctly in the link pass.
-+	        test -z "$libdir" && \
-+	          func_append dlpreconveniencelibs " $dir/$old_library"
-+	      # Otherwise, use the dlname, so that lt_dlopen finds it.
-+	      elif test -n "$dlname"; then
-+	        func_append newdlprefiles " $dir/$dlname"
-+	      else
-+	        func_append newdlprefiles " $dir/$linklib"
-+	      fi
-+	    ;;
-+	  esac
- 	fi # $pass = dlpreopen
- 
- 	if test -z "$libdir"; then
- 	  # Link the convenience library
- 	  if test "$linkmode" = lib; then
- 	    deplibs="$dir/$old_library $deplibs"
- 	  elif test "$linkmode,$pass" = "prog,link"; then
- 	    compile_deplibs="$dir/$old_library $compile_deplibs"
-@@ -5463,82 +6595,83 @@ func_mode_link ()
- 	  else
- 	    deplibs="$lib $deplibs" # used for prog,scan pass
- 	  fi
- 	  continue
- 	fi
- 
- 
- 	if test "$linkmode" = prog && test "$pass" != link; then
--	  newlib_search_path="$newlib_search_path $ladir"
-+	  func_append newlib_search_path " $ladir"
- 	  deplibs="$lib $deplibs"
- 
- 	  linkalldeplibs=no
- 	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
- 	     test "$build_libtool_libs" = no; then
- 	    linkalldeplibs=yes
- 	  fi
- 
- 	  tmp_libs=
- 	  for deplib in $dependency_libs; do
- 	    case $deplib in
- 	    -L*) func_stripname '-L' '' "$deplib"
--	         newlib_search_path="$newlib_search_path $func_stripname_result"
-+	         func_resolve_sysroot "$func_stripname_result"
-+	         func_append newlib_search_path " $func_resolve_sysroot_result"
- 		 ;;
- 	    esac
- 	    # Need to link against all dependency_libs?
- 	    if test "$linkalldeplibs" = yes; then
- 	      deplibs="$deplib $deplibs"
- 	    else
- 	      # Need to hardcode shared library paths
- 	      # or/and link against static libraries
- 	      newdependency_libs="$deplib $newdependency_libs"
- 	    fi
--	    if $opt_duplicate_deps ; then
-+	    if $opt_preserve_dup_deps ; then
- 	      case "$tmp_libs " in
--	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
- 	      esac
- 	    fi
--	    tmp_libs="$tmp_libs $deplib"
-+	    func_append tmp_libs " $deplib"
- 	  done # for deplib
- 	  continue
- 	fi # $linkmode = prog...
- 
- 	if test "$linkmode,$pass" = "prog,link"; then
- 	  if test -n "$library_names" &&
- 	     { { test "$prefer_static_libs" = no ||
- 	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
- 	       test -z "$old_library"; }; then
- 	    # We need to hardcode the library path
- 	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
- 	      # Make sure the rpath contains only unique directories.
- 	      case "$temp_rpath:" in
- 	      *"$absdir:"*) ;;
--	      *) temp_rpath="$temp_rpath$absdir:" ;;
-+	      *) func_append temp_rpath "$absdir:" ;;
- 	      esac
- 	    fi
- 
- 	    # Hardcode the library path.
- 	    # Skip directories that are in the system default run-time
- 	    # search path.
- 	    case " $sys_lib_dlsearch_path " in
- 	    *" $absdir "*) ;;
- 	    *)
- 	      case "$compile_rpath " in
- 	      *" $absdir "*) ;;
--	      *) compile_rpath="$compile_rpath $absdir"
-+	      *) func_append compile_rpath " $absdir" ;;
- 	      esac
- 	      ;;
- 	    esac
- 	    case " $sys_lib_dlsearch_path " in
- 	    *" $libdir "*) ;;
- 	    *)
- 	      case "$finalize_rpath " in
- 	      *" $libdir "*) ;;
--	      *) finalize_rpath="$finalize_rpath $libdir"
-+	      *) func_append finalize_rpath " $libdir" ;;
- 	      esac
- 	      ;;
- 	    esac
- 	  fi # $linkmode,$pass = prog,link...
- 
- 	  if test "$alldeplibs" = yes &&
- 	     { test "$deplibs_check_method" = pass_all ||
- 	       { test "$build_libtool_libs" = yes &&
-@@ -5553,39 +6686,39 @@ func_mode_link ()
- 	if test "$use_static_libs" = built && test "$installed" = yes; then
- 	  use_static_libs=no
- 	fi
- 	if test -n "$library_names" &&
- 	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
- 	  case $host in
- 	  *cygwin* | *mingw* | *cegcc*)
- 	      # No point in relinking DLLs because paths are not encoded
--	      notinst_deplibs="$notinst_deplibs $lib"
-+	      func_append notinst_deplibs " $lib"
- 	      need_relink=no
- 	    ;;
- 	  *)
- 	    if test "$installed" = no; then
--	      notinst_deplibs="$notinst_deplibs $lib"
-+	      func_append notinst_deplibs " $lib"
- 	      need_relink=yes
- 	    fi
- 	    ;;
- 	  esac
- 	  # This is a shared library
- 
- 	  # Warn about portability, can't link against -module's on some
- 	  # systems (darwin).  Don't bleat about dlopened modules though!
- 	  dlopenmodule=""
- 	  for dlpremoduletest in $dlprefiles; do
- 	    if test "X$dlpremoduletest" = "X$lib"; then
- 	      dlopenmodule="$dlpremoduletest"
- 	      break
- 	    fi
- 	  done
- 	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
--	    $ECHO
-+	    echo
- 	    if test "$linkmode" = prog; then
- 	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
- 	    else
- 	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
- 	    fi
- 	    $ECHO "*** $linklib is not portable!"
- 	  fi
- 	  if test "$linkmode" = lib &&
-@@ -5593,26 +6726,26 @@ func_mode_link ()
- 	    # Hardcode the library path.
- 	    # Skip directories that are in the system default run-time
- 	    # search path.
- 	    case " $sys_lib_dlsearch_path " in
- 	    *" $absdir "*) ;;
- 	    *)
- 	      case "$compile_rpath " in
- 	      *" $absdir "*) ;;
--	      *) compile_rpath="$compile_rpath $absdir"
-+	      *) func_append compile_rpath " $absdir" ;;
- 	      esac
- 	      ;;
- 	    esac
- 	    case " $sys_lib_dlsearch_path " in
- 	    *" $libdir "*) ;;
- 	    *)
- 	      case "$finalize_rpath " in
- 	      *" $libdir "*) ;;
--	      *) finalize_rpath="$finalize_rpath $libdir"
-+	      *) func_append finalize_rpath " $libdir" ;;
- 	      esac
- 	      ;;
- 	    esac
- 	  fi
- 
- 	  if test -n "$old_archive_from_expsyms_cmds"; then
- 	    # figure out the soname
- 	    set dummy $library_names
-@@ -5656,17 +6789,17 @@ func_mode_link ()
- 	      func_verbose "generating import library for \`$soname'"
- 	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
- 	    fi
- 	    # make sure the library variables are pointing to the new library
- 	    dir=$output_objdir
- 	    linklib=$newlib
- 	  fi # test -n "$old_archive_from_expsyms_cmds"
- 
--	  if test "$linkmode" = prog || test "$mode" != relink; then
-+	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
- 	    add_shlibpath=
- 	    add_dir=
- 	    add=
- 	    lib_linked=yes
- 	    case $hardcode_action in
- 	    immediate | unsupported)
- 	      if test "$hardcode_direct" = no; then
- 		add="$dir/$linklib"
-@@ -5678,19 +6811,19 @@ func_mode_link ()
- 		  *-*-darwin* )
- 		    # if the lib is a (non-dlopened) module then we can not
- 		    # link against it, someone is ignoring the earlier warnings
- 		    if /usr/bin/file -L $add 2> /dev/null |
- 			 $GREP ": [^:]* bundle" >/dev/null ; then
- 		      if test "X$dlopenmodule" != "X$lib"; then
- 			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
- 			if test -z "$old_library" ; then
--			  $ECHO
--			  $ECHO "*** And there doesn't seem to be a static archive available"
--			  $ECHO "*** The link will probably fail, sorry"
-+			  echo
-+			  echo "*** And there doesn't seem to be a static archive available"
-+			  echo "*** The link will probably fail, sorry"
- 			else
- 			  add="$dir/$old_library"
- 			fi
- 		      elif test -n "$old_library"; then
- 			add="$dir/$old_library"
- 		      fi
- 		    fi
- 		esac
-@@ -5707,22 +6840,22 @@ func_mode_link ()
- 		lib_linked=no
- 	      fi
- 	      ;;
- 	    relink)
- 	      if test "$hardcode_direct" = yes &&
- 	         test "$hardcode_direct_absolute" = no; then
- 		add="$dir/$linklib"
- 	      elif test "$hardcode_minus_L" = yes; then
--		add_dir="-L$dir"
-+		add_dir="-L$absdir"
- 		# Try looking first in the location we're being installed to.
- 		if test -n "$inst_prefix_dir"; then
- 		  case $libdir in
- 		    [\\/]*)
--		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
-+		      func_append add_dir " -L$inst_prefix_dir$libdir"
- 		      ;;
- 		  esac
- 		fi
- 		add="-l$name"
- 	      elif test "$hardcode_shlibpath_var" = yes; then
- 		add_shlibpath="$dir"
- 		add="-l$name"
- 	      else
-@@ -5734,68 +6867,68 @@ func_mode_link ()
- 
- 	    if test "$lib_linked" != yes; then
- 	      func_fatal_configuration "unsupported hardcode properties"
- 	    fi
- 
- 	    if test -n "$add_shlibpath"; then
- 	      case :$compile_shlibpath: in
- 	      *":$add_shlibpath:"*) ;;
--	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
-+	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
- 	      esac
- 	    fi
- 	    if test "$linkmode" = prog; then
- 	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
- 	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
- 	    else
- 	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
- 	      test -n "$add" && deplibs="$add $deplibs"
- 	      if test "$hardcode_direct" != yes &&
- 		 test "$hardcode_minus_L" != yes &&
- 		 test "$hardcode_shlibpath_var" = yes; then
- 		case :$finalize_shlibpath: in
- 		*":$libdir:"*) ;;
--		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
-+		*) func_append finalize_shlibpath "$libdir:" ;;
- 		esac
- 	      fi
- 	    fi
- 	  fi
- 
--	  if test "$linkmode" = prog || test "$mode" = relink; then
-+	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
- 	    add_shlibpath=
- 	    add_dir=
- 	    add=
- 	    # Finalize command for both is simple: just hardcode it.
- 	    if test "$hardcode_direct" = yes &&
- 	       test "$hardcode_direct_absolute" = no; then
- 	      add="$libdir/$linklib"
- 	    elif test "$hardcode_minus_L" = yes; then
- 	      add_dir="-L$libdir"
- 	      add="-l$name"
- 	    elif test "$hardcode_shlibpath_var" = yes; then
- 	      case :$finalize_shlibpath: in
- 	      *":$libdir:"*) ;;
--	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
-+	      *) func_append finalize_shlibpath "$libdir:" ;;
- 	      esac
- 	      add="-l$name"
- 	    elif test "$hardcode_automatic" = yes; then
- 	      if test -n "$inst_prefix_dir" &&
- 		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
- 		add="$inst_prefix_dir$libdir/$linklib"
- 	      else
- 		add="$libdir/$linklib"
- 	      fi
- 	    else
- 	      # We cannot seem to hardcode it, guess we'll fake it.
- 	      add_dir="-L$libdir"
- 	      # Try looking first in the location we're being installed to.
- 	      if test -n "$inst_prefix_dir"; then
- 		case $libdir in
- 		  [\\/]*)
--		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
-+		    func_append add_dir " -L$inst_prefix_dir$libdir"
- 		    ;;
- 		esac
- 	      fi
- 	      add="-l$name"
- 	    fi
- 
- 	    if test "$linkmode" = prog; then
- 	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
-@@ -5820,31 +6953,31 @@ func_mode_link ()
- 	elif test "$build_libtool_libs" = yes; then
- 	  # Not a shared library
- 	  if test "$deplibs_check_method" != pass_all; then
- 	    # We're trying link a shared library against a static one
- 	    # but the system doesn't support it.
- 
- 	    # Just print a warning and add the library to dependency_libs so
- 	    # that the program can be linked against the static library.
--	    $ECHO
-+	    echo
- 	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
--	    $ECHO "*** I have the capability to make that library automatically link in when"
--	    $ECHO "*** you link to this library.  But I can only do this if you have a"
--	    $ECHO "*** shared version of the library, which you do not appear to have."
-+	    echo "*** I have the capability to make that library automatically link in when"
-+	    echo "*** you link to this library.  But I can only do this if you have a"
-+	    echo "*** shared version of the library, which you do not appear to have."
- 	    if test "$module" = yes; then
--	      $ECHO "*** But as you try to build a module library, libtool will still create "
--	      $ECHO "*** a static module, that should work as long as the dlopening application"
--	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
-+	      echo "*** But as you try to build a module library, libtool will still create "
-+	      echo "*** a static module, that should work as long as the dlopening application"
-+	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
- 	      if test -z "$global_symbol_pipe"; then
--		$ECHO
--		$ECHO "*** However, this would only work if libtool was able to extract symbol"
--		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
--		$ECHO "*** not find such a program.  So, this module is probably useless."
--		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
-+		echo
-+		echo "*** However, this would only work if libtool was able to extract symbol"
-+		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
-+		echo "*** not find such a program.  So, this module is probably useless."
-+		echo "*** \`nm' from GNU binutils and a full rebuild may help."
- 	      fi
- 	      if test "$build_old_libs" = no; then
- 		build_libtool_libs=module
- 		build_old_libs=yes
- 	      else
- 		build_libtool_libs=no
- 	      fi
- 	    fi
-@@ -5862,47 +6995,56 @@ func_mode_link ()
- 	    # Extract -R from dependency_libs
- 	    temp_deplibs=
- 	    for libdir in $dependency_libs; do
- 	      case $libdir in
- 	      -R*) func_stripname '-R' '' "$libdir"
- 	           temp_xrpath=$func_stripname_result
- 		   case " $xrpath " in
- 		   *" $temp_xrpath "*) ;;
--		   *) xrpath="$xrpath $temp_xrpath";;
-+		   *) func_append xrpath " $temp_xrpath";;
- 		   esac;;
--	      *) temp_deplibs="$temp_deplibs $libdir";;
-+	      *) func_append temp_deplibs " $libdir";;
- 	      esac
- 	    done
- 	    dependency_libs="$temp_deplibs"
- 	  fi
- 
--	  newlib_search_path="$newlib_search_path $absdir"
-+	  func_append newlib_search_path " $absdir"
- 	  # Link against this library
- 	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
- 	  # ... and its dependency_libs
- 	  tmp_libs=
- 	  for deplib in $dependency_libs; do
- 	    newdependency_libs="$deplib $newdependency_libs"
--	    if $opt_duplicate_deps ; then
-+	    case $deplib in
-+              -L*) func_stripname '-L' '' "$deplib"
-+                   func_resolve_sysroot "$func_stripname_result";;
-+              *) func_resolve_sysroot "$deplib" ;;
-+            esac
-+	    if $opt_preserve_dup_deps ; then
- 	      case "$tmp_libs " in
--	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-+	      *" $func_resolve_sysroot_result "*)
-+                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
- 	      esac
- 	    fi
--	    tmp_libs="$tmp_libs $deplib"
-+	    func_append tmp_libs " $func_resolve_sysroot_result"
- 	  done
- 
- 	  if test "$link_all_deplibs" != no; then
- 	    # Add the search paths of all dependency libraries
- 	    for deplib in $dependency_libs; do
-+	      path=
- 	      case $deplib in
- 	      -L*) path="$deplib" ;;
- 	      *.la)
-+	        func_resolve_sysroot "$deplib"
-+	        deplib=$func_resolve_sysroot_result
- 	        func_dirname "$deplib" "" "."
--		dir="$func_dirname_result"
-+		dir=$func_dirname_result
- 		# We need an absolute path.
- 		case $dir in
- 		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
- 		*)
- 		  absdir=`cd "$dir" && pwd`
- 		  if test -z "$absdir"; then
- 		    func_warning "cannot determine absolute directory name of \`$dir'"
- 		    absdir="$dir"
-@@ -5919,18 +7061,18 @@ func_mode_link ()
- 		      depdepl=$tmp
- 		    done
- 		    if test -f "$absdir/$objdir/$depdepl" ; then
- 		      depdepl="$absdir/$objdir/$depdepl"
- 		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
-                       if test -z "$darwin_install_name"; then
-                           darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
-                       fi
--		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
--		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
-+		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-+		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
- 		      path=
- 		    fi
- 		  fi
- 		  ;;
- 		*)
- 		  path="-L$absdir/$objdir"
- 		  ;;
- 		esac
-@@ -5953,34 +7095,34 @@ func_mode_link ()
- 	  fi # link_all_deplibs != no
- 	fi # linkmode = lib
-       done # for deplib in $libs
-       if test "$pass" = link; then
- 	if test "$linkmode" = "prog"; then
- 	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
- 	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
- 	else
--	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-+	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
- 	fi
-       fi
-       dependency_libs="$newdependency_libs"
-       if test "$pass" = dlpreopen; then
- 	# Link the dlpreopened libraries before other libraries
- 	for deplib in $save_deplibs; do
- 	  deplibs="$deplib $deplibs"
- 	done
-       fi
-       if test "$pass" != dlopen; then
- 	if test "$pass" != conv; then
- 	  # Make sure lib_search_path contains only unique directories.
- 	  lib_search_path=
- 	  for dir in $newlib_search_path; do
- 	    case "$lib_search_path " in
- 	    *" $dir "*) ;;
--	    *) lib_search_path="$lib_search_path $dir" ;;
-+	    *) func_append lib_search_path " $dir" ;;
- 	    esac
- 	  done
- 	  newlib_search_path=
- 	fi
- 
- 	if test "$linkmode,$pass" != "prog,link"; then
- 	  vars="deplibs"
- 	else
-@@ -6028,36 +7170,36 @@ func_mode_link ()
- 	    esac
- 	  done
- 	  tmp_libs=
- 	  for deplib in $new_libs; do
- 	    case $deplib in
- 	    -L*)
- 	      case " $tmp_libs " in
- 	      *" $deplib "*) ;;
--	      *) tmp_libs="$tmp_libs $deplib" ;;
-+	      *) func_append tmp_libs " $deplib" ;;
- 	      esac
- 	      ;;
--	    *) tmp_libs="$tmp_libs $deplib" ;;
-+	    *) func_append tmp_libs " $deplib" ;;
- 	    esac
- 	  done
- 	  eval $var=\"$tmp_libs\"
- 	done # for var
-       fi
-       # Last step: remove runtime libs from dependency_libs
-       # (they stay in deplibs)
-       tmp_libs=
-       for i in $dependency_libs ; do
- 	case " $predeps $postdeps $compiler_lib_search_path " in
- 	*" $i "*)
- 	  i=""
- 	  ;;
- 	esac
- 	if test -n "$i" ; then
--	  tmp_libs="$tmp_libs $i"
-+	  func_append tmp_libs " $i"
- 	fi
-       done
-       dependency_libs=$tmp_libs
-     done # for pass
-     if test "$linkmode" = prog; then
-       dlfiles="$newdlfiles"
-     fi
-     if test "$linkmode" = prog || test "$linkmode" = lib; then
-@@ -6088,17 +7230,17 @@ func_mode_link ()
- 	func_warning "\`-release' is ignored for archives"
- 
-       test -n "$export_symbols$export_symbols_regex" && \
- 	func_warning "\`-export-symbols' is ignored for archives"
- 
-       # Now set the variables for building old libraries.
-       build_libtool_libs=no
-       oldlibs="$output"
--      objs="$objs$old_deplibs"
-+      func_append objs "$old_deplibs"
-       ;;
- 
-     lib)
-       # Make sure we only generate libraries of the form `libNAME.la'.
-       case $outputname in
-       lib*)
- 	func_stripname 'lib' '.la' "$outputname"
- 	name=$func_stripname_result
-@@ -6121,20 +7263,20 @@ func_mode_link ()
- 	fi
- 	;;
-       esac
- 
-       if test -n "$objs"; then
- 	if test "$deplibs_check_method" != pass_all; then
- 	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
- 	else
--	  $ECHO
-+	  echo
- 	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
- 	  $ECHO "*** objects $objs is not portable!"
--	  libobjs="$libobjs $objs"
-+	  func_append libobjs " $objs"
- 	fi
-       fi
- 
-       test "$dlself" != no && \
- 	func_warning "\`-dlopen self' is ignored for libtool libraries"
- 
-       set dummy $rpath
-       shift
-@@ -6183,23 +7325,24 @@ func_mode_link ()
- 	  #
- 	  # There are really only two kinds -- those that
- 	  # use the current revision as the major version
- 	  # and those that subtract age and use age as
- 	  # a minor version.  But, then there is irix
- 	  # which has an extra 1 added just for fun
- 	  #
- 	  case $version_type in
-+	  # correct linux to gnu/linux during the next big refactor
- 	  darwin|linux|osf|windows|none)
- 	    func_arith $number_major + $number_minor
- 	    current=$func_arith_result
- 	    age="$number_minor"
- 	    revision="$number_revision"
- 	    ;;
--	  freebsd-aout|freebsd-elf|sunos)
-+	  freebsd-aout|freebsd-elf|qnx|sunos)
- 	    current="$number_major"
- 	    revision="$number_minor"
- 	    age="0"
- 	    ;;
- 	  irix|nonstopux)
- 	    func_arith $number_major + $number_minor
- 	    current=$func_arith_result
- 	    age="$number_minor"
-@@ -6299,17 +7442,17 @@ func_mode_link ()
- 	    verstring="$verstring_prefix$major.$iface:$verstring"
- 	  done
- 
- 	  # Before this point, $major must not contain `.'.
- 	  major=.$major
- 	  versuffix="$major.$revision"
- 	  ;;
- 
--	linux)
-+	linux) # correct to gnu/linux during the next big refactor
- 	  func_arith $current - $age
- 	  major=.$func_arith_result
- 	  versuffix="$major.$age.$revision"
- 	  ;;
- 
- 	osf)
- 	  func_arith $current - $age
- 	  major=.$func_arith_result
-@@ -6322,17 +7465,17 @@ func_mode_link ()
- 	    func_arith $current - $loop
- 	    iface=$func_arith_result
- 	    func_arith $loop - 1
- 	    loop=$func_arith_result
- 	    verstring="$verstring:${iface}.0"
- 	  done
- 
- 	  # Make executables depend on our current version.
--	  verstring="$verstring:${current}.0"
-+	  func_append verstring ":${current}.0"
- 	  ;;
- 
- 	qnx)
- 	  major=".$current"
- 	  versuffix=".$current"
- 	  ;;
- 
- 	sunos)
-@@ -6390,120 +7533,121 @@ func_mode_link ()
- 	else
- 	  # Don't allow undefined symbols.
- 	  allow_undefined_flag="$no_undefined_flag"
- 	fi
- 
-       fi
- 
-       func_generate_dlsyms "$libname" "$libname" "yes"
--      libobjs="$libobjs $symfileobj"
-+      func_append libobjs " $symfileobj"
-       test "X$libobjs" = "X " && libobjs=
- 
--      if test "$mode" != relink; then
-+      if test "$opt_mode" != relink; then
- 	# Remove our outputs, but don't remove object files since they
- 	# may have been created when compiling PIC objects.
- 	removelist=
- 	tempremovelist=`$ECHO "$output_objdir/*"`
- 	for p in $tempremovelist; do
- 	  case $p in
- 	    *.$objext | *.gcno)
- 	       ;;
- 	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
- 	       if test "X$precious_files_regex" != "X"; then
- 		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
- 		 then
- 		   continue
- 		 fi
- 	       fi
--	       removelist="$removelist $p"
-+	       func_append removelist " $p"
- 	       ;;
- 	    *) ;;
- 	  esac
- 	done
- 	test -n "$removelist" && \
- 	  func_show_eval "${RM}r \$removelist"
-       fi
- 
-       # Now set the variables for building old libraries.
-       if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
--	oldlibs="$oldlibs $output_objdir/$libname.$libext"
-+	func_append oldlibs " $output_objdir/$libname.$libext"
- 
- 	# Transform .lo files to .o files.
--	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
-+	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
-       fi
- 
-       # Eliminate all temporary directories.
-       #for path in $notinst_path; do
--      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
--      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
--      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
-+      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
-+      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
-+      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
-       #done
- 
-       if test -n "$xrpath"; then
- 	# If the user specified any rpath flags, then add them.
- 	temp_xrpath=
- 	for libdir in $xrpath; do
--	  temp_xrpath="$temp_xrpath -R$libdir"
-+	  func_replace_sysroot "$libdir"
-+	  func_append temp_xrpath " -R$func_replace_sysroot_result"
- 	  case "$finalize_rpath " in
- 	  *" $libdir "*) ;;
--	  *) finalize_rpath="$finalize_rpath $libdir" ;;
-+	  *) func_append finalize_rpath " $libdir" ;;
- 	  esac
- 	done
- 	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
- 	  dependency_libs="$temp_xrpath $dependency_libs"
- 	fi
-       fi
- 
-       # Make sure dlfiles contains only unique files that won't be dlpreopened
-       old_dlfiles="$dlfiles"
-       dlfiles=
-       for lib in $old_dlfiles; do
- 	case " $dlprefiles $dlfiles " in
- 	*" $lib "*) ;;
--	*) dlfiles="$dlfiles $lib" ;;
-+	*) func_append dlfiles " $lib" ;;
- 	esac
-       done
- 
-       # Make sure dlprefiles contains only unique files
-       old_dlprefiles="$dlprefiles"
-       dlprefiles=
-       for lib in $old_dlprefiles; do
- 	case "$dlprefiles " in
- 	*" $lib "*) ;;
--	*) dlprefiles="$dlprefiles $lib" ;;
-+	*) func_append dlprefiles " $lib" ;;
- 	esac
-       done
- 
-       if test "$build_libtool_libs" = yes; then
- 	if test -n "$rpath"; then
- 	  case $host in
--	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
-+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
- 	    # these systems don't actually have a c library (as such)!
- 	    ;;
- 	  *-*-rhapsody* | *-*-darwin1.[012])
- 	    # Rhapsody C library is in the System framework
--	    deplibs="$deplibs System.ltframework"
-+	    func_append deplibs " System.ltframework"
- 	    ;;
- 	  *-*-netbsd*)
- 	    # Don't link with libc until the a.out ld.so is fixed.
- 	    ;;
- 	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
- 	    # Do not include libc due to us having libc/libc_r.
- 	    ;;
- 	  *-*-sco3.2v5* | *-*-sco5v6*)
- 	    # Causes problems with __ctype
- 	    ;;
- 	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
- 	    # Compiler inserts libc in the correct place for threads to work
- 	    ;;
- 	  *)
- 	    # Add libc to deplibs on all other systems if necessary.
- 	    if test "$build_libtool_need_lc" = "yes"; then
--	      deplibs="$deplibs -lc"
-+	      func_append deplibs " -lc"
- 	    fi
- 	    ;;
- 	  esac
- 	fi
- 
- 	# Transform deplibs into only deplibs that can be linked in shared.
- 	name_save=$name
- 	libname_save=$libname
-@@ -6542,42 +7686,42 @@ EOF
- 	    for i in $deplibs; do
- 	      case $i in
- 	      -l*)
- 		func_stripname -l '' "$i"
- 		name=$func_stripname_result
- 		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- 		  case " $predeps $postdeps " in
- 		  *" $i "*)
--		    newdeplibs="$newdeplibs $i"
-+		    func_append newdeplibs " $i"
- 		    i=""
- 		    ;;
- 		  esac
- 		fi
- 		if test -n "$i" ; then
- 		  libname=`eval "\\$ECHO \"$libname_spec\""`
- 		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
- 		  set dummy $deplib_matches; shift
- 		  deplib_match=$1
- 		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
--		    newdeplibs="$newdeplibs $i"
-+		    func_append newdeplibs " $i"
- 		  else
- 		    droppeddeps=yes
--		    $ECHO
-+		    echo
- 		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
--		    $ECHO "*** I have the capability to make that library automatically link in when"
--		    $ECHO "*** you link to this library.  But I can only do this if you have a"
--		    $ECHO "*** shared version of the library, which I believe you do not have"
--		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
--		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
-+		    echo "*** I have the capability to make that library automatically link in when"
-+		    echo "*** you link to this library.  But I can only do this if you have a"
-+		    echo "*** shared version of the library, which I believe you do not have"
-+		    echo "*** because a test_compile did reveal that the linker did not use it for"
-+		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
- 		  fi
- 		fi
- 		;;
- 	      *)
--		newdeplibs="$newdeplibs $i"
-+		func_append newdeplibs " $i"
- 		;;
- 	      esac
- 	    done
- 	  else
- 	    # Error occurred in the first compile.  Let's try to salvage
- 	    # the situation: Compile a separate program for each library.
- 	    for i in $deplibs; do
- 	      case $i in
-@@ -6585,360 +7729,375 @@ EOF
- 		func_stripname -l '' "$i"
- 		name=$func_stripname_result
- 		$opt_dry_run || $RM conftest
- 		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
- 		  ldd_output=`ldd conftest`
- 		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- 		    case " $predeps $postdeps " in
- 		    *" $i "*)
--		      newdeplibs="$newdeplibs $i"
-+		      func_append newdeplibs " $i"
- 		      i=""
- 		      ;;
- 		    esac
- 		  fi
- 		  if test -n "$i" ; then
- 		    libname=`eval "\\$ECHO \"$libname_spec\""`
- 		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
- 		    set dummy $deplib_matches; shift
- 		    deplib_match=$1
- 		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
--		      newdeplibs="$newdeplibs $i"
-+		      func_append newdeplibs " $i"
- 		    else
- 		      droppeddeps=yes
--		      $ECHO
-+		      echo
- 		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
--		      $ECHO "*** I have the capability to make that library automatically link in when"
--		      $ECHO "*** you link to this library.  But I can only do this if you have a"
--		      $ECHO "*** shared version of the library, which you do not appear to have"
--		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
--		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
-+		      echo "*** I have the capability to make that library automatically link in when"
-+		      echo "*** you link to this library.  But I can only do this if you have a"
-+		      echo "*** shared version of the library, which you do not appear to have"
-+		      echo "*** because a test_compile did reveal that the linker did not use this one"
-+		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
- 		    fi
- 		  fi
- 		else
- 		  droppeddeps=yes
--		  $ECHO
-+		  echo
- 		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
--		  $ECHO "*** make it link in!  You will probably need to install it or some"
--		  $ECHO "*** library that it depends on before this library will be fully"
--		  $ECHO "*** functional.  Installing it before continuing would be even better."
-+		  echo "*** make it link in!  You will probably need to install it or some"
-+		  echo "*** library that it depends on before this library will be fully"
-+		  echo "*** functional.  Installing it before continuing would be even better."
- 		fi
- 		;;
- 	      *)
--		newdeplibs="$newdeplibs $i"
-+		func_append newdeplibs " $i"
- 		;;
- 	      esac
- 	    done
- 	  fi
- 	  ;;
- 	file_magic*)
- 	  set dummy $deplibs_check_method; shift
- 	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
- 	  for a_deplib in $deplibs; do
- 	    case $a_deplib in
- 	    -l*)
- 	      func_stripname -l '' "$a_deplib"
- 	      name=$func_stripname_result
- 	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- 		case " $predeps $postdeps " in
- 		*" $a_deplib "*)
--		  newdeplibs="$newdeplibs $a_deplib"
-+		  func_append newdeplibs " $a_deplib"
- 		  a_deplib=""
- 		  ;;
- 		esac
- 	      fi
- 	      if test -n "$a_deplib" ; then
- 		libname=`eval "\\$ECHO \"$libname_spec\""`
-+		if test -n "$file_magic_glob"; then
-+		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
-+		else
-+		  libnameglob=$libname
-+		fi
-+		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
- 		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
--		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-+		  if test "$want_nocaseglob" = yes; then
-+		    shopt -s nocaseglob
-+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-+		    $nocaseglob
-+		  else
-+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-+		  fi
- 		  for potent_lib in $potential_libs; do
- 		      # Follow soft links.
- 		      if ls -lLd "$potent_lib" 2>/dev/null |
- 			 $GREP " -> " >/dev/null; then
- 			continue
- 		      fi
- 		      # The statement above tries to avoid entering an
- 		      # endless loop below, in case of cyclic links.
- 		      # We might still enter an endless loop, since a link
- 		      # loop can be closed while we follow links,
- 		      # but so what?
- 		      potlib="$potent_lib"
- 		      while test -h "$potlib" 2>/dev/null; do
- 			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
- 			case $potliblink in
- 			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
--			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
-+			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
- 			esac
- 		      done
- 		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
- 			 $SED -e 10q |
- 			 $EGREP "$file_magic_regex" > /dev/null; then
--			newdeplibs="$newdeplibs $a_deplib"
-+			func_append newdeplibs " $a_deplib"
- 			a_deplib=""
- 			break 2
- 		      fi
- 		  done
- 		done
- 	      fi
- 	      if test -n "$a_deplib" ; then
- 		droppeddeps=yes
--		$ECHO
-+		echo
- 		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
--		$ECHO "*** I have the capability to make that library automatically link in when"
--		$ECHO "*** you link to this library.  But I can only do this if you have a"
--		$ECHO "*** shared version of the library, which you do not appear to have"
--		$ECHO "*** because I did check the linker path looking for a file starting"
-+		echo "*** I have the capability to make that library automatically link in when"
-+		echo "*** you link to this library.  But I can only do this if you have a"
-+		echo "*** shared version of the library, which you do not appear to have"
-+		echo "*** because I did check the linker path looking for a file starting"
- 		if test -z "$potlib" ; then
- 		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
- 		else
- 		  $ECHO "*** with $libname and none of the candidates passed a file format test"
- 		  $ECHO "*** using a file magic. Last file checked: $potlib"
- 		fi
- 	      fi
- 	      ;;
- 	    *)
- 	      # Add a -L argument.
--	      newdeplibs="$newdeplibs $a_deplib"
-+	      func_append newdeplibs " $a_deplib"
- 	      ;;
- 	    esac
- 	  done # Gone through all deplibs.
- 	  ;;
- 	match_pattern*)
- 	  set dummy $deplibs_check_method; shift
- 	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
- 	  for a_deplib in $deplibs; do
- 	    case $a_deplib in
- 	    -l*)
- 	      func_stripname -l '' "$a_deplib"
- 	      name=$func_stripname_result
- 	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- 		case " $predeps $postdeps " in
- 		*" $a_deplib "*)
--		  newdeplibs="$newdeplibs $a_deplib"
-+		  func_append newdeplibs " $a_deplib"
- 		  a_deplib=""
- 		  ;;
- 		esac
- 	      fi
- 	      if test -n "$a_deplib" ; then
- 		libname=`eval "\\$ECHO \"$libname_spec\""`
- 		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
- 		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
- 		  for potent_lib in $potential_libs; do
- 		    potlib="$potent_lib" # see symlink-check above in file_magic test
--		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
-+		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
- 		       $EGREP "$match_pattern_regex" > /dev/null; then
--		      newdeplibs="$newdeplibs $a_deplib"
-+		      func_append newdeplibs " $a_deplib"
- 		      a_deplib=""
- 		      break 2
- 		    fi
- 		  done
- 		done
- 	      fi
- 	      if test -n "$a_deplib" ; then
- 		droppeddeps=yes
--		$ECHO
-+		echo
- 		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
--		$ECHO "*** I have the capability to make that library automatically link in when"
--		$ECHO "*** you link to this library.  But I can only do this if you have a"
--		$ECHO "*** shared version of the library, which you do not appear to have"
--		$ECHO "*** because I did check the linker path looking for a file starting"
-+		echo "*** I have the capability to make that library automatically link in when"
-+		echo "*** you link to this library.  But I can only do this if you have a"
-+		echo "*** shared version of the library, which you do not appear to have"
-+		echo "*** because I did check the linker path looking for a file starting"
- 		if test -z "$potlib" ; then
- 		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
- 		else
- 		  $ECHO "*** with $libname and none of the candidates passed a file format test"
- 		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
- 		fi
- 	      fi
- 	      ;;
- 	    *)
- 	      # Add a -L argument.
--	      newdeplibs="$newdeplibs $a_deplib"
-+	      func_append newdeplibs " $a_deplib"
- 	      ;;
- 	    esac
- 	  done # Gone through all deplibs.
- 	  ;;
- 	none | unknown | *)
- 	  newdeplibs=""
--	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
--	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
-+	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
- 	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- 	    for i in $predeps $postdeps ; do
- 	      # can't use Xsed below, because $i might contain '/'
--	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
-+	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
- 	    done
- 	  fi
--	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
--	     $GREP . >/dev/null; then
--	    $ECHO
-+	  case $tmp_deplibs in
-+	  *[!\	\ ]*)
-+	    echo
- 	    if test "X$deplibs_check_method" = "Xnone"; then
--	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
-+	      echo "*** Warning: inter-library dependencies are not supported in this platform."
- 	    else
--	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
-+	      echo "*** Warning: inter-library dependencies are not known to be supported."
- 	    fi
--	    $ECHO "*** All declared inter-library dependencies are being dropped."
-+	    echo "*** All declared inter-library dependencies are being dropped."
- 	    droppeddeps=yes
--	  fi
-+	    ;;
-+	  esac
- 	  ;;
- 	esac
- 	versuffix=$versuffix_save
- 	major=$major_save
- 	release=$release_save
- 	libname=$libname_save
- 	name=$name_save
- 
- 	case $host in
- 	*-*-rhapsody* | *-*-darwin1.[012])
- 	  # On Rhapsody replace the C library with the System framework
--	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
- 	  ;;
- 	esac
- 
- 	if test "$droppeddeps" = yes; then
- 	  if test "$module" = yes; then
--	    $ECHO
--	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
-+	    echo
-+	    echo "*** Warning: libtool could not satisfy all declared inter-library"
- 	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
--	    $ECHO "*** a static module, that should work as long as the dlopening"
--	    $ECHO "*** application is linked with the -dlopen flag."
-+	    echo "*** a static module, that should work as long as the dlopening"
-+	    echo "*** application is linked with the -dlopen flag."
- 	    if test -z "$global_symbol_pipe"; then
--	      $ECHO
--	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
--	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
--	      $ECHO "*** not find such a program.  So, this module is probably useless."
--	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
-+	      echo
-+	      echo "*** However, this would only work if libtool was able to extract symbol"
-+	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
-+	      echo "*** not find such a program.  So, this module is probably useless."
-+	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
- 	    fi
- 	    if test "$build_old_libs" = no; then
- 	      oldlibs="$output_objdir/$libname.$libext"
- 	      build_libtool_libs=module
- 	      build_old_libs=yes
- 	    else
- 	      build_libtool_libs=no
- 	    fi
- 	  else
--	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
--	    $ECHO "*** automatically added whenever a program is linked with this library"
--	    $ECHO "*** or is declared to -dlopen it."
-+	    echo "*** The inter-library dependencies that have been dropped here will be"
-+	    echo "*** automatically added whenever a program is linked with this library"
-+	    echo "*** or is declared to -dlopen it."
- 
- 	    if test "$allow_undefined" = no; then
--	      $ECHO
--	      $ECHO "*** Since this library must not contain undefined symbols,"
--	      $ECHO "*** because either the platform does not support them or"
--	      $ECHO "*** it was explicitly requested with -no-undefined,"
--	      $ECHO "*** libtool will only create a static version of it."
-+	      echo
-+	      echo "*** Since this library must not contain undefined symbols,"
-+	      echo "*** because either the platform does not support them or"
-+	      echo "*** it was explicitly requested with -no-undefined,"
-+	      echo "*** libtool will only create a static version of it."
- 	      if test "$build_old_libs" = no; then
- 		oldlibs="$output_objdir/$libname.$libext"
- 		build_libtool_libs=module
- 		build_old_libs=yes
- 	      else
- 		build_libtool_libs=no
- 	      fi
- 	    fi
- 	  fi
- 	fi
- 	# Done checking deplibs!
- 	deplibs=$newdeplibs
-       fi
-       # Time to change all our "foo.ltframework" stuff back to "-framework foo"
-       case $host in
- 	*-*-darwin*)
--	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
--	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
--	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-+	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-+	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
- 	  ;;
-       esac
- 
-       # move library search paths that coincide with paths to not yet
-       # installed libraries to the beginning of the library search list
-       new_libs=
-       for path in $notinst_path; do
- 	case " $new_libs " in
- 	*" -L$path/$objdir "*) ;;
- 	*)
- 	  case " $deplibs " in
- 	  *" -L$path/$objdir "*)
--	    new_libs="$new_libs -L$path/$objdir" ;;
-+	    func_append new_libs " -L$path/$objdir" ;;
- 	  esac
- 	  ;;
- 	esac
-       done
-       for deplib in $deplibs; do
- 	case $deplib in
- 	-L*)
- 	  case " $new_libs " in
- 	  *" $deplib "*) ;;
--	  *) new_libs="$new_libs $deplib" ;;
-+	  *) func_append new_libs " $deplib" ;;
- 	  esac
- 	  ;;
--	*) new_libs="$new_libs $deplib" ;;
-+	*) func_append new_libs " $deplib" ;;
- 	esac
-       done
-       deplibs="$new_libs"
- 
-       # All the library-specific variables (install_libdir is set above).
-       library_names=
-       old_library=
-       dlname=
- 
-       # Test again, we may have decided not to build it any more
-       if test "$build_libtool_libs" = yes; then
-+	# Remove ${wl} instances when linking with ld.
-+	# FIXME: should test the right _cmds variable.
-+	case $archive_cmds in
-+	  *\$LD\ *) wl= ;;
-+        esac
- 	if test "$hardcode_into_libs" = yes; then
- 	  # Hardcode the library paths
- 	  hardcode_libdirs=
- 	  dep_rpath=
- 	  rpath="$finalize_rpath"
--	  test "$mode" != relink && rpath="$compile_rpath$rpath"
-+	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
- 	  for libdir in $rpath; do
- 	    if test -n "$hardcode_libdir_flag_spec"; then
- 	      if test -n "$hardcode_libdir_separator"; then
-+		func_replace_sysroot "$libdir"
-+		libdir=$func_replace_sysroot_result
- 		if test -z "$hardcode_libdirs"; then
- 		  hardcode_libdirs="$libdir"
- 		else
- 		  # Just accumulate the unique libdirs.
- 		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- 		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- 		    ;;
- 		  *)
--		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-+		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
- 		    ;;
- 		  esac
- 		fi
- 	      else
- 		eval flag=\"$hardcode_libdir_flag_spec\"
--		dep_rpath="$dep_rpath $flag"
-+		func_append dep_rpath " $flag"
- 	      fi
- 	    elif test -n "$runpath_var"; then
- 	      case "$perm_rpath " in
- 	      *" $libdir "*) ;;
--	      *) perm_rpath="$perm_rpath $libdir" ;;
-+	      *) func_append perm_rpath " $libdir" ;;
- 	      esac
- 	    fi
- 	  done
- 	  # Substitute the hardcoded libdirs into the rpath.
- 	  if test -n "$hardcode_libdir_separator" &&
- 	     test -n "$hardcode_libdirs"; then
- 	    libdir="$hardcode_libdirs"
--	    if test -n "$hardcode_libdir_flag_spec_ld"; then
--	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
--	    else
--	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
--	    fi
-+	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
- 	  fi
- 	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
- 	    # We should set the runpath_var.
- 	    rpath=
- 	    for dir in $perm_rpath; do
--	      rpath="$rpath$dir:"
-+	      func_append rpath "$dir:"
- 	    done
- 	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
- 	  fi
- 	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
- 	fi
- 
- 	shlibpath="$finalize_shlibpath"
--	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
-+	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
- 	if test -n "$shlibpath"; then
- 	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
- 	fi
- 
- 	# Get the real and link names of the library.
- 	eval shared_ext=\"$shrext_cmds\"
- 	eval library_names=\"$library_names_spec\"
- 	set dummy $library_names
-@@ -6954,28 +8113,28 @@ EOF
- 	if test -z "$dlname"; then
- 	  dlname=$soname
- 	fi
- 
- 	lib="$output_objdir/$realname"
- 	linknames=
- 	for link
- 	do
--	  linknames="$linknames $link"
-+	  func_append linknames " $link"
- 	done
- 
- 	# Use standard objects if they are pic
--	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-+	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
- 	test "X$libobjs" = "X " && libobjs=
- 
- 	delfiles=
- 	if test -n "$export_symbols" && test -n "$include_expsyms"; then
- 	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
- 	  export_symbols="$output_objdir/$libname.uexp"
--	  delfiles="$delfiles $export_symbols"
-+	  func_append delfiles " $export_symbols"
- 	fi
- 
- 	orig_export_symbols=
- 	case $host_os in
- 	cygwin* | mingw* | cegcc*)
- 	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
- 	    # exporting using user supplied symfile
- 	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
-@@ -6996,24 +8155,56 @@ EOF
- 	# Prepare the list of exported symbols
- 	if test -z "$export_symbols"; then
- 	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
- 	    func_verbose "generating symbol list for \`$libname.la'"
- 	    export_symbols="$output_objdir/$libname.exp"
- 	    $opt_dry_run || $RM $export_symbols
- 	    cmds=$export_symbols_cmds
- 	    save_ifs="$IFS"; IFS='~'
--	    for cmd in $cmds; do
-+	    for cmd1 in $cmds; do
- 	      IFS="$save_ifs"
--	      eval cmd=\"$cmd\"
--	      func_len " $cmd"
--	      len=$func_len_result
--	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-+	      # Take the normal branch if the nm_file_list_spec branch
-+	      # doesn't work or if tool conversion is not needed.
-+	      case $nm_file_list_spec~$to_tool_file_cmd in
-+		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
-+		  try_normal_branch=yes
-+		  eval cmd=\"$cmd1\"
-+		  func_len " $cmd"
-+		  len=$func_len_result
-+		  ;;
-+		*)
-+		  try_normal_branch=no
-+		  ;;
-+	      esac
-+	      if test "$try_normal_branch" = yes \
-+		 && { test "$len" -lt "$max_cmd_len" \
-+		      || test "$max_cmd_len" -le -1; }
-+	      then
- 		func_show_eval "$cmd" 'exit $?'
- 		skipped_export=false
-+	      elif test -n "$nm_file_list_spec"; then
-+		func_basename "$output"
-+		output_la=$func_basename_result
-+		save_libobjs=$libobjs
-+		save_output=$output
-+		output=${output_objdir}/${output_la}.nm
-+		func_to_tool_file "$output"
-+		libobjs=$nm_file_list_spec$func_to_tool_file_result
-+		func_append delfiles " $output"
-+		func_verbose "creating $NM input file list: $output"
-+		for obj in $save_libobjs; do
-+		  func_to_tool_file "$obj"
-+		  $ECHO "$func_to_tool_file_result"
-+		done > "$output"
-+		eval cmd=\"$cmd1\"
-+		func_show_eval "$cmd" 'exit $?'
-+		output=$save_output
-+		libobjs=$save_libobjs
-+		skipped_export=false
- 	      else
- 		# The command line is too long to execute in one step.
- 		func_verbose "using reloadable object file for export list..."
- 		skipped_export=:
- 		# Break out early, otherwise skipped_export may be
- 		# set to false by a later but shorter cmd.
- 		break
- 	      fi
-@@ -7024,39 +8215,39 @@ EOF
- 	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
- 	    fi
- 	  fi
- 	fi
- 
- 	if test -n "$export_symbols" && test -n "$include_expsyms"; then
- 	  tmp_export_symbols="$export_symbols"
- 	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
--	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
-+	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
- 	fi
- 
- 	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
- 	  # The given exports_symbols file has to be filtered, so filter it.
- 	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
- 	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
- 	  # 's' commands which not all seds can handle. GNU sed should be fine
- 	  # though. Also, the filter scales superlinearly with the number of
- 	  # global variables. join(1) would be nice here, but unfortunately
- 	  # isn't a blessed tool.
- 	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
--	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
-+	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
- 	  export_symbols=$output_objdir/$libname.def
- 	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
- 	fi
- 
- 	tmp_deplibs=
- 	for test_deplib in $deplibs; do
- 	  case " $convenience " in
- 	  *" $test_deplib "*) ;;
- 	  *)
--	    tmp_deplibs="$tmp_deplibs $test_deplib"
-+	    func_append tmp_deplibs " $test_deplib"
- 	    ;;
- 	  esac
- 	done
- 	deplibs="$tmp_deplibs"
- 
- 	if test -n "$convenience"; then
- 	  if test -n "$whole_archive_flag_spec" &&
- 	    test "$compiler_needs_object" = yes &&
-@@ -7066,31 +8257,31 @@ EOF
- 	    whole_archive_flag_spec=
- 	  fi
- 	  if test -n "$whole_archive_flag_spec"; then
- 	    save_libobjs=$libobjs
- 	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
- 	    test "X$libobjs" = "X " && libobjs=
- 	  else
- 	    gentop="$output_objdir/${outputname}x"
--	    generated="$generated $gentop"
-+	    func_append generated " $gentop"
- 
- 	    func_extract_archives $gentop $convenience
--	    libobjs="$libobjs $func_extract_archives_result"
-+	    func_append libobjs " $func_extract_archives_result"
- 	    test "X$libobjs" = "X " && libobjs=
- 	  fi
- 	fi
- 
- 	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
- 	  eval flag=\"$thread_safe_flag_spec\"
--	  linker_flags="$linker_flags $flag"
-+	  func_append linker_flags " $flag"
- 	fi
- 
- 	# Make a backup of the uninstalled library when relinking
--	if test "$mode" = relink; then
-+	if test "$opt_mode" = relink; then
- 	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
- 	fi
- 
- 	# Do each of the archive commands.
- 	if test "$module" = yes && test -n "$module_cmds" ; then
- 	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
- 	    eval test_cmds=\"$module_expsym_cmds\"
- 	    cmds=$module_expsym_cmds
-@@ -7125,53 +8316,59 @@ EOF
- 	  # assume the linker understands whole_archive_flag_spec.
- 	  # This may have to be revisited, in case too many
- 	  # convenience libraries get linked in and end up exceeding
- 	  # the spec.
- 	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
- 	    save_libobjs=$libobjs
- 	  fi
- 	  save_output=$output
--	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
-+	  func_basename "$output"
-+	  output_la=$func_basename_result
- 
- 	  # Clear the reloadable object creation command queue and
- 	  # initialize k to one.
- 	  test_cmds=
- 	  concat_cmds=
- 	  objlist=
- 	  last_robj=
- 	  k=1
- 
- 	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
- 	    output=${output_objdir}/${output_la}.lnkscript
- 	    func_verbose "creating GNU ld script: $output"
--	    $ECHO 'INPUT (' > $output
-+	    echo 'INPUT (' > $output
- 	    for obj in $save_libobjs
- 	    do
--	      $ECHO "$obj" >> $output
-+	      func_to_tool_file "$obj"
-+	      $ECHO "$func_to_tool_file_result" >> $output
- 	    done
--	    $ECHO ')' >> $output
--	    delfiles="$delfiles $output"
-+	    echo ')' >> $output
-+	    func_append delfiles " $output"
-+	    func_to_tool_file "$output"
-+	    output=$func_to_tool_file_result
- 	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
- 	    output=${output_objdir}/${output_la}.lnk
- 	    func_verbose "creating linker input file list: $output"
- 	    : > $output
- 	    set x $save_libobjs
- 	    shift
- 	    firstobj=
- 	    if test "$compiler_needs_object" = yes; then
- 	      firstobj="$1 "
- 	      shift
- 	    fi
- 	    for obj
- 	    do
--	      $ECHO "$obj" >> $output
-+	      func_to_tool_file "$obj"
-+	      $ECHO "$func_to_tool_file_result" >> $output
- 	    done
--	    delfiles="$delfiles $output"
--	    output=$firstobj\"$file_list_spec$output\"
-+	    func_append delfiles " $output"
-+	    func_to_tool_file "$output"
-+	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
- 	  else
- 	    if test -n "$save_libobjs"; then
- 	      func_verbose "creating reloadable object files..."
- 	      output=$output_objdir/$output_la-${k}.$objext
- 	      eval test_cmds=\"$reload_cmds\"
- 	      func_len " $test_cmds"
- 	      len0=$func_len_result
- 	      len=$len0
-@@ -7185,41 +8382,44 @@ EOF
- 		if test "X$objlist" = X ||
- 		   test "$len" -lt "$max_cmd_len"; then
- 		  func_append objlist " $obj"
- 		else
- 		  # The command $test_cmds is almost too long, add a
- 		  # command to the queue.
- 		  if test "$k" -eq 1 ; then
- 		    # The first file doesn't have a previous command to add.
--		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
-+		    reload_objs=$objlist
-+		    eval concat_cmds=\"$reload_cmds\"
- 		  else
- 		    # All subsequent reloadable object files will link in
- 		    # the last one created.
--		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
-+		    reload_objs="$objlist $last_robj"
-+		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
- 		  fi
- 		  last_robj=$output_objdir/$output_la-${k}.$objext
- 		  func_arith $k + 1
- 		  k=$func_arith_result
- 		  output=$output_objdir/$output_la-${k}.$objext
--		  objlist=$obj
-+		  objlist=" $obj"
- 		  func_len " $last_robj"
- 		  func_arith $len0 + $func_len_result
- 		  len=$func_arith_result
- 		fi
- 	      done
- 	      # Handle the remaining objects by creating one last
- 	      # reloadable object file.  All subsequent reloadable object
- 	      # files will link in the last one created.
- 	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
--	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
-+	      reload_objs="$objlist $last_robj"
-+	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
- 	      if test -n "$last_robj"; then
- 	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
- 	      fi
--	      delfiles="$delfiles $output"
-+	      func_append delfiles " $output"
- 
- 	    else
- 	      output=
- 	    fi
- 
- 	    if ${skipped_export-false}; then
- 	      func_verbose "generating symbol list for \`$libname.la'"
- 	      export_symbols="$output_objdir/$libname.exp"
-@@ -7243,17 +8443,17 @@ EOF
- 	      $opt_silent || {
- 		  func_quote_for_expand "$cmd"
- 		  eval "func_echo $func_quote_for_expand_result"
- 	      }
- 	      $opt_dry_run || eval "$cmd" || {
- 		lt_exit=$?
- 
- 		# Restore the uninstalled library and exit
--		if test "$mode" = relink; then
-+		if test "$opt_mode" = relink; then
- 		  ( cd "$output_objdir" && \
- 		    $RM "${realname}T" && \
- 		    $MV "${realname}U" "$realname" )
- 		fi
- 
- 		exit $lt_exit
- 	      }
- 	    done
-@@ -7264,29 +8464,29 @@ EOF
- 	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
- 	    fi
- 	  fi
- 
-           if ${skipped_export-false}; then
- 	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
- 	      tmp_export_symbols="$export_symbols"
- 	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
--	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
-+	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
- 	    fi
- 
- 	    if test -n "$orig_export_symbols"; then
- 	      # The given exports_symbols file has to be filtered, so filter it.
- 	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
- 	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
- 	      # 's' commands which not all seds can handle. GNU sed should be fine
- 	      # though. Also, the filter scales superlinearly with the number of
- 	      # global variables. join(1) would be nice here, but unfortunately
- 	      # isn't a blessed tool.
- 	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
--	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
-+	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
- 	      export_symbols=$output_objdir/$libname.def
- 	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
- 	    fi
- 	  fi
- 
- 	  libobjs=$output
- 	  # Restore the value of output.
- 	  output=$save_output
-@@ -7317,48 +8517,48 @@ EOF
- 	if test -n "$delfiles"; then
- 	  # Append the command to remove temporary files to $cmds.
- 	  eval cmds=\"\$cmds~\$RM $delfiles\"
- 	fi
- 
- 	# Add any objects from preloaded convenience libraries
- 	if test -n "$dlprefiles"; then
- 	  gentop="$output_objdir/${outputname}x"
--	  generated="$generated $gentop"
-+	  func_append generated " $gentop"
- 
- 	  func_extract_archives $gentop $dlprefiles
--	  libobjs="$libobjs $func_extract_archives_result"
-+	  func_append libobjs " $func_extract_archives_result"
- 	  test "X$libobjs" = "X " && libobjs=
- 	fi
- 
- 	save_ifs="$IFS"; IFS='~'
- 	for cmd in $cmds; do
- 	  IFS="$save_ifs"
- 	  eval cmd=\"$cmd\"
- 	  $opt_silent || {
- 	    func_quote_for_expand "$cmd"
- 	    eval "func_echo $func_quote_for_expand_result"
- 	  }
- 	  $opt_dry_run || eval "$cmd" || {
- 	    lt_exit=$?
- 
- 	    # Restore the uninstalled library and exit
--	    if test "$mode" = relink; then
-+	    if test "$opt_mode" = relink; then
- 	      ( cd "$output_objdir" && \
- 	        $RM "${realname}T" && \
- 		$MV "${realname}U" "$realname" )
- 	    fi
- 
- 	    exit $lt_exit
- 	  }
- 	done
- 	IFS="$save_ifs"
- 
- 	# Restore the uninstalled library and exit
--	if test "$mode" = relink; then
-+	if test "$opt_mode" = relink; then
- 	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
- 
- 	  if test -n "$convenience"; then
- 	    if test -z "$whole_archive_flag_spec"; then
- 	      func_show_eval '${RM}r "$gentop"'
- 	    fi
- 	  fi
- 
-@@ -7429,28 +8629,31 @@ EOF
-       # reload_cmds runs $LD directly, so let us get rid of
-       # -Wl from whole_archive_flag_spec and hope we can get by with
-       # turning comma into space..
-       wl=
- 
-       if test -n "$convenience"; then
- 	if test -n "$whole_archive_flag_spec"; then
- 	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
--	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
-+	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
- 	else
- 	  gentop="$output_objdir/${obj}x"
--	  generated="$generated $gentop"
-+	  func_append generated " $gentop"
- 
- 	  func_extract_archives $gentop $convenience
- 	  reload_conv_objs="$reload_objs $func_extract_archives_result"
- 	fi
-       fi
- 
-+      # If we're not building shared, we need to use non_pic_objs
-+      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
-+
-       # Create the old-style object.
--      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
-+      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
- 
-       output="$obj"
-       func_execute_cmds "$reload_cmds" 'exit $?'
- 
-       # Exit if we aren't doing a library object file.
-       if test -z "$libobj"; then
- 	if test -n "$gentop"; then
- 	  func_show_eval '${RM}r "$gentop"'
-@@ -7500,78 +8703,78 @@ EOF
-         && test "$dlopen_support" = unknown \
- 	&& test "$dlopen_self" = unknown \
- 	&& test "$dlopen_self_static" = unknown && \
- 	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
- 
-       case $host in
-       *-*-rhapsody* | *-*-darwin1.[012])
- 	# On Rhapsody replace the C library is the System framework
--	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
--	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
-+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
- 	;;
-       esac
- 
-       case $host in
-       *-*-darwin*)
- 	# Don't allow lazy linking, it breaks C++ global constructors
- 	# But is supposedly fixed on 10.4 or later (yay!).
- 	if test "$tagname" = CXX ; then
- 	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
- 	    10.[0123])
--	      compile_command="$compile_command ${wl}-bind_at_load"
--	      finalize_command="$finalize_command ${wl}-bind_at_load"
-+	      func_append compile_command " ${wl}-bind_at_load"
-+	      func_append finalize_command " ${wl}-bind_at_load"
- 	    ;;
- 	  esac
- 	fi
- 	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
--	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
--	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
- 	;;
-       esac
- 
- 
-       # move library search paths that coincide with paths to not yet
-       # installed libraries to the beginning of the library search list
-       new_libs=
-       for path in $notinst_path; do
- 	case " $new_libs " in
- 	*" -L$path/$objdir "*) ;;
- 	*)
- 	  case " $compile_deplibs " in
- 	  *" -L$path/$objdir "*)
--	    new_libs="$new_libs -L$path/$objdir" ;;
-+	    func_append new_libs " -L$path/$objdir" ;;
- 	  esac
- 	  ;;
- 	esac
-       done
-       for deplib in $compile_deplibs; do
- 	case $deplib in
- 	-L*)
- 	  case " $new_libs " in
- 	  *" $deplib "*) ;;
--	  *) new_libs="$new_libs $deplib" ;;
-+	  *) func_append new_libs " $deplib" ;;
- 	  esac
- 	  ;;
--	*) new_libs="$new_libs $deplib" ;;
-+	*) func_append new_libs " $deplib" ;;
- 	esac
-       done
-       compile_deplibs="$new_libs"
- 
- 
--      compile_command="$compile_command $compile_deplibs"
--      finalize_command="$finalize_command $finalize_deplibs"
-+      func_append compile_command " $compile_deplibs"
-+      func_append finalize_command " $finalize_deplibs"
- 
-       if test -n "$rpath$xrpath"; then
- 	# If the user specified any rpath flags, then add them.
- 	for libdir in $rpath $xrpath; do
- 	  # This is the magic to use -rpath.
- 	  case "$finalize_rpath " in
- 	  *" $libdir "*) ;;
--	  *) finalize_rpath="$finalize_rpath $libdir" ;;
-+	  *) func_append finalize_rpath " $libdir" ;;
- 	  esac
- 	done
-       fi
- 
-       # Now hardcode the library paths
-       rpath=
-       hardcode_libdirs=
-       for libdir in $compile_rpath $finalize_rpath; do
-@@ -7580,42 +8783,42 @@ EOF
- 	    if test -z "$hardcode_libdirs"; then
- 	      hardcode_libdirs="$libdir"
- 	    else
- 	      # Just accumulate the unique libdirs.
- 	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- 	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- 		;;
- 	      *)
--		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
- 		;;
- 	      esac
- 	    fi
- 	  else
- 	    eval flag=\"$hardcode_libdir_flag_spec\"
--	    rpath="$rpath $flag"
-+	    func_append rpath " $flag"
- 	  fi
- 	elif test -n "$runpath_var"; then
- 	  case "$perm_rpath " in
- 	  *" $libdir "*) ;;
--	  *) perm_rpath="$perm_rpath $libdir" ;;
-+	  *) func_append perm_rpath " $libdir" ;;
- 	  esac
- 	fi
- 	case $host in
- 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
- 	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
- 	  case :$dllsearchpath: in
- 	  *":$libdir:"*) ;;
- 	  ::) dllsearchpath=$libdir;;
--	  *) dllsearchpath="$dllsearchpath:$libdir";;
-+	  *) func_append dllsearchpath ":$libdir";;
- 	  esac
- 	  case :$dllsearchpath: in
- 	  *":$testbindir:"*) ;;
- 	  ::) dllsearchpath=$testbindir;;
--	  *) dllsearchpath="$dllsearchpath:$testbindir";;
-+	  *) func_append dllsearchpath ":$testbindir";;
- 	  esac
- 	  ;;
- 	esac
-       done
-       # Substitute the hardcoded libdirs into the rpath.
-       if test -n "$hardcode_libdir_separator" &&
- 	 test -n "$hardcode_libdirs"; then
- 	libdir="$hardcode_libdirs"
-@@ -7631,78 +8834,84 @@ EOF
- 	    if test -z "$hardcode_libdirs"; then
- 	      hardcode_libdirs="$libdir"
- 	    else
- 	      # Just accumulate the unique libdirs.
- 	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- 	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- 		;;
- 	      *)
--		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
- 		;;
- 	      esac
- 	    fi
- 	  else
- 	    eval flag=\"$hardcode_libdir_flag_spec\"
--	    rpath="$rpath $flag"
-+	    func_append rpath " $flag"
- 	  fi
- 	elif test -n "$runpath_var"; then
- 	  case "$finalize_perm_rpath " in
- 	  *" $libdir "*) ;;
--	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
-+	  *) func_append finalize_perm_rpath " $libdir" ;;
- 	  esac
- 	fi
-       done
-       # Substitute the hardcoded libdirs into the rpath.
-       if test -n "$hardcode_libdir_separator" &&
- 	 test -n "$hardcode_libdirs"; then
- 	libdir="$hardcode_libdirs"
- 	eval rpath=\" $hardcode_libdir_flag_spec\"
-       fi
-       finalize_rpath="$rpath"
- 
-       if test -n "$libobjs" && test "$build_old_libs" = yes; then
- 	# Transform all the library objects into standard objects.
--	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
--	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-+	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
-+	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
-       fi
- 
-       func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
- 
-       # template prelinking step
-       if test -n "$prelink_cmds"; then
- 	func_execute_cmds "$prelink_cmds" 'exit $?'
-       fi
- 
-       wrappers_required=yes
-       case $host in
-+      *cegcc* | *mingw32ce*)
-+        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
-+        wrappers_required=no
-+        ;;
-       *cygwin* | *mingw* )
-         if test "$build_libtool_libs" != yes; then
-           wrappers_required=no
-         fi
-         ;;
--      *cegcc)
--        # Disable wrappers for cegcc, we are cross compiling anyway.
--        wrappers_required=no
--        ;;
-       *)
-         if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
-           wrappers_required=no
-         fi
-         ;;
-       esac
-       if test "$wrappers_required" = no; then
- 	# Replace the output file specification.
--	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
-+	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
- 	link_command="$compile_command$compile_rpath"
- 
- 	# We have no uninstalled library dependencies, so finalize right now.
- 	exit_status=0
- 	func_show_eval "$link_command" 'exit_status=$?'
- 
-+	if test -n "$postlink_cmds"; then
-+	  func_to_tool_file "$output"
-+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-+	  func_execute_cmds "$postlink_cmds" 'exit $?'
-+	fi
-+
- 	# Delete the generated files.
- 	if test -f "$output_objdir/${outputname}S.${objext}"; then
- 	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
- 	fi
- 
- 	exit $exit_status
-       fi
- 
-@@ -7715,72 +8924,85 @@ EOF
- 
-       compile_var=
-       finalize_var=
-       if test -n "$runpath_var"; then
- 	if test -n "$perm_rpath"; then
- 	  # We should set the runpath_var.
- 	  rpath=
- 	  for dir in $perm_rpath; do
--	    rpath="$rpath$dir:"
-+	    func_append rpath "$dir:"
- 	  done
- 	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
- 	fi
- 	if test -n "$finalize_perm_rpath"; then
- 	  # We should set the runpath_var.
- 	  rpath=
- 	  for dir in $finalize_perm_rpath; do
--	    rpath="$rpath$dir:"
-+	    func_append rpath "$dir:"
- 	  done
- 	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
- 	fi
-       fi
- 
-       if test "$no_install" = yes; then
- 	# We don't need to create a wrapper script.
- 	link_command="$compile_var$compile_command$compile_rpath"
- 	# Replace the output file specification.
--	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
-+	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
- 	# Delete the old output file.
- 	$opt_dry_run || $RM $output
- 	# Link the executable and exit
- 	func_show_eval "$link_command" 'exit $?'
-+
-+	if test -n "$postlink_cmds"; then
-+	  func_to_tool_file "$output"
-+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-+	  func_execute_cmds "$postlink_cmds" 'exit $?'
-+	fi
-+
- 	exit $EXIT_SUCCESS
-       fi
- 
-       if test "$hardcode_action" = relink; then
- 	# Fast installation is not supported
- 	link_command="$compile_var$compile_command$compile_rpath"
- 	relink_command="$finalize_var$finalize_command$finalize_rpath"
- 
- 	func_warning "this platform does not like uninstalled shared libraries"
- 	func_warning "\`$output' will be relinked during installation"
-       else
- 	if test "$fast_install" != no; then
- 	  link_command="$finalize_var$compile_command$finalize_rpath"
- 	  if test "$fast_install" = yes; then
--	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
-+	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
- 	  else
- 	    # fast_install is set to needless
- 	    relink_command=
- 	  fi
- 	else
- 	  link_command="$compile_var$compile_command$compile_rpath"
- 	  relink_command="$finalize_var$finalize_command$finalize_rpath"
- 	fi
-       fi
- 
-       # Replace the output file specification.
--      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-+      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
- 
-       # Delete the old output files.
-       $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
- 
-       func_show_eval "$link_command" 'exit $?'
- 
-+      if test -n "$postlink_cmds"; then
-+	func_to_tool_file "$output_objdir/$outputname"
-+	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-+	func_execute_cmds "$postlink_cmds" 'exit $?'
-+      fi
-+
-       # Now create the wrapper script.
-       func_verbose "creating $output"
- 
-       # Quote the relink command for shipping.
-       if test -n "$relink_command"; then
- 	# Preserve any variables that may affect compiler behavior
- 	for var in $variables_saved_for_relink; do
- 	  if eval test -z \"\${$var+set}\"; then
-@@ -7788,28 +9010,17 @@ EOF
- 	  elif eval var_value=\$$var; test -z "$var_value"; then
- 	    relink_command="$var=; export $var; $relink_command"
- 	  else
- 	    func_quote_for_eval "$var_value"
- 	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
- 	  fi
- 	done
- 	relink_command="(cd `pwd`; $relink_command)"
--	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
--      fi
--
--      # Quote $ECHO for shipping.
--      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
--	case $progpath in
--	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
--	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
--	esac
--	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
--      else
--	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
-+	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
-       fi
- 
-       # Only actually do things if not in dry run mode.
-       $opt_dry_run || {
- 	# win32 will think the script is a binary if it has
- 	# a .exe suffix, so we strip it off here.
- 	case $output in
- 	  *.exe) func_stripname '' '.exe' "$output"
-@@ -7879,60 +9090,60 @@ EOF
- 	build_libtool_libs=no
-       else
- 	if test "$build_libtool_libs" = module; then
- 	  oldobjs="$libobjs_save"
- 	  build_libtool_libs=no
- 	else
- 	  oldobjs="$old_deplibs $non_pic_objects"
- 	  if test "$preload" = yes && test -f "$symfileobj"; then
--	    oldobjs="$oldobjs $symfileobj"
-+	    func_append oldobjs " $symfileobj"
- 	  fi
- 	fi
- 	addlibs="$old_convenience"
-       fi
- 
-       if test -n "$addlibs"; then
- 	gentop="$output_objdir/${outputname}x"
--	generated="$generated $gentop"
-+	func_append generated " $gentop"
- 
- 	func_extract_archives $gentop $addlibs
--	oldobjs="$oldobjs $func_extract_archives_result"
-+	func_append oldobjs " $func_extract_archives_result"
-       fi
- 
-       # Do each command in the archive commands.
-       if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
- 	cmds=$old_archive_from_new_cmds
-       else
- 
- 	# Add any objects from preloaded convenience libraries
- 	if test -n "$dlprefiles"; then
- 	  gentop="$output_objdir/${outputname}x"
--	  generated="$generated $gentop"
-+	  func_append generated " $gentop"
- 
- 	  func_extract_archives $gentop $dlprefiles
--	  oldobjs="$oldobjs $func_extract_archives_result"
-+	  func_append oldobjs " $func_extract_archives_result"
- 	fi
- 
- 	# POSIX demands no paths to be encoded in archives.  We have
- 	# to avoid creating archives with duplicate basenames if we
- 	# might have to extract them afterwards, e.g., when creating a
- 	# static archive out of a convenience library, or when linking
- 	# the entirety of a libtool archive into another (currently
- 	# not supported by libtool).
- 	if (for obj in $oldobjs
- 	    do
- 	      func_basename "$obj"
- 	      $ECHO "$func_basename_result"
- 	    done | sort | sort -uc >/dev/null 2>&1); then
- 	  :
- 	else
--	  $ECHO "copying selected object files to avoid basename conflicts..."
-+	  echo "copying selected object files to avoid basename conflicts..."
- 	  gentop="$output_objdir/${outputname}x"
--	  generated="$generated $gentop"
-+	  func_append generated " $gentop"
- 	  func_mkdir_p "$gentop"
- 	  save_oldobjs=$oldobjs
- 	  oldobjs=
- 	  counter=1
- 	  for obj in $save_oldobjs
- 	  do
- 	    func_basename "$obj"
- 	    objbase="$func_basename_result"
-@@ -7946,28 +9157,40 @@ EOF
- 		func_arith $counter + 1
- 		counter=$func_arith_result
- 		case " $oldobjs " in
- 		*[\ /]"$newobj "*) ;;
- 		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
- 		esac
- 	      done
- 	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
--	      oldobjs="$oldobjs $gentop/$newobj"
-+	      func_append oldobjs " $gentop/$newobj"
- 	      ;;
--	    *) oldobjs="$oldobjs $obj" ;;
-+	    *) func_append oldobjs " $obj" ;;
- 	    esac
- 	  done
- 	fi
-+	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-+	tool_oldlib=$func_to_tool_file_result
- 	eval cmds=\"$old_archive_cmds\"
- 
- 	func_len " $cmds"
- 	len=$func_len_result
- 	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
- 	  cmds=$old_archive_cmds
-+	elif test -n "$archiver_list_spec"; then
-+	  func_verbose "using command file archive linking..."
-+	  for obj in $oldobjs
-+	  do
-+	    func_to_tool_file "$obj"
-+	    $ECHO "$func_to_tool_file_result"
-+	  done > $output_objdir/$libname.libcmd
-+	  func_to_tool_file "$output_objdir/$libname.libcmd"
-+	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
-+	  cmds=$old_archive_cmds
- 	else
- 	  # the command line is too long to link in one step, link in parts
- 	  func_verbose "using piecewise archive linking..."
- 	  save_RANLIB=$RANLIB
- 	  RANLIB=:
- 	  objlist=
- 	  concat_cmds=
- 	  save_oldobjs=$oldobjs
-@@ -8031,17 +9254,17 @@ EOF
- 	  relink_command="$var=; export $var; $relink_command"
- 	else
- 	  func_quote_for_eval "$var_value"
- 	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
- 	fi
-       done
-       # Quote the link command for shipping.
-       relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
--      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-+      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
-       if test "$hardcode_automatic" = yes ; then
- 	relink_command=
-       fi
- 
-       # Only create the output if not a dry run.
-       $opt_dry_run || {
- 	for installed in no yes; do
- 	  if test "$installed" = yes; then
-@@ -8051,84 +9274,113 @@ EOF
- 	    output="$output_objdir/$outputname"i
- 	    # Replace all uninstalled libtool libraries with the installed ones
- 	    newdependency_libs=
- 	    for deplib in $dependency_libs; do
- 	      case $deplib in
- 	      *.la)
- 		func_basename "$deplib"
- 		name="$func_basename_result"
--		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-+		func_resolve_sysroot "$deplib"
-+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
- 		test -z "$libdir" && \
- 		  func_fatal_error "\`$deplib' is not a valid libtool archive"
--		newdependency_libs="$newdependency_libs $libdir/$name"
-+		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
- 		;;
--	      *) newdependency_libs="$newdependency_libs $deplib" ;;
-+	      -L*)
-+		func_stripname -L '' "$deplib"
-+		func_replace_sysroot "$func_stripname_result"
-+		func_append newdependency_libs " -L$func_replace_sysroot_result"
-+		;;
-+	      -R*)
-+		func_stripname -R '' "$deplib"
-+		func_replace_sysroot "$func_stripname_result"
-+		func_append newdependency_libs " -R$func_replace_sysroot_result"
-+		;;
-+	      *) func_append newdependency_libs " $deplib" ;;
- 	      esac
- 	    done
- 	    dependency_libs="$newdependency_libs"
- 	    newdlfiles=
- 
- 	    for lib in $dlfiles; do
- 	      case $lib in
- 	      *.la)
- 	        func_basename "$lib"
- 		name="$func_basename_result"
- 		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
- 		test -z "$libdir" && \
- 		  func_fatal_error "\`$lib' is not a valid libtool archive"
--		newdlfiles="$newdlfiles $libdir/$name"
-+		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
- 		;;
--	      *) newdlfiles="$newdlfiles $lib" ;;
-+	      *) func_append newdlfiles " $lib" ;;
- 	      esac
- 	    done
- 	    dlfiles="$newdlfiles"
- 	    newdlprefiles=
- 	    for lib in $dlprefiles; do
- 	      case $lib in
- 	      *.la)
- 		# Only pass preopened files to the pseudo-archive (for
- 		# eventual linking with the app. that links it) if we
- 		# didn't already link the preopened objects directly into
- 		# the library:
- 		func_basename "$lib"
- 		name="$func_basename_result"
- 		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
- 		test -z "$libdir" && \
- 		  func_fatal_error "\`$lib' is not a valid libtool archive"
--		newdlprefiles="$newdlprefiles $libdir/$name"
-+		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
- 		;;
- 	      esac
- 	    done
- 	    dlprefiles="$newdlprefiles"
- 	  else
- 	    newdlfiles=
- 	    for lib in $dlfiles; do
- 	      case $lib in
- 		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
- 		*) abs=`pwd`"/$lib" ;;
- 	      esac
--	      newdlfiles="$newdlfiles $abs"
-+	      func_append newdlfiles " $abs"
- 	    done
- 	    dlfiles="$newdlfiles"
- 	    newdlprefiles=
- 	    for lib in $dlprefiles; do
- 	      case $lib in
- 		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
- 		*) abs=`pwd`"/$lib" ;;
- 	      esac
--	      newdlprefiles="$newdlprefiles $abs"
-+	      func_append newdlprefiles " $abs"
- 	    done
- 	    dlprefiles="$newdlprefiles"
- 	  fi
- 	  $RM $output
- 	  # place dlname in correct position for cygwin
-+	  # In fact, it would be nice if we could use this code for all target
-+	  # systems that can't hard-code library paths into their executables
-+	  # and that have no shared library path variable independent of PATH,
-+	  # but it turns out we can't easily determine that from inspecting
-+	  # libtool variables, so we have to hard-code the OSs to which it
-+	  # applies here; at the moment, that means platforms that use the PE
-+	  # object format with DLL files.  See the long comment at the top of
-+	  # tests/bindir.at for full details.
- 	  tdlname=$dlname
- 	  case $host,$output,$installed,$module,$dlname in
--	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
-+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
-+	      # If a -bindir argument was supplied, place the dll there.
-+	      if test "x$bindir" != x ;
-+	      then
-+		func_relative_path "$install_libdir" "$bindir"
-+		tdlname=$func_relative_path_result$dlname
-+	      else
-+		# Otherwise fall back on heuristic.
-+		tdlname=../bin/$dlname
-+	      fi
-+	      ;;
- 	  esac
- 	  $ECHO > $output "\
- # $outputname - a libtool library file
- # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
- #
- # Please DO NOT delete this file!
- # It is necessary for linking the library.
- 
-@@ -8177,17 +9429,17 @@ relink_command=\"$relink_command\""
-       # Do a symbolic link so that the libtool archive can be found in
-       # LD_LIBRARY_PATH before the program is installed.
-       func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
-       ;;
-     esac
-     exit $EXIT_SUCCESS
- }
- 
--{ test "$mode" = link || test "$mode" = relink; } &&
-+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
-     func_mode_link ${1+"$@"}
- 
- 
- # func_mode_uninstall arg...
- func_mode_uninstall ()
- {
-     $opt_debug
-     RM="$nonopt"
-@@ -8197,45 +9449,44 @@ func_mode_uninstall ()
- 
-     # This variable tells wrapper scripts just to set variables rather
-     # than running their programs.
-     libtool_install_magic="$magic"
- 
-     for arg
-     do
-       case $arg in
--      -f) RM="$RM $arg"; rmforce=yes ;;
--      -*) RM="$RM $arg" ;;
--      *) files="$files $arg" ;;
-+      -f) func_append RM " $arg"; rmforce=yes ;;
-+      -*) func_append RM " $arg" ;;
-+      *) func_append files " $arg" ;;
-       esac
-     done
- 
-     test -z "$RM" && \
-       func_fatal_help "you must specify an RM program"
- 
-     rmdirs=
- 
--    origobjdir="$objdir"
-     for file in $files; do
-       func_dirname "$file" "" "."
-       dir="$func_dirname_result"
-       if test "X$dir" = X.; then
--	objdir="$origobjdir"
-+	odir="$objdir"
-       else
--	objdir="$dir/$origobjdir"
-+	odir="$dir/$objdir"
-       fi
-       func_basename "$file"
-       name="$func_basename_result"
--      test "$mode" = uninstall && objdir="$dir"
--
--      # Remember objdir for removal later, being careful to avoid duplicates
--      if test "$mode" = clean; then
-+      test "$opt_mode" = uninstall && odir="$dir"
-+
-+      # Remember odir for removal later, being careful to avoid duplicates
-+      if test "$opt_mode" = clean; then
- 	case " $rmdirs " in
--	  *" $objdir "*) ;;
--	  *) rmdirs="$rmdirs $objdir" ;;
-+	  *" $odir "*) ;;
-+	  *) func_append rmdirs " $odir" ;;
- 	esac
-       fi
- 
-       # Don't error if the file doesn't exist and rm -f was used.
-       if { test -L "$file"; } >/dev/null 2>&1 ||
- 	 { test -h "$file"; } >/dev/null 2>&1 ||
- 	 test -f "$file"; then
- 	:
-@@ -8251,28 +9502,27 @@ func_mode_uninstall ()
-       case $name in
-       *.la)
- 	# Possibly a libtool archive, so verify it.
- 	if func_lalib_p "$file"; then
- 	  func_source $dir/$name
- 
- 	  # Delete the libtool libraries and symlinks.
- 	  for n in $library_names; do
--	    rmfiles="$rmfiles $objdir/$n"
-+	    func_append rmfiles " $odir/$n"
- 	  done
--	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
--
--	  case "$mode" in
-+	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
-+
-+	  case "$opt_mode" in
- 	  clean)
--	    case "  $library_names " in
--	    # "  " in the beginning catches empty $dlname
-+	    case " $library_names " in
- 	    *" $dlname "*) ;;
--	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
-+	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
- 	    esac
--	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
-+	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
- 	    ;;
- 	  uninstall)
- 	    if test -n "$library_names"; then
- 	      # Do each command in the postuninstall commands.
- 	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
- 	    fi
- 
- 	    if test -n "$old_library"; then
-@@ -8290,90 +9540,89 @@ func_mode_uninstall ()
- 	if func_lalib_p "$file"; then
- 
- 	  # Read the .lo file
- 	  func_source $dir/$name
- 
- 	  # Add PIC object to the list of files to remove.
- 	  if test -n "$pic_object" &&
- 	     test "$pic_object" != none; then
--	    rmfiles="$rmfiles $dir/$pic_object"
-+	    func_append rmfiles " $dir/$pic_object"
- 	  fi
- 
- 	  # Add non-PIC object to the list of files to remove.
- 	  if test -n "$non_pic_object" &&
- 	     test "$non_pic_object" != none; then
--	    rmfiles="$rmfiles $dir/$non_pic_object"
-+	    func_append rmfiles " $dir/$non_pic_object"
- 	  fi
- 	fi
- 	;;
- 
-       *)
--	if test "$mode" = clean ; then
-+	if test "$opt_mode" = clean ; then
- 	  noexename=$name
- 	  case $file in
- 	  *.exe)
- 	    func_stripname '' '.exe' "$file"
- 	    file=$func_stripname_result
- 	    func_stripname '' '.exe' "$name"
- 	    noexename=$func_stripname_result
- 	    # $file with .exe has already been added to rmfiles,
- 	    # add $file without .exe
--	    rmfiles="$rmfiles $file"
-+	    func_append rmfiles " $file"
- 	    ;;
- 	  esac
- 	  # Do a test to see if this is a libtool program.
- 	  if func_ltwrapper_p "$file"; then
- 	    if func_ltwrapper_executable_p "$file"; then
- 	      func_ltwrapper_scriptname "$file"
- 	      relink_command=
- 	      func_source $func_ltwrapper_scriptname_result
--	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
-+	      func_append rmfiles " $func_ltwrapper_scriptname_result"
- 	    else
- 	      relink_command=
- 	      func_source $dir/$noexename
- 	    fi
- 
- 	    # note $name still contains .exe if it was in $file originally
- 	    # as does the version of $file that was added into $rmfiles
--	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
-+	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
- 	    if test "$fast_install" = yes && test -n "$relink_command"; then
--	      rmfiles="$rmfiles $objdir/lt-$name"
-+	      func_append rmfiles " $odir/lt-$name"
- 	    fi
- 	    if test "X$noexename" != "X$name" ; then
--	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
-+	      func_append rmfiles " $odir/lt-${noexename}.c"
- 	    fi
- 	  fi
- 	fi
- 	;;
-       esac
-       func_show_eval "$RM $rmfiles" 'exit_status=1'
-     done
--    objdir="$origobjdir"
- 
-     # Try to remove the ${objdir}s in the directories where we deleted files
-     for dir in $rmdirs; do
-       if test -d "$dir"; then
- 	func_show_eval "rmdir $dir >/dev/null 2>&1"
-       fi
-     done
- 
-     exit $exit_status
- }
- 
--{ test "$mode" = uninstall || test "$mode" = clean; } &&
-+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
-     func_mode_uninstall ${1+"$@"}
- 
--test -z "$mode" && {
-+test -z "$opt_mode" && {
-   help="$generic_help"
-   func_fatal_help "you must specify a MODE"
- }
- 
- test -z "$exec_cmd" && \
--  func_fatal_help "invalid operation mode \`$mode'"
-+  func_fatal_help "invalid operation mode \`$opt_mode'"
- 
- if test -n "$exec_cmd"; then
-   eval exec "$exec_cmd"
-   exit $EXIT_FAILURE
- fi
- 
- exit $exit_status
- 
-diff --git a/js/src/ctypes/libffi/m4/asmcfi.m4 b/js/src/ctypes/libffi/m4/asmcfi.m4
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/m4/asmcfi.m4
-@@ -0,0 +1,13 @@
-+AC_DEFUN([GCC_AS_CFI_PSEUDO_OP],
-+[AC_CACHE_CHECK([assembler .cfi pseudo-op support],
-+    gcc_cv_as_cfi_pseudo_op, [
-+    gcc_cv_as_cfi_pseudo_op=unknown
-+    AC_TRY_COMPILE([asm (".cfi_startproc\n\t.cfi_endproc");],,
-+		   [gcc_cv_as_cfi_pseudo_op=yes],
-+		   [gcc_cv_as_cfi_pseudo_op=no])
-+ ])
-+ if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then
-+    AC_DEFINE(HAVE_AS_CFI_PSEUDO_OP, 1,
-+	      [Define if your assembler supports .cfi_* directives.])
-+ fi
-+])
-diff --git a/js/src/ctypes/libffi/m4/ax_append_flag.m4 b/js/src/ctypes/libffi/m4/ax_append_flag.m4
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/m4/ax_append_flag.m4
-@@ -0,0 +1,69 @@
-+# ===========================================================================
-+#      http://www.gnu.org/software/autoconf-archive/ax_append_flag.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+#   AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE])
-+#
-+# DESCRIPTION
-+#
-+#   FLAG is appended to the FLAGS-VARIABLE shell variable, with a space
-+#   added in between.
-+#
-+#   If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
-+#   CFLAGS) is used.  FLAGS-VARIABLE is not changed if it already contains
-+#   FLAG.  If FLAGS-VARIABLE is unset in the shell, it is set to exactly
-+#   FLAG.
-+#
-+#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION.
-+#
-+# LICENSE
-+#
-+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
-+#
-+#   This program is free software: you can redistribute it and/or modify it
-+#   under the terms of the GNU General Public License as published by the
-+#   Free Software Foundation, either version 3 of the License, or (at your
-+#   option) any later version.
-+#
-+#   This program is distributed in the hope that it will be useful, but
-+#   WITHOUT ANY WARRANTY; without even the implied warranty of
-+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-+#   Public License for more details.
-+#
-+#   You should have received a copy of the GNU General Public License along
-+#   with this program. If not, see <http://www.gnu.org/licenses/>.
-+#
-+#   As a special exception, the respective Autoconf Macro's copyright owner
-+#   gives unlimited permission to copy, distribute and modify the configure
-+#   scripts that are the output of Autoconf when processing the Macro. You
-+#   need not follow the terms of the GNU General Public License when using
-+#   or distributing such scripts, even though portions of the text of the
-+#   Macro appear in them. The GNU General Public License (GPL) does govern
-+#   all other use of the material that constitutes the Autoconf Macro.
-+#
-+#   This special exception to the GPL applies to versions of the Autoconf
-+#   Macro released by the Autoconf Archive. When you make and distribute a
-+#   modified version of the Autoconf Macro, you may extend this special
-+#   exception to the GPL to apply to your modified version as well.
-+
-+#serial 2
-+
-+AC_DEFUN([AX_APPEND_FLAG],
-+[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
-+AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])dnl
-+AS_VAR_SET_IF(FLAGS,
-+  [case " AS_VAR_GET(FLAGS) " in
-+    *" $1 "*)
-+      AC_RUN_LOG([: FLAGS already contains $1])
-+      ;;
-+    *)
-+      AC_RUN_LOG([: FLAGS="$FLAGS $1"])
-+      AS_VAR_SET(FLAGS, ["AS_VAR_GET(FLAGS) $1"])
-+      ;;
-+   esac],
-+  [AS_VAR_SET(FLAGS,["$1"])])
-+AS_VAR_POPDEF([FLAGS])dnl
-+])dnl AX_APPEND_FLAG
-diff --git a/js/src/ctypes/libffi/m4/ax_cc_maxopt.m4 b/js/src/ctypes/libffi/m4/ax_cc_maxopt.m4
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/m4/ax_cc_maxopt.m4
-@@ -0,0 +1,181 @@
-+# ===========================================================================
-+#       http://www.gnu.org/software/autoconf-archive/ax_cc_maxopt.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+#   AX_CC_MAXOPT
-+#
-+# DESCRIPTION
-+#
-+#   Try to turn on "good" C optimization flags for various compilers and
-+#   architectures, for some definition of "good". (In our case, good for
-+#   FFTW and hopefully for other scientific codes. Modify as needed.)
-+#
-+#   The user can override the flags by setting the CFLAGS environment
-+#   variable. The user can also specify --enable-portable-binary in order to
-+#   disable any optimization flags that might result in a binary that only
-+#   runs on the host architecture.
-+#
-+#   Note also that the flags assume that ANSI C aliasing rules are followed
-+#   by the code (e.g. for gcc's -fstrict-aliasing), and that floating-point
-+#   computations can be re-ordered as needed.
-+#
-+#   Requires macros: AX_CHECK_COMPILE_FLAG, AX_COMPILER_VENDOR,
-+#   AX_GCC_ARCHFLAG, AX_GCC_X86_CPUID.
-+#
-+# LICENSE
-+#
-+#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
-+#   Copyright (c) 2008 Matteo Frigo
-+#
-+#   This program is free software: you can redistribute it and/or modify it
-+#   under the terms of the GNU General Public License as published by the
-+#   Free Software Foundation, either version 3 of the License, or (at your
-+#   option) any later version.
-+#
-+#   This program is distributed in the hope that it will be useful, but
-+#   WITHOUT ANY WARRANTY; without even the implied warranty of
-+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-+#   Public License for more details.
-+#
-+#   You should have received a copy of the GNU General Public License along
-+#   with this program. If not, see <http://www.gnu.org/licenses/>.
-+#
-+#   As a special exception, the respective Autoconf Macro's copyright owner
-+#   gives unlimited permission to copy, distribute and modify the configure
-+#   scripts that are the output of Autoconf when processing the Macro. You
-+#   need not follow the terms of the GNU General Public License when using
-+#   or distributing such scripts, even though portions of the text of the
-+#   Macro appear in them. The GNU General Public License (GPL) does govern
-+#   all other use of the material that constitutes the Autoconf Macro.
-+#
-+#   This special exception to the GPL applies to versions of the Autoconf
-+#   Macro released by the Autoconf Archive. When you make and distribute a
-+#   modified version of the Autoconf Macro, you may extend this special
-+#   exception to the GPL to apply to your modified version as well.
-+
-+#serial 13
-+
-+AC_DEFUN([AX_CC_MAXOPT],
-+[
-+AC_REQUIRE([AC_PROG_CC])
-+AC_REQUIRE([AX_COMPILER_VENDOR])
-+AC_REQUIRE([AC_CANONICAL_HOST])
-+
-+AC_ARG_ENABLE(portable-binary, [AS_HELP_STRING([--enable-portable-binary], [disable compiler optimizations that would produce unportable binaries])],
-+	acx_maxopt_portable=$enableval, acx_maxopt_portable=no)
-+
-+# Try to determine "good" native compiler flags if none specified via CFLAGS
-+if test "$ac_test_CFLAGS" != "set"; then
-+  CFLAGS=""
-+  case $ax_cv_c_compiler_vendor in
-+    dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host"
-+	 if test "x$acx_maxopt_portable" = xno; then
-+           CFLAGS="$CFLAGS -arch host"
-+         fi;;
-+
-+    sun) CFLAGS="-native -fast -xO5 -dalign"
-+	 if test "x$acx_maxopt_portable" = xyes; then
-+	   CFLAGS="$CFLAGS -xarch=generic"
-+         fi;;
-+
-+    hp)  CFLAGS="+Oall +Optrs_ansi +DSnative"
-+	 if test "x$acx_maxopt_portable" = xyes; then
-+	   CFLAGS="$CFLAGS +DAportable"
-+	 fi;;
-+
-+    ibm) if test "x$acx_maxopt_portable" = xno; then
-+           xlc_opt="-qarch=auto -qtune=auto"
-+	 else
-+           xlc_opt="-qtune=auto"
-+	 fi
-+         AX_CHECK_COMPILE_FLAG($xlc_opt,
-+		CFLAGS="-O3 -qansialias -w $xlc_opt",
-+               [CFLAGS="-O3 -qansialias -w"
-+                echo "******************************************************"
-+                echo "*  You seem to have the IBM  C compiler.  It is      *"
-+                echo "*  recommended for best performance that you use:    *"
-+                echo "*                                                    *"
-+                echo "*    CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *"
-+                echo "*                      ^^^        ^^^                *"
-+                echo "*  where xxx is pwr2, pwr3, 604, or whatever kind of *"
-+                echo "*  CPU you have.  (Set the CFLAGS environment var.   *"
-+                echo "*  and re-run configure.)  For more info, man cc.    *"
-+                echo "******************************************************"])
-+         ;;
-+
-+    intel) CFLAGS="-O3 -ansi_alias"
-+	if test "x$acx_maxopt_portable" = xno; then
-+	  icc_archflag=unknown
-+	  icc_flags=""
-+	  case $host_cpu in
-+	    i686*|x86_64*)
-+              # icc accepts gcc assembly syntax, so these should work:
-+	      AX_GCC_X86_CPUID(0)
-+              AX_GCC_X86_CPUID(1)
-+	      case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG
-+                *:756e6547:*:*) # Intel
-+                  case $ax_cv_gcc_x86_cpuid_1 in
-+                    *6a?:*[[234]]:*:*|*6[[789b]]?:*:*:*) icc_flags="-xK";;
-+                    *f3[[347]]:*:*:*|*f4[1347]:*:*:*) icc_flags="-xP -xN -xW -xK";;
-+                    *f??:*:*:*) icc_flags="-xN -xW -xK";;
-+                  esac ;;
-+              esac ;;
-+          esac
-+          if test "x$icc_flags" != x; then
-+            for flag in $icc_flags; do
-+              AX_CHECK_COMPILE_FLAG($flag, [icc_archflag=$flag; break])
-+            done
-+          fi
-+          AC_MSG_CHECKING([for icc architecture flag])
-+	  AC_MSG_RESULT($icc_archflag)
-+          if test "x$icc_archflag" != xunknown; then
-+            CFLAGS="$CFLAGS $icc_archflag"
-+          fi
-+        fi
-+	;;
-+
-+    gnu)
-+     # default optimization flags for gcc on all systems
-+     CFLAGS="-O3 -fomit-frame-pointer"
-+
-+     # -malign-double for x86 systems
-+     # LIBFFI -- DON'T DO THIS - CHANGES ABI
-+     # AX_CHECK_COMPILE_FLAG(-malign-double, CFLAGS="$CFLAGS -malign-double")
-+
-+     #  -fstrict-aliasing for gcc-2.95+
-+     AX_CHECK_COMPILE_FLAG(-fstrict-aliasing,
-+	CFLAGS="$CFLAGS -fstrict-aliasing")
-+
-+     # note that we enable "unsafe" fp optimization with other compilers, too
-+     AX_CHECK_COMPILE_FLAG(-ffast-math, CFLAGS="$CFLAGS -ffast-math")
-+
-+     AX_GCC_ARCHFLAG($acx_maxopt_portable)
-+     ;;
-+  esac
-+
-+  if test -z "$CFLAGS"; then
-+	echo ""
-+	echo "********************************************************"
-+        echo "* WARNING: Don't know the best CFLAGS for this system  *"
-+        echo "* Use ./configure CFLAGS=... to specify your own flags *"
-+	echo "* (otherwise, a default of CFLAGS=-O3 will be used)    *"
-+	echo "********************************************************"
-+	echo ""
-+        CFLAGS="-O3"
-+  fi
-+
-+  AX_CHECK_COMPILE_FLAG($CFLAGS, [], [
-+	echo ""
-+        echo "********************************************************"
-+        echo "* WARNING: The guessed CFLAGS don't seem to work with  *"
-+        echo "* your compiler.                                       *"
-+        echo "* Use ./configure CFLAGS=... to specify your own flags *"
-+        echo "********************************************************"
-+        echo ""
-+        CFLAGS=""
-+  ])
-+
-+fi
-+])
-diff --git a/js/src/ctypes/libffi/m4/ax_cflags_warn_all.m4 b/js/src/ctypes/libffi/m4/ax_cflags_warn_all.m4
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/m4/ax_cflags_warn_all.m4
-@@ -0,0 +1,122 @@
-+# ===========================================================================
-+#    http://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+#   AX_CFLAGS_WARN_ALL   [(shellvar [,default, [A/NA]])]
-+#   AX_CXXFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])]
-+#   AX_FCFLAGS_WARN_ALL  [(shellvar [,default, [A/NA]])]
-+#
-+# DESCRIPTION
-+#
-+#   Try to find a compiler option that enables most reasonable warnings.
-+#
-+#   For the GNU compiler it will be -Wall (and -ansi -pedantic) The result
-+#   is added to the shellvar being CFLAGS, CXXFLAGS, or FCFLAGS by default.
-+#
-+#   Currently this macro knows about the GCC, Solaris, Digital Unix, AIX,
-+#   HP-UX, IRIX, NEC SX-5 (Super-UX 10), Cray J90 (Unicos 10.0.0.8), and
-+#   Intel compilers.  For a given compiler, the Fortran flags are much more
-+#   experimental than their C equivalents.
-+#
-+#    - $1 shell-variable-to-add-to : CFLAGS, CXXFLAGS, or FCFLAGS
-+#    - $2 add-value-if-not-found : nothing
-+#    - $3 action-if-found : add value to shellvariable
-+#    - $4 action-if-not-found : nothing
-+#
-+#   NOTE: These macros depend on AX_APPEND_FLAG.
-+#
-+# LICENSE
-+#
-+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-+#   Copyright (c) 2010 Rhys Ulerich <rhys.ulerich@gmail.com>
-+#
-+#   This program is free software; you can redistribute it and/or modify it
-+#   under the terms of the GNU General Public License as published by the
-+#   Free Software Foundation; either version 3 of the License, or (at your
-+#   option) any later version.
-+#
-+#   This program is distributed in the hope that it will be useful, but
-+#   WITHOUT ANY WARRANTY; without even the implied warranty of
-+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-+#   Public License for more details.
-+#
-+#   You should have received a copy of the GNU General Public License along
-+#   with this program. If not, see <http://www.gnu.org/licenses/>.
-+#
-+#   As a special exception, the respective Autoconf Macro's copyright owner
-+#   gives unlimited permission to copy, distribute and modify the configure
-+#   scripts that are the output of Autoconf when processing the Macro. You
-+#   need not follow the terms of the GNU General Public License when using
-+#   or distributing such scripts, even though portions of the text of the
-+#   Macro appear in them. The GNU General Public License (GPL) does govern
-+#   all other use of the material that constitutes the Autoconf Macro.
-+#
-+#   This special exception to the GPL applies to versions of the Autoconf
-+#   Macro released by the Autoconf Archive. When you make and distribute a
-+#   modified version of the Autoconf Macro, you may extend this special
-+#   exception to the GPL to apply to your modified version as well.
-+
-+#serial 14
-+
-+AC_DEFUN([AX_FLAGS_WARN_ALL],[dnl
-+AS_VAR_PUSHDEF([FLAGS],[_AC_LANG_PREFIX[]FLAGS])dnl
-+AS_VAR_PUSHDEF([VAR],[ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl
-+AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings],
-+VAR,[VAR="no, unknown"
-+ac_save_[]FLAGS="$[]FLAGS"
-+for ac_arg dnl
-+in "-warn all  % -warn all"   dnl Intel
-+   "-pedantic  % -Wall"       dnl GCC
-+   "-xstrconst % -v"          dnl Solaris C
-+   "-std1      % -verbose -w0 -warnprotos" dnl Digital Unix
-+   "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX
-+   "-ansi -ansiE % -fullwarn" dnl IRIX
-+   "+ESlit     % +w1"         dnl HP-UX C
-+   "-Xc        % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10)
-+   "-h conform % -h msglevel 2" dnl Cray C (Unicos)
-+   #
-+do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
-+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
-+                     [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
-+done
-+FLAGS="$ac_save_[]FLAGS"
-+])
-+AS_VAR_POPDEF([FLAGS])dnl
-+AC_REQUIRE([AX_APPEND_FLAG])
-+case ".$VAR" in
-+     .ok|.ok,*) m4_ifvaln($3,$3) ;;
-+   .|.no|.no,*) m4_default($4,[m4_ifval($2,[AX_APPEND_FLAG([$2], [$1])])]) ;;
-+   *) m4_default($3,[AX_APPEND_FLAG([$VAR], [$1])]) ;;
-+esac
-+AS_VAR_POPDEF([VAR])dnl
-+])dnl AX_FLAGS_WARN_ALL
-+dnl  implementation tactics:
-+dnl   the for-argument contains a list of options. The first part of
-+dnl   these does only exist to detect the compiler - usually it is
-+dnl   a global option to enable -ansi or -extrawarnings. All other
-+dnl   compilers will fail about it. That was needed since a lot of
-+dnl   compilers will give false positives for some option-syntax
-+dnl   like -Woption or -Xoption as they think of it is a pass-through
-+dnl   to later compile stages or something. The "%" is used as a
-+dnl   delimiter. A non-option comment can be given after "%%" marks
-+dnl   which will be shown but not added to the respective C/CXXFLAGS.
-+
-+AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl
-+AC_LANG_PUSH([C])
-+AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4])
-+AC_LANG_POP([C])
-+])
-+
-+AC_DEFUN([AX_CXXFLAGS_WARN_ALL],[dnl
-+AC_LANG_PUSH([C++])
-+AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4])
-+AC_LANG_POP([C++])
-+])
-+
-+AC_DEFUN([AX_FCFLAGS_WARN_ALL],[dnl
-+AC_LANG_PUSH([Fortran])
-+AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4])
-+AC_LANG_POP([Fortran])
-+])
-diff --git a/js/src/ctypes/libffi/m4/ax_check_compile_flag.m4 b/js/src/ctypes/libffi/m4/ax_check_compile_flag.m4
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/m4/ax_check_compile_flag.m4
-@@ -0,0 +1,72 @@
-+# ===========================================================================
-+#   http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+#   AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
-+#
-+# DESCRIPTION
-+#
-+#   Check whether the given FLAG works with the current language's compiler
-+#   or gives an error.  (Warnings, however, are ignored)
-+#
-+#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
-+#   success/failure.
-+#
-+#   If EXTRA-FLAGS is defined, it is added to the current language's default
-+#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with
-+#   the flags: "CFLAGS EXTRA-FLAGS FLAG".  This can for example be used to
-+#   force the compiler to issue an error when a bad flag is given.
-+#
-+#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
-+#   macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
-+#
-+# LICENSE
-+#
-+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
-+#
-+#   This program is free software: you can redistribute it and/or modify it
-+#   under the terms of the GNU General Public License as published by the
-+#   Free Software Foundation, either version 3 of the License, or (at your
-+#   option) any later version.
-+#
-+#   This program is distributed in the hope that it will be useful, but
-+#   WITHOUT ANY WARRANTY; without even the implied warranty of
-+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-+#   Public License for more details.
-+#
-+#   You should have received a copy of the GNU General Public License along
-+#   with this program. If not, see <http://www.gnu.org/licenses/>.
-+#
-+#   As a special exception, the respective Autoconf Macro's copyright owner
-+#   gives unlimited permission to copy, distribute and modify the configure
-+#   scripts that are the output of Autoconf when processing the Macro. You
-+#   need not follow the terms of the GNU General Public License when using
-+#   or distributing such scripts, even though portions of the text of the
-+#   Macro appear in them. The GNU General Public License (GPL) does govern
-+#   all other use of the material that constitutes the Autoconf Macro.
-+#
-+#   This special exception to the GPL applies to versions of the Autoconf
-+#   Macro released by the Autoconf Archive. When you make and distribute a
-+#   modified version of the Autoconf Macro, you may extend this special
-+#   exception to the GPL to apply to your modified version as well.
-+
-+#serial 2
-+
-+AC_DEFUN([AX_CHECK_COMPILE_FLAG],
-+[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
-+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
-+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
-+  ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
-+  _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
-+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
-+    [AS_VAR_SET(CACHEVAR,[yes])],
-+    [AS_VAR_SET(CACHEVAR,[no])])
-+  _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
-+AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
-+  [m4_default([$2], :)],
-+  [m4_default([$3], :)])
-+AS_VAR_POPDEF([CACHEVAR])dnl
-+])dnl AX_CHECK_COMPILE_FLAGS
-diff --git a/js/src/ctypes/libffi/m4/ax_compiler_vendor.m4 b/js/src/ctypes/libffi/m4/ax_compiler_vendor.m4
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/m4/ax_compiler_vendor.m4
-@@ -0,0 +1,84 @@
-+# ===========================================================================
-+#    http://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+#   AX_COMPILER_VENDOR
-+#
-+# DESCRIPTION
-+#
-+#   Determine the vendor of the C/C++ compiler, e.g., gnu, intel, ibm, sun,
-+#   hp, borland, comeau, dec, cray, kai, lcc, metrowerks, sgi, microsoft,
-+#   watcom, etc. The vendor is returned in the cache variable
-+#   $ax_cv_c_compiler_vendor for C and $ax_cv_cxx_compiler_vendor for C++.
-+#
-+# LICENSE
-+#
-+#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
-+#   Copyright (c) 2008 Matteo Frigo
-+#
-+#   This program is free software: you can redistribute it and/or modify it
-+#   under the terms of the GNU General Public License as published by the
-+#   Free Software Foundation, either version 3 of the License, or (at your
-+#   option) any later version.
-+#
-+#   This program is distributed in the hope that it will be useful, but
-+#   WITHOUT ANY WARRANTY; without even the implied warranty of
-+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-+#   Public License for more details.
-+#
-+#   You should have received a copy of the GNU General Public License along
-+#   with this program. If not, see <http://www.gnu.org/licenses/>.
-+#
-+#   As a special exception, the respective Autoconf Macro's copyright owner
-+#   gives unlimited permission to copy, distribute and modify the configure
-+#   scripts that are the output of Autoconf when processing the Macro. You
-+#   need not follow the terms of the GNU General Public License when using
-+#   or distributing such scripts, even though portions of the text of the
-+#   Macro appear in them. The GNU General Public License (GPL) does govern
-+#   all other use of the material that constitutes the Autoconf Macro.
-+#
-+#   This special exception to the GPL applies to versions of the Autoconf
-+#   Macro released by the Autoconf Archive. When you make and distribute a
-+#   modified version of the Autoconf Macro, you may extend this special
-+#   exception to the GPL to apply to your modified version as well.
-+
-+#serial 11
-+
-+AC_DEFUN([AX_COMPILER_VENDOR],
-+[AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
-+  [# note: don't check for gcc first since some other compilers define __GNUC__
-+  vendors="intel:     __ICC,__ECC,__INTEL_COMPILER
-+           ibm:       __xlc__,__xlC__,__IBMC__,__IBMCPP__
-+           pathscale: __PATHCC__,__PATHSCALE__
-+           clang:     __clang__
-+           gnu:       __GNUC__
-+           sun:       __SUNPRO_C,__SUNPRO_CC
-+           hp:        __HP_cc,__HP_aCC
-+           dec:       __DECC,__DECCXX,__DECC_VER,__DECCXX_VER
-+           borland:   __BORLANDC__,__TURBOC__
-+           comeau:    __COMO__
-+           cray:      _CRAYC
-+           kai:       __KCC
-+           lcc:       __LCC__
-+           sgi:       __sgi,sgi
-+           microsoft: _MSC_VER
-+           metrowerks: __MWERKS__
-+           watcom:    __WATCOMC__
-+           portland:  __PGI
-+           unknown:   UNKNOWN"
-+  for ventest in $vendors; do
-+    case $ventest in
-+      *:) vendor=$ventest; continue ;;
-+      *)  vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;;
-+    esac
-+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
-+      #if !($vencpp)
-+        thisisanerror;
-+      #endif
-+    ])], [break])
-+  done
-+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1`
-+ ])
-+])
-diff --git a/js/src/ctypes/libffi/m4/ax_configure_args.m4 b/js/src/ctypes/libffi/m4/ax_configure_args.m4
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/m4/ax_configure_args.m4
-@@ -0,0 +1,70 @@
-+# ===========================================================================
-+#     http://www.gnu.org/software/autoconf-archive/ax_configure_args.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+#   AX_CONFIGURE_ARGS
-+#
-+# DESCRIPTION
-+#
-+#   Helper macro for AX_ENABLE_BUILDDIR.
-+#
-+#   The traditional way of starting a subdir-configure is running the script
-+#   with ${1+"$@"} but since autoconf 2.60 this is broken. Instead we have
-+#   to rely on eval'ing $ac_configure_args however some old autoconf
-+#   versions do not provide that. To ensure maximum portability of autoconf
-+#   extension macros this helper can be AC_REQUIRE'd so that
-+#   $ac_configure_args will alsways be present.
-+#
-+#   Sadly, the traditional "exec $SHELL" of the enable_builddir macros is
-+#   spoiled now and must be replaced by "eval + exit $?".
-+#
-+#   Example:
-+#
-+#     AC_DEFUN([AX_ENABLE_SUBDIR],[dnl
-+#       AC_REQUIRE([AX_CONFIGURE_ARGS])dnl
-+#       eval $SHELL $ac_configure_args || exit $?
-+#       ...])
-+#
-+# LICENSE
-+#
-+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-+#
-+#   This program is free software; you can redistribute it and/or modify it
-+#   under the terms of the GNU General Public License as published by the
-+#   Free Software Foundation; either version 3 of the License, or (at your
-+#   option) any later version.
-+#
-+#   This program is distributed in the hope that it will be useful, but
-+#   WITHOUT ANY WARRANTY; without even the implied warranty of
-+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-+#   Public License for more details.
-+#
-+#   You should have received a copy of the GNU General Public License along
-+#   with this program. If not, see <http://www.gnu.org/licenses/>.
-+#
-+#   As a special exception, the respective Autoconf Macro's copyright owner
-+#   gives unlimited permission to copy, distribute and modify the configure
-+#   scripts that are the output of Autoconf when processing the Macro. You
-+#   need not follow the terms of the GNU General Public License when using
-+#   or distributing such scripts, even though portions of the text of the
-+#   Macro appear in them. The GNU General Public License (GPL) does govern
-+#   all other use of the material that constitutes the Autoconf Macro.
-+#
-+#   This special exception to the GPL applies to versions of the Autoconf
-+#   Macro released by the Autoconf Archive. When you make and distribute a
-+#   modified version of the Autoconf Macro, you may extend this special
-+#   exception to the GPL to apply to your modified version as well.
-+
-+#serial 9
-+
-+AC_DEFUN([AX_CONFIGURE_ARGS],[
-+   # [$]@ is unsable in 2.60+ but earlier autoconf had no ac_configure_args
-+   if test "${ac_configure_args+set}" != "set" ; then
-+      ac_configure_args=
-+      for ac_arg in ${1+"[$]@"}; do
-+         ac_configure_args="$ac_configure_args '$ac_arg'"
-+      done
-+   fi
-+])
-diff --git a/js/src/ctypes/libffi/m4/ax_enable_builddir.m4 b/js/src/ctypes/libffi/m4/ax_enable_builddir.m4
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/m4/ax_enable_builddir.m4
-@@ -0,0 +1,300 @@
-+# ===========================================================================
-+#    http://www.gnu.org/software/autoconf-archive/ax_enable_builddir.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+#   AX_ENABLE_BUILDDIR [(dirstring-or-command [,Makefile.mk [,-all]])]
-+#
-+# DESCRIPTION
-+#
-+#   If the current configure was run within the srcdir then we move all
-+#   configure-files into a subdir and let the configure steps continue
-+#   there. We provide an option --disable-builddir to suppress the move into
-+#   a separate builddir.
-+#
-+#   Defaults:
-+#
-+#     $1 = $host (overridden with $HOST)
-+#     $2 = Makefile.mk
-+#     $3 = -all
-+#
-+#   This macro must be called before AM_INIT_AUTOMAKE. It creates a default
-+#   toplevel srcdir Makefile from the information found in the created
-+#   toplevel builddir Makefile. It just copies the variables and
-+#   rule-targets, each extended with a default rule-execution that recurses
-+#   into the build directory of the current "HOST". You can override the
-+#   auto-dection through `config.guess` and build-time of course, as in
-+#
-+#     make HOST=i386-mingw-cross
-+#
-+#   which can of course set at configure time as well using
-+#
-+#     configure --host=i386-mingw-cross
-+#
-+#   After the default has been created, additional rules can be appended
-+#   that will not just recurse into the subdirectories and only ever exist
-+#   in the srcdir toplevel makefile - these parts are read from the $2 =
-+#   Makefile.mk file
-+#
-+#   The automatic rules are usually scanning the toplevel Makefile for lines
-+#   like '#### $host |$builddir' to recognize the place where to recurse
-+#   into. Usually, the last one is the only one used. However, almost all
-+#   targets have an additional "*-all" rule which makes the script to
-+#   recurse into _all_ variants of the current HOST (!!) setting. The "-all"
-+#   suffix can be overriden for the macro as well.
-+#
-+#   a special rule is only given for things like "dist" that will copy the
-+#   tarball from the builddir to the sourcedir (or $(PUB)) for reason of
-+#   convenience.
-+#
-+# LICENSE
-+#
-+#   Copyright (c) 2009 Guido U. Draheim <guidod@gmx.de>
-+#   Copyright (c) 2009 Alan Jenkins <alan-jenkins@tuffmail.co.uk>
-+#
-+#   This program is free software; you can redistribute it and/or modify it
-+#   under the terms of the GNU General Public License as published by the
-+#   Free Software Foundation; either version 3 of the License, or (at your
-+#   option) any later version.
-+#
-+#   This program is distributed in the hope that it will be useful, but
-+#   WITHOUT ANY WARRANTY; without even the implied warranty of
-+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-+#   Public License for more details.
-+#
-+#   You should have received a copy of the GNU General Public License along
-+#   with this program. If not, see <http://www.gnu.org/licenses/>.
-+#
-+#   As a special exception, the respective Autoconf Macro's copyright owner
-+#   gives unlimited permission to copy, distribute and modify the configure
-+#   scripts that are the output of Autoconf when processing the Macro. You
-+#   need not follow the terms of the GNU General Public License when using
-+#   or distributing such scripts, even though portions of the text of the
-+#   Macro appear in them. The GNU General Public License (GPL) does govern
-+#   all other use of the material that constitutes the Autoconf Macro.
-+#
-+#   This special exception to the GPL applies to versions of the Autoconf
-+#   Macro released by the Autoconf Archive. When you make and distribute a
-+#   modified version of the Autoconf Macro, you may extend this special
-+#   exception to the GPL to apply to your modified version as well.
-+
-+#serial 23
-+
-+AC_DEFUN([AX_ENABLE_BUILDDIR],[
-+AC_REQUIRE([AC_CANONICAL_HOST])[]dnl
-+AC_REQUIRE([AX_CONFIGURE_ARGS])[]dnl
-+AC_REQUIRE([AM_AUX_DIR_EXPAND])[]dnl
-+AC_BEFORE([$0],[AM_INIT_AUTOMAKE])dnl
-+AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl
-+AS_VAR_PUSHDEF([AUX],[ax_enable_builddir_auxdir])dnl
-+AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl
-+SUB="."
-+AC_ARG_ENABLE([builddir], AS_HELP_STRING(
-+  [--disable-builddir],[disable automatic build in subdir of sources])
-+  ,[SUB="$enableval"], [SUB="auto"])
-+if test ".$ac_srcdir_defaulted" != ".no" ; then
-+if test ".$srcdir" = ".." ; then
-+  if test -f config.status ; then
-+    AC_MSG_NOTICE(toplevel srcdir already configured... skipping subdir build)
-+  else
-+    test ".$SUB" = "."  && SUB="."
-+    test ".$SUB" = ".no"  && SUB="."
-+    test ".$TARGET" = "." && TARGET="$target"
-+    test ".$SUB" = ".auto" && SUB="m4_ifval([$1], [$1],[$TARGET])"
-+    if test ".$SUB" != ".." ; then    # we know where to go and
-+      AS_MKDIR_P([$SUB])
-+      echo __.$SUB.__ > $SUB/conftest.tmp
-+      cd $SUB
-+      if grep __.$SUB.__ conftest.tmp >/dev/null 2>/dev/null ; then
-+        rm conftest.tmp
-+        AC_MSG_RESULT([continue configure in default builddir "./$SUB"])
-+      else
-+        AC_MSG_ERROR([could not change to default builddir "./$SUB"])
-+      fi
-+      srcdir=`echo "$SUB" |
-+              sed -e 's,^\./,,;s,[[^/]]$,&/,;s,[[^/]]*/,../,g;s,[[/]]$,,;'`
-+      # going to restart from subdirectory location
-+      test -f $srcdir/config.log   && mv $srcdir/config.log   .
-+      test -f $srcdir/confdefs.h   && mv $srcdir/confdefs.h   .
-+      test -f $srcdir/conftest.log && mv $srcdir/conftest.log .
-+      test -f $srcdir/$cache_file  && mv $srcdir/$cache_file  .
-+      AC_MSG_RESULT(....exec $SHELL $srcdir/[$]0 "--srcdir=$srcdir" "--enable-builddir=$SUB" ${1+"[$]@"})
-+      case "[$]0" in # restart
-+       [/\\]*) eval $SHELL "'[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;;
-+       *) eval $SHELL "'$srcdir/[$]0'" "'--srcdir=$srcdir'" "'--enable-builddir=$SUB'" $ac_configure_args ;;
-+      esac ; exit $?
-+    fi
-+  fi
-+fi fi
-+test ".$SUB" = ".auto" && SUB="."
-+dnl ac_path_prog uses "set dummy" to override $@ which would defeat the "exec"
-+AC_PATH_PROG(SED,gsed sed, sed)
-+AUX="$am_aux_dir"
-+AS_VAR_POPDEF([SED])dnl
-+AS_VAR_POPDEF([AUX])dnl
-+AS_VAR_POPDEF([SUB])dnl
-+AC_CONFIG_COMMANDS([buildir],[dnl .............. config.status ..............
-+AS_VAR_PUSHDEF([SUB],[ax_enable_builddir])dnl
-+AS_VAR_PUSHDEF([TOP],[top_srcdir])dnl
-+AS_VAR_PUSHDEF([SRC],[ac_top_srcdir])dnl
-+AS_VAR_PUSHDEF([AUX],[ax_enable_builddir_auxdir])dnl
-+AS_VAR_PUSHDEF([SED],[ax_enable_builddir_sed])dnl
-+pushdef([END],[Makefile.mk])dnl
-+pushdef([_ALL],[ifelse([$3],,[-all],[$3])])dnl
-+  SRC="$ax_enable_builddir_srcdir"
-+  if test ".$SUB" = ".." ; then
-+    if test -f "$TOP/Makefile" ; then
-+      AC_MSG_NOTICE([skipping TOP/Makefile - left untouched])
-+    else
-+      AC_MSG_NOTICE([skipping TOP/Makefile - not created])
-+    fi
-+  else
-+    if test -f "$SRC/Makefile" ; then
-+      a=`grep "^VERSION " "$SRC/Makefile"` ; b=`grep "^VERSION " Makefile`
-+      test "$a" != "$b" && rm "$SRC/Makefile"
-+    fi
-+    if test -f "$SRC/Makefile" ; then
-+	echo "$SRC/Makefile : $SRC/Makefile.in" > $tmp/conftemp.mk
-+	echo "	[]@ echo 'REMOVED,,,' >\$[]@" >> $tmp/conftemp.mk
-+      eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null"
-+      if grep '^REMOVED,,,' "$SRC/Makefile" >/dev/null
-+      then rm $SRC/Makefile ; fi
-+      cp $tmp/conftemp.mk $SRC/makefiles.mk~      ## DEBUGGING
-+    fi
-+    if test ! -f "$SRC/Makefile" ; then
-+      AC_MSG_NOTICE([create TOP/Makefile guessed from local Makefile])
-+      x='`' ; cat >$tmp/conftemp.sed <<_EOF
-+/^\$/n
-+x
-+/^\$/bS
-+x
-+/\\\\\$/{H;d;}
-+{H;s/.*//;x;}
-+bM
-+:S
-+x
-+/\\\\\$/{h;d;}
-+{h;s/.*//;x;}
-+:M
-+s/\\(\\n\\)	/\\1 /g
-+/^	/d
-+/^[[	 ]]*[[\\#]]/d
-+/^VPATH *=/d
-+s/^srcdir *=.*/srcdir = ./
-+s/^top_srcdir *=.*/top_srcdir = ./
-+/[[:=]]/!d
-+/^\\./d
-+dnl Now handle rules (i.e. lines containing ":" but not " = ").
-+/ = /b
-+/ .= /b
-+/:/!b
-+s/:.*/:/
-+s/ /  /g
-+s/ \\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/ \\1 \\1[]_ALL\\2/g
-+s/^\\([[a-z]][[a-z-]]*[[a-zA-Z0-9]]\\)\\([[ :]]\\)/\\1 \\1[]_ALL\\2/
-+s/  / /g
-+/^all all[]_ALL[[ :]]/i\\
-+all-configured : all[]_ALL
-+dnl dist-all exists... and would make for dist-all-all
-+s/ [[a-zA-Z0-9-]]*[]_ALL [[a-zA-Z0-9-]]*[]_ALL[]_ALL//g
-+/[]_ALL[]_ALL/d
-+a\\
-+	@ HOST="\$(HOST)\" \\\\\\
-+	; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\
-+	; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
-+	; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
-+	; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" -eq "0" ; then : \\\\\\
-+	; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\
-+	; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
-+	; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\
-+	; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
-+	; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done
-+dnl special rule add-on: "dist" copies the tarball to $(PUB). (source tree)
-+/dist[]_ALL *:/a\\
-+	@ HOST="\$(HOST)\" \\\\\\
-+	; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\
-+	; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
-+	; found=$x echo \$\$BUILD | wc -w $x \\\\\\
-+	; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\
-+	; if test "\$\$found" -eq "0" ; then : \\\\\\
-+	; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
-+	; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
-+	; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\
-+	; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
-+dnl special rule add-on: "dist-foo" copies all the archives to $(PUB). (source tree)
-+/dist-[[a-zA-Z0-9]]*[]_ALL *:/a\\
-+	@ HOST="\$(HOST)\" \\\\\\
-+	; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\
-+	; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
-+	; found=$x echo \$\$BUILD | wc -w $x \\\\\\
-+	; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\
-+	; if test "\$\$found" -eq "0" ; then : \\\\\\
-+	; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
-+	; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
-+	; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\
-+	; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
-+dnl special rule add-on: "distclean" removes all local builddirs completely
-+/distclean[]_ALL *:/a\\
-+	@ HOST="\$(HOST)\" \\\\\\
-+	; test ".\$\$HOST" = "." && HOST=$x sh $AUX/config.guess $x \\\\\\
-+	; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\
-+	; use=$x basename "\$\@" _ALL $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
-+	; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\
-+	; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
-+	; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
-+	; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\
-+	; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
-+	; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\
-+	; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\
-+	; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile
-+_EOF
-+      cp "$tmp/conftemp.sed" "$SRC/makefile.sed~"            ## DEBUGGING
-+      $SED -f $tmp/conftemp.sed Makefile >$SRC/Makefile
-+      if test -f "$SRC/m4_ifval([$2],[$2],[END])" ; then
-+        AC_MSG_NOTICE([extend TOP/Makefile with TOP/m4_ifval([$2],[$2],[END])])
-+        cat $SRC/END >>$SRC/Makefile
-+      fi ; xxxx="####"
-+      echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$SRC/Makefile
-+      # sanity check
-+      if grep '^; echo "MAKE ' $SRC/Makefile >/dev/null ; then
-+        AC_MSG_NOTICE([buggy sed found - it deletes tab in "a" text parts])
-+        $SED -e '/^@ HOST=/s/^/	/' -e '/^; /s/^/	/' $SRC/Makefile \
-+          >$SRC/Makefile~
-+        (test -s $SRC/Makefile~ && mv $SRC/Makefile~ $SRC/Makefile) 2>/dev/null
-+      fi
-+    else
-+      xxxx="\\#\\#\\#\\#"
-+      # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed
-+      echo "s!^$xxxx [[^|]]* | *$SUB *\$!$xxxx ...... $SUB!" >$tmp/conftemp.sed
-+      $SED -f "$tmp/conftemp.sed" "$SRC/Makefile" >$tmp/mkfile.tmp
-+        cp "$tmp/conftemp.sed" "$SRC/makefiles.sed~"         ## DEBUGGING
-+        cp "$tmp/mkfile.tmp"   "$SRC/makefiles.out~"         ## DEBUGGING
-+      if cmp -s "$SRC/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then
-+        AC_MSG_NOTICE([keeping TOP/Makefile from earlier configure])
-+        rm "$tmp/mkfile.tmp"
-+      else
-+        AC_MSG_NOTICE([reusing TOP/Makefile from earlier configure])
-+        mv "$tmp/mkfile.tmp" "$SRC/Makefile"
-+      fi
-+    fi
-+    AC_MSG_NOTICE([build in $SUB (HOST=$ax_enable_builddir_host)])
-+    xxxx="####"
-+    echo "$xxxx" "$ax_enable_builddir_host" "|$SUB" >>$SRC/Makefile
-+  fi
-+popdef([END])dnl
-+AS_VAR_POPDEF([SED])dnl
-+AS_VAR_POPDEF([AUX])dnl
-+AS_VAR_POPDEF([SRC])dnl
-+AS_VAR_POPDEF([TOP])dnl
-+AS_VAR_POPDEF([SUB])dnl
-+],[dnl
-+ax_enable_builddir_srcdir="$srcdir"                    # $srcdir
-+ax_enable_builddir_host="$HOST"                        # $HOST / $host
-+ax_enable_builddir_version="$VERSION"                  # $VERSION
-+ax_enable_builddir_package="$PACKAGE"                  # $PACKAGE
-+ax_enable_builddir_auxdir="$ax_enable_builddir_auxdir" # $AUX
-+ax_enable_builddir_sed="$ax_enable_builddir_sed"       # $SED
-+ax_enable_builddir="$ax_enable_builddir"               # $SUB
-+])dnl
-+])
-diff --git a/js/src/ctypes/libffi/m4/ax_gcc_archflag.m4 b/js/src/ctypes/libffi/m4/ax_gcc_archflag.m4
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/m4/ax_gcc_archflag.m4
-@@ -0,0 +1,225 @@
-+# ===========================================================================
-+#      http://www.gnu.org/software/autoconf-archive/ax_gcc_archflag.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+#   AX_GCC_ARCHFLAG([PORTABLE?], [ACTION-SUCCESS], [ACTION-FAILURE])
-+#
-+# DESCRIPTION
-+#
-+#   This macro tries to guess the "native" arch corresponding to the target
-+#   architecture for use with gcc's -march=arch or -mtune=arch flags. If
-+#   found, the cache variable $ax_cv_gcc_archflag is set to this flag and
-+#   ACTION-SUCCESS is executed; otherwise $ax_cv_gcc_archflag is set to
-+#   "unknown" and ACTION-FAILURE is executed. The default ACTION-SUCCESS is
-+#   to add $ax_cv_gcc_archflag to the end of $CFLAGS.
-+#
-+#   PORTABLE? should be either [yes] (default) or [no]. In the former case,
-+#   the flag is set to -mtune (or equivalent) so that the architecture is
-+#   only used for tuning, but the instruction set used is still portable. In
-+#   the latter case, the flag is set to -march (or equivalent) so that
-+#   architecture-specific instructions are enabled.
-+#
-+#   The user can specify --with-gcc-arch=<arch> in order to override the
-+#   macro's choice of architecture, or --without-gcc-arch to disable this.
-+#
-+#   When cross-compiling, or if $CC is not gcc, then ACTION-FAILURE is
-+#   called unless the user specified --with-gcc-arch manually.
-+#
-+#   Requires macros: AX_CHECK_COMPILE_FLAG, AX_GCC_X86_CPUID
-+#
-+#   (The main emphasis here is on recent CPUs, on the principle that doing
-+#   high-performance computing on old hardware is uncommon.)
-+#
-+# LICENSE
-+#
-+#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
-+#   Copyright (c) 2008 Matteo Frigo
-+#   Copyright (c) 2012 Tsukasa Oi
-+#
-+#   This program is free software: you can redistribute it and/or modify it
-+#   under the terms of the GNU General Public License as published by the
-+#   Free Software Foundation, either version 3 of the License, or (at your
-+#   option) any later version.
-+#
-+#   This program is distributed in the hope that it will be useful, but
-+#   WITHOUT ANY WARRANTY; without even the implied warranty of
-+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-+#   Public License for more details.
-+#
-+#   You should have received a copy of the GNU General Public License along
-+#   with this program. If not, see <http://www.gnu.org/licenses/>.
-+#
-+#   As a special exception, the respective Autoconf Macro's copyright owner
-+#   gives unlimited permission to copy, distribute and modify the configure
-+#   scripts that are the output of Autoconf when processing the Macro. You
-+#   need not follow the terms of the GNU General Public License when using
-+#   or distributing such scripts, even though portions of the text of the
-+#   Macro appear in them. The GNU General Public License (GPL) does govern
-+#   all other use of the material that constitutes the Autoconf Macro.
-+#
-+#   This special exception to the GPL applies to versions of the Autoconf
-+#   Macro released by the Autoconf Archive. When you make and distribute a
-+#   modified version of the Autoconf Macro, you may extend this special
-+#   exception to the GPL to apply to your modified version as well.
-+
-+#serial 11
-+
-+AC_DEFUN([AX_GCC_ARCHFLAG],
-+[AC_REQUIRE([AC_PROG_CC])
-+AC_REQUIRE([AC_CANONICAL_HOST])
-+
-+AC_ARG_WITH(gcc-arch, [AS_HELP_STRING([--with-gcc-arch=<arch>], [use architecture <arch> for gcc -march/-mtune, instead of guessing])],
-+	ax_gcc_arch=$withval, ax_gcc_arch=yes)
-+
-+AC_MSG_CHECKING([for gcc architecture flag])
-+AC_MSG_RESULT([])
-+AC_CACHE_VAL(ax_cv_gcc_archflag,
-+[
-+ax_cv_gcc_archflag="unknown"
-+
-+if test "$GCC" = yes; then
-+
-+if test "x$ax_gcc_arch" = xyes; then
-+ax_gcc_arch=""
-+if test "$cross_compiling" = no; then
-+case $host_cpu in
-+  i[[3456]]86*|x86_64*) # use cpuid codes
-+     AX_GCC_X86_CPUID(0)
-+     AX_GCC_X86_CPUID(1)
-+     case $ax_cv_gcc_x86_cpuid_0 in
-+       *:756e6547:*:*) # Intel
-+          case $ax_cv_gcc_x86_cpuid_1 in
-+	    *5[[48]]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;;
-+	    *5??:*:*:*) ax_gcc_arch=pentium ;;
-+	    *0?6[[3456]]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
-+	    *0?6a?:*[[01]]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
-+	    *0?6a?:*[[234]]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
-+	    *0?6[[9de]]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;;
-+	    *0?6[[78b]]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
-+	    *0?6f?:*:*:*|*1?66?:*:*:*) ax_gcc_arch="core2 pentium-m pentium3 pentiumpro" ;;
-+	    *1?6[[7d]]?:*:*:*) ax_gcc_arch="penryn core2 pentium-m pentium3 pentiumpro" ;;
-+	    *1?6[[aef]]?:*:*:*|*2?6[[5cef]]?:*:*:*) ax_gcc_arch="corei7 core2 pentium-m pentium3 pentiumpro" ;;
-+	    *1?6c?:*:*:*|*[[23]]?66?:*:*:*) ax_gcc_arch="atom core2 pentium-m pentium3 pentiumpro" ;;
-+	    *2?6[[ad]]?:*:*:*) ax_gcc_arch="corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;;
-+	    *0?6??:*:*:*) ax_gcc_arch=pentiumpro ;;
-+	    *6??:*:*:*) ax_gcc_arch="core2 pentiumpro" ;;
-+	    ?000?f3[[347]]:*:*:*|?000?f4[1347]:*:*:*|?000?f6?:*:*:*)
-+		case $host_cpu in
-+	          x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;;
-+	          *) ax_gcc_arch="prescott pentium4 pentiumpro" ;;
-+	        esac ;;
-+	    ?000?f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";;
-+          esac ;;
-+       *:68747541:*:*) # AMD
-+          case $ax_cv_gcc_x86_cpuid_1 in
-+	    *5[[67]]?:*:*:*) ax_gcc_arch=k6 ;;
-+	    *5[[8d]]?:*:*:*) ax_gcc_arch="k6-2 k6" ;;
-+	    *5[[9]]?:*:*:*) ax_gcc_arch="k6-3 k6" ;;
-+	    *60?:*:*:*) ax_gcc_arch=k7 ;;
-+	    *6[[12]]?:*:*:*) ax_gcc_arch="athlon k7" ;;
-+	    *6[[34]]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;;
-+	    *67?:*:*:*) ax_gcc_arch="athlon-4 athlon k7" ;;
-+	    *6[[68a]]?:*:*:*)
-+	       AX_GCC_X86_CPUID(0x80000006) # L2 cache size
-+	       case $ax_cv_gcc_x86_cpuid_0x80000006 in
-+                 *:*:*[[1-9a-f]]??????:*) # (L2 = ecx >> 16) >= 256
-+			ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;;
-+                 *) ax_gcc_arch="athlon-4 athlon k7" ;;
-+	       esac ;;
-+	    ?00??f[[4cef8b]]?:*:*:*) ax_gcc_arch="athlon64 k8" ;;
-+	    ?00??f5?:*:*:*) ax_gcc_arch="opteron k8" ;;
-+	    ?00??f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;;
-+	    ?00??f??:*:*:*) ax_gcc_arch="k8" ;;
-+	    ?05??f??:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;;
-+	    ?06??f??:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;;
-+	    *f??:*:*:*) ax_gcc_arch="amdfam10 k8" ;;
-+          esac ;;
-+	*:746e6543:*:*) # IDT
-+	   case $ax_cv_gcc_x86_cpuid_1 in
-+	     *54?:*:*:*) ax_gcc_arch=winchip-c6 ;;
-+	     *58?:*:*:*) ax_gcc_arch=winchip2 ;;
-+	     *6[[78]]?:*:*:*) ax_gcc_arch=c3 ;;
-+	     *69?:*:*:*) ax_gcc_arch="c3-2 c3" ;;
-+	   esac ;;
-+     esac
-+     if test x"$ax_gcc_arch" = x; then # fallback
-+	case $host_cpu in
-+	  i586*) ax_gcc_arch=pentium ;;
-+	  i686*) ax_gcc_arch=pentiumpro ;;
-+        esac
-+     fi
-+     ;;
-+
-+  sparc*)
-+     AC_PATH_PROG([PRTDIAG], [prtdiag], [prtdiag], [$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/])
-+     cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null`
-+     cputype=`echo "$cputype" | tr -d ' -' | sed 's/SPARCIIi/SPARCII/' | tr $as_cr_LETTERS $as_cr_letters`
-+     case $cputype in
-+         *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;;
-+         *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;;
-+         *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;;
-+         *supersparc*|*tms390z5[[05]]*) ax_gcc_arch="supersparc v8" ;;
-+         *hypersparc*|*rt62[[056]]*) ax_gcc_arch="hypersparc v8" ;;
-+         *cypress*) ax_gcc_arch=cypress ;;
-+     esac ;;
-+
-+  alphaev5) ax_gcc_arch=ev5 ;;
-+  alphaev56) ax_gcc_arch=ev56 ;;
-+  alphapca56) ax_gcc_arch="pca56 ev56" ;;
-+  alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;;
-+  alphaev6) ax_gcc_arch=ev6 ;;
-+  alphaev67) ax_gcc_arch=ev67 ;;
-+  alphaev68) ax_gcc_arch="ev68 ev67" ;;
-+  alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;;
-+  alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;;
-+  alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;;
-+
-+  powerpc*)
-+     cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | sed 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null`
-+     cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'`
-+     case $cputype in
-+       *750*) ax_gcc_arch="750 G3" ;;
-+       *740[[0-9]]*) ax_gcc_arch="$cputype 7400 G4" ;;
-+       *74[[4-5]][[0-9]]*) ax_gcc_arch="$cputype 7450 G4" ;;
-+       *74[[0-9]][[0-9]]*) ax_gcc_arch="$cputype G4" ;;
-+       *970*) ax_gcc_arch="970 G5 power4";;
-+       *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";;
-+       *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";;
-+       603ev|8240) ax_gcc_arch="$cputype 603e 603";;
-+       *) ax_gcc_arch=$cputype ;;
-+     esac
-+     ax_gcc_arch="$ax_gcc_arch powerpc"
-+     ;;
-+esac
-+fi # not cross-compiling
-+fi # guess arch
-+
-+if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then
-+for arch in $ax_gcc_arch; do
-+  if test "x[]m4_default([$1],yes)" = xyes; then # if we require portable code
-+    flags="-mtune=$arch"
-+    # -mcpu=$arch and m$arch generate nonportable code on every arch except
-+    # x86.  And some other arches (e.g. Alpha) don't accept -mtune.  Grrr.
-+    case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac
-+  else
-+    flags="-march=$arch -mcpu=$arch -m$arch"
-+  fi
-+  for flag in $flags; do
-+    AX_CHECK_COMPILE_FLAG($flag, [ax_cv_gcc_archflag=$flag; break])
-+  done
-+  test "x$ax_cv_gcc_archflag" = xunknown || break
-+done
-+fi
-+
-+fi # $GCC=yes
-+])
-+AC_MSG_CHECKING([for gcc architecture flag])
-+AC_MSG_RESULT($ax_cv_gcc_archflag)
-+if test "x$ax_cv_gcc_archflag" = xunknown; then
-+  m4_default([$3],:)
-+else
-+  m4_default([$2], [CFLAGS="$CFLAGS $ax_cv_gcc_archflag"])
-+fi
-+])
-diff --git a/js/src/ctypes/libffi/m4/ax_gcc_x86_cpuid.m4 b/js/src/ctypes/libffi/m4/ax_gcc_x86_cpuid.m4
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/m4/ax_gcc_x86_cpuid.m4
-@@ -0,0 +1,79 @@
-+# ===========================================================================
-+#     http://www.gnu.org/software/autoconf-archive/ax_gcc_x86_cpuid.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+#   AX_GCC_X86_CPUID(OP)
-+#
-+# DESCRIPTION
-+#
-+#   On Pentium and later x86 processors, with gcc or a compiler that has a
-+#   compatible syntax for inline assembly instructions, run a small program
-+#   that executes the cpuid instruction with input OP. This can be used to
-+#   detect the CPU type.
-+#
-+#   On output, the values of the eax, ebx, ecx, and edx registers are stored
-+#   as hexadecimal strings as "eax:ebx:ecx:edx" in the cache variable
-+#   ax_cv_gcc_x86_cpuid_OP.
-+#
-+#   If the cpuid instruction fails (because you are running a
-+#   cross-compiler, or because you are not using gcc, or because you are on
-+#   a processor that doesn't have this instruction), ax_cv_gcc_x86_cpuid_OP
-+#   is set to the string "unknown".
-+#
-+#   This macro mainly exists to be used in AX_GCC_ARCHFLAG.
-+#
-+# LICENSE
-+#
-+#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
-+#   Copyright (c) 2008 Matteo Frigo
-+#
-+#   This program is free software: you can redistribute it and/or modify it
-+#   under the terms of the GNU General Public License as published by the
-+#   Free Software Foundation, either version 3 of the License, or (at your
-+#   option) any later version.
-+#
-+#   This program is distributed in the hope that it will be useful, but
-+#   WITHOUT ANY WARRANTY; without even the implied warranty of
-+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-+#   Public License for more details.
-+#
-+#   You should have received a copy of the GNU General Public License along
-+#   with this program. If not, see <http://www.gnu.org/licenses/>.
-+#
-+#   As a special exception, the respective Autoconf Macro's copyright owner
-+#   gives unlimited permission to copy, distribute and modify the configure
-+#   scripts that are the output of Autoconf when processing the Macro. You
-+#   need not follow the terms of the GNU General Public License when using
-+#   or distributing such scripts, even though portions of the text of the
-+#   Macro appear in them. The GNU General Public License (GPL) does govern
-+#   all other use of the material that constitutes the Autoconf Macro.
-+#
-+#   This special exception to the GPL applies to versions of the Autoconf
-+#   Macro released by the Autoconf Archive. When you make and distribute a
-+#   modified version of the Autoconf Macro, you may extend this special
-+#   exception to the GPL to apply to your modified version as well.
-+
-+#serial 7
-+
-+AC_DEFUN([AX_GCC_X86_CPUID],
-+[AC_REQUIRE([AC_PROG_CC])
-+AC_LANG_PUSH([C])
-+AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1,
-+ [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [
-+     int op = $1, eax, ebx, ecx, edx;
-+     FILE *f;
-+      __asm__("cpuid"
-+        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-+        : "a" (op));
-+     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-+     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-+     fclose(f);
-+     return 0;
-+])],
-+     [ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid],
-+     [ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid],
-+     [ax_cv_gcc_x86_cpuid_$1=unknown])])
-+AC_LANG_POP([C])
-+])
-diff --git a/js/src/ctypes/libffi/m4/libtool.m4 b/js/src/ctypes/libffi/m4/libtool.m4
---- a/js/src/ctypes/libffi/m4/libtool.m4
-+++ b/js/src/ctypes/libffi/m4/libtool.m4
-@@ -1,21 +1,23 @@
- # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
- #
- #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
--#                 2006, 2007, 2008 Free Software Foundation, Inc.
-+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-+#                 Foundation, Inc.
- #   Written by Gordon Matzigkeit, 1996
- #
- # This file is free software; the Free Software Foundation gives
- # unlimited permission to copy and/or distribute it, with or without
- # modifications, as long as this notice is preserved.
- 
- m4_define([_LT_COPYING], [dnl
- #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
--#                 2006, 2007, 2008 Free Software Foundation, Inc.
-+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-+#                 Foundation, Inc.
- #   Written by Gordon Matzigkeit, 1996
- #
- #   This file is part of GNU Libtool.
- #
- # GNU Libtool is free software; you can redistribute it and/or
- # modify it under the terms of the GNU General Public License as
- # published by the Free Software Foundation; either version 2 of
- # the License, or (at your option) any later version.
-@@ -32,17 +34,17 @@ m4_define([_LT_COPYING], [dnl
- #
- # You should have received a copy of the GNU General Public License
- # along with GNU Libtool; see the file COPYING.  If not, a copy
- # can be downloaded from http://www.gnu.org/licenses/gpl.html, or
- # obtained by writing to the Free Software Foundation, Inc.,
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- ])
- 
--# serial 56 LT_INIT
-+# serial 57 LT_INIT
- 
- 
- # LT_PREREQ(VERSION)
- # ------------------
- # Complain and exit if this libtool version is less that VERSION.
- m4_defun([LT_PREREQ],
- [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
-        [m4_default([$3],
-@@ -61,32 +63,35 @@ m4_defun([_LT_CHECK_BUILDDIR],
- esac
- ])
- 
- 
- # LT_INIT([OPTIONS])
- # ------------------
- AC_DEFUN([LT_INIT],
- [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
-+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
- AC_BEFORE([$0], [LT_LANG])dnl
- AC_BEFORE([$0], [LT_OUTPUT])dnl
- AC_BEFORE([$0], [LTDL_INIT])dnl
- m4_require([_LT_CHECK_BUILDDIR])dnl
- 
- dnl Autoconf doesn't catch unexpanded LT_ macros by default:
- m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
- dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
- dnl unless we require an AC_DEFUNed macro:
- AC_REQUIRE([LTOPTIONS_VERSION])dnl
- AC_REQUIRE([LTSUGAR_VERSION])dnl
- AC_REQUIRE([LTVERSION_VERSION])dnl
- AC_REQUIRE([LTOBSOLETE_VERSION])dnl
- m4_require([_LT_PROG_LTMAIN])dnl
- 
-+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
-+
- dnl Parse OPTIONS
- _LT_SET_OPTIONS([$0], [$1])
- 
- # This can be used to rebuild libtool when needed
- LIBTOOL_DEPS="$ltmain"
- 
- # Always use our own libtool.
- LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-@@ -113,17 +118,17 @@ m4_defun([_LT_CC_BASENAME],
- [for cc_temp in $1""; do
-   case $cc_temp in
-     compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-     distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-     \-*) ;;
-     *) break;;
-   esac
- done
--cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
- ])
- 
- 
- # _LT_FILEUTILS_DEFAULTS
- # ----------------------
- # It is okay to use these file commands and assume they have been set
- # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
- m4_defun([_LT_FILEUTILS_DEFAULTS],
-@@ -133,16 +138,21 @@ m4_defun([_LT_FILEUTILS_DEFAULTS],
- ])# _LT_FILEUTILS_DEFAULTS
- 
- 
- # _LT_SETUP
- # ---------
- m4_defun([_LT_SETUP],
- [AC_REQUIRE([AC_CANONICAL_HOST])dnl
- AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
-+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
-+
-+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
-+dnl
- _LT_DECL([], [host_alias], [0], [The host system])dnl
- _LT_DECL([], [host], [0])dnl
- _LT_DECL([], [host_os], [0])dnl
- dnl
- _LT_DECL([], [build_alias], [0], [The build system])dnl
- _LT_DECL([], [build], [0])dnl
- _LT_DECL([], [build_os], [0])dnl
- dnl
-@@ -155,66 +165,51 @@ test -z "$LN_S" && LN_S="ln -s"
- _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
- dnl
- AC_REQUIRE([LT_CMD_MAX_LEN])dnl
- _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
- _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
- dnl
- m4_require([_LT_FILEUTILS_DEFAULTS])dnl
- m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
- m4_require([_LT_CMD_RELOAD])dnl
- m4_require([_LT_CHECK_MAGIC_METHOD])dnl
-+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
- m4_require([_LT_CMD_OLD_ARCHIVE])dnl
- m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-+m4_require([_LT_WITH_SYSROOT])dnl
- 
- _LT_CONFIG_LIBTOOL_INIT([
- # See if we are running on zsh, and set the options which allow our
- # commands through without removal of \ escapes INIT.
- if test -n "\${ZSH_VERSION+set}" ; then
-    setopt NO_GLOB_SUBST
- fi
- ])
- if test -n "${ZSH_VERSION+set}" ; then
-    setopt NO_GLOB_SUBST
- fi
- 
- _LT_CHECK_OBJDIR
- 
- m4_require([_LT_TAG_COMPILER])dnl
--_LT_PROG_ECHO_BACKSLASH
- 
- case $host_os in
- aix3*)
-   # AIX sometimes has problems with the GCC collect2 program.  For some
-   # reason, if we set the COLLECT_NAMES environment variable, the problems
-   # vanish in a puff of smoke.
-   if test "X${COLLECT_NAMES+set}" != Xset; then
-     COLLECT_NAMES=
-     export COLLECT_NAMES
-   fi
-   ;;
- esac
- 
--# Sed substitution that helps us do robust quoting.  It backslashifies
--# metacharacters that are still active within double-quoted strings.
--sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
--
--# Same as above, but do not quote variable references.
--double_quote_subst='s/\([["`\\]]\)/\\\1/g'
--
--# Sed substitution to delay expansion of an escaped shell variable in a
--# double_quote_subst'ed string.
--delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
--
--# Sed substitution to delay expansion of an escaped single quote.
--delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
--
--# Sed substitution to avoid accidental globbing in evaled expressions
--no_glob_subst='s/\*/\\\*/g'
--
- # Global variables:
- ofile=libtool
- can_build_shared=yes
- 
- # All known linkers require a `.a' archive for static linking (except MSVC,
- # which needs '.lib').
- libext=a
- 
-@@ -245,16 +240,38 @@ esac
- # Use C for the default configuration in the libtool script
- LT_SUPPORTED_TAG([CC])
- _LT_LANG_C_CONFIG
- _LT_LANG_DEFAULT_CONFIG
- _LT_CONFIG_COMMANDS
- ])# _LT_SETUP
- 
- 
-+# _LT_PREPARE_SED_QUOTE_VARS
-+# --------------------------
-+# Define a few sed substitution that help us do robust quoting.
-+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
-+[# Backslashify metacharacters that are still active within
-+# double-quoted strings.
-+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-+
-+# Same as above, but do not quote variable references.
-+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-+
-+# Sed substitution to delay expansion of an escaped shell variable in a
-+# double_quote_subst'ed string.
-+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-+
-+# Sed substitution to delay expansion of an escaped single quote.
-+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-+
-+# Sed substitution to avoid accidental globbing in evaled expressions
-+no_glob_subst='s/\*/\\\*/g'
-+])
-+
- # _LT_PROG_LTMAIN
- # ---------------
- # Note that this code is called both from `configure', and `config.status'
- # now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
- # `config.status' has no value for ac_aux_dir unless we are using Automake,
- # so we pass a copy along to make sure it has a sensible value anyway.
- m4_defun([_LT_PROG_LTMAIN],
- [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
-@@ -403,27 +420,27 @@ m4_define([_lt_decl_all_varnames],
- 
- 
- # _LT_CONFIG_STATUS_DECLARE([VARNAME])
- # ------------------------------------
- # Quote a variable value, and forward it to `config.status' so that its
- # declaration there will have the same value as in `configure'.  VARNAME
- # must have a single quote delimited value for this to work.
- m4_define([_LT_CONFIG_STATUS_DECLARE],
--[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
-+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
- 
- 
- # _LT_CONFIG_STATUS_DECLARATIONS
- # ------------------------------
- # We delimit libtool config variables with single quotes, so when
- # we write them to config.status, we have to be sure to quote all
- # embedded single quotes properly.  In configure, this macro expands
- # each variable declared with _LT_DECL (and _LT_TAGDECL) into:
- #
--#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
-+#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
- m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
- [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
-     [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
- 
- 
- # _LT_LIBTOOL_TAGS
- # ----------------
- # Output comment and list of tags supported by the script
-@@ -512,75 +529,96 @@ m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_I
- sed_quote_subst='$sed_quote_subst'
- double_quote_subst='$double_quote_subst'
- delay_variable_subst='$delay_variable_subst'
- _LT_CONFIG_STATUS_DECLARATIONS
- LTCC='$LTCC'
- LTCFLAGS='$LTCFLAGS'
- compiler='$compiler_DEFAULT'
- 
-+# A function that is used when there is no print builtin or printf.
-+func_fallback_echo ()
-+{
-+  eval 'cat <<_LTECHO_EOF
-+\$[]1
-+_LTECHO_EOF'
-+}
-+
- # Quote evaled strings.
- for var in lt_decl_all_varnames([[ \
- ]], lt_decl_quote_varnames); do
--    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-     *[[\\\\\\\`\\"\\\$]]*)
--      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-       ;;
-     *)
-       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-       ;;
-     esac
- done
- 
- # Double-quote double-evaled strings.
- for var in lt_decl_all_varnames([[ \
- ]], lt_decl_dquote_varnames); do
--    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-     *[[\\\\\\\`\\"\\\$]]*)
--      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-       ;;
-     *)
-       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-       ;;
-     esac
- done
- 
--# Fix-up fallback echo if it was mangled by the above quoting rules.
--case \$lt_ECHO in
--*'\\\[$]0 --fallback-echo"')dnl "
--  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
--  ;;
--esac
--
- _LT_OUTPUT_LIBTOOL_INIT
- ])
- 
-+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
-+# ------------------------------------
-+# Generate a child script FILE with all initialization necessary to
-+# reuse the environment learned by the parent script, and make the
-+# file executable.  If COMMENT is supplied, it is inserted after the
-+# `#!' sequence but before initialization text begins.  After this
-+# macro, additional text can be appended to FILE to form the body of
-+# the child script.  The macro ends with non-zero status if the
-+# file could not be fully written (such as if the disk is full).
-+m4_ifdef([AS_INIT_GENERATED],
-+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
-+[m4_defun([_LT_GENERATED_FILE_INIT],
-+[m4_require([AS_PREPARE])]dnl
-+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
-+[lt_write_fail=0
-+cat >$1 <<_ASEOF || lt_write_fail=1
-+#! $SHELL
-+# Generated by $as_me.
-+$2
-+SHELL=\${CONFIG_SHELL-$SHELL}
-+export SHELL
-+_ASEOF
-+cat >>$1 <<\_ASEOF || lt_write_fail=1
-+AS_SHELL_SANITIZE
-+_AS_PREPARE
-+exec AS_MESSAGE_FD>&1
-+_ASEOF
-+test $lt_write_fail = 0 && chmod +x $1[]dnl
-+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
- 
- # LT_OUTPUT
- # ---------
- # This macro allows early generation of the libtool script (before
- # AC_OUTPUT is called), incase it is used in configure for compilation
- # tests.
- AC_DEFUN([LT_OUTPUT],
- [: ${CONFIG_LT=./config.lt}
- AC_MSG_NOTICE([creating $CONFIG_LT])
--cat >"$CONFIG_LT" <<_LTEOF
--#! $SHELL
--# Generated by $as_me.
--# Run this file to recreate a libtool stub with the current configuration.
--
-+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
-+[# Run this file to recreate a libtool stub with the current configuration.])
-+
-+cat >>"$CONFIG_LT" <<\_LTEOF
- lt_cl_silent=false
--SHELL=\${CONFIG_SHELL-$SHELL}
--_LTEOF
--
--cat >>"$CONFIG_LT" <<\_LTEOF
--AS_SHELL_SANITIZE
--_AS_PREPARE
--
--exec AS_MESSAGE_FD>&1
- exec AS_MESSAGE_LOG_FD>>config.log
- {
-   echo
-   AS_BOX([Running $as_me.])
- } >&AS_MESSAGE_LOG_FD
- 
- lt_cl_help="\
- \`$as_me' creates a local libtool stub from the current configuration,
-@@ -596,17 +634,17 @@ Usage: $[0] [[OPTIONS]]
- 
- Report bugs to <bug-libtool@gnu.org>."
- 
- lt_cl_version="\
- m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
- m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
- configured by $[0], generated by m4_PACKAGE_STRING.
- 
--Copyright (C) 2008 Free Software Foundation, Inc.
-+Copyright (C) 2011 Free Software Foundation, Inc.
- This config.lt script is free software; the Free Software Foundation
- gives unlimited permision to copy, distribute and modify it."
- 
- while test $[#] != 0
- do
-   case $[1] in
-     --version | --v* | -V )
-       echo "$lt_cl_version"; exit 0 ;;
-@@ -641,25 +679,23 @@ AC_MSG_NOTICE([creating $ofile])
- AS_EXIT(0)
- _LTEOF
- chmod +x "$CONFIG_LT"
- 
- # configure is writing to config.log, but config.lt does its own redirection,
- # appending to config.log, which fails on DOS, as config.log is still kept
- # open by configure.  Here we exec the FD to /dev/null, effectively closing
- # config.log, so it can be properly (re)opened and appended to by config.lt.
--if test "$no_create" != yes; then
--  lt_cl_success=:
--  test "$silent" = yes &&
--    lt_config_lt_args="$lt_config_lt_args --quiet"
--  exec AS_MESSAGE_LOG_FD>/dev/null
--  $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
--  exec AS_MESSAGE_LOG_FD>>config.log
--  $lt_cl_success || AS_EXIT(1)
--fi
-+lt_cl_success=:
-+test "$silent" = yes &&
-+  lt_config_lt_args="$lt_config_lt_args --quiet"
-+exec AS_MESSAGE_LOG_FD>/dev/null
-+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-+exec AS_MESSAGE_LOG_FD>>config.log
-+$lt_cl_success || AS_EXIT(1)
- ])# LT_OUTPUT
- 
- 
- # _LT_CONFIG(TAG)
- # ---------------
- # If TAG is the built-in tag, create an initial libtool script with a
- # default configuration from the untagged config vars.  Otherwise add code
- # to config.status for appending the configuration named by TAG from the
-@@ -712,25 +748,22 @@ fi
-   esac
- 
-   _LT_PROG_LTMAIN
- 
-   # We use sed instead of cat because bash on DJGPP gets confused if
-   # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-   # text mode, it properly converts lines to CR/LF.  This bash problem
-   # is reportedly fixed, but why not run on old versions too?
--  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
--    || (rm -f "$cfgfile"; exit 1)
--
--  _LT_PROG_XSI_SHELLFNS
--
--  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
--    || (rm -f "$cfgfile"; exit 1)
--
--  mv -f "$cfgfile" "$ofile" ||
-+  sed '$q' "$ltmain" >> "$cfgfile" \
-+     || (rm -f "$cfgfile"; exit 1)
-+
-+  _LT_PROG_REPLACE_SHELLFNS
-+
-+   mv -f "$cfgfile" "$ofile" ||
-     (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-   chmod +x "$ofile"
- ],
- [cat <<_LT_EOF >> "$ofile"
- 
- dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
- dnl in a comment (ie after a #).
- # ### BEGIN LIBTOOL TAG CONFIG: $1
-@@ -765,16 +798,17 @@ m4_define([_LT_TAGS], [])
- # LT_LANG(LANG)
- # -------------
- # Enable libtool support for the given language if not already enabled.
- AC_DEFUN([LT_LANG],
- [AC_BEFORE([$0], [LT_OUTPUT])dnl
- m4_case([$1],
-   [C],			[_LT_LANG(C)],
-   [C++],		[_LT_LANG(CXX)],
-+  [Go],			[_LT_LANG(GO)],
-   [Java],		[_LT_LANG(GCJ)],
-   [Fortran 77],		[_LT_LANG(F77)],
-   [Fortran],		[_LT_LANG(FC)],
-   [Windows Resource],	[_LT_LANG(RC)],
-   [m4_ifdef([_LT_LANG_]$1[_CONFIG],
-     [_LT_LANG($1)],
-     [m4_fatal([$0: unsupported language: "$1"])])])dnl
- ])# LT_LANG
-@@ -786,16 +820,41 @@ m4_defun([_LT_LANG],
- [m4_ifdef([_LT_LANG_]$1[_enabled], [],
-   [LT_SUPPORTED_TAG([$1])dnl
-   m4_append([_LT_TAGS], [$1 ])dnl
-   m4_define([_LT_LANG_]$1[_enabled], [])dnl
-   _LT_LANG_$1_CONFIG($1)])dnl
- ])# _LT_LANG
- 
- 
-+m4_ifndef([AC_PROG_GO], [
-+############################################################
-+# NOTE: This macro has been submitted for inclusion into   #
-+#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
-+#  a released version of Autoconf we should remove this    #
-+#  macro and use it instead.                               #
-+############################################################
-+m4_defun([AC_PROG_GO],
-+[AC_LANG_PUSH(Go)dnl
-+AC_ARG_VAR([GOC],     [Go compiler command])dnl
-+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
-+_AC_ARG_VAR_LDFLAGS()dnl
-+AC_CHECK_TOOL(GOC, gccgo)
-+if test -z "$GOC"; then
-+  if test -n "$ac_tool_prefix"; then
-+    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
-+  fi
-+fi
-+if test -z "$GOC"; then
-+  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
-+fi
-+])#m4_defun
-+])#m4_ifndef
-+
-+
- # _LT_LANG_DEFAULT_CONFIG
- # -----------------------
- m4_defun([_LT_LANG_DEFAULT_CONFIG],
- [AC_PROVIDE_IFELSE([AC_PROG_CXX],
-   [LT_LANG(CXX)],
-   [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
- 
- AC_PROVIDE_IFELSE([AC_PROG_F77],
-@@ -816,31 +875,37 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
-       [LT_LANG(GCJ)],
-       [m4_ifdef([AC_PROG_GCJ],
- 	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
-        m4_ifdef([A][M_PROG_GCJ],
- 	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
-        m4_ifdef([LT_PROG_GCJ],
- 	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
- 
-+AC_PROVIDE_IFELSE([AC_PROG_GO],
-+  [LT_LANG(GO)],
-+  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
-+
- AC_PROVIDE_IFELSE([LT_PROG_RC],
-   [LT_LANG(RC)],
-   [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
- ])# _LT_LANG_DEFAULT_CONFIG
- 
- # Obsolete macros:
- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
-+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
- dnl aclocal-1.4 backwards compatibility:
- dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
- dnl AC_DEFUN([AC_LIBTOOL_F77], [])
- dnl AC_DEFUN([AC_LIBTOOL_FC], [])
- dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
-+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
- 
- 
- # _LT_TAG_COMPILER
- # ----------------
- m4_defun([_LT_TAG_COMPILER],
- [AC_REQUIRE([AC_PROG_CC])dnl
- 
- _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
-@@ -916,35 +981,70 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECK
- 	# link flags.
- 	rm -rf libconftest.dylib*
- 	echo "int foo(void){return 1;}" > conftest.c
- 	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
- -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
- 	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
- 	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-         _lt_result=$?
--	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
-+	# If there is a non-empty error log, and "single_module"
-+	# appears in it, assume the flag caused a linker warning
-+        if test -s conftest.err && $GREP single_module conftest.err; then
-+	  cat conftest.err >&AS_MESSAGE_LOG_FD
-+	# Otherwise, if the output was created with a 0 exit code from
-+	# the compiler, it worked.
-+	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
- 	  lt_cv_apple_cc_single_mod=yes
- 	else
- 	  cat conftest.err >&AS_MESSAGE_LOG_FD
- 	fi
- 	rm -rf libconftest.dylib*
- 	rm -f conftest.*
-       fi])
-+
-     AC_CACHE_CHECK([for -exported_symbols_list linker flag],
-       [lt_cv_ld_exported_symbols_list],
-       [lt_cv_ld_exported_symbols_list=no
-       save_LDFLAGS=$LDFLAGS
-       echo "_main" > conftest.sym
-       LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-       AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
- 	[lt_cv_ld_exported_symbols_list=yes],
- 	[lt_cv_ld_exported_symbols_list=no])
- 	LDFLAGS="$save_LDFLAGS"
-     ])
-+
-+    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
-+      [lt_cv_ld_force_load=no
-+      cat > conftest.c << _LT_EOF
-+int forced_loaded() { return 2;}
-+_LT_EOF
-+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
-+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
-+      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
-+      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
-+      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
-+      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
-+      cat > conftest.c << _LT_EOF
-+int main() { return 0;}
-+_LT_EOF
-+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
-+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-+      _lt_result=$?
-+      if test -s conftest.err && $GREP force_load conftest.err; then
-+	cat conftest.err >&AS_MESSAGE_LOG_FD
-+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
-+	lt_cv_ld_force_load=yes
-+      else
-+	cat conftest.err >&AS_MESSAGE_LOG_FD
-+      fi
-+        rm -f conftest.err libconftest.a conftest conftest.c
-+        rm -rf conftest.dSYM
-+    ])
-     case $host_os in
-     rhapsody* | darwin1.[[012]])
-       _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-     darwin1.*)
-       _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-     darwin*) # darwin 5.x on
-       # if running on 10.5 or later, the deployment target defaults
-       # to the OS version, if on x86, and 10.4, the deployment
-@@ -962,257 +1062,202 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECK
-     if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-       _lt_dar_single_mod='$single_module'
-     fi
-     if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-       _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-     else
-       _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-     fi
--    if test "$DSYMUTIL" != ":"; then
-+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
-       _lt_dsymutil='~$DSYMUTIL $lib || :'
-     else
-       _lt_dsymutil=
-     fi
-     ;;
-   esac
- ])
- 
- 
--# _LT_DARWIN_LINKER_FEATURES
--# --------------------------
-+# _LT_DARWIN_LINKER_FEATURES([TAG])
-+# ---------------------------------
- # Checks for linker and compiler features on darwin
- m4_defun([_LT_DARWIN_LINKER_FEATURES],
- [
-   m4_require([_LT_REQUIRED_DARWIN_CHECKS])
-   _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-   _LT_TAGVAR(hardcode_direct, $1)=no
-   _LT_TAGVAR(hardcode_automatic, $1)=yes
-   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
--  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
-+  if test "$lt_cv_ld_force_load" = "yes"; then
-+    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-+    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
-+                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
-+  else
-+    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
-+  fi
-   _LT_TAGVAR(link_all_deplibs, $1)=yes
-   _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
-   case $cc_basename in
-      ifort*) _lt_dar_can_shared=yes ;;
-      *) _lt_dar_can_shared=$GCC ;;
-   esac
-   if test "$_lt_dar_can_shared" = "yes"; then
--    output_verbose_link_cmd=echo
-+    output_verbose_link_cmd=func_echo_all
-     _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-     _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-     _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-     _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-     m4_if([$1], [CXX],
- [   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-       _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-       _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
-     fi
- ],[])
-   else
-   _LT_TAGVAR(ld_shlibs, $1)=no
-   fi
- ])
- 
--# _LT_SYS_MODULE_PATH_AIX
--# -----------------------
-+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
-+# ----------------------------------
- # Links a minimal program and checks the executable
- # for the system default hardcoded library path. In most cases,
- # this is /usr/lib:/lib, but when the MPI compilers are used
- # the location of the communication and MPI libs are included too.
- # If we don't find anything, use the default library path according
- # to the aix ld manual.
-+# Store the results from the different compilers for each TAGNAME.
-+# Allow to override them for all tags through lt_cv_aix_libpath.
- m4_defun([_LT_SYS_MODULE_PATH_AIX],
- [m4_require([_LT_DECL_SED])dnl
--AC_LINK_IFELSE(AC_LANG_PROGRAM,[
--lt_aix_libpath_sed='
--    /Import File Strings/,/^$/ {
--	/^0/ {
--	    s/^0  *\(.*\)$/\1/
--	    p
--	}
--    }'
--aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--# Check for a 64-bit object if we didn't find anything.
--if test -z "$aix_libpath"; then
--  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
--fi],[])
--if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-+if test "${lt_cv_aix_libpath+set}" = set; then
-+  aix_libpath=$lt_cv_aix_libpath
-+else
-+  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
-+  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
-+  lt_aix_libpath_sed='[
-+      /Import File Strings/,/^$/ {
-+	  /^0/ {
-+	      s/^0  *\([^ ]*\) *$/\1/
-+	      p
-+	  }
-+      }]'
-+  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+  # Check for a 64-bit object if we didn't find anything.
-+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-+  fi],[])
-+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
-+  fi
-+  ])
-+  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
-+fi
- ])# _LT_SYS_MODULE_PATH_AIX
- 
- 
- # _LT_SHELL_INIT(ARG)
- # -------------------
- m4_define([_LT_SHELL_INIT],
--[ifdef([AC_DIVERSION_NOTICE],
--	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
--	 [AC_DIVERT_PUSH(NOTICE)])
--$1
--AC_DIVERT_POP
--])# _LT_SHELL_INIT
-+[m4_divert_text([M4SH-INIT], [$1
-+])])# _LT_SHELL_INIT
-+
- 
- 
- # _LT_PROG_ECHO_BACKSLASH
- # -----------------------
--# Add some code to the start of the generated configure script which
--# will find an echo command which doesn't interpret backslashes.
-+# Find how we can fake an echo command that does not interpret backslash.
-+# In particular, with Autoconf 2.60 or later we add some code to the start
-+# of the generated configure script which will find a shell with a builtin
-+# printf (which we can use as an echo command).
- m4_defun([_LT_PROG_ECHO_BACKSLASH],
--[_LT_SHELL_INIT([
--# Check that we are running under the correct shell.
--SHELL=${CONFIG_SHELL-/bin/sh}
--
--case X$lt_ECHO in
--X*--fallback-echo)
--  # Remove one level of quotation (which was required for Make).
--  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
--  ;;
-+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-+
-+AC_MSG_CHECKING([how to print strings])
-+# Test print first, because it will be a builtin if present.
-+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-+  ECHO='print -r --'
-+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-+  ECHO='printf %s\n'
-+else
-+  # Use this function as a fallback that always works.
-+  func_fallback_echo ()
-+  {
-+    eval 'cat <<_LTECHO_EOF
-+$[]1
-+_LTECHO_EOF'
-+  }
-+  ECHO='func_fallback_echo'
-+fi
-+
-+# func_echo_all arg...
-+# Invoke $ECHO with all args, space-separated.
-+func_echo_all ()
-+{
-+    $ECHO "$*" 
-+}
-+
-+case "$ECHO" in
-+  printf*) AC_MSG_RESULT([printf]) ;;
-+  print*) AC_MSG_RESULT([print -r]) ;;
-+  *) AC_MSG_RESULT([cat]) ;;
- esac
- 
--ECHO=${lt_ECHO-echo}
--if test "X[$]1" = X--no-reexec; then
--  # Discard the --no-reexec flag, and continue.
--  shift
--elif test "X[$]1" = X--fallback-echo; then
--  # Avoid inline document here, it may be left over
--  :
--elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
--  # Yippee, $ECHO works!
--  :
--else
--  # Restart under the correct shell.
--  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
--fi
--
--if test "X[$]1" = X--fallback-echo; then
--  # used as fallback echo
--  shift
--  cat <<_LT_EOF
--[$]*
--_LT_EOF
--  exit 0
--fi
--
--# The HP-UX ksh and POSIX shell print the target directory to stdout
--# if CDPATH is set.
--(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
--
--if test -z "$lt_ECHO"; then
--  if test "X${echo_test_string+set}" != Xset; then
--    # find a string as large as possible, as long as the shell can cope with it
--    for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
--      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
--      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
--	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
--      then
--        break
--      fi
--    done
--  fi
--
--  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
--     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
--     test "X$echo_testing_string" = "X$echo_test_string"; then
--    :
--  else
--    # The Solaris, AIX, and Digital Unix default echo programs unquote
--    # backslashes.  This makes it impossible to quote backslashes using
--    #   echo "$something" | sed 's/\\/\\\\/g'
--    #
--    # So, first we look for a working echo in the user's PATH.
--
--    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
--    for dir in $PATH /usr/ucb; do
--      IFS="$lt_save_ifs"
--      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
--         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
--         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
--         test "X$echo_testing_string" = "X$echo_test_string"; then
--        ECHO="$dir/echo"
--        break
--      fi
--    done
--    IFS="$lt_save_ifs"
--
--    if test "X$ECHO" = Xecho; then
--      # We didn't find a better echo, so look for alternatives.
--      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
--         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
--         test "X$echo_testing_string" = "X$echo_test_string"; then
--        # This shell has a builtin print -r that does the trick.
--        ECHO='print -r'
--      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
--	   test "X$CONFIG_SHELL" != X/bin/ksh; then
--        # If we have ksh, try running configure again with it.
--        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
--        export ORIGINAL_CONFIG_SHELL
--        CONFIG_SHELL=/bin/ksh
--        export CONFIG_SHELL
--        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
--      else
--        # Try using printf.
--        ECHO='printf %s\n'
--        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
--	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
--	   test "X$echo_testing_string" = "X$echo_test_string"; then
--	  # Cool, printf works
--	  :
--        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
--	     test "X$echo_testing_string" = 'X\t' &&
--	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
--	     test "X$echo_testing_string" = "X$echo_test_string"; then
--	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
--	  export CONFIG_SHELL
--	  SHELL="$CONFIG_SHELL"
--	  export SHELL
--	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
--        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
--	     test "X$echo_testing_string" = 'X\t' &&
--	     echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
--	     test "X$echo_testing_string" = "X$echo_test_string"; then
--	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
--        else
--	  # maybe with a smaller string...
--	  prev=:
--
--	  for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
--	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
--	    then
--	      break
--	    fi
--	    prev="$cmd"
--	  done
--
--	  if test "$prev" != 'sed 50q "[$]0"'; then
--	    echo_test_string=`eval $prev`
--	    export echo_test_string
--	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
--	  else
--	    # Oops.  We lost completely, so just stick with echo.
--	    ECHO=echo
--	  fi
--        fi
--      fi
--    fi
--  fi
--fi
--
--# Copy echo and quote the copy suitably for passing to libtool from
--# the Makefile, instead of quoting the original, which is used later.
--lt_ECHO=$ECHO
--if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
--   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
--fi
--
--AC_SUBST(lt_ECHO)
--])
-+m4_ifdef([_AS_DETECT_SUGGESTED],
-+[_AS_DETECT_SUGGESTED([
-+  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
-+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-+    PATH=/empty FPATH=/empty; export PATH FPATH
-+    test "X`printf %s $ECHO`" = "X$ECHO" \
-+      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
-+
- _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
--_LT_DECL([], [ECHO], [1],
--    [An echo program that does not interpret backslashes])
-+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
- ])# _LT_PROG_ECHO_BACKSLASH
- 
- 
-+# _LT_WITH_SYSROOT
-+# ----------------
-+AC_DEFUN([_LT_WITH_SYSROOT],
-+[AC_MSG_CHECKING([for sysroot])
-+AC_ARG_WITH([sysroot],
-+[  --with-sysroot[=DIR] Search for dependent libraries within DIR
-+                        (or the compiler's sysroot if not specified).],
-+[], [with_sysroot=no])
-+
-+dnl lt_sysroot will always be passed unquoted.  We quote it here
-+dnl in case the user passed a directory name.
-+lt_sysroot=
-+case ${with_sysroot} in #(
-+ yes)
-+   if test "$GCC" = yes; then
-+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-+   fi
-+   ;; #(
-+ /*)
-+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-+   ;; #(
-+ no|'')
-+   ;; #(
-+ *)
-+   AC_MSG_RESULT([${with_sysroot}])
-+   AC_MSG_ERROR([The sysroot must be an absolute path.])
-+   ;;
-+esac
-+
-+ AC_MSG_RESULT([${lt_sysroot:-no}])
-+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
-+[dependent libraries, and in which our libraries should be installed.])])
-+
- # _LT_ENABLE_LOCK
- # ---------------
- m4_defun([_LT_ENABLE_LOCK],
- [AC_ARG_ENABLE([libtool-lock],
-   [AS_HELP_STRING([--disable-libtool-lock],
-     [avoid locking (might break parallel builds)])])
- test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
- 
-@@ -1231,17 +1276,17 @@ ia64-*-hpux*)
- 	HPUX_IA64_MODE="64"
- 	;;
-     esac
-   fi
-   rm -rf conftest*
-   ;;
- *-*-irix6*)
-   # Find out which ABI we are using.
--  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
-+  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
-   if AC_TRY_EVAL(ac_compile); then
-     if test "$lt_cv_prog_gnu_ld" = yes; then
-       case `/usr/bin/file conftest.$ac_objext` in
- 	*32-bit*)
- 	  LD="${LD-ld} -melf32bsmip"
- 	  ;;
- 	*N32*)
- 	  LD="${LD-ld} -melf32bmipn32"
-@@ -1330,24 +1375,37 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
-     [AC_LANG_PUSH(C)
-      AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-      AC_LANG_POP])
-   if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-     # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-     CFLAGS="$SAVE_CFLAGS"
-   fi
-   ;;
--sparc*-*solaris*)
-+*-*solaris*)
-   # Find out which ABI we are using.
-   echo 'int i;' > conftest.$ac_ext
-   if AC_TRY_EVAL(ac_compile); then
-     case `/usr/bin/file conftest.o` in
-     *64-bit*)
-       case $lt_cv_prog_gnu_ld in
--      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-+      yes*)
-+        case $host in
-+        i?86-*-solaris*)
-+          LD="${LD-ld} -m elf_x86_64"
-+          ;;
-+        sparc*-*-solaris*)
-+          LD="${LD-ld} -m elf64_sparc"
-+          ;;
-+        esac
-+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-+          LD="${LD-ld}_sol2"
-+        fi
-+        ;;
-       *)
- 	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
- 	  LD="${LD-ld} -64"
- 	fi
- 	;;
-       esac
-       ;;
-     esac
-@@ -1355,24 +1413,57 @@ sparc*-*solaris*)
-   rm -rf conftest*
-   ;;
- esac
- 
- need_locks="$enable_libtool_lock"
- ])# _LT_ENABLE_LOCK
- 
- 
-+# _LT_PROG_AR
-+# -----------
-+m4_defun([_LT_PROG_AR],
-+[AC_CHECK_TOOLS(AR, [ar], false)
-+: ${AR=ar}
-+: ${AR_FLAGS=cru}
-+_LT_DECL([], [AR], [1], [The archiver])
-+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
-+
-+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
-+  [lt_cv_ar_at_file=no
-+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
-+     [echo conftest.$ac_objext > conftest.lst
-+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
-+      AC_TRY_EVAL([lt_ar_try])
-+      if test "$ac_status" -eq 0; then
-+	# Ensure the archiver fails upon bogus file names.
-+	rm -f conftest.$ac_objext libconftest.a
-+	AC_TRY_EVAL([lt_ar_try])
-+	if test "$ac_status" -ne 0; then
-+          lt_cv_ar_at_file=@
-+        fi
-+      fi
-+      rm -f conftest.* libconftest.a
-+     ])
-+  ])
-+
-+if test "x$lt_cv_ar_at_file" = xno; then
-+  archiver_list_spec=
-+else
-+  archiver_list_spec=$lt_cv_ar_at_file
-+fi
-+_LT_DECL([], [archiver_list_spec], [1],
-+  [How to feed a file listing to the archiver])
-+])# _LT_PROG_AR
-+
-+
- # _LT_CMD_OLD_ARCHIVE
- # -------------------
- m4_defun([_LT_CMD_OLD_ARCHIVE],
--[AC_CHECK_TOOL(AR, ar, false)
--test -z "$AR" && AR=ar
--test -z "$AR_FLAGS" && AR_FLAGS=cru
--_LT_DECL([], [AR], [1], [The archiver])
--_LT_DECL([], [AR_FLAGS], [1])
-+[_LT_PROG_AR
- 
- AC_CHECK_TOOL(STRIP, strip, :)
- test -z "$STRIP" && STRIP=:
- _LT_DECL([], [STRIP], [1], [A symbol stripping program])
- 
- AC_CHECK_TOOL(RANLIB, ranlib, :)
- test -z "$RANLIB" && RANLIB=:
- _LT_DECL([], [RANLIB], [1],
-@@ -1381,28 +1472,37 @@ test -z "$RANLIB" && RANLIB=:
- # Determine commands to create old-style static archives.
- old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
- old_postinstall_cmds='chmod 644 $oldlib'
- old_postuninstall_cmds=
- 
- if test -n "$RANLIB"; then
-   case $host_os in
-   openbsd*)
--    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
-+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-     ;;
-   *)
--    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
-+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-     ;;
-   esac
--  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
- fi
-+
-+case $host_os in
-+  darwin*)
-+    lock_old_archive_extraction=yes ;;
-+  *)
-+    lock_old_archive_extraction=no ;;
-+esac
- _LT_DECL([], [old_postinstall_cmds], [2])
- _LT_DECL([], [old_postuninstall_cmds], [2])
- _LT_TAGDECL([], [old_archive_cmds], [2],
-     [Commands used to build an old-style archive])
-+_LT_DECL([], [lock_old_archive_extraction], [0],
-+    [Whether to use a lock for old archive extraction])
- ])# _LT_CMD_OLD_ARCHIVE
- 
- 
- # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
- #		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
- # ----------------------------------------------------------------
- # Check whether the given compiler option works
- AC_DEFUN([_LT_COMPILER_OPTION],
-@@ -1417,25 +1517,25 @@ AC_CACHE_CHECK([$1], [$2],
-    # (2) before a word containing "conftest.", or (3) at the end.
-    # Note that $ac_compile itself does not contain backslashes and begins
-    # with a dollar sign (not a hyphen), so the echo should work correctly.
-    # The option is referenced via a variable to avoid confusing sed.
-    lt_compile=`echo "$ac_compile" | $SED \
-    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-    -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-    -e 's:$: $lt_compiler_flag:'`
--   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-    (eval "$lt_compile" 2>conftest.err)
-    ac_status=$?
-    cat conftest.err >&AS_MESSAGE_LOG_FD
--   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-    if (exit $ac_status) && test -s "$ac_outfile"; then
-      # The compiler can only warn and ignore the option if not recognized
-      # So say no if there are warnings other than the usual output.
--     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-        $2=yes
-      fi
-    fi
-    $RM conftest*
- ])
- 
-@@ -1465,17 +1565,17 @@ AC_CACHE_CHECK([$1], [$2],
-    LDFLAGS="$LDFLAGS $3"
-    echo "$lt_simple_link_test_code" > conftest.$ac_ext
-    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-      # The linker can only warn and ignore the option if not recognized
-      # So say no if there are warnings
-      if test -s conftest.err; then
-        # Append any errors to the config.log.
-        cat conftest.err 1>&AS_MESSAGE_LOG_FD
--       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
-+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-        $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-        if diff conftest.exp conftest.er2 >/dev/null; then
-          $2=yes
-        fi
-      else
-        $2=yes
-      fi
-    fi
-@@ -1528,16 +1628,21 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [d
-     # Worse, since 9x/ME are not pre-emptively multitasking,
-     # you end up with a "frozen" computer, even though with patience
-     # the test eventually succeeds (with a max line length of 256k).
-     # Instead, let's just punt: use the minimum linelength reported by
-     # all of the supported platforms: 8192 (on NT/2K/XP).
-     lt_cv_sys_max_cmd_len=8192;
-     ;;
- 
-+  mint*)
-+    # On MiNT this can take a long time and run out of memory.
-+    lt_cv_sys_max_cmd_len=8192;
-+    ;;
-+
-   amigaos*)
-     # On AmigaOS with pdksh, this test takes hours, literally.
-     # So we just punt and use a minimum line length of 8192.
-     lt_cv_sys_max_cmd_len=8192;
-     ;;
- 
-   netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-     # This has been around since 386BSD, at least.  Likely further.
-@@ -1553,16 +1658,21 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [d
-     lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-     ;;
- 
-   interix*)
-     # We know the value 262144 and hardcode it with a safety zone (like BSD)
-     lt_cv_sys_max_cmd_len=196608
-     ;;
- 
-+  os2*)
-+    # The test takes a long time on OS/2.
-+    lt_cv_sys_max_cmd_len=8192
-+    ;;
-+
-   osf*)
-     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-     # nice to cause kernel panics so lets avoid the loop below.
-     # First set a reasonable default.
-     lt_cv_sys_max_cmd_len=16384
-     #
-     if test -x /sbin/sysconfig; then
-@@ -1592,18 +1702,18 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [d
-       # a 1K string should be a reasonable start.
-       for i in 1 2 3 4 5 6 7 8 ; do
-         teststring=$teststring$teststring
-       done
-       SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-       # If test is not a shell built-in, we'll probably end up computing a
-       # maximum length that is only half of the actual maximum length, but
-       # we can't tell.
--      while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
--	         = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
-+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
-+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
- 	      test $i != 17 # 1/2 MB should be enough
-       do
-         i=`expr $i + 1`
-         teststring=$teststring$teststring
-       done
-       # Only check the string length outside the loop.
-       lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-       teststring=
-@@ -1644,17 +1754,17 @@ m4_defun([_LT_HEADER_DLFCN],
- m4_defun([_LT_TRY_DLOPEN_SELF],
- [m4_require([_LT_HEADER_DLFCN])dnl
- if test "$cross_compiling" = yes; then :
-   [$4]
- else
-   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-   lt_status=$lt_dlunknown
-   cat > conftest.$ac_ext <<_LT_EOF
--[#line __oline__ "configure"
-+[#line $LINENO "configure"
- #include "confdefs.h"
- 
- #if HAVE_DLFCN_H
- #include <dlfcn.h>
- #endif
- 
- #include <stdio.h>
- 
-@@ -1685,26 +1795,36 @@ else
- #        else
- #          define LT_DLLAZY_OR_NOW	0
- #        endif
- #      endif
- #    endif
- #  endif
- #endif
- 
--void fnord() { int i=42;}
-+/* When -fvisbility=hidden is used, assume the code has been annotated
-+   correspondingly for the symbols needed.  */
-+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-+int fnord () __attribute__((visibility("default")));
-+#endif
-+
-+int fnord () { return 42; }
- int main ()
- {
-   void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-   int status = $lt_dlunknown;
- 
-   if (self)
-     {
-       if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
--      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-+      else
-+        {
-+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-+          else puts (dlerror ());
-+	}
-       /* dlclose (self); */
-     }
-   else
-     puts (dlerror ());
- 
-   return status;
- }]
- _LT_EOF
-@@ -1870,26 +1990,26 @@ AC_CACHE_CHECK([if $compiler supports -c
-    # Insert the option either (1) after the last *FLAGS variable, or
-    # (2) before a word containing "conftest.", or (3) at the end.
-    # Note that $ac_compile itself does not contain backslashes and begins
-    # with a dollar sign (not a hyphen), so the echo should work correctly.
-    lt_compile=`echo "$ac_compile" | $SED \
-    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-    -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-    -e 's:$: $lt_compiler_flag:'`
--   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-    (eval "$lt_compile" 2>out/conftest.err)
-    ac_status=$?
-    cat out/conftest.err >&AS_MESSAGE_LOG_FD
--   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-    if (exit $ac_status) && test -s out/conftest2.$ac_objext
-    then
-      # The compiler can only warn and ignore the option if not recognized
-      # So say no if there are warnings
--     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-        _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-      fi
-    fi
-    chmod u+w . 2>&AS_MESSAGE_LOG_FD
-    $RM conftest*
-    # SGI C++ compiler will create directory out/ii_files/ for
-@@ -2038,47 +2158,55 @@ fi
- # -----------------------------
- # PORTME Fill in your ld.so characteristics
- m4_defun([_LT_SYS_DYNAMIC_LINKER],
- [AC_REQUIRE([AC_CANONICAL_HOST])dnl
- m4_require([_LT_DECL_EGREP])dnl
- m4_require([_LT_FILEUTILS_DEFAULTS])dnl
- m4_require([_LT_DECL_OBJDUMP])dnl
- m4_require([_LT_DECL_SED])dnl
-+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
- AC_MSG_CHECKING([dynamic linker characteristics])
- m4_if([$1],
- 	[], [
- if test "$GCC" = yes; then
-   case $host_os in
-     darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-     *) lt_awk_arg="/^libraries:/" ;;
-   esac
--  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
--  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
-+  case $host_os in
-+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
-+    *) lt_sed_strip_eq="s,=/,/,g" ;;
-+  esac
-+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-+  case $lt_search_path_spec in
-+  *\;*)
-     # if the path contains ";" then we assume it to be the separator
-     # otherwise default to the standard path separator (i.e. ":") - it is
-     # assumed that no part of a normal pathname contains ";" but that should
-     # okay in the real world where ";" in dirpaths is itself problematic.
--    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
--  else
--    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
--  fi
-+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-+    ;;
-+  *)
-+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-+    ;;
-+  esac
-   # Ok, now we have the path, separated by spaces, we can step through it
-   # and add multilib dir if necessary.
-   lt_tmp_lt_search_path_spec=
-   lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-   for lt_sys_path in $lt_search_path_spec; do
-     if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-     else
-       test -d "$lt_sys_path" && \
- 	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-     fi
-   done
--  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
-+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
- BEGIN {RS=" "; FS="/|\n";} {
-   lt_foo="";
-   lt_count=0;
-   for (lt_i = NF; lt_i > 0; lt_i--) {
-     if ($lt_i != "" && $lt_i != ".") {
-       if ($lt_i == "..") {
-         lt_count++;
-       } else {
-@@ -2088,17 +2216,23 @@ BEGIN {RS=" "; FS="/|\n";} {
-           lt_count--;
-         }
-       }
-     }
-   }
-   if (lt_foo != "") { lt_freq[[lt_foo]]++; }
-   if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
- }'`
--  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
-+  # AWK program above erroneously prepends '/' to C:/dos/paths
-+  # for these hosts.
-+  case $host_os in
-+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-+      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
-+  esac
-+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
- else
-   sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
- fi])
- library_names_spec=
- libname_spec='lib$name'
- soname_spec=
- shrext_cmds=".so"
- postinstall_cmds=
-@@ -2114,26 +2248,26 @@ need_lib_prefix=unknown
- hardcode_into_libs=no
- 
- # when you set need_version to no, make sure it does not cause -set_version
- # flags to be left without arguments
- need_version=unknown
- 
- case $host_os in
- aix3*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-   shlibpath_var=LIBPATH
- 
-   # AIX 3 has no versioning support, so we append a major version to the name.
-   soname_spec='${libname}${release}${shared_ext}$major'
-   ;;
- 
- aix[[4-9]]*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_lib_prefix=no
-   need_version=no
-   hardcode_into_libs=yes
-   if test "$host_cpu" = ia64; then
-     # AIX 5 supports IA64
-     library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-     shlibpath_var=LD_LIBRARY_PATH
-   else
-@@ -2176,29 +2310,29 @@ amigaos*)
-   powerpc)
-     # Since July 2007 AmigaOS4 officially supports .so libraries.
-     # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-     ;;
-   m68k)
-     library_names_spec='$libname.ixlibrary $libname.a'
-     # Create ${libname}_ixlibrary.a entries in /sys/libs.
--    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-     ;;
-   esac
-   ;;
- 
- beos*)
-   library_names_spec='${libname}${shared_ext}'
-   dynamic_linker="$host_os ld.so"
-   shlibpath_var=LIBRARY_PATH
-   ;;
- 
- bsdi[[45]]*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_version=no
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-   shlibpath_var=LD_LIBRARY_PATH
-   sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-   sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-   # the default ld.so.conf also contains /usr/contrib/lib and
-@@ -2207,18 +2341,19 @@ bsdi[[45]]*)
-   ;;
- 
- cygwin* | mingw* | pw32* | cegcc*)
-   version_type=windows
-   shrext_cmds=".dll"
-   need_version=no
-   need_lib_prefix=no
- 
--  case $GCC,$host_os in
--  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-+  case $GCC,$cc_basename in
-+  yes,*)
-+    # gcc
-     library_names_spec='$libname.dll.a'
-     # DLL is installed to $(libdir)/../bin by postinstall_cmds
-     postinstall_cmds='base_file=`basename \${file}`~
-       dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-       dldir=$destdir/`dirname \$dlpath`~
-       test -d \$dldir || mkdir -p \$dldir~
-       $install_prog $dir/$dlname \$dldir/$dlname~
-       chmod a+x \$dldir/$dlname~
-@@ -2229,46 +2364,93 @@ cygwin* | mingw* | pw32* | cegcc*)
-       dlpath=$dir/\$dldll~
-        $RM \$dlpath'
-     shlibpath_overrides_runpath=yes
- 
-     case $host_os in
-     cygwin*)
-       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-       soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
--      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-+m4_if([$1], [],[
-+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
-       ;;
-     mingw* | cegcc*)
-       # MinGW DLLs use traditional 'lib' prefix
-       soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
--      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
--      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
--        # It is most probably a Windows format PATH printed by
--        # mingw gcc, but we are running on Cygwin. Gcc prints its search
--        # path with ; separators, and with drive letters. We can handle the
--        # drive letters (cygwin fileutils understands them), so leave them,
--        # especially as we might pass files found there to a mingw objdump,
--        # which wouldn't understand a cygwinified path. Ahh.
--        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
--      else
--        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
--      fi
-       ;;
-     pw32*)
-       # pw32 DLLs use 'pw' prefix rather than 'lib'
-       library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-       ;;
-     esac
-+    dynamic_linker='Win32 ld.exe'
-     ;;
- 
-+  *,cl*)
-+    # Native MSVC
-+    libname_spec='$name'
-+    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-+    library_names_spec='${libname}.dll.lib'
-+
-+    case $build_os in
-+    mingw*)
-+      sys_lib_search_path_spec=
-+      lt_save_ifs=$IFS
-+      IFS=';'
-+      for lt_path in $LIB
-+      do
-+        IFS=$lt_save_ifs
-+        # Let DOS variable expansion print the short 8.3 style file name.
-+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-+      done
-+      IFS=$lt_save_ifs
-+      # Convert to MSYS style.
-+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
-+      ;;
-+    cygwin*)
-+      # Convert to unix form, then to dos form, then back to unix form
-+      # but this time dos style (no spaces!) so that the unix form looks
-+      # like /cygdrive/c/PROGRA~1:/cygdr...
-+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+      ;;
-+    *)
-+      sys_lib_search_path_spec="$LIB"
-+      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
-+        # It is most probably a Windows format PATH.
-+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-+      else
-+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-+      fi
-+      # FIXME: find the short name or the path components, as spaces are
-+      # common. (e.g. "Program Files" -> "PROGRA~1")
-+      ;;
-+    esac
-+
-+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-+    postinstall_cmds='base_file=`basename \${file}`~
-+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-+      dldir=$destdir/`dirname \$dlpath`~
-+      test -d \$dldir || mkdir -p \$dldir~
-+      $install_prog $dir/$dlname \$dldir/$dlname'
-+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-+      dlpath=$dir/\$dldll~
-+       $RM \$dlpath'
-+    shlibpath_overrides_runpath=yes
-+    dynamic_linker='Win32 link.exe'
-+    ;;
-+
-   *)
-+    # Assume MSVC wrapper
-     library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
-+    dynamic_linker='Win32 ld.exe'
-     ;;
-   esac
--  dynamic_linker='Win32 ld.exe'
-   # FIXME: first we should search . and the directory the executable is in
-   shlibpath_var=PATH
-   ;;
- 
- darwin* | rhapsody*)
-   dynamic_linker="$host_os dyld"
-   version_type=darwin
-   need_lib_prefix=no
-@@ -2279,36 +2461,32 @@ darwin* | rhapsody*)
-   shlibpath_var=DYLD_LIBRARY_PATH
-   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
- m4_if([$1], [],[
-   sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
-   sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-   ;;
- 
- dgux*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_lib_prefix=no
-   need_version=no
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   shlibpath_var=LD_LIBRARY_PATH
-   ;;
- 
--freebsd1*)
--  dynamic_linker=no
--  ;;
--
- freebsd* | dragonfly*)
-   # DragonFly does not have aout.  When/if they implement a new
-   # versioning mechanism, adjust this.
-   if test -x /usr/bin/objformat; then
-     objformat=`/usr/bin/objformat`
-   else
-     case $host_os in
--    freebsd[[123]]*) objformat=aout ;;
-+    freebsd[[23]].*) objformat=aout ;;
-     *) objformat=elf ;;
-     esac
-   fi
-   version_type=freebsd-$objformat
-   case $version_type in
-     freebsd-elf*)
-       library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-       need_version=no
-@@ -2316,17 +2494,17 @@ freebsd* | dragonfly*)
-       ;;
-     freebsd-*)
-       library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-       need_version=yes
-       ;;
-   esac
-   shlibpath_var=LD_LIBRARY_PATH
-   case $host_os in
--  freebsd2*)
-+  freebsd2.*)
-     shlibpath_overrides_runpath=yes
-     ;;
-   freebsd3.[[01]]* | freebsdelf3.[[01]]*)
-     shlibpath_overrides_runpath=yes
-     hardcode_into_libs=yes
-     ;;
-   freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
-   freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
-@@ -2336,22 +2514,36 @@ freebsd* | dragonfly*)
-   *) # from 4.6 on, and DragonFly
-     shlibpath_overrides_runpath=yes
-     hardcode_into_libs=yes
-     ;;
-   esac
-   ;;
- 
- gnu*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_lib_prefix=no
-   need_version=no
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   shlibpath_var=LD_LIBRARY_PATH
-+  shlibpath_overrides_runpath=no
-+  hardcode_into_libs=yes
-+  ;;
-+
-+haiku*)
-+  version_type=linux # correct to gnu/linux during the next big refactor
-+  need_lib_prefix=no
-+  need_version=no
-+  dynamic_linker="$host_os runtime_loader"
-+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-+  soname_spec='${libname}${release}${shared_ext}$major'
-+  shlibpath_var=LIBRARY_PATH
-+  shlibpath_overrides_runpath=yes
-+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-   hardcode_into_libs=yes
-   ;;
- 
- hpux9* | hpux10* | hpux11*)
-   # Give a soname corresponding to the major version so that dld.sl refuses to
-   # link against other versions.
-   version_type=sunos
-   need_lib_prefix=no
-@@ -2387,38 +2579,40 @@ hpux9* | hpux10* | hpux11*)
-     shrext_cmds='.sl'
-     dynamic_linker="$host_os dld.sl"
-     shlibpath_var=SHLIB_PATH
-     shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-     soname_spec='${libname}${release}${shared_ext}$major'
-     ;;
-   esac
--  # HP-UX runs *really* slowly unless shared libraries are mode 555.
-+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-   postinstall_cmds='chmod 555 $lib'
-+  # or fails outright, so override atomically:
-+  install_override_mode=555
-   ;;
- 
- interix[[3-9]]*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_lib_prefix=no
-   need_version=no
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-   shlibpath_var=LD_LIBRARY_PATH
-   shlibpath_overrides_runpath=no
-   hardcode_into_libs=yes
-   ;;
- 
- irix5* | irix6* | nonstopux*)
-   case $host_os in
-     nonstopux*) version_type=nonstopux ;;
-     *)
- 	if test "$lt_cv_prog_gnu_ld" = yes; then
--		version_type=linux
-+		version_type=linux # correct to gnu/linux during the next big refactor
- 	else
- 		version_type=irix
- 	fi ;;
-   esac
-   need_lib_prefix=no
-   need_version=no
-   soname_spec='${libname}${release}${shared_ext}$major'
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-@@ -2445,49 +2639,55 @@ irix5* | irix6* | nonstopux*)
-   hardcode_into_libs=yes
-   ;;
- 
- # No shared lib support for Linux oldld, aout, or coff.
- linux*oldld* | linux*aout* | linux*coff*)
-   dynamic_linker=no
-   ;;
- 
--# This must be Linux ELF.
--linux* | k*bsd*-gnu)
--  version_type=linux
-+# This must be glibc/ELF.
-+linux* | k*bsd*-gnu | kopensolaris*-gnu)
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_lib_prefix=no
-   need_version=no
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-   shlibpath_var=LD_LIBRARY_PATH
-   shlibpath_overrides_runpath=no
-+
-   # Some binutils ld are patched to set DT_RUNPATH
--  save_LDFLAGS=$LDFLAGS
--  save_libdir=$libdir
--  eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
--       LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
--  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
--    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
--       [shlibpath_overrides_runpath=yes])])
--  LDFLAGS=$save_LDFLAGS
--  libdir=$save_libdir
-+  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
-+    [lt_cv_shlibpath_overrides_runpath=no
-+    save_LDFLAGS=$LDFLAGS
-+    save_libdir=$libdir
-+    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
-+	 LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
-+    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-+      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
-+	 [lt_cv_shlibpath_overrides_runpath=yes])])
-+    LDFLAGS=$save_LDFLAGS
-+    libdir=$save_libdir
-+    ])
-+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
- 
-   # This implies no fast_install, which is unacceptable.
-   # Some rework will be needed to allow for fast_install
-   # before this can be enabled.
-   hardcode_into_libs=yes
- 
-   # Add ABI-specific directories to the system library path.
-   sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
- 
-   # Append ld.so.conf contents to the search path
-   if test -f /etc/ld.so.conf; then
--    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-     sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
-+
-   fi
- 
-   # We used to test for /lib/ld.so.1 and disable shared libraries on
-   # powerpc, because MkLinux only supported shared libraries with the
-   # GNU dynamic linker.  Since this was broken with cross compilers,
-   # most powerpc-linux boxes support dynamic linking these days and
-   # people can always --disable-shared, the test was removed, and we
-   # assume the GNU/Linux dynamic linker is in use.
-@@ -2508,17 +2708,17 @@ netbsd*)
-     dynamic_linker='NetBSD ld.elf_so'
-   fi
-   shlibpath_var=LD_LIBRARY_PATH
-   shlibpath_overrides_runpath=yes
-   hardcode_into_libs=yes
-   ;;
- 
- newsos6)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-   shlibpath_var=LD_LIBRARY_PATH
-   shlibpath_overrides_runpath=yes
-   ;;
- 
- *nto* | *qnx*)
-   version_type=qnx
-   need_lib_prefix=no
-@@ -2577,17 +2777,17 @@ osf3* | osf4* | osf5*)
-   sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-   ;;
- 
- rdos*)
-   dynamic_linker=no
-   ;;
- 
- solaris*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_lib_prefix=no
-   need_version=no
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   shlibpath_var=LD_LIBRARY_PATH
-   shlibpath_overrides_runpath=yes
-   hardcode_into_libs=yes
-   # ldd complains unless libraries are executable
-@@ -2602,17 +2802,17 @@ sunos4*)
-   shlibpath_overrides_runpath=yes
-   if test "$with_gnu_ld" = yes; then
-     need_lib_prefix=no
-   fi
-   need_version=yes
-   ;;
- 
- sysv4 | sysv4.3*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   shlibpath_var=LD_LIBRARY_PATH
-   case $host_vendor in
-     sni)
-       shlibpath_overrides_runpath=no
-       need_lib_prefix=no
-       runpath_var=LD_RUN_PATH
-@@ -2626,17 +2826,17 @@ sysv4 | sysv4.3*)
-       shlibpath_overrides_runpath=no
-       sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-       ;;
-   esac
-   ;;
- 
- sysv4*MP*)
-   if test -d /usr/nec ;then
--    version_type=linux
-+    version_type=linux # correct to gnu/linux during the next big refactor
-     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-     soname_spec='$libname${shared_ext}.$major'
-     shlibpath_var=LD_LIBRARY_PATH
-   fi
-   ;;
- 
- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-   version_type=freebsd-elf
-@@ -2657,27 +2857,27 @@ sysv5* | sco3.2v5* | sco5v6* | unixware*
- 	;;
-     esac
-   fi
-   sys_lib_dlsearch_path_spec='/usr/lib'
-   ;;
- 
- tpf*)
-   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   need_lib_prefix=no
-   need_version=no
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-   shlibpath_var=LD_LIBRARY_PATH
-   shlibpath_overrides_runpath=no
-   hardcode_into_libs=yes
-   ;;
- 
- uts4*)
--  version_type=linux
-+  version_type=linux # correct to gnu/linux during the next big refactor
-   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-   soname_spec='${libname}${release}${shared_ext}$major'
-   shlibpath_var=LD_LIBRARY_PATH
-   ;;
- 
- *)
-   dynamic_linker=no
-   ;;
-@@ -2709,16 +2909,18 @@ fi
- _LT_DECL([], [shlibpath_overrides_runpath], [0],
-     [Is shlibpath searched before the hard-coded library search path?])
- _LT_DECL([], [libname_spec], [1], [Format of library name prefix])
- _LT_DECL([], [library_names_spec], [1],
-     [[List of archive names.  First name is the real one, the rest are links.
-     The last name is the one that the linker finds with -lNAME]])
- _LT_DECL([], [soname_spec], [1],
-     [[The coded name of the library, if different from the real name]])
-+_LT_DECL([], [install_override_mode], [1],
-+    [Permission mode override for installation of shared libraries])
- _LT_DECL([], [postinstall_cmds], [2],
-     [Command to use after installation of a shared archive])
- _LT_DECL([], [postuninstall_cmds], [2],
-     [Command to use after uninstallation of a shared archive])
- _LT_DECL([], [finish_cmds], [2],
-     [Commands used to finish a libtool library installation in a directory])
- _LT_DECL([], [finish_eval], [1],
-     [[As "finish_cmds", except a single script fragment to be evaled but
-@@ -2821,16 +3023,17 @@ fi
- # ----------
- # find the pathname to the GNU or non-GNU linker
- AC_DEFUN([LT_PATH_LD],
- [AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_CANONICAL_HOST])dnl
- AC_REQUIRE([AC_CANONICAL_BUILD])dnl
- m4_require([_LT_DECL_SED])dnl
- m4_require([_LT_DECL_EGREP])dnl
-+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
- 
- AC_ARG_WITH([gnu-ld],
-     [AS_HELP_STRING([--with-gnu-ld],
- 	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
-     [test "$withval" = no || with_gnu_ld=yes],
-     [with_gnu_ld=no])dnl
- 
- ac_prog=ld
-@@ -2942,26 +3145,31 @@ m4_defun([_LT_CMD_RELOAD],
-   [lt_cv_ld_reload_flag='-r'])
- reload_flag=$lt_cv_ld_reload_flag
- case $reload_flag in
- "" | " "*) ;;
- *) reload_flag=" $reload_flag" ;;
- esac
- reload_cmds='$LD$reload_flag -o $output$reload_objs'
- case $host_os in
-+  cygwin* | mingw* | pw32* | cegcc*)
-+    if test "$GCC" != yes; then
-+      reload_cmds=false
-+    fi
-+    ;;
-   darwin*)
-     if test "$GCC" = yes; then
-       reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-     else
-       reload_cmds='$LD$reload_flag -o $output$reload_objs'
-     fi
-     ;;
- esac
--_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
--_LT_DECL([], [reload_cmds], [2])dnl
-+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-+_LT_TAGDECL([], [reload_cmds], [2])dnl
- ])# _LT_CMD_RELOAD
- 
- 
- # _LT_CHECK_MAGIC_METHOD
- # ----------------------
- # how to check for library dependencies
- #  -- PORTME fill in with the dynamic library characteristics
- m4_defun([_LT_CHECK_MAGIC_METHOD],
-@@ -3003,26 +3211,28 @@ cygwin*)
-   lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-   lt_cv_file_magic_cmd='func_win32_libid'
-   ;;
- 
- mingw* | pw32*)
-   # Base MSYS/MinGW do not provide the 'file' command needed by
-   # func_win32_libid shell function, so use a weaker test based on 'objdump',
-   # unless we find 'file', for example because we are cross-compiling.
--  if ( file / ) >/dev/null 2>&1; then
-+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-     lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-     lt_cv_file_magic_cmd='func_win32_libid'
-   else
--    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-+    # Keep this pattern in sync with the one in func_win32_libid.
-+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-     lt_cv_file_magic_cmd='$OBJDUMP -f'
-   fi
-   ;;
- 
--cegcc)
-+cegcc*)
-   # use the weaker test based on 'objdump'. See mingw*.
-   lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-   lt_cv_file_magic_cmd='$OBJDUMP -f'
-   ;;
- 
- darwin* | rhapsody*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
-@@ -3042,29 +3252,33 @@ freebsd* | dragonfly*)
-     lt_cv_deplibs_check_method=pass_all
-   fi
-   ;;
- 
- gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+haiku*)
-+  lt_cv_deplibs_check_method=pass_all
-+  ;;
-+
- hpux10.20* | hpux11*)
-   lt_cv_file_magic_cmd=/usr/bin/file
-   case $host_cpu in
-   ia64*)
-     lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
-     lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-     ;;
-   hppa*64*)
--    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
-+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
-     lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-     ;;
-   *)
--    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
-+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
-     lt_cv_file_magic_test_file=/usr/lib/libc.sl
-     ;;
-   esac
-   ;;
- 
- interix[[3-9]]*)
-   # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-   lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
-@@ -3075,18 +3289,18 @@ irix5* | irix6* | nonstopux*)
-   *-32|*"-32 ") libmagic=32-bit;;
-   *-n32|*"-n32 ") libmagic=N32;;
-   *-64|*"-64 ") libmagic=64-bit;;
-   *) libmagic=never-match;;
-   esac
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
--# This must be Linux ELF.
--linux* | k*bsd*-gnu)
-+# This must be glibc/ELF.
-+linux* | k*bsd*-gnu | kopensolaris*-gnu)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
- netbsd*)
-   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-   else
-     lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
-@@ -3154,24 +3368,43 @@ sysv4 | sysv4.3*)
-   esac
-   ;;
- 
- tpf*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- esac
- ])
-+
-+file_magic_glob=
-+want_nocaseglob=no
-+if test "$build" = "$host"; then
-+  case $host_os in
-+  mingw* | pw32*)
-+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-+      want_nocaseglob=yes
-+    else
-+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
-+    fi
-+    ;;
-+  esac
-+fi
-+
- file_magic_cmd=$lt_cv_file_magic_cmd
- deplibs_check_method=$lt_cv_deplibs_check_method
- test -z "$deplibs_check_method" && deplibs_check_method=unknown
- 
- _LT_DECL([], [deplibs_check_method], [1],
-     [Method to check whether dependent libraries are shared objects])
- _LT_DECL([], [file_magic_cmd], [1],
--    [Command to use when deplibs_check_method == "file_magic"])
-+    [Command to use when deplibs_check_method = "file_magic"])
-+_LT_DECL([], [file_magic_glob], [1],
-+    [How to find potential files when deplibs_check_method = "file_magic"])
-+_LT_DECL([], [want_nocaseglob], [1],
-+    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
- ])# _LT_CHECK_MAGIC_METHOD
- 
- 
- # LT_PATH_NM
- # ----------
- # find the pathname to a BSD- or MS-compatible name lister
- AC_DEFUN([LT_PATH_NM],
- [AC_REQUIRE([AC_PROG_CC])dnl
-@@ -3218,59 +3451,132 @@ else
-     IFS="$lt_save_ifs"
-   done
-   : ${lt_cv_path_NM=no}
- fi])
- if test "$lt_cv_path_NM" != "no"; then
-   NM="$lt_cv_path_NM"
- else
-   # Didn't find any BSD compatible name lister, look for dumpbin.
--  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
-+  if test -n "$DUMPBIN"; then :
-+    # Let the user override the test.
-+  else
-+    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
-+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-+    *COFF*)
-+      DUMPBIN="$DUMPBIN -symbols"
-+      ;;
-+    *)
-+      DUMPBIN=:
-+      ;;
-+    esac
-+  fi
-   AC_SUBST([DUMPBIN])
-   if test "$DUMPBIN" != ":"; then
-     NM="$DUMPBIN"
-   fi
- fi
- test -z "$NM" && NM=nm
- AC_SUBST([NM])
- _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
- 
- AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
-   [lt_cv_nm_interface="BSD nm"
-   echo "int some_variable = 0;" > conftest.$ac_ext
--  (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
-+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$ac_compile" 2>conftest.err)
-   cat conftest.err >&AS_MESSAGE_LOG_FD
--  (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
-+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-   cat conftest.err >&AS_MESSAGE_LOG_FD
--  (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
-+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
-   cat conftest.out >&AS_MESSAGE_LOG_FD
-   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-     lt_cv_nm_interface="MS dumpbin"
-   fi
-   rm -f conftest*])
- ])# LT_PATH_NM
- 
- # Old names:
- AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
- AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
- dnl aclocal-1.4 backwards compatibility:
- dnl AC_DEFUN([AM_PROG_NM], [])
- dnl AC_DEFUN([AC_PROG_NM], [])
- 
-+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-+# --------------------------------
-+# how to determine the name of the shared library
-+# associated with a specific link library.
-+#  -- PORTME fill in with the dynamic library characteristics
-+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
-+[m4_require([_LT_DECL_EGREP])
-+m4_require([_LT_DECL_OBJDUMP])
-+m4_require([_LT_DECL_DLLTOOL])
-+AC_CACHE_CHECK([how to associate runtime and link libraries],
-+lt_cv_sharedlib_from_linklib_cmd,
-+[lt_cv_sharedlib_from_linklib_cmd='unknown'
-+
-+case $host_os in
-+cygwin* | mingw* | pw32* | cegcc*)
-+  # two different shell functions defined in ltmain.sh
-+  # decide which to use based on capabilities of $DLLTOOL
-+  case `$DLLTOOL --help 2>&1` in
-+  *--identify-strict*)
-+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-+    ;;
-+  *)
-+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-+    ;;
-+  esac
-+  ;;
-+*)
-+  # fallback: assume linklib IS sharedlib
-+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-+  ;;
-+esac
-+])
-+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-+
-+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
-+    [Command to associate shared and link libraries])
-+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-+
-+
-+# _LT_PATH_MANIFEST_TOOL
-+# ----------------------
-+# locate the manifest tool
-+m4_defun([_LT_PATH_MANIFEST_TOOL],
-+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
-+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
-+  [lt_cv_path_mainfest_tool=no
-+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
-+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-+  cat conftest.err >&AS_MESSAGE_LOG_FD
-+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-+    lt_cv_path_mainfest_tool=yes
-+  fi
-+  rm -f conftest*])
-+if test "x$lt_cv_path_mainfest_tool" != xyes; then
-+  MANIFEST_TOOL=:
-+fi
-+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
-+])# _LT_PATH_MANIFEST_TOOL
-+
- 
- # LT_LIB_M
- # --------
- # check for math library
- AC_DEFUN([LT_LIB_M],
- [AC_REQUIRE([AC_CANONICAL_HOST])dnl
- LIBM=
- case $host in
--*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
-+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
-   # These system don't have libm, or don't need it
-   ;;
- *-ncr-sysv4.3*)
-   AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-   AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
-   ;;
- *)
-   AC_CHECK_LIB(m, cos, LIBM="-lm")
-@@ -3288,33 +3594,39 @@ dnl AC_DEFUN([AC_CHECK_LIBM], [])
- # _LT_COMPILER_NO_RTTI([TAGNAME])
- # -------------------------------
- m4_defun([_LT_COMPILER_NO_RTTI],
- [m4_require([_LT_TAG_COMPILER])dnl
- 
- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
- 
- if test "$GCC" = yes; then
--  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-+  case $cc_basename in
-+  nvcc*)
-+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
-+  *)
-+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
-+  esac
- 
-   _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
-     lt_cv_prog_compiler_rtti_exceptions,
-     [-fno-rtti -fno-exceptions], [],
-     [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
- fi
- _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
- 	[Compiler flag to turn off builtin functions])
- ])# _LT_COMPILER_NO_RTTI
- 
- 
- # _LT_CMD_GLOBAL_SYMBOLS
- # ----------------------
- m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
- [AC_REQUIRE([AC_CANONICAL_HOST])dnl
- AC_REQUIRE([AC_PROG_CC])dnl
-+AC_REQUIRE([AC_PROG_AWK])dnl
- AC_REQUIRE([LT_PATH_NM])dnl
- AC_REQUIRE([LT_PATH_LD])dnl
- m4_require([_LT_DECL_SED])dnl
- m4_require([_LT_DECL_EGREP])dnl
- m4_require([_LT_TAG_COMPILER])dnl
- 
- # Check for command to grab the raw symbol name followed by C symbol from nm.
- AC_MSG_CHECKING([command to parse $NM output from $compiler object])
-@@ -3372,18 +3684,18 @@ case `$NM -V 2>&1` in
- esac
- 
- # Transform an extracted symbol line into a proper C declaration.
- # Some systems (esp. on ia64) link data and code symbols differently,
- # so use this general approach.
- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
- 
- # Transform an extracted symbol line into symbol name and symbol address
--lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
--lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
-+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
- 
- # Handle CRLF in mingw tool chain
- opt_cr=
- case $build_os in
- mingw*)
-   opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-   ;;
- esac
-@@ -3397,28 +3709,30 @@ for ac_symprfx in "" "_"; do
-   # Write the raw and C identifiers.
-   if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-     # Fake it for dumpbin and say T for any non-static function
-     # and D for any global variable.
-     # Also find C++ and __fastcall symbols from MSVC++,
-     # which start with @ or ?.
-     lt_cv_sys_global_symbol_pipe="$AWK ['"\
- "     {last_section=section; section=\$ 3};"\
-+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
- "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
- "     \$ 0!~/External *\|/{next};"\
- "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
- "     {if(hide[section]) next};"\
- "     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
- "     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
- "     s[1]~/^[@?]/{print s[1], s[1]; next};"\
- "     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
- "     ' prfx=^$ac_symprfx]"
-   else
-     lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-   fi
-+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
- 
-   # Check to see that the pipe works correctly.
-   pipe_works=no
- 
-   rm -f conftest*
-   cat > conftest.$ac_ext <<_LT_EOF
- #ifdef __cplusplus
- extern "C" {
-@@ -3430,40 +3744,52 @@ void nm_test_func(void){}
- }
- #endif
- int main(){nm_test_var='a';nm_test_func();return(0);}
- _LT_EOF
- 
-   if AC_TRY_EVAL(ac_compile); then
-     # Now try to grab the symbols.
-     nlist=conftest.nm
--    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
-+    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
-       # Try sorting and uniquifying the output.
-       if sort "$nlist" | uniq > "$nlist"T; then
- 	mv -f "$nlist"T "$nlist"
-       else
- 	rm -f "$nlist"T
-       fi
- 
-       # Make sure that we snagged all the symbols we need.
-       if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
- 	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
- 	  cat <<_LT_EOF > conftest.$ac_ext
-+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-+/* DATA imports from DLLs on WIN32 con't be const, because runtime
-+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-+# define LT@&t@_DLSYM_CONST
-+#elif defined(__osf__)
-+/* This system does not cope well with relocations in const data.  */
-+# define LT@&t@_DLSYM_CONST
-+#else
-+# define LT@&t@_DLSYM_CONST const
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
- 
- _LT_EOF
- 	  # Now generate the symbol file.
- 	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
- 
- 	  cat <<_LT_EOF >> conftest.$ac_ext
- 
- /* The mapping between symbol names and symbols.  */
--const struct {
-+LT@&t@_DLSYM_CONST struct {
-   const char *name;
-   void       *address;
- }
- lt__PROGRAM__LTX_preloaded_symbols[[]] =
- {
-   { "@PROGRAM@", (void *) 0 },
- _LT_EOF
- 	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-@@ -3479,25 +3805,25 @@ static const void *lt_preloaded_setup() 
- #endif
- 
- #ifdef __cplusplus
- }
- #endif
- _LT_EOF
- 	  # Now try linking the two files.
- 	  mv conftest.$ac_objext conftstm.$ac_objext
--	  lt_save_LIBS="$LIBS"
--	  lt_save_CFLAGS="$CFLAGS"
-+	  lt_globsym_save_LIBS=$LIBS
-+	  lt_globsym_save_CFLAGS=$CFLAGS
- 	  LIBS="conftstm.$ac_objext"
- 	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
- 	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
- 	    pipe_works=yes
- 	  fi
--	  LIBS="$lt_save_LIBS"
--	  CFLAGS="$lt_save_CFLAGS"
-+	  LIBS=$lt_globsym_save_LIBS
-+	  CFLAGS=$lt_globsym_save_CFLAGS
- 	else
- 	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
- 	fi
-       else
- 	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
-       fi
-     else
-       echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
-@@ -3520,38 +3846,46 @@ if test -z "$lt_cv_sys_global_symbol_pip
-   lt_cv_sys_global_symbol_to_cdecl=
- fi
- if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-   AC_MSG_RESULT(failed)
- else
-   AC_MSG_RESULT(ok)
- fi
- 
-+# Response file support.
-+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-+  nm_file_list_spec='@'
-+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
-+  nm_file_list_spec='@'
-+fi
-+
- _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
-     [Take the output of nm and produce a listing of raw symbols and C names])
- _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
-     [Transform the output of nm in a proper C declaration])
- _LT_DECL([global_symbol_to_c_name_address],
-     [lt_cv_sys_global_symbol_to_c_name_address], [1],
-     [Transform the output of nm in a C name address pair])
- _LT_DECL([global_symbol_to_c_name_address_lib_prefix],
-     [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
-     [Transform the output of nm in a C name address pair when lib prefix is needed])
-+_LT_DECL([], [nm_file_list_spec], [1],
-+    [Specify filename containing input files for $NM])
- ]) # _LT_CMD_GLOBAL_SYMBOLS
- 
- 
- # _LT_COMPILER_PIC([TAGNAME])
- # ---------------------------
- m4_defun([_LT_COMPILER_PIC],
- [m4_require([_LT_TAG_COMPILER])dnl
- _LT_TAGVAR(lt_prog_compiler_wl, $1)=
- _LT_TAGVAR(lt_prog_compiler_pic, $1)=
- _LT_TAGVAR(lt_prog_compiler_static, $1)=
- 
--AC_MSG_CHECKING([for $compiler option to produce PIC])
- m4_if([$1], [CXX], [
-   # C++ specific cases for pic, static, wl, etc.
-   if test "$GXX" = yes; then
-     _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-     _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
- 
-     case $host_os in
-     aix*)
-@@ -3592,16 +3926,21 @@ m4_if([$1], [CXX], [
-       # PIC is the default on this platform
-       # Common symbols not allowed in MH_DYLIB files
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-       ;;
-     *djgpp*)
-       # DJGPP does not support shared libraries at all
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-       ;;
-+    haiku*)
-+      # PIC is the default for Haiku.
-+      # The "-static" flag exists, but is broken.
-+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
-+      ;;
-     interix[[3-9]]*)
-       # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-       # Instead, we relocate shared libraries at runtime.
-       ;;
-     sysv4*MP*)
-       if test -d /usr/nec; then
- 	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-       fi
-@@ -3641,16 +3980,22 @@ m4_if([$1], [CXX], [
-       chorus*)
- 	case $cc_basename in
- 	cxch68*)
- 	  # Green Hills C++ Compiler
- 	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
- 	  ;;
- 	esac
- 	;;
-+      mingw* | cygwin* | os2* | pw32* | cegcc*)
-+	# This hack is so that the source file can tell whether it is being
-+	# built for inclusion in a dll (and should export symbols for example).
-+	m4_if([$1], [GCJ], [],
-+	  [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-+	;;
-       dgux*)
- 	case $cc_basename in
- 	  ec++*)
- 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- 	    ;;
- 	  ghcx*)
- 	    # Green Hills C++ Compiler
- 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-@@ -3697,17 +4042,17 @@ m4_if([$1], [CXX], [
- 	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- 	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- 	    # CC pic flag -KPIC is the default.
- 	    ;;
- 	  *)
- 	    ;;
- 	esac
- 	;;
--      linux* | k*bsd*-gnu)
-+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
- 	case $cc_basename in
- 	  KCC*)
- 	    # KAI C++ Compiler
- 	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
- 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- 	    ;;
- 	  ecpc* )
- 	    # old Intel C++ for x86_64 which still supported -KPIC.
-@@ -3730,18 +4075,18 @@ m4_if([$1], [CXX], [
- 	    ;;
- 	  cxx*)
- 	    # Compaq C++
- 	    # Make sure the PIC flag is empty.  It appears that all Alpha
- 	    # Linux and Compaq Tru64 Unix objects are PIC.
- 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
- 	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- 	    ;;
--	  xlc* | xlC*)
--	    # IBM XL 8.0 on PPC
-+	  xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
-+	    # IBM XL 8.0, 9.0 on PPC and BlueGene
- 	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
- 	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
- 	    ;;
- 	  *)
- 	    case `$CC -V 2>&1 | sed 5q` in
- 	    *Sun\ C*)
- 	      # Sun C++ 5.9
-@@ -3793,17 +4138,17 @@ m4_if([$1], [CXX], [
- 	  *)
- 	    ;;
- 	esac
- 	;;
-       psos*)
- 	;;
-       solaris*)
- 	case $cc_basename in
--	  CC*)
-+	  CC* | sunCC*)
- 	    # Sun C++ 4.2, 5.x and Centerline C++
- 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- 	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- 	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
- 	    ;;
- 	  gcx*)
- 	    # Green Hills C++ Compiler
- 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-@@ -3897,16 +4242,22 @@ m4_if([$1], [CXX], [
-       ;;
- 
-     darwin* | rhapsody*)
-       # PIC is the default on this platform
-       # Common symbols not allowed in MH_DYLIB files
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-       ;;
- 
-+    haiku*)
-+      # PIC is the default for Haiku.
-+      # The "-static" flag exists, but is broken.
-+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
-+      ;;
-+
-     hpux*)
-       # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-       # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-       # sets the default TLS model and affects inlining.
-       case $host_cpu in
-       hppa*64*)
- 	# +Z the default
- 	;;
-@@ -3939,16 +4290,25 @@ m4_if([$1], [CXX], [
- 	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-       fi
-       ;;
- 
-     *)
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-       ;;
-     esac
-+
-+    case $cc_basename in
-+    nvcc*) # Cuda Compiler Driver 2.2
-+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
-+      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-+        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
-+      fi
-+      ;;
-+    esac
-   else
-     # PORTME Check for flag to pass linker flags through the system compiler.
-     case $host_os in
-     aix*)
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       if test "$host_cpu" = ia64; then
- 	# AIX 5 now supports IA64 processor
- 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-@@ -3981,17 +4341,17 @@ m4_if([$1], [CXX], [
-       ;;
- 
-     irix5* | irix6* | nonstopux*)
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       # PIC (with -KPIC) is the default.
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-       ;;
- 
--    linux* | k*bsd*-gnu)
-+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-       case $cc_basename in
-       # old Intel for x86_64 which still supported -KPIC.
-       ecc*)
- 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- 	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-         ;;
-       # icc used to be incompatible with GCC.
-@@ -4002,47 +4362,68 @@ m4_if([$1], [CXX], [
- 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-         ;;
-       # Lahey Fortran 8.1.
-       lf95*)
- 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- 	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
- 	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
- 	;;
--      pgcc* | pgf77* | pgf90* | pgf95*)
-+      nagfor*)
-+	# NAG Fortran compiler
-+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
-+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+	;;
-+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-         # Portland Group compilers (*not* the Pentium gcc compiler,
- 	# which looks to be a dead project)
- 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- 	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
- 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-         ;;
-       ccc*)
-         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-         # All Alpha code is PIC.
-         _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-         ;;
--      xl*)
--	# IBM XL C 8.0/Fortran 10.1 on PPC
-+      xl* | bgxl* | bgf* | mpixl*)
-+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
- 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- 	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
- 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
- 	;;
-       *)
- 	case `$CC -V 2>&1 | sed 5q` in
-+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
-+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
-+	  ;;
-+	*Sun\ F* | *Sun*Fortran*)
-+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-+	  ;;
- 	*Sun\ C*)
- 	  # Sun C 5.9
- 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- 	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- 	  ;;
--	*Sun\ F*)
--	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
--	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-+        *Intel*\ [[CF]]*Compiler*)
-+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-+	  ;;
-+	*Portland\ Group*)
-+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
- 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
--	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
- 	  ;;
- 	esac
- 	;;
-       esac
-       ;;
- 
-     newsos6)
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-@@ -4064,17 +4445,17 @@ m4_if([$1], [CXX], [
-     rdos*)
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-       ;;
- 
-     solaris*)
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-       case $cc_basename in
--      f77* | f90* | f95*)
-+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
- 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
-       *)
- 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
-       esac
-       ;;
- 
-     sunos4*)
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-@@ -4121,19 +4502,21 @@ case $host_os in
-   # For platforms which do not support PIC, -DPIC is meaningless:
-   *djgpp*)
-     _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-     ;;
-   *)
-     _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
-     ;;
- esac
--AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
--_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
--	[How to pass a linker flag through the compiler])
-+
-+AC_CACHE_CHECK([for $compiler option to produce PIC],
-+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
-+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
- 
- #
- # Check to make sure the PIC flag actually works.
- #
- if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-   _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
-     [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
-     [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
-@@ -4142,16 +4525,18 @@ if test -n "$_LT_TAGVAR(lt_prog_compiler
-      *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
-      esac],
-     [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
- fi
- _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
- 	[Additional compiler flags for building library objects])
- 
-+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-+	[How to pass a linker flag through the compiler])
- #
- # Check to make sure the static flag actually works.
- #
- wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
-   _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
-   $lt_tmp_static_flag,
-   [],
-@@ -4162,60 +4547,70 @@ wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) 
- 
- 
- # _LT_LINKER_SHLIBS([TAGNAME])
- # ----------------------------
- # See if the linker supports building shared libraries.
- m4_defun([_LT_LINKER_SHLIBS],
- [AC_REQUIRE([LT_PATH_LD])dnl
- AC_REQUIRE([LT_PATH_NM])dnl
-+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
- m4_require([_LT_FILEUTILS_DEFAULTS])dnl
- m4_require([_LT_DECL_EGREP])dnl
- m4_require([_LT_DECL_SED])dnl
- m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
- m4_require([_LT_TAG_COMPILER])dnl
- AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
- m4_if([$1], [CXX], [
-   _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-   case $host_os in
-   aix[[4-9]]*)
-     # If we're using GNU nm, then we don't want the "-C" option.
-     # -C means demangle to AIX nm, but means don't demangle with GNU nm
-+    # Also, AIX nm treats weak defined symbols like other global defined
-+    # symbols, whereas GNU nm marks them as "W".
-     if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
--      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-     else
-       _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-     fi
-     ;;
-   pw32*)
-     _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
--  ;;
-+    ;;
-   cygwin* | mingw* | cegcc*)
--    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
--  ;;
-+    case $cc_basename in
-+    cl*)
-+      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-+      ;;
-+    *)
-+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-+      ;;
-+    esac
-+    ;;
-   *)
-     _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
--  ;;
-+    ;;
-   esac
--  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
- ], [
-   runpath_var=
-   _LT_TAGVAR(allow_undefined_flag, $1)=
-   _LT_TAGVAR(always_export_symbols, $1)=no
-   _LT_TAGVAR(archive_cmds, $1)=
-   _LT_TAGVAR(archive_expsym_cmds, $1)=
-   _LT_TAGVAR(compiler_needs_object, $1)=no
-   _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-   _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-   _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-   _LT_TAGVAR(hardcode_automatic, $1)=no
-   _LT_TAGVAR(hardcode_direct, $1)=no
-   _LT_TAGVAR(hardcode_direct_absolute, $1)=no
-   _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-   _LT_TAGVAR(hardcode_libdir_separator, $1)=
-   _LT_TAGVAR(hardcode_minus_L, $1)=no
-   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-   _LT_TAGVAR(inherit_rpath, $1)=no
-   _LT_TAGVAR(link_all_deplibs, $1)=unknown
-   _LT_TAGVAR(module_cmds, $1)=
-   _LT_TAGVAR(module_expsym_cmds, $1)=
-   _LT_TAGVAR(old_archive_from_new_cmds, $1)=
-@@ -4253,17 +4648,43 @@ dnl Note also adjust exclude_expsyms for
-     with_gnu_ld=yes
-     ;;
-   openbsd*)
-     with_gnu_ld=no
-     ;;
-   esac
- 
-   _LT_TAGVAR(ld_shlibs, $1)=yes
-+
-+  # On some targets, GNU ld is compatible enough with the native linker
-+  # that we're better off using the native interface for both.
-+  lt_use_gnu_ld_interface=no
-   if test "$with_gnu_ld" = yes; then
-+    case $host_os in
-+      aix*)
-+	# The AIX port of GNU ld has always aspired to compatibility
-+	# with the native linker.  However, as the warning in the GNU ld
-+	# block says, versions before 2.19.5* couldn't really create working
-+	# shared libraries, regardless of the interface used.
-+	case `$LD -v 2>&1` in
-+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-+	  *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
-+	  *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
-+	  *)
-+	    lt_use_gnu_ld_interface=yes
-+	    ;;
-+	esac
-+	;;
-+      *)
-+	lt_use_gnu_ld_interface=yes
-+	;;
-+    esac
-+  fi
-+
-+  if test "$lt_use_gnu_ld_interface" = yes; then
-     # If archive_cmds runs LD, not CC, wlarc should be empty
-     wlarc='${wl}'
- 
-     # Set some defaults for GNU ld with shared library support. These
-     # are reset later if shared libraries are not supported. Putting them
-     # here allows them to be overridden if necessary.
-     runpath_var=LD_RUN_PATH
-     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-@@ -4271,36 +4692,38 @@ dnl Note also adjust exclude_expsyms for
-     # ancient GNU ld didn't support --whole-archive et. al.
-     if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-       _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-     else
-       _LT_TAGVAR(whole_archive_flag_spec, $1)=
-     fi
-     supports_anon_versioning=no
-     case `$LD -v 2>&1` in
-+      *GNU\ gold*) supports_anon_versioning=yes ;;
-       *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
-       *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-       *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-       *\ 2.11.*) ;; # other 2.11 versions
-       *) supports_anon_versioning=yes ;;
-     esac
- 
-     # See if GNU ld supports shared libraries.
-     case $host_os in
-     aix[[3-9]]*)
-       # On AIX/PPC, the GNU linker is very broken
-       if test "$host_cpu" != ia64; then
- 	_LT_TAGVAR(ld_shlibs, $1)=no
- 	cat <<_LT_EOF 1>&2
- 
--*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-+*** Warning: the GNU linker, at least up to release 2.19, is reported
- *** to be unable to reliably create shared libraries on AIX.
- *** Therefore, libtool is disabling shared libraries support.  If you
--*** really care for shared libraries, you may want to modify your PATH
--*** so that a non-GNU linker is found, and then restart.
-+*** really care for shared libraries, you may want to install binutils
-+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-+*** You will then need to restart the configuration process.
- 
- _LT_EOF
-       fi
-       ;;
- 
-     amigaos*)
-       case $host_cpu in
-       powerpc)
-@@ -4326,20 +4749,22 @@ dnl Note also adjust exclude_expsyms for
- 	_LT_TAGVAR(ld_shlibs, $1)=no
-       fi
-       ;;
- 
-     cygwin* | mingw* | pw32* | cegcc*)
-       # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-       # as there is no search path for DLLs.
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
-       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-       _LT_TAGVAR(always_export_symbols, $1)=no
-       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
--      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
- 
-       if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- 	# If the export-symbols file already is a .def file (1st line
- 	# is EXPORTS), use it as is; otherwise, prepend...
- 	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- 	  cp $export_symbols $output_objdir/$soname.def;
- 	else
-@@ -4347,108 +4772,117 @@ dnl Note also adjust exclude_expsyms for
- 	  cat $export_symbols >> $output_objdir/$soname.def;
- 	fi~
- 	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-       else
- 	_LT_TAGVAR(ld_shlibs, $1)=no
-       fi
-       ;;
- 
-+    haiku*)
-+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+      _LT_TAGVAR(link_all_deplibs, $1)=yes
-+      ;;
-+
-     interix[[3-9]]*)
-       _LT_TAGVAR(hardcode_direct, $1)=no
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-       # Instead, shared libraries are loaded at an image base (0x10000000 by
-       # default) and relocated if they conflict, which is a slow very memory
-       # consuming and fragmenting process.  To avoid this, we pick a random,
-       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       ;;
- 
--    gnu* | linux* | tpf* | k*bsd*-gnu)
-+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-       tmp_diet=no
-       if test "$host_os" = linux-dietlibc; then
- 	case $cc_basename in
- 	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
- 	esac
-       fi
-       if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
- 	 && test "$tmp_diet" = no
-       then
--	tmp_addflag=
-+	tmp_addflag=' $pic_flag'
- 	tmp_sharedflag='-shared'
- 	case $cc_basename,$host_cpu in
-         pgcc*)				# Portland Group C compiler
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- 	  tmp_addflag=' $pic_flag'
- 	  ;;
--	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-+	pgf77* | pgf90* | pgf95* | pgfortran*)
-+					# Portland Group f77 and f90 compilers
-+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- 	  tmp_addflag=' $pic_flag -Mnomain' ;;
- 	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
- 	  tmp_addflag=' -i_dynamic' ;;
- 	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
- 	  tmp_addflag=' -i_dynamic -nofor_main' ;;
- 	ifc* | ifort*)			# Intel Fortran compiler
- 	  tmp_addflag=' -nofor_main' ;;
- 	lf95*)				# Lahey Fortran 8.1
- 	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
- 	  tmp_sharedflag='--shared' ;;
--	xl[[cC]]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
-+	xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
- 	  tmp_sharedflag='-qmkshrobj'
- 	  tmp_addflag= ;;
-+	nvcc*)	# Cuda Compiler Driver 2.2
-+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-+	  _LT_TAGVAR(compiler_needs_object, $1)=yes
-+	  ;;
- 	esac
- 	case `$CC -V 2>&1 | sed 5q` in
- 	*Sun\ C*)			# Sun C 5.9
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- 	  _LT_TAGVAR(compiler_needs_object, $1)=yes
- 	  tmp_sharedflag='-G' ;;
- 	*Sun\ F*)			# Sun Fortran 8.3
- 	  tmp_sharedflag='-G' ;;
- 	esac
- 	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- 
-         if test "x$supports_anon_versioning" = xyes; then
-           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- 	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- 	    echo "local: *; };" >> $output_objdir/$libname.ver~
- 	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-         fi
- 
- 	case $cc_basename in
--	xlf*)
-+	xlf* | bgf* | bgxlf* | mpixlf*)
- 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
- 	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
--	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
--	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-+	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- 	  if test "x$supports_anon_versioning" = xyes; then
- 	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- 	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- 	      echo "local: *; };" >> $output_objdir/$libname.ver~
--	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-+	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
- 	  fi
- 	  ;;
- 	esac
-       else
-         _LT_TAGVAR(ld_shlibs, $1)=no
-       fi
-       ;;
- 
-     netbsd*)
-       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- 	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- 	wlarc=
-       else
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-       fi
-       ;;
- 
-     solaris*)
-       if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
- 	_LT_TAGVAR(ld_shlibs, $1)=no
- 	cat <<_LT_EOF 1>&2
- 
-@@ -4456,18 +4890,18 @@ dnl Note also adjust exclude_expsyms for
- *** create shared libraries on Solaris systems.  Therefore, libtool
- *** is disabling shared libraries support.  We urge you to upgrade GNU
- *** binutils to release 2.9.1 or newer.  Another option is to modify
- *** your PATH or compiler configuration so that the native linker is
- *** used, and then restart.
- 
- _LT_EOF
-       elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-       else
- 	_LT_TAGVAR(ld_shlibs, $1)=no
-       fi
-       ;;
- 
-     sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-       case `$LD -v 2>&1` in
-         *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
-@@ -4503,18 +4937,18 @@ dnl Note also adjust exclude_expsyms for
-       _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-       wlarc=
-       _LT_TAGVAR(hardcode_direct, $1)=yes
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       ;;
- 
-     *)
-       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-       else
- 	_LT_TAGVAR(ld_shlibs, $1)=no
-       fi
-       ;;
-     esac
- 
-     if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
-       runpath_var=
-@@ -4544,18 +4978,20 @@ dnl Note also adjust exclude_expsyms for
- 	# On IA64, the linker does run time linking by default, so we don't
- 	# have to do anything special.
- 	aix_use_runtimelinking=no
- 	exp_sym_flag='-Bexport'
- 	no_entry_flag=""
-       else
- 	# If we're using GNU nm, then we don't want the "-C" option.
- 	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-+	# Also, AIX nm treats weak defined symbols like other global
-+	# defined symbols, whereas GNU nm marks them as "W".
- 	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
--	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-+	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- 	else
- 	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- 	fi
- 	aix_use_runtimelinking=no
- 
- 	# Test if we are trying to use run time linking or normal
- 	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
- 	# need to do runtime linking.
-@@ -4632,35 +5068,40 @@ dnl Note also adjust exclude_expsyms for
-       # underscore (_), so it is better to generate a list of symbols to export.
-       _LT_TAGVAR(always_export_symbols, $1)=yes
-       if test "$aix_use_runtimelinking" = yes; then
- 	# Warning - without using the other runtime loading flags (-brtl),
- 	# -berok will link without error, but may produce a broken library.
- 	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-         # Determine the default libpath from the value encoded in an
-         # empty executable.
--        _LT_SYS_MODULE_PATH_AIX
-+        _LT_SYS_MODULE_PATH_AIX([$1])
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
--        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-       else
- 	if test "$host_cpu" = ia64; then
- 	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
- 	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
- 	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
- 	else
- 	 # Determine the default libpath from the value encoded in an
- 	 # empty executable.
--	 _LT_SYS_MODULE_PATH_AIX
-+	 _LT_SYS_MODULE_PATH_AIX([$1])
- 	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
- 	  # Warning - without using the other run time loading flags,
- 	  # -berok will link without error, but may produce a broken library.
- 	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
- 	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
--	  # Exported symbols can be pulled into shared objects from archives
--	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-+	  if test "$with_gnu_ld" = yes; then
-+	    # We only use this code for GNU lds that support --whole-archive.
-+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-+	  else
-+	    # Exported symbols can be pulled into shared objects from archives
-+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-+	  fi
- 	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
- 	  # This is similar to how AIX traditionally builds its shared libraries.
- 	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
- 	fi
-       fi
-       ;;
- 
-     amigaos*)
-@@ -4682,131 +5123,177 @@ dnl Note also adjust exclude_expsyms for
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
-       ;;
- 
-     cygwin* | mingw* | pw32* | cegcc*)
-       # When not using gcc, we currently assume that we are using
-       # Microsoft Visual C++.
-       # hardcode_libdir_flag_spec is actually meaningless, as there is
-       # no search path for DLLs.
--      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
--      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--      # Tell ltmain to make .lib files, not .a files.
--      libext=lib
--      # Tell ltmain to make .dll files, not .so files.
--      shrext_cmds=".dll"
--      # FIXME: Setting linknames here is a bad hack.
--      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
--      # The linker will automatically build a .lib file if we build a DLL.
--      _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
--      # FIXME: Should let the user specify the lib program.
--      _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
--      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
--      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-+      case $cc_basename in
-+      cl*)
-+	# Native MSVC
-+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-+	_LT_TAGVAR(always_export_symbols, $1)=yes
-+	_LT_TAGVAR(file_list_spec, $1)='@'
-+	# Tell ltmain to make .lib files, not .a files.
-+	libext=lib
-+	# Tell ltmain to make .dll files, not .so files.
-+	shrext_cmds=".dll"
-+	# FIXME: Setting linknames here is a bad hack.
-+	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-+	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-+	  else
-+	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-+	  fi~
-+	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-+	  linknames='
-+	# The linker will not automatically build a static lib if we build a DLL.
-+	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-+	_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-+	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-+	# Don't use ranlib
-+	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-+	_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-+	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-+	  case $lt_outputfile in
-+	    *.exe|*.EXE) ;;
-+	    *)
-+	      lt_outputfile="$lt_outputfile.exe"
-+	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-+	      ;;
-+	  esac~
-+	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-+	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-+	    $RM "$lt_outputfile.manifest";
-+	  fi'
-+	;;
-+      *)
-+	# Assume MSVC wrapper
-+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-+	# Tell ltmain to make .lib files, not .a files.
-+	libext=lib
-+	# Tell ltmain to make .dll files, not .so files.
-+	shrext_cmds=".dll"
-+	# FIXME: Setting linknames here is a bad hack.
-+	_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-+	# The linker will automatically build a .lib file if we build a DLL.
-+	_LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-+	# FIXME: Should let the user specify the lib program.
-+	_LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
-+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-+	;;
-+      esac
-       ;;
- 
-     darwin* | rhapsody*)
-       _LT_DARWIN_LINKER_FEATURES($1)
-       ;;
- 
-     dgux*)
-       _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       ;;
- 
--    freebsd1*)
--      _LT_TAGVAR(ld_shlibs, $1)=no
--      ;;
--
-     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-     # support.  Future versions do this automatically, but an explicit c++rt0.o
-     # does not break anything, and helps significantly (at the cost of a little
-     # extra space).
-     freebsd2.2*)
-       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-       _LT_TAGVAR(hardcode_direct, $1)=yes
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       ;;
- 
-     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
--    freebsd2*)
-+    freebsd2.*)
-       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-       _LT_TAGVAR(hardcode_direct, $1)=yes
-       _LT_TAGVAR(hardcode_minus_L, $1)=yes
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       ;;
- 
-     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-     freebsd* | dragonfly*)
--      _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-       _LT_TAGVAR(hardcode_direct, $1)=yes
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       ;;
- 
-     hpux9*)
-       if test "$GCC" = yes; then
--	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-       else
- 	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-       fi
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-       _LT_TAGVAR(hardcode_direct, $1)=yes
- 
-       # hardcode_minus_L: Not really in the search PATH,
-       # but as the default location of the library.
-       _LT_TAGVAR(hardcode_minus_L, $1)=yes
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-       ;;
- 
-     hpux10*)
--      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-       else
- 	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-       fi
-       if test "$with_gnu_ld" = no; then
- 	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
--	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
- 	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
- 	_LT_TAGVAR(hardcode_direct, $1)=yes
- 	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- 	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- 	# hardcode_minus_L: Not really in the search PATH,
- 	# but as the default location of the library.
- 	_LT_TAGVAR(hardcode_minus_L, $1)=yes
-       fi
-       ;;
- 
-     hpux11*)
--      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
- 	case $host_cpu in
- 	hppa*64*)
- 	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- 	  ;;
- 	ia64*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- 	  ;;
- 	*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- 	  ;;
- 	esac
-       else
- 	case $host_cpu in
- 	hppa*64*)
- 	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- 	  ;;
- 	ia64*)
- 	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- 	  ;;
- 	*)
--	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-+	m4_if($1, [], [
-+	  # Older versions of the 11.00 compiler do not understand -b yet
-+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-+	  _LT_LINKER_OPTION([if $CC understands -b],
-+	    _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
-+	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
-+	    [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
-+	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
- 	  ;;
- 	esac
-       fi
-       if test "$with_gnu_ld" = no; then
- 	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- 	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
- 
- 	case $host_cpu in
-@@ -4824,29 +5311,44 @@ dnl Note also adjust exclude_expsyms for
- 	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
- 	  ;;
- 	esac
-       fi
-       ;;
- 
-     irix5* | irix6* | nonstopux*)
-       if test "$GCC" = yes; then
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- 	# Try to use the -exported_symbol ld option, if it does not
- 	# work, assume that -exports_file does not work either and
- 	# implicitly export all symbols.
--        save_LDFLAGS="$LDFLAGS"
--        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
--        AC_LINK_IFELSE(int foo(void) {},
--          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
--        )
--        LDFLAGS="$save_LDFLAGS"
-+	# This should be the same for all languages, so no per-tag cache variable.
-+	AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
-+	  [lt_cv_irix_exported_symbol],
-+	  [save_LDFLAGS="$LDFLAGS"
-+	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-+	   AC_LINK_IFELSE(
-+	     [AC_LANG_SOURCE(
-+	        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
-+			      [C++], [[int foo (void) { return 0; }]],
-+			      [Fortran 77], [[
-+      subroutine foo
-+      end]],
-+			      [Fortran], [[
-+      subroutine foo
-+      end]])])],
-+	      [lt_cv_irix_exported_symbol=yes],
-+	      [lt_cv_irix_exported_symbol=no])
-+           LDFLAGS="$save_LDFLAGS"])
-+	if test "$lt_cv_irix_exported_symbol" = yes; then
-+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-+	fi
-       else
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
--	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-       fi
-       _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-       _LT_TAGVAR(inherit_rpath, $1)=yes
-       _LT_TAGVAR(link_all_deplibs, $1)=yes
-       ;;
- 
-@@ -4898,58 +5400,58 @@ dnl Note also adjust exclude_expsyms for
- 	_LT_TAGVAR(ld_shlibs, $1)=no
-       fi
-       ;;
- 
-     os2*)
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-       _LT_TAGVAR(hardcode_minus_L, $1)=yes
-       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-       _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-       ;;
- 
-     osf3*)
-       if test "$GCC" = yes; then
- 	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-       else
- 	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-       fi
-       _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-       ;;
- 
-     osf4* | osf5*)	# as osf3* with the addition of -msym flag
-       if test "$GCC" = yes; then
- 	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- 	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-       else
- 	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- 	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
--	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-+	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
- 
- 	# Both c and cxx compiler support -rpath directly
- 	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-       fi
-       _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-       ;;
- 
-     solaris*)
-       _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
-       if test "$GCC" = yes; then
- 	wlarc='${wl}'
--	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- 	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
--	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-+	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-       else
- 	case `$CC -V 2>&1` in
- 	*"Compilers 5.0"*)
- 	  wlarc=''
- 	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
- 	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- 	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
- 	  ;;
-@@ -5115,46 +5617,48 @@ x|xyes)
-     case $_LT_TAGVAR(archive_cmds, $1) in
-     *'~'*)
-       # FIXME: we may have to deal with multi-command sequences.
-       ;;
-     '$CC '*)
-       # Test whether the compiler implicitly links with -lc since on some
-       # systems, -lgcc has to come before -lc. If gcc already passes -lc
-       # to ld, don't add -lc before -lgcc.
--      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
--      $RM conftest*
--      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
--
--      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
--        soname=conftest
--        lib=conftest
--        libobjs=conftest.$ac_objext
--        deplibs=
--        wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
--	pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
--        compiler_flags=-v
--        linker_flags=-v
--        verstring=
--        output_objdir=.
--        libname=conftest
--        lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
--        _LT_TAGVAR(allow_undefined_flag, $1)=
--        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
--        then
--	  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
--        else
--	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
--        fi
--        _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
--      else
--        cat conftest.err 1>&5
--      fi
--      $RM conftest*
--      AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
-+      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
-+	[lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
-+	[$RM conftest*
-+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-+
-+	if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
-+	  soname=conftest
-+	  lib=conftest
-+	  libobjs=conftest.$ac_objext
-+	  deplibs=
-+	  wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
-+	  pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
-+	  compiler_flags=-v
-+	  linker_flags=-v
-+	  verstring=
-+	  output_objdir=.
-+	  libname=conftest
-+	  lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
-+	  _LT_TAGVAR(allow_undefined_flag, $1)=
-+	  if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
-+	  then
-+	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-+	  else
-+	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-+	  fi
-+	  _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
-+	else
-+	  cat conftest.err 1>&5
-+	fi
-+	$RM conftest*
-+	])
-+      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
-       ;;
-     esac
-   fi
-   ;;
- esac
- 
- _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
-     [Whether or not to add -lc for building shared libraries])
-@@ -5181,19 +5685,16 @@ esac
-     [Whether we are building with GNU ld or not])
- _LT_TAGDECL([], [allow_undefined_flag], [1],
-     [Flag that allows shared libraries with undefined symbols to be built])
- _LT_TAGDECL([], [no_undefined_flag], [1],
-     [Flag that enforces no undefined symbols])
- _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
-     [Flag to hardcode $libdir into a binary during linking.
-     This must work even if $libdir does not exist])
--_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
--    [[If ld is used when linking, flag to hardcode $libdir into a binary
--    during linking.  This must work even if $libdir does not exist]])
- _LT_TAGDECL([], [hardcode_libdir_separator], [1],
-     [Whether we need a single "-rpath" flag with a separated argument])
- _LT_TAGDECL([], [hardcode_direct], [0],
-     [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-     DIR into the resulting binary])
- _LT_TAGDECL([], [hardcode_direct_absolute], [0],
-     [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-     DIR into the resulting binary and the resulting library dependency is
-@@ -5209,28 +5710,28 @@ esac
-     [Set to "yes" if building a shared library automatically hardcodes DIR
-     into the library and all subsequent libraries and executables linked
-     against it])
- _LT_TAGDECL([], [inherit_rpath], [0],
-     [Set to yes if linker adds runtime paths of dependent libraries
-     to runtime path list])
- _LT_TAGDECL([], [link_all_deplibs], [0],
-     [Whether libtool must link a program against all its dependency libraries])
--_LT_TAGDECL([], [fix_srcfile_path], [1],
--    [Fix the shell variable $srcfile for the compiler])
- _LT_TAGDECL([], [always_export_symbols], [0],
-     [Set to "yes" if exported symbols are required])
- _LT_TAGDECL([], [export_symbols_cmds], [2],
-     [The commands to list exported symbols])
- _LT_TAGDECL([], [exclude_expsyms], [1],
-     [Symbols that should not be listed in the preloaded symbols])
- _LT_TAGDECL([], [include_expsyms], [1],
-     [Symbols that must always be exported])
- _LT_TAGDECL([], [prelink_cmds], [2],
-     [Commands necessary for linking programs (against libraries) with templates])
-+_LT_TAGDECL([], [postlink_cmds], [2],
-+    [Commands necessary for finishing linking programs])
- _LT_TAGDECL([], [file_list_spec], [1],
-     [Specify filename containing input files])
- dnl FIXME: Not yet implemented
- dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
- dnl    [Compiler flag to generate thread safe objects])
- ])# _LT_LINKER_SHLIBS
- 
- 
-@@ -5314,68 +5815,54 @@ if test -n "$compiler"; then
- 
-   _LT_CONFIG($1)
- fi
- AC_LANG_POP
- CC="$lt_save_CC"
- ])# _LT_LANG_C_CONFIG
- 
- 
--# _LT_PROG_CXX
--# ------------
--# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
--# compiler, we have our own version here.
--m4_defun([_LT_PROG_CXX],
--[
--pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
--AC_PROG_CXX
-+# _LT_LANG_CXX_CONFIG([TAG])
-+# --------------------------
-+# Ensure that the configuration variables for a C++ compiler are suitably
-+# defined.  These variables are subsequently used by _LT_CONFIG to write
-+# the compiler configuration to `libtool'.
-+m4_defun([_LT_LANG_CXX_CONFIG],
-+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-+m4_require([_LT_DECL_EGREP])dnl
-+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
- if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-     ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-     (test "X$CXX" != "Xg++"))) ; then
-   AC_PROG_CXXCPP
- else
-   _lt_caught_CXX_error=yes
- fi
--popdef([AC_MSG_ERROR])
--])# _LT_PROG_CXX
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([_LT_PROG_CXX], [])
--
--
--# _LT_LANG_CXX_CONFIG([TAG])
--# --------------------------
--# Ensure that the configuration variables for a C++ compiler are suitably
--# defined.  These variables are subsequently used by _LT_CONFIG to write
--# the compiler configuration to `libtool'.
--m4_defun([_LT_LANG_CXX_CONFIG],
--[AC_REQUIRE([_LT_PROG_CXX])dnl
--m4_require([_LT_FILEUTILS_DEFAULTS])dnl
--m4_require([_LT_DECL_EGREP])dnl
- 
- AC_LANG_PUSH(C++)
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(allow_undefined_flag, $1)=
- _LT_TAGVAR(always_export_symbols, $1)=no
- _LT_TAGVAR(archive_expsym_cmds, $1)=
- _LT_TAGVAR(compiler_needs_object, $1)=no
- _LT_TAGVAR(export_dynamic_flag_spec, $1)=
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_direct_absolute, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
- _LT_TAGVAR(hardcode_libdir_separator, $1)=
- _LT_TAGVAR(hardcode_minus_L, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
- _LT_TAGVAR(hardcode_automatic, $1)=no
- _LT_TAGVAR(inherit_rpath, $1)=no
- _LT_TAGVAR(module_cmds, $1)=
- _LT_TAGVAR(module_expsym_cmds, $1)=
- _LT_TAGVAR(link_all_deplibs, $1)=unknown
- _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-+_LT_TAGVAR(reload_flag, $1)=$reload_flag
-+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
- _LT_TAGVAR(no_undefined_flag, $1)=
- _LT_TAGVAR(whole_archive_flag_spec, $1)=
- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
- 
- # Source file extension for C++ test sources.
- ac_ext=cpp
- 
- # Object file extension for compiled C++ test sources.
-@@ -5397,16 +5884,17 @@ if test "$_lt_caught_CXX_error" != yes; 
-   _LT_TAG_COMPILER
- 
-   # save warnings/boilerplate of simple test code
-   _LT_COMPILER_BOILERPLATE
-   _LT_LINKER_BOILERPLATE
- 
-   # Allow CC to be a program name with arguments.
-   lt_save_CC=$CC
-+  lt_save_CFLAGS=$CFLAGS
-   lt_save_LD=$LD
-   lt_save_GCC=$GCC
-   GCC=$GXX
-   lt_save_with_gnu_ld=$with_gnu_ld
-   lt_save_path_LD=$lt_cv_path_LD
-   if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-     lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-   else
-@@ -5414,16 +5902,17 @@ if test "$_lt_caught_CXX_error" != yes; 
-   fi
-   if test -n "${lt_cv_path_LDCXX+set}"; then
-     lt_cv_path_LD=$lt_cv_path_LDCXX
-   else
-     $as_unset lt_cv_path_LD
-   fi
-   test -z "${LDCXX+set}" || LD=$LDCXX
-   CC=${CXX-"c++"}
-+  CFLAGS=$CXXFLAGS
-   compiler=$CC
-   _LT_TAGVAR(compiler, $1)=$CC
-   _LT_CC_BASENAME([$compiler])
- 
-   if test -n "$compiler"; then
-     # We don't want -fno-exception when compiling C++ code, so set the
-     # no_builtin_flag separately
-     if test "$GXX" = yes; then
-@@ -5435,18 +5924,18 @@ if test "$_lt_caught_CXX_error" != yes; 
-     if test "$GXX" = yes; then
-       # Set up default GNU C++ configuration
- 
-       LT_PATH_LD
- 
-       # Check if GNU C++ uses GNU ld as the underlying linker, since the
-       # archiving commands below assume that GNU ld is being used.
-       if test "$with_gnu_ld" = yes; then
--        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
--        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-+        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- 
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- 
-         # If archive_cmds runs LD, not CC, wlarc should be empty
-         # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-         #     investigate it a little bit more. (MM)
-         wlarc='${wl}'
-@@ -5468,17 +5957,17 @@ if test "$_lt_caught_CXX_error" != yes; 
-         # overridden to take advantage of the native linker features on
-         # the platform it is being used on.
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-       fi
- 
-       # Commands to make compiler produce verbose output that lists
-       # what "hidden" libraries, object files and flags are used when
-       # linking a shared library.
--      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
- 
-     else
-       GXX=no
-       with_gnu_ld=no
-       wlarc=
-     fi
- 
-     # PORTME: fill in a description of your system's C++ link characteristics
-@@ -5577,36 +6066,41 @@ if test "$_lt_caught_CXX_error" != yes; 
- 	# export.
-         _LT_TAGVAR(always_export_symbols, $1)=yes
-         if test "$aix_use_runtimelinking" = yes; then
-           # Warning - without using the other runtime loading flags (-brtl),
-           # -berok will link without error, but may produce a broken library.
-           _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-           # Determine the default libpath from the value encoded in an empty
-           # executable.
--          _LT_SYS_MODULE_PATH_AIX
-+          _LT_SYS_MODULE_PATH_AIX([$1])
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
- 
--          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-         else
-           if test "$host_cpu" = ia64; then
- 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
- 	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
- 	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-           else
- 	    # Determine the default libpath from the value encoded in an
- 	    # empty executable.
--	    _LT_SYS_MODULE_PATH_AIX
-+	    _LT_SYS_MODULE_PATH_AIX([$1])
- 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
- 	    # Warning - without using the other run time loading flags,
- 	    # -berok will link without error, but may produce a broken library.
- 	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
- 	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
--	    # Exported symbols can be pulled into shared objects from archives
--	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-+	    if test "$with_gnu_ld" = yes; then
-+	      # We only use this code for GNU lds that support --whole-archive.
-+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-+	    else
-+	      # Exported symbols can be pulled into shared objects from archives
-+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-+	    fi
- 	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
- 	    # This is similar to how AIX traditionally builds its shared
- 	    # libraries.
- 	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-           fi
-         fi
-         ;;
- 
-@@ -5626,38 +6120,85 @@ if test "$_lt_caught_CXX_error" != yes; 
-           *)
- 	  # FIXME: insert proper C++ library support
- 	  _LT_TAGVAR(ld_shlibs, $1)=no
- 	  ;;
-         esac
-         ;;
- 
-       cygwin* | mingw* | pw32* | cegcc*)
--        # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
--        # as there is no search path for DLLs.
--        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
--        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
--        _LT_TAGVAR(always_export_symbols, $1)=no
--        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
--
--        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
--          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
--          # If the export-symbols file already is a .def file (1st line
--          # is EXPORTS), use it as is; otherwise, prepend...
--          _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
--	    cp $export_symbols $output_objdir/$soname.def;
--          else
--	    echo EXPORTS > $output_objdir/$soname.def;
--	    cat $export_symbols >> $output_objdir/$soname.def;
--          fi~
--          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
--        else
--          _LT_TAGVAR(ld_shlibs, $1)=no
--        fi
--        ;;
-+	case $GXX,$cc_basename in
-+	,cl* | no,cl*)
-+	  # Native MSVC
-+	  # hardcode_libdir_flag_spec is actually meaningless, as there is
-+	  # no search path for DLLs.
-+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-+	  _LT_TAGVAR(always_export_symbols, $1)=yes
-+	  _LT_TAGVAR(file_list_spec, $1)='@'
-+	  # Tell ltmain to make .lib files, not .a files.
-+	  libext=lib
-+	  # Tell ltmain to make .dll files, not .so files.
-+	  shrext_cmds=".dll"
-+	  # FIXME: Setting linknames here is a bad hack.
-+	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-+	  _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-+	    else
-+	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-+	    fi~
-+	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-+	    linknames='
-+	  # The linker will not automatically build a static lib if we build a DLL.
-+	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-+	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-+	  # Don't use ranlib
-+	  _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-+	  _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-+	    lt_tool_outputfile="@TOOL_OUTPUT@"~
-+	    case $lt_outputfile in
-+	      *.exe|*.EXE) ;;
-+	      *)
-+		lt_outputfile="$lt_outputfile.exe"
-+		lt_tool_outputfile="$lt_tool_outputfile.exe"
-+		;;
-+	    esac~
-+	    func_to_tool_file "$lt_outputfile"~
-+	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-+	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-+	      $RM "$lt_outputfile.manifest";
-+	    fi'
-+	  ;;
-+	*)
-+	  # g++
-+	  # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-+	  # as there is no search path for DLLs.
-+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
-+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-+	  _LT_TAGVAR(always_export_symbols, $1)=no
-+	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-+
-+	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-+	    # If the export-symbols file already is a .def file (1st line
-+	    # is EXPORTS), use it as is; otherwise, prepend...
-+	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-+	      cp $export_symbols $output_objdir/$soname.def;
-+	    else
-+	      echo EXPORTS > $output_objdir/$soname.def;
-+	      cat $export_symbols >> $output_objdir/$soname.def;
-+	    fi~
-+	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-+	  else
-+	    _LT_TAGVAR(ld_shlibs, $1)=no
-+	  fi
-+	  ;;
-+	esac
-+	;;
-       darwin* | rhapsody*)
-         _LT_DARWIN_LINKER_FEATURES($1)
- 	;;
- 
-       dgux*)
-         case $cc_basename in
-           ec++*)
- 	    # FIXME: insert proper C++ library support
-@@ -5670,17 +6211,17 @@ if test "$_lt_caught_CXX_error" != yes; 
- 	    ;;
-           *)
- 	    # FIXME: insert proper C++ library support
- 	    _LT_TAGVAR(ld_shlibs, $1)=no
- 	    ;;
-         esac
-         ;;
- 
--      freebsd[[12]]*)
-+      freebsd2.*)
-         # C++ shared libraries reported to be fairly broken before
- 	# switch to ELF
-         _LT_TAGVAR(ld_shlibs, $1)=no
-         ;;
- 
-       freebsd-elf*)
-         _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-         ;;
-@@ -5689,16 +6230,21 @@ if test "$_lt_caught_CXX_error" != yes; 
-         # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-         # conventions
-         _LT_TAGVAR(ld_shlibs, $1)=yes
-         ;;
- 
-       gnu*)
-         ;;
- 
-+      haiku*)
-+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-+        _LT_TAGVAR(link_all_deplibs, $1)=yes
-+        ;;
-+
-       hpux9*)
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-         _LT_TAGVAR(hardcode_direct, $1)=yes
-         _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
- 				             # but as the default
- 				             # location of the library.
-@@ -5713,21 +6259,21 @@ if test "$_lt_caught_CXX_error" != yes; 
-             # Commands to make compiler produce verbose output that lists
-             # what "hidden" libraries, object files and flags are used when
-             # linking a shared library.
-             #
-             # There doesn't appear to be a way to prevent this compiler from
-             # explicitly linking system object files so we need to strip them
-             # from the output so that they don't get included in the library
-             # dependencies.
--            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-             ;;
-           *)
-             if test "$GXX" = yes; then
--              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-             else
-               # FIXME: insert proper C++ library support
-               _LT_TAGVAR(ld_shlibs, $1)=no
-             fi
-             ;;
-         esac
-         ;;
- 
-@@ -5778,30 +6324,30 @@ if test "$_lt_caught_CXX_error" != yes; 
- 	    # Commands to make compiler produce verbose output that lists
- 	    # what "hidden" libraries, object files and flags are used when
- 	    # linking a shared library.
- 	    #
- 	    # There doesn't appear to be a way to prevent this compiler from
- 	    # explicitly linking system object files so we need to strip them
- 	    # from the output so that they don't get included in the library
- 	    # dependencies.
--	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
- 	    ;;
-           *)
- 	    if test "$GXX" = yes; then
- 	      if test $with_gnu_ld = no; then
- 	        case $host_cpu in
- 	          hppa*64*)
- 	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- 	            ;;
- 	          ia64*)
--	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- 	            ;;
- 	          *)
--	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- 	            ;;
- 	        esac
- 	      fi
- 	    else
- 	      # FIXME: insert proper C++ library support
- 	      _LT_TAGVAR(ld_shlibs, $1)=no
- 	    fi
- 	    ;;
-@@ -5821,41 +6367,41 @@ if test "$_lt_caught_CXX_error" != yes; 
- 	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
- 	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- 	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- 	;;
-       irix5* | irix6*)
-         case $cc_basename in
-           CC*)
- 	    # SGI C++
--	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- 
- 	    # Archives containing C++ object files must be created using
- 	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
- 	    # necessary to make sure instantiated templates are included
- 	    # in the archive.
- 	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
- 	    ;;
-           *)
- 	    if test "$GXX" = yes; then
- 	      if test "$with_gnu_ld" = no; then
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- 	      else
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
-+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
- 	      fi
- 	    fi
- 	    _LT_TAGVAR(link_all_deplibs, $1)=yes
- 	    ;;
-         esac
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-         _LT_TAGVAR(inherit_rpath, $1)=yes
-         ;;
- 
--      linux* | k*bsd*-gnu)
-+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-         case $cc_basename in
-           KCC*)
- 	    # Kuck and Associates, Inc. (KAI) C++ Compiler
- 
- 	    # KCC will only create a shared library if the output file
- 	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
- 	    # to its proper name (with version) after linking.
- 	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-@@ -5863,17 +6409,17 @@ if test "$_lt_caught_CXX_error" != yes; 
- 	    # Commands to make compiler produce verbose output that lists
- 	    # what "hidden" libraries, object files and flags are used when
- 	    # linking a shared library.
- 	    #
- 	    # There doesn't appear to be a way to prevent this compiler from
- 	    # explicitly linking system object files so we need to strip them
- 	    # from the output so that they don't get included in the library
- 	    # dependencies.
--	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
- 
- 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- 	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- 
- 	    # Archives containing C++ object files must be created using
- 	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
- 	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
- 	    ;;
-@@ -5900,44 +6446,44 @@ if test "$_lt_caught_CXX_error" != yes; 
- 	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- 	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- 	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
- 	    ;;
-           pgCC* | pgcpp*)
-             # Portland Group C++ compiler
- 	    case `$CC -V` in
--	    *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
-+	    *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
- 	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
- 		rm -rf $tpldir~
- 		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
--		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
-+		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
- 	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
- 		rm -rf $tpldir~
- 		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
--		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
-+		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
- 		$RANLIB $oldlib'
- 	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
- 		rm -rf $tpldir~
- 		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
--		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
- 	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
- 		rm -rf $tpldir~
- 		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
--		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
- 	      ;;
--	    *) # Version 6 will use weak symbols
-+	    *) # Version 6 and above use weak symbols
- 	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
- 	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
- 	      ;;
- 	    esac
- 
- 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
- 	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
--	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-             ;;
- 	  cxx*)
- 	    # Compaq C++
- 	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- 	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
- 
- 	    runpath_var=LD_RUN_PATH
- 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-@@ -5946,19 +6492,19 @@ if test "$_lt_caught_CXX_error" != yes; 
- 	    # Commands to make compiler produce verbose output that lists
- 	    # what "hidden" libraries, object files and flags are used when
- 	    # linking a shared library.
- 	    #
- 	    # There doesn't appear to be a way to prevent this compiler from
- 	    # explicitly linking system object files so we need to strip them
- 	    # from the output so that they don't get included in the library
- 	    # dependencies.
--	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
- 	    ;;
--	  xl*)
-+	  xl* | mpixl* | bgxl*)
- 	    # IBM XL 8.0 on PPC, with GNU ld
- 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- 	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- 	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- 	    if test "x$supports_anon_versioning" = xyes; then
- 	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- 		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- 		echo "local: *; };" >> $output_objdir/$libname.ver~
-@@ -5968,23 +6514,23 @@ if test "$_lt_caught_CXX_error" != yes; 
- 	  *)
- 	    case `$CC -V 2>&1 | sed 5q` in
- 	    *Sun\ C*)
- 	      # Sun C++ 5.9
- 	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
- 	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- 	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
- 	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
--	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- 	      _LT_TAGVAR(compiler_needs_object, $1)=yes
- 
- 	      # Not sure whether something based on
- 	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
- 	      # would be better.
--	      output_verbose_link_cmd='echo'
-+	      output_verbose_link_cmd='func_echo_all'
- 
- 	      # Archives containing C++ object files must be created using
- 	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
- 	      # necessary to make sure instantiated templates are included
- 	      # in the archive.
- 	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
- 	      ;;
- 	    esac
-@@ -6043,17 +6589,17 @@ if test "$_lt_caught_CXX_error" != yes; 
- 	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- 	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
- 	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- 	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- 	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
- 	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- 	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
- 	  fi
--	  output_verbose_link_cmd=echo
-+	  output_verbose_link_cmd=func_echo_all
- 	else
- 	  _LT_TAGVAR(ld_shlibs, $1)=no
- 	fi
- 	;;
- 
-       osf3* | osf4* | osf5*)
-         case $cc_basename in
-           KCC*)
-@@ -6078,61 +6624,61 @@ if test "$_lt_caught_CXX_error" != yes; 
- 	    # Rational C++ 2.4.1
- 	    # FIXME: insert proper C++ library support
- 	    _LT_TAGVAR(ld_shlibs, $1)=no
- 	    ;;
-           cxx*)
- 	    case $host in
- 	      osf3*)
- 	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- 	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- 		;;
- 	      *)
- 	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- 	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
- 	          echo "-hidden">> $lib.exp~
--	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
-+	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
- 	          $RM $lib.exp'
- 	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
- 		;;
- 	    esac
- 
- 	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- 
- 	    # Commands to make compiler produce verbose output that lists
- 	    # what "hidden" libraries, object files and flags are used when
- 	    # linking a shared library.
- 	    #
- 	    # There doesn't appear to be a way to prevent this compiler from
- 	    # explicitly linking system object files so we need to strip them
- 	    # from the output so that they don't get included in the library
- 	    # dependencies.
--	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
- 	    ;;
- 	  *)
- 	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
- 	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- 	      case $host in
- 	        osf3*)
--	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- 		  ;;
- 	        *)
--	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- 		  ;;
- 	      esac
- 
- 	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- 	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- 
- 	      # Commands to make compiler produce verbose output that lists
- 	      # what "hidden" libraries, object files and flags are used when
- 	      # linking a shared library.
--	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-+	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
- 
- 	    else
- 	      # FIXME: insert proper C++ library support
- 	      _LT_TAGVAR(ld_shlibs, $1)=no
- 	    fi
- 	    ;;
-         esac
-         ;;
-@@ -6158,17 +6704,17 @@ if test "$_lt_caught_CXX_error" != yes; 
- 	    # FIXME: insert proper C++ library support
- 	    _LT_TAGVAR(ld_shlibs, $1)=no
- 	    ;;
-         esac
-         ;;
- 
-       solaris*)
-         case $cc_basename in
--          CC*)
-+          CC* | sunCC*)
- 	    # Sun C++ 4.2, 5.x and Centerline C++
-             _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
- 	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
- 	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- 	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- 	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
- 
- 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-@@ -6179,17 +6725,17 @@ if test "$_lt_caught_CXX_error" != yes; 
- 		# The compiler driver will combine and reorder linker options,
- 		# but understands `-z linker_flag'.
- 	        # Supported since Solaris 2.6 (maybe 2.5.1?)
- 		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
- 	        ;;
- 	    esac
- 	    _LT_TAGVAR(link_all_deplibs, $1)=yes
- 
--	    output_verbose_link_cmd='echo'
-+	    output_verbose_link_cmd='func_echo_all'
- 
- 	    # Archives containing C++ object files must be created using
- 	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
- 	    # necessary to make sure instantiated templates are included
- 	    # in the archive.
- 	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
- 	    ;;
-           gcx*)
-@@ -6199,35 +6745,35 @@ if test "$_lt_caught_CXX_error" != yes; 
- 	    # The C++ compiler must be used to create the archive.
- 	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
- 	    ;;
-           *)
- 	    # GNU C++ compiler with Solaris linker
- 	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
- 	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
- 	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
--	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
- 	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
--		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-+		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
- 
- 	        # Commands to make compiler produce verbose output that lists
- 	        # what "hidden" libraries, object files and flags are used when
- 	        # linking a shared library.
--	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-+	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
- 	      else
- 	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
- 	        # platform.
- 	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
- 	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- 		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
- 
- 	        # Commands to make compiler produce verbose output that lists
- 	        # what "hidden" libraries, object files and flags are used when
- 	        # linking a shared library.
--	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-+	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
- 	      fi
- 
- 	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
- 	      case $host_os in
- 		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
- 		*)
- 		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
- 		  ;;
-@@ -6271,16 +6817,20 @@ if test "$_lt_caught_CXX_error" != yes; 
- 	_LT_TAGVAR(link_all_deplibs, $1)=yes
- 	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
- 	runpath_var='LD_RUN_PATH'
- 
- 	case $cc_basename in
-           CC*)
- 	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- 	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
-+	      '"$_LT_TAGVAR(old_archive_cmds, $1)"
-+	    _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
-+	      '"$_LT_TAGVAR(reload_cmds, $1)"
- 	    ;;
- 	  *)
- 	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- 	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- 	    ;;
- 	esac
-       ;;
- 
-@@ -6326,38 +6876,63 @@ if test "$_lt_caught_CXX_error" != yes; 
-     _LT_LINKER_SHLIBS($1)
-     _LT_SYS_DYNAMIC_LINKER($1)
-     _LT_LINKER_HARDCODE_LIBPATH($1)
- 
-     _LT_CONFIG($1)
-   fi # test -n "$compiler"
- 
-   CC=$lt_save_CC
-+  CFLAGS=$lt_save_CFLAGS
-   LDCXX=$LD
-   LD=$lt_save_LD
-   GCC=$lt_save_GCC
-   with_gnu_ld=$lt_save_with_gnu_ld
-   lt_cv_path_LDCXX=$lt_cv_path_LD
-   lt_cv_path_LD=$lt_save_path_LD
-   lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-   lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
- fi # test "$_lt_caught_CXX_error" != yes
- 
- AC_LANG_POP
- ])# _LT_LANG_CXX_CONFIG
- 
- 
-+# _LT_FUNC_STRIPNAME_CNF
-+# ----------------------
-+# func_stripname_cnf prefix suffix name
-+# strip PREFIX and SUFFIX off of NAME.
-+# PREFIX and SUFFIX must not contain globbing or regex special
-+# characters, hashes, percent signs, but SUFFIX may contain a leading
-+# dot (in which case that matches only a dot).
-+#
-+# This function is identical to the (non-XSI) version of func_stripname,
-+# except this one can be used by m4 code that may be executed by configure,
-+# rather than the libtool script.
-+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
-+AC_REQUIRE([_LT_DECL_SED])
-+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
-+func_stripname_cnf ()
-+{
-+  case ${2} in
-+  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-+  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-+  esac
-+} # func_stripname_cnf
-+])# _LT_FUNC_STRIPNAME_CNF
-+
- # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
- # ---------------------------------
- # Figure out "hidden" library dependencies from verbose
- # compiler output when linking a shared library.
- # Parse the compiler output and extract the necessary
- # objects, libraries and library flags.
- m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
- [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
- # Dependencies to place before and after the object being linked:
- _LT_TAGVAR(predep_objects, $1)=
- _LT_TAGVAR(postdep_objects, $1)=
- _LT_TAGVAR(predeps, $1)=
- _LT_TAGVAR(postdeps, $1)=
- _LT_TAGVAR(compiler_lib_search_path, $1)=
- 
- dnl we can't use the lt_simple_compile_test_code here,
-@@ -6397,44 +6972,66 @@ private:
- ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
- public class foo {
-   private int a;
-   public void bar (void) {
-     a = 0;
-   }
- };
- _LT_EOF
-+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
-+package foo
-+func foo() {
-+}
-+_LT_EOF
- ])
-+
-+_lt_libdeps_save_CFLAGS=$CFLAGS
-+case "$CC $CFLAGS " in #(
-+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-+esac
-+
- dnl Parse the compiler output and extract the necessary
- dnl objects, libraries and library flags.
- if AC_TRY_EVAL(ac_compile); then
-   # Parse the compiler output and extract the necessary
-   # objects, libraries and library flags.
- 
-   # Sentinel used to keep track of whether or not we are before
-   # the conftest object file.
-   pre_test_object_deps_done=no
- 
-   for p in `eval "$output_verbose_link_cmd"`; do
--    case $p in
-+    case ${prev}${p} in
- 
-     -L* | -R* | -l*)
-        # Some compilers place space between "-{L,R}" and the path.
-        # Remove the space.
-        if test $p = "-L" ||
-           test $p = "-R"; then
- 	 prev=$p
- 	 continue
--       else
--	 prev=
-        fi
- 
-+       # Expand the sysroot to ease extracting the directories later.
-+       if test -z "$prev"; then
-+         case $p in
-+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-+         esac
-+       fi
-+       case $p in
-+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-+       esac
-        if test "$pre_test_object_deps_done" = no; then
--	 case $p in
--	 -L* | -R*)
-+	 case ${prev} in
-+	 -L | -R)
- 	   # Internal compiler library paths should come after those
- 	   # provided the user.  The postdeps already come after the
- 	   # user supplied libs so there is no need to process them.
- 	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
- 	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
- 	   else
- 	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
- 	   fi
-@@ -6444,18 +7041,20 @@ if AC_TRY_EVAL(ac_compile); then
- 	 esac
-        else
- 	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
- 	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
- 	 else
- 	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
- 	 fi
-        fi
-+       prev=
-        ;;
- 
-+    *.lto.$objext) ;; # Ignore GCC LTO objects
-     *.$objext)
-        # This assumes that the test object file only shows up
-        # once in the compiler output.
-        if test "$p" = "conftest.$objext"; then
- 	 pre_test_object_deps_done=yes
- 	 continue
-        fi
- 
-@@ -6481,16 +7080,17 @@ if AC_TRY_EVAL(ac_compile); then
- 
-   # Clean up.
-   rm -f a.out a.exe
- else
-   echo "libtool.m4: error: problem compiling $1 test program"
- fi
- 
- $RM -f confest.$objext
-+CFLAGS=$_lt_libdeps_save_CFLAGS
- 
- # PORTME: override above test on systems where it is broken
- m4_if([$1], [CXX],
- [case $host_os in
- interix[[3-9]]*)
-   # Interix 3.5 installs completely hosed .la files for C++, so rather than
-   # hack all around it, let's just trust "g++" to DTRT.
-   _LT_TAGVAR(predep_objects,$1)=
-@@ -6517,17 +7117,17 @@ linux*)
-       _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-     fi
-     ;;
-   esac
-   ;;
- 
- solaris*)
-   case $cc_basename in
--  CC*)
-+  CC* | sunCC*)
-     # The more standards-conforming stlport4 library is
-     # incompatible with the Cstd library. Avoid specifying
-     # it if it's in CXXFLAGS. Ignore libCrun as
-     # -library=stlport4 depends on it.
-     case " $CXX $CXXFLAGS " in
-     *" -library=stlport4 "*)
-       solaris_use_stlport4=yes
-       ;;
-@@ -6561,60 +7161,45 @@ fi
- _LT_TAGDECL([], [predeps], [1])
- _LT_TAGDECL([], [postdeps], [1])
- _LT_TAGDECL([], [compiler_lib_search_path], [1],
-     [The library search path used internally by the compiler when linking
-     a shared library])
- ])# _LT_SYS_HIDDEN_LIBDEPS
- 
- 
--# _LT_PROG_F77
--# ------------
--# Since AC_PROG_F77 is broken, in that it returns the empty string
--# if there is no fortran compiler, we have our own version here.
--m4_defun([_LT_PROG_F77],
--[
--pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
--AC_PROG_F77
--if test -z "$F77" || test "X$F77" = "Xno"; then
--  _lt_disable_F77=yes
--fi
--popdef([AC_MSG_ERROR])
--])# _LT_PROG_F77
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([_LT_PROG_F77], [])
--
--
- # _LT_LANG_F77_CONFIG([TAG])
- # --------------------------
- # Ensure that the configuration variables for a Fortran 77 compiler are
- # suitably defined.  These variables are subsequently used by _LT_CONFIG
- # to write the compiler configuration to `libtool'.
- m4_defun([_LT_LANG_F77_CONFIG],
--[AC_REQUIRE([_LT_PROG_F77])dnl
--AC_LANG_PUSH(Fortran 77)
-+[AC_LANG_PUSH(Fortran 77)
-+if test -z "$F77" || test "X$F77" = "Xno"; then
-+  _lt_disable_F77=yes
-+fi
- 
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(allow_undefined_flag, $1)=
- _LT_TAGVAR(always_export_symbols, $1)=no
- _LT_TAGVAR(archive_expsym_cmds, $1)=
- _LT_TAGVAR(export_dynamic_flag_spec, $1)=
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_direct_absolute, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
- _LT_TAGVAR(hardcode_libdir_separator, $1)=
- _LT_TAGVAR(hardcode_minus_L, $1)=no
- _LT_TAGVAR(hardcode_automatic, $1)=no
- _LT_TAGVAR(inherit_rpath, $1)=no
- _LT_TAGVAR(module_cmds, $1)=
- _LT_TAGVAR(module_expsym_cmds, $1)=
- _LT_TAGVAR(link_all_deplibs, $1)=unknown
- _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-+_LT_TAGVAR(reload_flag, $1)=$reload_flag
-+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
- _LT_TAGVAR(no_undefined_flag, $1)=
- _LT_TAGVAR(whole_archive_flag_spec, $1)=
- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
- 
- # Source file extension for f77 test sources.
- ac_ext=f
- 
- # Object file extension for compiled f77 test sources.
-@@ -6644,17 +7229,19 @@ if test "$_lt_disable_F77" != yes; then
- 
-   # save warnings/boilerplate of simple test code
-   _LT_COMPILER_BOILERPLATE
-   _LT_LINKER_BOILERPLATE
- 
-   # Allow CC to be a program name with arguments.
-   lt_save_CC="$CC"
-   lt_save_GCC=$GCC
-+  lt_save_CFLAGS=$CFLAGS
-   CC=${F77-"f77"}
-+  CFLAGS=$FFLAGS
-   compiler=$CC
-   _LT_TAGVAR(compiler, $1)=$CC
-   _LT_CC_BASENAME([$compiler])
-   GCC=$G77
-   if test -n "$compiler"; then
-     AC_MSG_CHECKING([if libtool supports shared libraries])
-     AC_MSG_RESULT([$can_build_shared])
- 
-@@ -6698,66 +7285,53 @@ if test "$_lt_disable_F77" != yes; then
-     _LT_SYS_DYNAMIC_LINKER($1)
-     _LT_LINKER_HARDCODE_LIBPATH($1)
- 
-     _LT_CONFIG($1)
-   fi # test -n "$compiler"
- 
-   GCC=$lt_save_GCC
-   CC="$lt_save_CC"
-+  CFLAGS="$lt_save_CFLAGS"
- fi # test "$_lt_disable_F77" != yes
- 
- AC_LANG_POP
- ])# _LT_LANG_F77_CONFIG
- 
- 
--# _LT_PROG_FC
--# -----------
--# Since AC_PROG_FC is broken, in that it returns the empty string
--# if there is no fortran compiler, we have our own version here.
--m4_defun([_LT_PROG_FC],
--[
--pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
--AC_PROG_FC
--if test -z "$FC" || test "X$FC" = "Xno"; then
--  _lt_disable_FC=yes
--fi
--popdef([AC_MSG_ERROR])
--])# _LT_PROG_FC
--
--dnl aclocal-1.4 backwards compatibility:
--dnl AC_DEFUN([_LT_PROG_FC], [])
--
--
- # _LT_LANG_FC_CONFIG([TAG])
- # -------------------------
- # Ensure that the configuration variables for a Fortran compiler are
- # suitably defined.  These variables are subsequently used by _LT_CONFIG
- # to write the compiler configuration to `libtool'.
- m4_defun([_LT_LANG_FC_CONFIG],
--[AC_REQUIRE([_LT_PROG_FC])dnl
--AC_LANG_PUSH(Fortran)
-+[AC_LANG_PUSH(Fortran)
-+
-+if test -z "$FC" || test "X$FC" = "Xno"; then
-+  _lt_disable_FC=yes
-+fi
- 
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(allow_undefined_flag, $1)=
- _LT_TAGVAR(always_export_symbols, $1)=no
- _LT_TAGVAR(archive_expsym_cmds, $1)=
- _LT_TAGVAR(export_dynamic_flag_spec, $1)=
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_direct_absolute, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
--_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
- _LT_TAGVAR(hardcode_libdir_separator, $1)=
- _LT_TAGVAR(hardcode_minus_L, $1)=no
- _LT_TAGVAR(hardcode_automatic, $1)=no
- _LT_TAGVAR(inherit_rpath, $1)=no
- _LT_TAGVAR(module_cmds, $1)=
- _LT_TAGVAR(module_expsym_cmds, $1)=
- _LT_TAGVAR(link_all_deplibs, $1)=unknown
- _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-+_LT_TAGVAR(reload_flag, $1)=$reload_flag
-+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
- _LT_TAGVAR(no_undefined_flag, $1)=
- _LT_TAGVAR(whole_archive_flag_spec, $1)=
- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
- 
- # Source file extension for fc test sources.
- ac_ext=${ac_fc_srcext-f}
- 
- # Object file extension for compiled fc test sources.
-@@ -6787,17 +7361,19 @@ if test "$_lt_disable_FC" != yes; then
- 
-   # save warnings/boilerplate of simple test code
-   _LT_COMPILER_BOILERPLATE
-   _LT_LINKER_BOILERPLATE
- 
-   # Allow CC to be a program name with arguments.
-   lt_save_CC="$CC"
-   lt_save_GCC=$GCC
-+  lt_save_CFLAGS=$CFLAGS
-   CC=${FC-"f95"}
-+  CFLAGS=$FCFLAGS
-   compiler=$CC
-   GCC=$ac_cv_fc_compiler_gnu
- 
-   _LT_TAGVAR(compiler, $1)=$CC
-   _LT_CC_BASENAME([$compiler])
- 
-   if test -n "$compiler"; then
-     AC_MSG_CHECKING([if libtool supports shared libraries])
-@@ -6843,17 +7419,18 @@ if test "$_lt_disable_FC" != yes; then
-     _LT_LINKER_SHLIBS($1)
-     _LT_SYS_DYNAMIC_LINKER($1)
-     _LT_LINKER_HARDCODE_LIBPATH($1)
- 
-     _LT_CONFIG($1)
-   fi # test -n "$compiler"
- 
-   GCC=$lt_save_GCC
--  CC="$lt_save_CC"
-+  CC=$lt_save_CC
-+  CFLAGS=$lt_save_CFLAGS
- fi # test "$_lt_disable_FC" != yes
- 
- AC_LANG_POP
- ])# _LT_LANG_FC_CONFIG
- 
- 
- # _LT_LANG_GCJ_CONFIG([TAG])
- # --------------------------
-@@ -6880,29 +7457,33 @@ lt_simple_link_test_code='public class c
- # ltmain only uses $CC for tagged configurations so make sure $CC is set.
- _LT_TAG_COMPILER
- 
- # save warnings/boilerplate of simple test code
- _LT_COMPILER_BOILERPLATE
- _LT_LINKER_BOILERPLATE
- 
- # Allow CC to be a program name with arguments.
--lt_save_CC="$CC"
-+lt_save_CC=$CC
-+lt_save_CFLAGS=$CFLAGS
- lt_save_GCC=$GCC
- GCC=yes
- CC=${GCJ-"gcj"}
-+CFLAGS=$GCJFLAGS
- compiler=$CC
- _LT_TAGVAR(compiler, $1)=$CC
- _LT_TAGVAR(LD, $1)="$LD"
- _LT_CC_BASENAME([$compiler])
- 
- # GCJ did not exist at the time GCC didn't implicitly link libc in.
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- 
- _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-+_LT_TAGVAR(reload_flag, $1)=$reload_flag
-+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
- 
- ## CAVEAT EMPTOR:
- ## There is no encapsulation within the following macros, do not change
- ## the running order or otherwise move them around unless you know exactly
- ## what you are doing...
- if test -n "$compiler"; then
-   _LT_COMPILER_NO_RTTI($1)
-   _LT_COMPILER_PIC($1)
-@@ -6912,20 +7493,92 @@ if test -n "$compiler"; then
-   _LT_LINKER_HARDCODE_LIBPATH($1)
- 
-   _LT_CONFIG($1)
- fi
- 
- AC_LANG_RESTORE
- 
- GCC=$lt_save_GCC
--CC="$lt_save_CC"
-+CC=$lt_save_CC
-+CFLAGS=$lt_save_CFLAGS
- ])# _LT_LANG_GCJ_CONFIG
- 
- 
-+# _LT_LANG_GO_CONFIG([TAG])
-+# --------------------------
-+# Ensure that the configuration variables for the GNU Go compiler
-+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-+# to write the compiler configuration to `libtool'.
-+m4_defun([_LT_LANG_GO_CONFIG],
-+[AC_REQUIRE([LT_PROG_GO])dnl
-+AC_LANG_SAVE
-+
-+# Source file extension for Go test sources.
-+ac_ext=go
-+
-+# Object file extension for compiled Go test sources.
-+objext=o
-+_LT_TAGVAR(objext, $1)=$objext
-+
-+# Code to be used in simple compile tests
-+lt_simple_compile_test_code="package main; func main() { }"
-+
-+# Code to be used in simple link tests
-+lt_simple_link_test_code='package main; func main() { }'
-+
-+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-+_LT_TAG_COMPILER
-+
-+# save warnings/boilerplate of simple test code
-+_LT_COMPILER_BOILERPLATE
-+_LT_LINKER_BOILERPLATE
-+
-+# Allow CC to be a program name with arguments.
-+lt_save_CC=$CC
-+lt_save_CFLAGS=$CFLAGS
-+lt_save_GCC=$GCC
-+GCC=yes
-+CC=${GOC-"gccgo"}
-+CFLAGS=$GOFLAGS
-+compiler=$CC
-+_LT_TAGVAR(compiler, $1)=$CC
-+_LT_TAGVAR(LD, $1)="$LD"
-+_LT_CC_BASENAME([$compiler])
-+
-+# Go did not exist at the time GCC didn't implicitly link libc in.
-+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-+
-+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-+_LT_TAGVAR(reload_flag, $1)=$reload_flag
-+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-+
-+## CAVEAT EMPTOR:
-+## There is no encapsulation within the following macros, do not change
-+## the running order or otherwise move them around unless you know exactly
-+## what you are doing...
-+if test -n "$compiler"; then
-+  _LT_COMPILER_NO_RTTI($1)
-+  _LT_COMPILER_PIC($1)
-+  _LT_COMPILER_C_O($1)
-+  _LT_COMPILER_FILE_LOCKS($1)
-+  _LT_LINKER_SHLIBS($1)
-+  _LT_LINKER_HARDCODE_LIBPATH($1)
-+
-+  _LT_CONFIG($1)
-+fi
-+
-+AC_LANG_RESTORE
-+
-+GCC=$lt_save_GCC
-+CC=$lt_save_CC
-+CFLAGS=$lt_save_CFLAGS
-+])# _LT_LANG_GO_CONFIG
-+
-+
- # _LT_LANG_RC_CONFIG([TAG])
- # -------------------------
- # Ensure that the configuration variables for the Windows resource compiler
- # are suitably defined.  These variables are subsequently used by _LT_CONFIG
- # to write the compiler configuration to `libtool'.
- m4_defun([_LT_LANG_RC_CONFIG],
- [AC_REQUIRE([LT_PROG_RC])dnl
- AC_LANG_SAVE
-@@ -6947,32 +7600,35 @@ lt_simple_link_test_code="$lt_simple_com
- _LT_TAG_COMPILER
- 
- # save warnings/boilerplate of simple test code
- _LT_COMPILER_BOILERPLATE
- _LT_LINKER_BOILERPLATE
- 
- # Allow CC to be a program name with arguments.
- lt_save_CC="$CC"
-+lt_save_CFLAGS=$CFLAGS
- lt_save_GCC=$GCC
- GCC=
- CC=${RC-"windres"}
-+CFLAGS=
- compiler=$CC
- _LT_TAGVAR(compiler, $1)=$CC
- _LT_CC_BASENAME([$compiler])
- _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
- 
- if test -n "$compiler"; then
-   :
-   _LT_CONFIG($1)
- fi
- 
- GCC=$lt_save_GCC
- AC_LANG_RESTORE
--CC="$lt_save_CC"
-+CC=$lt_save_CC
-+CFLAGS=$lt_save_CFLAGS
- ])# _LT_LANG_RC_CONFIG
- 
- 
- # LT_PROG_GCJ
- # -----------
- AC_DEFUN([LT_PROG_GCJ],
- [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
-   [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
-@@ -6982,16 +7638,23 @@ AC_DEFUN([LT_PROG_GCJ],
- ])
- 
- # Old name:
- AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
- dnl aclocal-1.4 backwards compatibility:
- dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
- 
- 
-+# LT_PROG_GO
-+# ----------
-+AC_DEFUN([LT_PROG_GO],
-+[AC_CHECK_TOOL(GOC, gccgo,)
-+])
-+
-+
- # LT_PROG_RC
- # ----------
- AC_DEFUN([LT_PROG_RC],
- [AC_CHECK_TOOL(RC, windres,)
- ])
- 
- # Old name:
- AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
-@@ -7021,16 +7684,25 @@ AC_SUBST([GREP])
- # available, choose the one first in the user's PATH.
- m4_defun([_LT_DECL_OBJDUMP],
- [AC_CHECK_TOOL(OBJDUMP, objdump, false)
- test -z "$OBJDUMP" && OBJDUMP=objdump
- _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
- AC_SUBST([OBJDUMP])
- ])
- 
-+# _LT_DECL_DLLTOOL
-+# ----------------
-+# Ensure DLLTOOL variable is set.
-+m4_defun([_LT_DECL_DLLTOOL],
-+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-+test -z "$DLLTOOL" && DLLTOOL=dlltool
-+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
-+AC_SUBST([DLLTOOL])
-+])
- 
- # _LT_DECL_SED
- # ------------
- # Check for a fully-functional sed program, that truncates
- # as few characters as possible.  Prefer GNU sed if found.
- m4_defun([_LT_DECL_SED],
- [AC_PROG_SED
- test -z "$SED" && SED=sed
-@@ -7114,18 +7786,18 @@ dnl AC_DEFUN([LT_AC_PROG_SED], [])
- # ------------------------
- # Find out whether the shell is Bourne or XSI compatible,
- # or has some other useful features.
- m4_defun([_LT_CHECK_SHELL_FEATURES],
- [AC_MSG_CHECKING([whether the shell understands some XSI constructs])
- # Try some XSI features
- xsi_shell=no
- ( _lt_dummy="a/b/c"
--  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
--      = c,a/b,, \
-+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-+      = c,a/b,b/c, \
-     && eval 'test $(( 1 + 1 )) -eq 2 \
-     && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-   && xsi_shell=yes
- AC_MSG_RESULT([$xsi_shell])
- _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
- 
- AC_MSG_CHECKING([whether the shell understands "+="])
- lt_shell_append=no
-@@ -7154,213 +7826,167 @@ case `echo X|tr X '\101'` in
-   lt_NL2SP='tr \r\n \100\100'
-   ;;
- esac
- _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
- _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
- ])# _LT_CHECK_SHELL_FEATURES
- 
- 
--# _LT_PROG_XSI_SHELLFNS
--# ---------------------
--# Bourne and XSI compatible variants of some useful shell functions.
--m4_defun([_LT_PROG_XSI_SHELLFNS],
--[case $xsi_shell in
--  yes)
--    cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
--  case ${1} in
--    */*) func_dirname_result="${1%/*}${2}" ;;
--    *  ) func_dirname_result="${3}" ;;
--  esac
--}
--
--# func_basename file
--func_basename ()
--{
--  func_basename_result="${1##*/}"
--}
--
--# func_dirname_and_basename file append nondir_replacement
--# perform func_basename and func_dirname in a single function
--# call:
--#   dirname:  Compute the dirname of FILE.  If nonempty,
--#             add APPEND to the result, otherwise set result
--#             to NONDIR_REPLACEMENT.
--#             value returned in "$func_dirname_result"
--#   basename: Compute filename of FILE.
--#             value retuned in "$func_basename_result"
--# Implementation must be kept synchronized with func_dirname
--# and func_basename. For efficiency, we do not delegate to
--# those functions but instead duplicate the functionality here.
--func_dirname_and_basename ()
--{
--  case ${1} in
--    */*) func_dirname_result="${1%/*}${2}" ;;
--    *  ) func_dirname_result="${3}" ;;
--  esac
--  func_basename_result="${1##*/}"
--}
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--func_stripname ()
--{
--  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
--  # positional parameters, so assign one to ordinary parameter first.
--  func_stripname_result=${3}
--  func_stripname_result=${func_stripname_result#"${1}"}
--  func_stripname_result=${func_stripname_result%"${2}"}
--}
--
--# func_opt_split
--func_opt_split ()
--{
--  func_opt_split_opt=${1%%=*}
--  func_opt_split_arg=${1#*=}
--}
--
--# func_lo2o object
--func_lo2o ()
--{
--  case ${1} in
--    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
--    *)    func_lo2o_result=${1} ;;
--  esac
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
--  func_xform_result=${1%.*}.lo
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
--  func_arith_result=$(( $[*] ))
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
--  func_len_result=${#1}
--}
--
--_LT_EOF
-+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
-+# ------------------------------------------------------
-+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
-+# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
-+m4_defun([_LT_PROG_FUNCTION_REPLACE],
-+[dnl {
-+sed -e '/^$1 ()$/,/^} # $1 /c\
-+$1 ()\
-+{\
-+m4_bpatsubsts([$2], [$], [\\], [^\([	 ]\)], [\\\1])
-+} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
-+  && mv -f "$cfgfile.tmp" "$cfgfile" \
-+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+test 0 -eq $? || _lt_function_replace_fail=:
-+])
-+
-+
-+# _LT_PROG_REPLACE_SHELLFNS
-+# -------------------------
-+# Replace existing portable implementations of several shell functions with
-+# equivalent extended shell implementations where those features are available..
-+m4_defun([_LT_PROG_REPLACE_SHELLFNS],
-+[if test x"$xsi_shell" = xyes; then
-+  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
-+    case ${1} in
-+      */*) func_dirname_result="${1%/*}${2}" ;;
-+      *  ) func_dirname_result="${3}" ;;
-+    esac])
-+
-+  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
-+    func_basename_result="${1##*/}"])
-+
-+  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
-+    case ${1} in
-+      */*) func_dirname_result="${1%/*}${2}" ;;
-+      *  ) func_dirname_result="${3}" ;;
-+    esac
-+    func_basename_result="${1##*/}"])
-+
-+  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
-+    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-+    # positional parameters, so assign one to ordinary parameter first.
-+    func_stripname_result=${3}
-+    func_stripname_result=${func_stripname_result#"${1}"}
-+    func_stripname_result=${func_stripname_result%"${2}"}])
-+
-+  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
-+    func_split_long_opt_name=${1%%=*}
-+    func_split_long_opt_arg=${1#*=}])
-+
-+  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
-+    func_split_short_opt_arg=${1#??}
-+    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
-+
-+  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
-+    case ${1} in
-+      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-+      *)    func_lo2o_result=${1} ;;
-+    esac])
-+
-+  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
-+
-+  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
-+
-+  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
-+fi
-+
-+if test x"$lt_shell_append" = xyes; then
-+  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
-+
-+  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
-+    func_quote_for_eval "${2}"
-+dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
-+    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
-+
-+  # Save a `func_append' function call where possible by direct use of '+='
-+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-+    && mv -f "$cfgfile.tmp" "$cfgfile" \
-+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+  test 0 -eq $? || _lt_function_replace_fail=:
-+else
-+  # Save a `func_append' function call even when '+=' is not available
-+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-+    && mv -f "$cfgfile.tmp" "$cfgfile" \
-+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-+  test 0 -eq $? || _lt_function_replace_fail=:
-+fi
-+
-+if test x"$_lt_function_replace_fail" = x":"; then
-+  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
-+fi
-+])
-+
-+# _LT_PATH_CONVERSION_FUNCTIONS
-+# -----------------------------
-+# Determine which file name conversion functions should be used by
-+# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
-+# for certain cross-compile configurations and native mingw.
-+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
-+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-+AC_MSG_CHECKING([how to convert $build file names to $host format])
-+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
-+[case $host in
-+  *-*-mingw* )
-+    case $build in
-+      *-*-mingw* ) # actually msys
-+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-+        ;;
-+      *-*-cygwin* )
-+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-+        ;;
-+      * ) # otherwise, assume *nix
-+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-+        ;;
-+    esac
-     ;;
--  *) # Bourne compatible functions.
--    cat << \_LT_EOF >> "$cfgfile"
--
--# func_dirname file append nondir_replacement
--# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
--# otherwise set result to NONDIR_REPLACEMENT.
--func_dirname ()
--{
--  # Extract subdirectory from the argument.
--  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
--  if test "X$func_dirname_result" = "X${1}"; then
--    func_dirname_result="${3}"
--  else
--    func_dirname_result="$func_dirname_result${2}"
--  fi
--}
--
--# func_basename file
--func_basename ()
--{
--  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
--}
--
--dnl func_dirname_and_basename
--dnl A portable version of this function is already defined in general.m4sh
--dnl so there is no need for it here.
--
--# func_stripname prefix suffix name
--# strip PREFIX and SUFFIX off of NAME.
--# PREFIX and SUFFIX must not contain globbing or regex special
--# characters, hashes, percent signs, but SUFFIX may contain a leading
--# dot (in which case that matches only a dot).
--# func_strip_suffix prefix name
--func_stripname ()
--{
--  case ${2} in
--    .*) func_stripname_result=`$ECHO "X${3}" \
--           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
--    *)  func_stripname_result=`$ECHO "X${3}" \
--           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
--  esac
--}
--
--# sed scripts:
--my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
--my_sed_long_arg='1s/^-[[^=]]*=//'
--
--# func_opt_split
--func_opt_split ()
--{
--  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
--  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
--}
--
--# func_lo2o object
--func_lo2o ()
--{
--  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
--}
--
--# func_xform libobj-or-source
--func_xform ()
--{
--  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
--}
--
--# func_arith arithmetic-term...
--func_arith ()
--{
--  func_arith_result=`expr "$[@]"`
--}
--
--# func_len string
--# STRING may not start with a hyphen.
--func_len ()
--{
--  func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
--}
--
--_LT_EOF
-+  *-*-cygwin* )
-+    case $build in
-+      *-*-mingw* ) # actually msys
-+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-+        ;;
-+      *-*-cygwin* )
-+        lt_cv_to_host_file_cmd=func_convert_file_noop
-+        ;;
-+      * ) # otherwise, assume *nix
-+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-+        ;;
-+    esac
-+    ;;
-+  * ) # unhandled hosts (and "normal" native builds)
-+    lt_cv_to_host_file_cmd=func_convert_file_noop
-+    ;;
- esac
--
--case $lt_shell_append in
--  yes)
--    cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
--  eval "$[1]+=\$[2]"
--}
--_LT_EOF
-+])
-+to_host_file_cmd=$lt_cv_to_host_file_cmd
-+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
-+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
-+         [0], [convert $build file names to $host format])dnl
-+
-+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
-+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
-+[#assume ordinary cross tools, or native build.
-+lt_cv_to_tool_file_cmd=func_convert_file_noop
-+case $host in
-+  *-*-mingw* )
-+    case $build in
-+      *-*-mingw* ) # actually msys
-+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-+        ;;
-+    esac
-     ;;
--  *)
--    cat << \_LT_EOF >> "$cfgfile"
--
--# func_append var value
--# Append VALUE to the end of shell variable VAR.
--func_append ()
--{
--  eval "$[1]=\$$[1]\$[2]"
--}
--
--_LT_EOF
--    ;;
--  esac
-+esac
- ])
-+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
-+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
-+         [0], [convert $build files to toolchain format])dnl
-+])# _LT_PATH_CONVERSION_FUNCTIONS
-diff --git a/js/src/ctypes/libffi/m4/ltoptions.m4 b/js/src/ctypes/libffi/m4/ltoptions.m4
---- a/js/src/ctypes/libffi/m4/ltoptions.m4
-+++ b/js/src/ctypes/libffi/m4/ltoptions.m4
-@@ -1,18 +1,19 @@
- # Helper functions for option handling.                    -*- Autoconf -*-
- #
--#   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-+#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
-+#   Inc.
- #   Written by Gary V. Vaughan, 2004
- #
- # This file is free software; the Free Software Foundation gives
- # unlimited permission to copy and/or distribute it, with or without
- # modifications, as long as this notice is preserved.
- 
--# serial 6 ltoptions.m4
-+# serial 7 ltoptions.m4
- 
- # This is to help aclocal find these macros, as it can't see m4_define.
- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
- 
- 
- # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
- # ------------------------------------------
- m4_define([_LT_MANGLE_OPTION],
-@@ -120,31 +121,31 @@ dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
- 
- # win32-dll
- # ---------
- # Declare package support for building win32 dll's.
- LT_OPTION_DEFINE([LT_INIT], [win32-dll],
- [enable_win32_dll=yes
- 
- case $host in
--*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
-+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
-   AC_CHECK_TOOL(AS, as, false)
-   AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-   AC_CHECK_TOOL(OBJDUMP, objdump, false)
-   ;;
- esac
- 
- test -z "$AS" && AS=as
--_LT_DECL([], [AS],      [0], [Assembler program])dnl
-+_LT_DECL([], [AS],      [1], [Assembler program])dnl
- 
- test -z "$DLLTOOL" && DLLTOOL=dlltool
--_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
-+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
- 
- test -z "$OBJDUMP" && OBJDUMP=objdump
--_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
-+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
- ])# win32-dll
- 
- AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
- [AC_REQUIRE([AC_CANONICAL_HOST])dnl
- _LT_SET_OPTION([LT_INIT], [win32-dll])
- AC_DIAGNOSE([obsolete],
- [$0: Remove this warning and the call to _LT_SET_OPTION when you
- put the `win32-dll' option into LT_INIT's first parameter.])
-@@ -320,19 +321,34 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], 
- 
- # _LT_WITH_PIC([MODE])
- # --------------------
- # implement the --with-pic flag, and support the `pic-only' and `no-pic'
- # LT_INIT options.
- # MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
- m4_define([_LT_WITH_PIC],
- [AC_ARG_WITH([pic],
--    [AS_HELP_STRING([--with-pic],
-+    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
- 	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
--    [pic_mode="$withval"],
-+    [lt_p=${PACKAGE-default}
-+    case $withval in
-+    yes|no) pic_mode=$withval ;;
-+    *)
-+      pic_mode=default
-+      # Look at the argument we got.  We use all the common list separators.
-+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-+      for lt_pkg in $withval; do
-+	IFS="$lt_save_ifs"
-+	if test "X$lt_pkg" = "X$lt_p"; then
-+	  pic_mode=yes
-+	fi
-+      done
-+      IFS="$lt_save_ifs"
-+      ;;
-+    esac],
-     [pic_mode=default])
- 
- test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
- 
- _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
- ])# _LT_WITH_PIC
- 
- LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
-diff --git a/js/src/ctypes/libffi/m4/ltversion.m4 b/js/src/ctypes/libffi/m4/ltversion.m4
---- a/js/src/ctypes/libffi/m4/ltversion.m4
-+++ b/js/src/ctypes/libffi/m4/ltversion.m4
-@@ -2,22 +2,22 @@
- #
- #   Copyright (C) 2004 Free Software Foundation, Inc.
- #   Written by Scott James Remnant, 2004
- #
- # This file is free software; the Free Software Foundation gives
- # unlimited permission to copy and/or distribute it, with or without
- # modifications, as long as this notice is preserved.
- 
--# Generated from ltversion.in.
-+# @configure_input@
- 
--# serial 3017 ltversion.m4
-+# serial 3337 ltversion.m4
- # This file is part of GNU Libtool
- 
--m4_define([LT_PACKAGE_VERSION], [2.2.6b])
--m4_define([LT_PACKAGE_REVISION], [1.3017])
-+m4_define([LT_PACKAGE_VERSION], [2.4.2])
-+m4_define([LT_PACKAGE_REVISION], [1.3337])
- 
- AC_DEFUN([LTVERSION_VERSION],
--[macro_version='2.2.6b'
--macro_revision='1.3017'
-+[macro_version='2.4.2'
-+macro_revision='1.3337'
- _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
- _LT_DECL(, macro_revision, 0)
- ])
-diff --git a/js/src/ctypes/libffi/m4/lt~obsolete.m4 b/js/src/ctypes/libffi/m4/lt~obsolete.m4
---- a/js/src/ctypes/libffi/m4/lt~obsolete.m4
-+++ b/js/src/ctypes/libffi/m4/lt~obsolete.m4
-@@ -1,18 +1,18 @@
- # lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
- #
--#   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
-+#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
- #   Written by Scott James Remnant, 2004.
- #
- # This file is free software; the Free Software Foundation gives
- # unlimited permission to copy and/or distribute it, with or without
- # modifications, as long as this notice is preserved.
- 
--# serial 4 lt~obsolete.m4
-+# serial 5 lt~obsolete.m4
- 
- # These exist entirely to fool aclocal when bootstrapping libtool.
- #
- # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
- # which have later been changed to m4_define as they aren't part of the
- # exported API, or moved to Autoconf or Automake where they belong.
- #
- # The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
-@@ -72,21 +72,27 @@ m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN
- m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
- m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
- m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
- m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
- m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
- m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
- m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
- m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
--m4_ifndef([AC_LIBTOOL_RC],		[AC_DEFUN([AC_LIBTOOL_RC])])
- m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
- m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
- m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
- m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
- m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
- m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
- m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
- m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
- m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
- m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
- m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
- m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
-+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],	[AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
-+m4_ifndef([_LT_AC_PROG_CXXCPP],		[AC_DEFUN([_LT_AC_PROG_CXXCPP])])
-+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],	[AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
-+m4_ifndef([_LT_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
-+m4_ifndef([_LT_PROG_F77],		[AC_DEFUN([_LT_PROG_F77])])
-+m4_ifndef([_LT_PROG_FC],		[AC_DEFUN([_LT_PROG_FC])])
-+m4_ifndef([_LT_PROG_CXX],		[AC_DEFUN([_LT_PROG_CXX])])
-diff --git a/js/src/ctypes/libffi/man/Makefile.am b/js/src/ctypes/libffi/man/Makefile.am
---- a/js/src/ctypes/libffi/man/Makefile.am
-+++ b/js/src/ctypes/libffi/man/Makefile.am
-@@ -1,8 +1,8 @@
- ## Process this with automake to create Makefile.in
- 
- AUTOMAKE_OPTIONS=foreign
- 
--EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3
-+EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3
- 
--man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3
-+man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3
- 
-diff --git a/js/src/ctypes/libffi/man/Makefile.in b/js/src/ctypes/libffi/man/Makefile.in
---- a/js/src/ctypes/libffi/man/Makefile.in
-+++ b/js/src/ctypes/libffi/man/Makefile.in
-@@ -1,25 +1,69 @@
--# Makefile.in generated by automake 1.11.1 from Makefile.am.
-+# Makefile.in generated by automake 1.13.4 from Makefile.am.
- # @configure_input@
- 
--# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
--# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
--# Inc.
-+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-+
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- # PARTICULAR PURPOSE.
- 
- @SET_MAKE@
- VPATH = @srcdir@
-+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-+am__make_running_with_option = \
-+  case $${target_option-} in \
-+      ?) ;; \
-+      *) echo "am__make_running_with_option: internal error: invalid" \
-+              "target option '$${target_option-}' specified" >&2; \
-+         exit 1;; \
-+  esac; \
-+  has_opt=no; \
-+  sane_makeflags=$$MAKEFLAGS; \
-+  if $(am__is_gnu_make); then \
-+    sane_makeflags=$$MFLAGS; \
-+  else \
-+    case $$MAKEFLAGS in \
-+      *\\[\ \	]*) \
-+        bs=\\; \
-+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-+    esac; \
-+  fi; \
-+  skip_next=no; \
-+  strip_trailopt () \
-+  { \
-+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-+  }; \
-+  for flg in $$sane_makeflags; do \
-+    test $$skip_next = yes && { skip_next=no; continue; }; \
-+    case $$flg in \
-+      *=*|--*) continue;; \
-+        -*I) strip_trailopt 'I'; skip_next=yes;; \
-+      -*I?*) strip_trailopt 'I';; \
-+        -*O) strip_trailopt 'O'; skip_next=yes;; \
-+      -*O?*) strip_trailopt 'O';; \
-+        -*l) strip_trailopt 'l'; skip_next=yes;; \
-+      -*l?*) strip_trailopt 'l';; \
-+      -[dEDm]) skip_next=yes;; \
-+      -[JT]) skip_next=yes;; \
-+    esac; \
-+    case $$flg in \
-+      *$$target_option*) has_opt=yes; break;; \
-+    esac; \
-+  done; \
-+  test $$has_opt = yes
-+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
- pkgdatadir = $(datadir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
- pkglibdir = $(libdir)/@PACKAGE@
- pkglibexecdir = $(libexecdir)/@PACKAGE@
- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- install_sh_DATA = $(install_sh) -c -m 644
- install_sh_PROGRAM = $(install_sh) -c
- install_sh_SCRIPT = $(install_sh) -c
-@@ -30,28 +74,57 @@ PRE_INSTALL = :
- POST_INSTALL = :
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
- build_triplet = @build@
- host_triplet = @host@
- target_triplet = @target@
- subdir = man
--DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
- ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
--am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-+am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \
-+	$(top_srcdir)/m4/ax_append_flag.m4 \
-+	$(top_srcdir)/m4/ax_cc_maxopt.m4 \
-+	$(top_srcdir)/m4/ax_cflags_warn_all.m4 \
-+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
-+	$(top_srcdir)/m4/ax_compiler_vendor.m4 \
-+	$(top_srcdir)/m4/ax_configure_args.m4 \
-+	$(top_srcdir)/m4/ax_enable_builddir.m4 \
-+	$(top_srcdir)/m4/ax_gcc_archflag.m4 \
-+	$(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
-+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
- 	$(top_srcdir)/configure.ac
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- 	$(ACLOCAL_M4)
- mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/fficonfig.h
- CONFIG_CLEAN_FILES =
- CONFIG_CLEAN_VPATH_FILES =
-+AM_V_P = $(am__v_P_@AM_V@)
-+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-+am__v_P_0 = false
-+am__v_P_1 = :
-+AM_V_GEN = $(am__v_GEN_@AM_V@)
-+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-+am__v_GEN_0 = @echo "  GEN     " $@;
-+am__v_GEN_1 = 
-+AM_V_at = $(am__v_at_@AM_V@)
-+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-+am__v_at_0 = @
-+am__v_at_1 = 
- SOURCES =
- DIST_SOURCES =
-+am__can_run_installinfo = \
-+  case $$AM_UPDATE_INFO_DIR in \
-+    n|no|NO) false;; \
-+    *) (install-info --version) >/dev/null 2>&1;; \
-+  esac
- am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
- am__vpath_adj = case $$p in \
-     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-     *) f=$$p;; \
-   esac;
- am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
- am__install_max = 40
- am__nobase_strip_setup = \
-@@ -63,24 +136,32 @@ am__nobase_list = $(am__nobase_strip_set
-   sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-   $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-     if (++n[$$2] == $(am__install_max)) \
-       { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-     END { for (dir in files) print dir, files[dir] }'
- am__base_list = \
-   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-+am__uninstall_files_from_dir = { \
-+  test -z "$$files" \
-+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-+         $(am__cd) "$$dir" && rm -f $$files; }; \
-+  }
- man3dir = $(mandir)/man3
- am__installdirs = "$(DESTDIR)$(man3dir)"
- NROFF = nroff
- MANS = $(man_MANS)
-+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
- ACLOCAL = @ACLOCAL@
- ALLOCA = @ALLOCA@
- AMTAR = @AMTAR@
-+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
- AM_LTLDFLAGS = @AM_LTLDFLAGS@
- AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@
- AR = @AR@
- AUTOCONF = @AUTOCONF@
- AUTOHEADER = @AUTOHEADER@
- AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
- CC = @CC@
-@@ -89,75 +170,82 @@ CCASDEPMODE = @CCASDEPMODE@
- CCASFLAGS = @CCASFLAGS@
- CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
- CPP = @CPP@
- CPPFLAGS = @CPPFLAGS@
- CYGPATH_W = @CYGPATH_W@
- DEFS = @DEFS@
- DEPDIR = @DEPDIR@
-+DLLTOOL = @DLLTOOL@
- DSYMUTIL = @DSYMUTIL@
- DUMPBIN = @DUMPBIN@
- ECHO_C = @ECHO_C@
- ECHO_N = @ECHO_N@
- ECHO_T = @ECHO_T@
- EGREP = @EGREP@
- EXEEXT = @EXEEXT@
-+FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@
- FGREP = @FGREP@
- GREP = @GREP@
- HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
-+HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@
- INSTALL = @INSTALL@
- INSTALL_DATA = @INSTALL_DATA@
- INSTALL_PROGRAM = @INSTALL_PROGRAM@
- INSTALL_SCRIPT = @INSTALL_SCRIPT@
- INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
- LD = @LD@
- LDFLAGS = @LDFLAGS@
- LIBOBJS = @LIBOBJS@
- LIBS = @LIBS@
- LIBTOOL = @LIBTOOL@
- LIPO = @LIPO@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
- MAINT = @MAINT@
- MAKEINFO = @MAKEINFO@
-+MANIFEST_TOOL = @MANIFEST_TOOL@
- MKDIR_P = @MKDIR_P@
- NM = @NM@
- NMEDIT = @NMEDIT@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- OTOOL = @OTOOL@
- OTOOL64 = @OTOOL64@
- PACKAGE = @PACKAGE@
- PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
- PACKAGE_NAME = @PACKAGE_NAME@
- PACKAGE_STRING = @PACKAGE_STRING@
- PACKAGE_TARNAME = @PACKAGE_TARNAME@
- PACKAGE_URL = @PACKAGE_URL@
- PACKAGE_VERSION = @PACKAGE_VERSION@
- PATH_SEPARATOR = @PATH_SEPARATOR@
-+PRTDIAG = @PRTDIAG@
- RANLIB = @RANLIB@
- SED = @SED@
- SET_MAKE = @SET_MAKE@
- SHELL = @SHELL@
- STRIP = @STRIP@
- TARGET = @TARGET@
- TARGETDIR = @TARGETDIR@
- VERSION = @VERSION@
- abs_builddir = @abs_builddir@
- abs_srcdir = @abs_srcdir@
- abs_top_builddir = @abs_top_builddir@
- abs_top_srcdir = @abs_top_srcdir@
-+ac_ct_AR = @ac_ct_AR@
- ac_ct_CC = @ac_ct_CC@
- ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
- am__include = @am__include@
- am__leading_dot = @am__leading_dot@
- am__quote = @am__quote@
- am__tar = @am__tar@
- am__untar = @am__untar@
-+ax_enable_builddir_sed = @ax_enable_builddir_sed@
- bindir = @bindir@
- build = @build@
- build_alias = @build_alias@
- build_cpu = @build_cpu@
- build_os = @build_os@
- build_vendor = @build_vendor@
- builddir = @builddir@
- datadir = @datadir@
-@@ -173,41 +261,41 @@ host_vendor = @host_vendor@
- htmldir = @htmldir@
- includedir = @includedir@
- infodir = @infodir@
- install_sh = @install_sh@
- libdir = @libdir@
- libexecdir = @libexecdir@
- localedir = @localedir@
- localstatedir = @localstatedir@
--lt_ECHO = @lt_ECHO@
- mandir = @mandir@
- mkdir_p = @mkdir_p@
- oldincludedir = @oldincludedir@
- pdfdir = @pdfdir@
- prefix = @prefix@
- program_transform_name = @program_transform_name@
- psdir = @psdir@
- sbindir = @sbindir@
- sharedstatedir = @sharedstatedir@
- srcdir = @srcdir@
-+sys_symbol_underscore = @sys_symbol_underscore@
- sysconfdir = @sysconfdir@
- target = @target@
- target_alias = @target_alias@
- target_cpu = @target_cpu@
- target_os = @target_os@
- target_vendor = @target_vendor@
- toolexecdir = @toolexecdir@
- toolexeclibdir = @toolexeclibdir@
- top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- AUTOMAKE_OPTIONS = foreign
--EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3
--man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3
-+EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3
-+man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3
- all: all-am
- 
- .SUFFIXES:
- $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
- 	@for dep in $?; do \
- 	  case '$(am__configure_deps)' in \
- 	    *$$dep*) \
- 	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-@@ -239,21 +327,28 @@ Makefile: $(srcdir)/Makefile.in $(top_bu
- 
- mostlyclean-libtool:
- 	-rm -f *.lo
- 
- clean-libtool:
- 	-rm -rf .libs _libs
- install-man3: $(man_MANS)
- 	@$(NORMAL_INSTALL)
--	test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)"
--	@list=''; test -n "$(man3dir)" || exit 0; \
--	{ for i in $$list; do echo "$$i"; done; \
--	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
--	  sed -n '/\.3[a-z]*$$/p'; \
-+	@list1=''; \
-+	list2='$(man_MANS)'; \
-+	test -n "$(man3dir)" \
-+	  && test -n "`echo $$list1$$list2`" \
-+	  || exit 0; \
-+	echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \
-+	$(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \
-+	{ for i in $$list1; do echo "$$i"; done;  \
-+	if test -n "$$list2"; then \
-+	  for i in $$list2; do echo "$$i"; done \
-+	    | sed -n '/\.3[a-z]*$$/p'; \
-+	fi; \
- 	} | while read p; do \
- 	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- 	  echo "$$d$$p"; echo "$$p"; \
- 	done | \
- 	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
- 	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
- 	sed 'N;N;s,\n, ,g' | { \
- 	list=; while read file base inst; do \
-@@ -272,40 +367,25 @@ install-man3: $(man_MANS)
- uninstall-man3:
- 	@$(NORMAL_UNINSTALL)
- 	@list=''; test -n "$(man3dir)" || exit 0; \
- 	files=`{ for i in $$list; do echo "$$i"; done; \
- 	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- 	  sed -n '/\.3[a-z]*$$/p'; \
- 	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
- 	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
--	test -z "$$files" || { \
--	  echo " ( cd '$(DESTDIR)$(man3dir)' && rm -f" $$files ")"; \
--	  cd "$(DESTDIR)$(man3dir)" && rm -f $$files; }
--tags: TAGS
--TAGS:
-+	dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir)
-+tags TAGS:
- 
--ctags: CTAGS
--CTAGS:
-+ctags CTAGS:
-+
-+cscope cscopelist:
- 
- 
- distdir: $(DISTFILES)
--	@list='$(MANS)'; if test -n "$$list"; then \
--	  list=`for p in $$list; do \
--	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
--	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
--	  if test -n "$$list" && \
--	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
--	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
--	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
--	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
--	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
--	    exit 1; \
--	  else :; fi; \
--	else :; fi
- 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- 	list='$(DISTFILES)'; \
- 	  dist_files=`for file in $$list; do echo $$file; done | \
- 	  sed -e "s|^$$srcdirstrip/||;t" \
- 	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- 	case $$dist_files in \
- 	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-@@ -342,20 +422,25 @@ install-exec: install-exec-am
- install-data: install-data-am
- uninstall: uninstall-am
- 
- install-am: all-am
- 	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
- 
- installcheck: installcheck-am
- install-strip:
--	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
--	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
--	  `test -z '$(STRIP)' || \
--	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-+	if test -z '$(STRIP)'; then \
-+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+	      install; \
-+	else \
-+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-+	fi
- mostlyclean-generic:
- 
- clean-generic:
- 
- distclean-generic:
- 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
- 
-@@ -428,23 +513,24 @@ ps-am:
- 
- uninstall-am: uninstall-man
- 
- uninstall-man: uninstall-man3
- 
- .MAKE: install-am install-strip
- 
- .PHONY: all all-am check check-am clean clean-generic clean-libtool \
--	distclean distclean-generic distclean-libtool distdir dvi \
--	dvi-am html html-am info info-am install install-am \
--	install-data install-data-am install-dvi install-dvi-am \
--	install-exec install-exec-am install-html install-html-am \
--	install-info install-info-am install-man install-man3 \
--	install-pdf install-pdf-am install-ps install-ps-am \
--	install-strip installcheck installcheck-am installdirs \
--	maintainer-clean maintainer-clean-generic mostlyclean \
--	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
--	uninstall uninstall-am uninstall-man uninstall-man3
-+	cscopelist-am ctags-am distclean distclean-generic \
-+	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-+	install install-am install-data install-data-am install-dvi \
-+	install-dvi-am install-exec install-exec-am install-html \
-+	install-html-am install-info install-info-am install-man \
-+	install-man3 install-pdf install-pdf-am install-ps \
-+	install-ps-am install-strip installcheck installcheck-am \
-+	installdirs maintainer-clean maintainer-clean-generic \
-+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-+	ps ps-am tags-am uninstall uninstall-am uninstall-man \
-+	uninstall-man3
- 
- 
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
-diff --git a/js/src/ctypes/libffi/man/ffi.3 b/js/src/ctypes/libffi/man/ffi.3
---- a/js/src/ctypes/libffi/man/ffi.3
-+++ b/js/src/ctypes/libffi/man/ffi.3
-@@ -11,21 +11,31 @@ libffi, -lffi
- .Fo ffi_prep_cif
- .Fa "ffi_cif *cif"
- .Fa "ffi_abi abi"
- .Fa "unsigned int nargs"
- .Fa "ffi_type *rtype"
- .Fa "ffi_type **atypes"
- .Fc
- .Ft void
-+.Fo ffi_prep_cif_var
-+.Fa "ffi_cif *cif"
-+.Fa "ffi_abi abi"
-+.Fa "unsigned int nfixedargs"
-+.Fa "unsigned int ntotalargs"
-+.Fa "ffi_type *rtype"
-+.Fa "ffi_type **atypes"
-+.Fc
-+.Ft void
- .Fo ffi_call
- .Fa "ffi_cif *cif"
- .Fa "void (*fn)(void)"
- .Fa "void *rvalue"
- .Fa "void **avalue"
- .Fc
- .Sh DESCRIPTION
- The foreign function interface provides a mechanism by which a function can
- generate a call to another function at runtime without requiring knowledge of
- the called function's interface at compile time.
- .Sh SEE ALSO
- .Xr ffi_prep_cif 3 ,
-+.Xr ffi_prep_cif_var 3 ,
- .Xr ffi_call 3
-diff --git a/js/src/ctypes/libffi/man/ffi_prep_cif.3 b/js/src/ctypes/libffi/man/ffi_prep_cif.3
---- a/js/src/ctypes/libffi/man/ffi_prep_cif.3
-+++ b/js/src/ctypes/libffi/man/ffi_prep_cif.3
-@@ -32,17 +32,19 @@ is an array of
- .Fa nargs
- pointers to
- .Nm ffi_type
- structs that describe the data type, size and alignment of each argument.
- .Fa rtype
- points to an
- .Nm ffi_type
- that describes the data type, size and alignment of the
--return value.
-+return value. Note that to call a variadic function
-+.Nm ffi_prep_cif_var
-+must be used instead.
- .Sh RETURN VALUES
- Upon successful completion,
- .Nm ffi_prep_cif
- returns
- .Nm FFI_OK .
- It will return
- .Nm FFI_BAD_TYPEDEF
- if
-@@ -54,13 +56,13 @@ or
- or
- .Fa rtype
- is malformed. If
- .Fa abi
- does not refer to a valid ABI,
- .Nm FFI_BAD_ABI
- will be returned. Available ABIs are
- defined in
--.Nm <ffitarget.h>
--.
-+.Nm <ffitarget.h> .
- .Sh SEE ALSO
- .Xr ffi 3 ,
--.Xr ffi_call 3 
-+.Xr ffi_call 3 ,
-+.Xr ffi_prep_cif_var 3
-diff --git a/js/src/ctypes/libffi/man/ffi_prep_cif_var.3 b/js/src/ctypes/libffi/man/ffi_prep_cif_var.3
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/man/ffi_prep_cif_var.3
-@@ -0,0 +1,73 @@
-+.Dd January 25, 2011
-+.Dt ffi_prep_cif_var 3
-+.Sh NAME
-+.Nm ffi_prep_cif_var
-+.Nd Prepare a
-+.Nm ffi_cif
-+structure for use with
-+.Nm ffi_call
-+for variadic functions.
-+.Sh SYNOPSIS
-+.In ffi.h
-+.Ft ffi_status
-+.Fo ffi_prep_cif_var
-+.Fa "ffi_cif *cif"
-+.Fa "ffi_abi abi"
-+.Fa "unsigned int nfixedargs"
-+.Fa "unsigned int ntotalargs"
-+.Fa "ffi_type *rtype"
-+.Fa "ffi_type **atypes"
-+.Fc
-+.Sh DESCRIPTION
-+The
-+.Nm ffi_prep_cif_var
-+function prepares a
-+.Nm ffi_cif
-+structure for use with
-+.Nm ffi_call
-+for variadic functions.
-+.Fa abi
-+specifies a set of calling conventions to use.
-+.Fa atypes
-+is an array of
-+.Fa ntotalargs
-+pointers to
-+.Nm ffi_type
-+structs that describe the data type, size and alignment of each argument.
-+.Fa rtype
-+points to an
-+.Nm ffi_type
-+that describes the data type, size and alignment of the
-+return value.
-+.Fa nfixedargs
-+must contain the number of fixed (non-variadic) arguments.
-+Note that to call a non-variadic function
-+.Nm ffi_prep_cif
-+must be used.
-+.Sh RETURN VALUES
-+Upon successful completion,
-+.Nm ffi_prep_cif_var
-+returns
-+.Nm FFI_OK .
-+It will return
-+.Nm FFI_BAD_TYPEDEF
-+if
-+.Fa cif
-+is
-+.Nm NULL
-+or
-+.Fa atypes
-+or
-+.Fa rtype
-+is malformed. If
-+.Fa abi
-+does not refer to a valid ABI,
-+.Nm FFI_BAD_ABI
-+will be returned. Available ABIs are
-+defined in
-+.Nm <ffitarget.h>
-+.
-+.Sh SEE ALSO
-+.Xr ffi 3 ,
-+.Xr ffi_call 3 ,
-+.Xr ffi_prep_cif 3
-diff --git a/js/src/ctypes/libffi/mdate-sh b/js/src/ctypes/libffi/mdate-sh
---- a/js/src/ctypes/libffi/mdate-sh
-+++ b/js/src/ctypes/libffi/mdate-sh
-@@ -1,106 +1,126 @@
- #!/bin/sh
- # Get modification time of a file or directory and pretty-print it.
- 
--scriptversion=2005-06-29.22
-+scriptversion=2010-08-21.06; # UTC
- 
--# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005 Free Software
--# Foundation, Inc.
-+# Copyright (C) 1995-2013 Free Software Foundation, Inc.
- # written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
- #
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2, or (at your option)
- # any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software Foundation,
--# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
- 
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
- 
- # This file is maintained in Automake, please report
- # bugs to <bug-automake@gnu.org> or send patches to
- # <automake-patches@gnu.org>.
- 
-+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-+  emulate sh
-+  NULLCMD=:
-+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-+  # is contrary to our usage.  Disable this feature.
-+  alias -g '${1+"$@"}'='"$@"'
-+  setopt NO_GLOB_SUBST
-+fi
-+
- case $1 in
-   '')
--     echo "$0: No file.  Try \`$0 --help' for more information." 1>&2
-+     echo "$0: No file.  Try '$0 --help' for more information." 1>&2
-      exit 1;
-      ;;
-   -h | --h*)
-     cat <<\EOF
- Usage: mdate-sh [--help] [--version] FILE
- 
--Pretty-print the modification time of FILE.
-+Pretty-print the modification day of FILE, in the format:
-+1 January 1970
- 
- Report bugs to <bug-automake@gnu.org>.
- EOF
-     exit $?
-     ;;
-   -v | --v*)
-     echo "mdate-sh $scriptversion"
-     exit $?
-     ;;
- esac
- 
-+error ()
-+{
-+  echo "$0: $1" >&2
-+  exit 1
-+}
-+
-+
- # Prevent date giving response in another language.
- LANG=C
- export LANG
- LC_ALL=C
- export LC_ALL
- LC_TIME=C
- export LC_TIME
- 
- # GNU ls changes its time format in response to the TIME_STYLE
--# variable.  Since we cannot assume `unset' works, revert this
-+# variable.  Since we cannot assume 'unset' works, revert this
- # variable to its documented default.
- if test "${TIME_STYLE+set}" = set; then
-   TIME_STYLE=posix-long-iso
-   export TIME_STYLE
- fi
- 
- save_arg1=$1
- 
- # Find out how to get the extended ls output of a file or directory.
- if ls -L /dev/null 1>/dev/null 2>&1; then
-   ls_command='ls -L -l -d'
- else
-   ls_command='ls -l -d'
- fi
-+# Avoid user/group names that might have spaces, when possible.
-+if ls -n /dev/null 1>/dev/null 2>&1; then
-+  ls_command="$ls_command -n"
-+fi
- 
--# A `ls -l' line looks as follows on OS/2.
-+# A 'ls -l' line looks as follows on OS/2.
- #  drwxrwx---        0 Aug 11  2001 foo
- # This differs from Unix, which adds ownership information.
- #  drwxrwx---   2 root  root      4096 Aug 11  2001 foo
- #
- # To find the date, we split the line on spaces and iterate on words
- # until we find a month.  This cannot work with files whose owner is a
--# user named `Jan', or `Feb', etc.  However, it's unlikely that `/'
-+# user named "Jan", or "Feb", etc.  However, it's unlikely that '/'
- # will be owned by a user whose name is a month.  So we first look at
- # the extended ls output of the root directory to decide how many
- # words should be skipped to get the date.
- 
- # On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
--set x`ls -l -d /`
-+set x`$ls_command /`
- 
- # Find which argument is the month.
- month=
- command=
- until test $month
- do
-+  test $# -gt 0 || error "failed parsing '$ls_command /' output"
-   shift
-   # Add another shift to the command.
-   command="$command shift;"
-   case $1 in
-     Jan) month=January; nummonth=1;;
-     Feb) month=February; nummonth=2;;
-     Mar) month=March; nummonth=3;;
-     Apr) month=April; nummonth=4;;
-@@ -110,18 +130,20 @@ do
-     Aug) month=August; nummonth=8;;
-     Sep) month=September; nummonth=9;;
-     Oct) month=October; nummonth=10;;
-     Nov) month=November; nummonth=11;;
-     Dec) month=December; nummonth=12;;
-   esac
- done
- 
-+test -n "$month" || error "failed parsing '$ls_command /' output"
-+
- # Get the extended ls output of the file or directory.
--set dummy x`eval "$ls_command \"\$save_arg1\""`
-+set dummy x`eval "$ls_command \"\\\$save_arg1\""`
- 
- # Remove all preceding arguments
- eval $command
- 
- # Because of the dummy argument above, month is in $2.
- #
- # On a POSIX system, we should have
- #
-@@ -192,10 +214,11 @@ esac
- echo $day $month $year
- 
- # Local Variables:
- # mode: shell-script
- # sh-indentation: 2
- # eval: (add-hook 'write-file-hooks 'time-stamp)
- # time-stamp-start: "scriptversion="
- # time-stamp-format: "%:y-%02m-%02d.%02H"
--# time-stamp-end: "$"
-+# time-stamp-time-zone: "UTC"
-+# time-stamp-end: "; # UTC"
- # End:
-diff --git a/js/src/ctypes/libffi/missing b/js/src/ctypes/libffi/missing
---- a/js/src/ctypes/libffi/missing
-+++ b/js/src/ctypes/libffi/missing
-@@ -1,360 +1,215 @@
- #! /bin/sh
--# Common stub for a few missing GNU programs while installing.
-+# Common wrapper for a few potentially missing GNU programs.
- 
--scriptversion=2005-06-08.21
-+scriptversion=2012-06-26.16; # UTC
- 
--# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
--#   Free Software Foundation, Inc.
--# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
-+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-+# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
- 
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2, or (at your option)
- # any later version.
- 
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- # GNU General Public License for more details.
- 
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
--# 02110-1301, USA.
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
- 
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
- 
- if test $# -eq 0; then
--  echo 1>&2 "Try \`$0 --help' for more information"
-+  echo 1>&2 "Try '$0 --help' for more information"
-   exit 1
- fi
- 
--run=:
-+case $1 in
- 
--# In the cases where this matters, `missing' is being run in the
--# srcdir already.
--if test -f configure.ac; then
--  configure_ac=configure.ac
--else
--  configure_ac=configure.in
--fi
-+  --is-lightweight)
-+    # Used by our autoconf macros to check whether the available missing
-+    # script is modern enough.
-+    exit 0
-+    ;;
- 
--msg="missing on your system"
--
--case "$1" in
----run)
--  # Try to run requested program, and just exit if it succeeds.
--  run=
--  shift
--  "$@" && exit 0
--  # Exit code 63 means version mismatch.  This often happens
--  # when the user try to use an ancient version of a tool on
--  # a file that requires a minimum version.  In this case we
--  # we should proceed has if the program had been absent, or
--  # if --run hadn't been passed.
--  if test $? = 63; then
--    run=:
--    msg="probably too old"
--  fi
--  ;;
-+  --run)
-+    # Back-compat with the calling convention used by older automake.
-+    shift
-+    ;;
- 
-   -h|--h|--he|--hel|--help)
-     echo "\
- $0 [OPTION]... PROGRAM [ARGUMENT]...
- 
--Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
--error status if there is no known handling for PROGRAM.
-+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
-+to PROGRAM being missing or too old.
- 
- Options:
-   -h, --help      display this help and exit
-   -v, --version   output version information and exit
--  --run           try to run the given command, and emulate it if it fails
- 
- Supported PROGRAM values:
--  aclocal      touch file \`aclocal.m4'
--  autoconf     touch file \`configure'
--  autoheader   touch file \`config.h.in'
--  automake     touch all \`Makefile.in' files
--  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
--  flex         create \`lex.yy.c', if possible, from existing .c
--  help2man     touch the output file
--  lex          create \`lex.yy.c', if possible, from existing .c
--  makeinfo     touch the output file
--  tar          try tar, gnutar, gtar, then tar without non-portable flags
--  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
-+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
-+  bison     yacc      flex         lex       help2man
-+
-+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
-+'g' are ignored when checking the name.
- 
- Send bug reports to <bug-automake@gnu.org>."
-     exit $?
-     ;;
- 
-   -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-     echo "missing $scriptversion (GNU Automake)"
-     exit $?
-     ;;
- 
-   -*)
--    echo 1>&2 "$0: Unknown \`$1' option"
--    echo 1>&2 "Try \`$0 --help' for more information"
-+    echo 1>&2 "$0: unknown '$1' option"
-+    echo 1>&2 "Try '$0 --help' for more information"
-     exit 1
-     ;;
- 
- esac
- 
--# Now exit if we have it, but it failed.  Also exit now if we
--# don't have it and --version was passed (most likely to detect
--# the program).
--case "$1" in
--  lex|yacc)
--    # Not GNU programs, they don't have --version.
-+# Run the given program, remember its exit status.
-+"$@"; st=$?
-+
-+# If it succeeded, we are done.
-+test $st -eq 0 && exit 0
-+
-+# Also exit now if we it failed (or wasn't found), and '--version' was
-+# passed; such an option is passed most likely to detect whether the
-+# program is present and works.
-+case $2 in --version|--help) exit $st;; esac
-+
-+# Exit code 63 means version mismatch.  This often happens when the user
-+# tries to use an ancient version of a tool on a file that requires a
-+# minimum version.
-+if test $st -eq 63; then
-+  msg="probably too old"
-+elif test $st -eq 127; then
-+  # Program was missing.
-+  msg="missing on your system"
-+else
-+  # Program was found and executed, but failed.  Give up.
-+  exit $st
-+fi
-+
-+perl_URL=http://www.perl.org/
-+flex_URL=http://flex.sourceforge.net/
-+gnu_software_URL=http://www.gnu.org/software
-+
-+program_details ()
-+{
-+  case $1 in
-+    aclocal|automake)
-+      echo "The '$1' program is part of the GNU Automake package:"
-+      echo "<$gnu_software_URL/automake>"
-+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
-+      echo "<$gnu_software_URL/autoconf>"
-+      echo "<$gnu_software_URL/m4/>"
-+      echo "<$perl_URL>"
-+      ;;
-+    autoconf|autom4te|autoheader)
-+      echo "The '$1' program is part of the GNU Autoconf package:"
-+      echo "<$gnu_software_URL/autoconf/>"
-+      echo "It also requires GNU m4 and Perl in order to run:"
-+      echo "<$gnu_software_URL/m4/>"
-+      echo "<$perl_URL>"
-+      ;;
-+  esac
-+}
-+
-+give_advice ()
-+{
-+  # Normalize program name to check for.
-+  normalized_program=`echo "$1" | sed '
-+    s/^gnu-//; t
-+    s/^gnu//; t
-+    s/^g//; t'`
-+
-+  printf '%s\n' "'$1' is $msg."
-+
-+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
-+  case $normalized_program in
-+    autoconf*)
-+      echo "You should only need it if you modified 'configure.ac',"
-+      echo "or m4 files included by it."
-+      program_details 'autoconf'
-+      ;;
-+    autoheader*)
-+      echo "You should only need it if you modified 'acconfig.h' or"
-+      echo "$configure_deps."
-+      program_details 'autoheader'
-+      ;;
-+    automake*)
-+      echo "You should only need it if you modified 'Makefile.am' or"
-+      echo "$configure_deps."
-+      program_details 'automake'
-+      ;;
-+    aclocal*)
-+      echo "You should only need it if you modified 'acinclude.m4' or"
-+      echo "$configure_deps."
-+      program_details 'aclocal'
-+      ;;
-+   autom4te*)
-+      echo "You might have modified some maintainer files that require"
-+      echo "the 'automa4te' program to be rebuilt."
-+      program_details 'autom4te'
-+      ;;
-+    bison*|yacc*)
-+      echo "You should only need it if you modified a '.y' file."
-+      echo "You may want to install the GNU Bison package:"
-+      echo "<$gnu_software_URL/bison/>"
-+      ;;
-+    lex*|flex*)
-+      echo "You should only need it if you modified a '.l' file."
-+      echo "You may want to install the Fast Lexical Analyzer package:"
-+      echo "<$flex_URL>"
-+      ;;
-+    help2man*)
-+      echo "You should only need it if you modified a dependency" \
-+           "of a man page."
-+      echo "You may want to install the GNU Help2man package:"
-+      echo "<$gnu_software_URL/help2man/>"
-     ;;
-+    makeinfo*)
-+      echo "You should only need it if you modified a '.texi' file, or"
-+      echo "any other file indirectly affecting the aspect of the manual."
-+      echo "You might want to install the Texinfo package:"
-+      echo "<$gnu_software_URL/texinfo/>"
-+      echo "The spurious makeinfo call might also be the consequence of"
-+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
-+      echo "want to install GNU make:"
-+      echo "<$gnu_software_URL/make/>"
-+      ;;
-+    *)
-+      echo "You might have modified some files without having the proper"
-+      echo "tools for further handling them.  Check the 'README' file, it"
-+      echo "often tells you about the needed prerequisites for installing"
-+      echo "this package.  You may also peek at any GNU archive site, in"
-+      echo "case some other package contains this missing '$1' program."
-+      ;;
-+  esac
-+}
- 
--  tar)
--    if test -n "$run"; then
--       echo 1>&2 "ERROR: \`tar' requires --run"
--       exit 1
--    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
--       exit 1
--    fi
--    ;;
-+give_advice "$1" | sed -e '1s/^/WARNING: /' \
-+                       -e '2,$s/^/         /' >&2
- 
--  *)
--    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
--       # We have it, but it failed.
--       exit 1
--    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
--       # Could not run --version or --help.  This is probably someone
--       # running `$TOOL --version' or `$TOOL --help' to check whether
--       # $TOOL exists and not knowing $TOOL uses missing.
--       exit 1
--    fi
--    ;;
--esac
--
--# If it does not exist, or fails to run (possibly an outdated version),
--# try to emulate it.
--case "$1" in
--  aclocal*)
--    echo 1>&2 "\
--WARNING: \`$1' is $msg.  You should only need it if
--         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
--         to install the \`Automake' and \`Perl' packages.  Grab them from
--         any GNU archive site."
--    touch aclocal.m4
--    ;;
--
--  autoconf)
--    echo 1>&2 "\
--WARNING: \`$1' is $msg.  You should only need it if
--         you modified \`${configure_ac}'.  You might want to install the
--         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
--         archive site."
--    touch configure
--    ;;
--
--  autoheader)
--    echo 1>&2 "\
--WARNING: \`$1' is $msg.  You should only need it if
--         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
--         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
--         from any GNU archive site."
--    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
--    test -z "$files" && files="config.h"
--    touch_files=
--    for f in $files; do
--      case "$f" in
--      *:*) touch_files="$touch_files "`echo "$f" |
--				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
--      *) touch_files="$touch_files $f.in";;
--      esac
--    done
--    touch $touch_files
--    ;;
--
--  automake*)
--    echo 1>&2 "\
--WARNING: \`$1' is $msg.  You should only need it if
--         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
--         You might want to install the \`Automake' and \`Perl' packages.
--         Grab them from any GNU archive site."
--    find . -type f -name Makefile.am -print |
--	   sed 's/\.am$/.in/' |
--	   while read f; do touch "$f"; done
--    ;;
--
--  autom4te)
--    echo 1>&2 "\
--WARNING: \`$1' is needed, but is $msg.
--         You might have modified some files without having the
--         proper tools for further handling them.
--         You can get \`$1' as part of \`Autoconf' from any GNU
--         archive site."
--
--    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
--    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
--    if test -f "$file"; then
--	touch $file
--    else
--	test -z "$file" || exec >$file
--	echo "#! /bin/sh"
--	echo "# Created by GNU Automake missing as a replacement of"
--	echo "#  $ $@"
--	echo "exit 0"
--	chmod +x $file
--	exit 1
--    fi
--    ;;
--
--  bison|yacc)
--    echo 1>&2 "\
--WARNING: \`$1' $msg.  You should only need it if
--         you modified a \`.y' file.  You may need the \`Bison' package
--         in order for those modifications to take effect.  You can get
--         \`Bison' from any GNU archive site."
--    rm -f y.tab.c y.tab.h
--    if [ $# -ne 1 ]; then
--        eval LASTARG="\${$#}"
--	case "$LASTARG" in
--	*.y)
--	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
--	    if [ -f "$SRCFILE" ]; then
--	         cp "$SRCFILE" y.tab.c
--	    fi
--	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
--	    if [ -f "$SRCFILE" ]; then
--	         cp "$SRCFILE" y.tab.h
--	    fi
--	  ;;
--	esac
--    fi
--    if [ ! -f y.tab.h ]; then
--	echo >y.tab.h
--    fi
--    if [ ! -f y.tab.c ]; then
--	echo 'main() { return 0; }' >y.tab.c
--    fi
--    ;;
--
--  lex|flex)
--    echo 1>&2 "\
--WARNING: \`$1' is $msg.  You should only need it if
--         you modified a \`.l' file.  You may need the \`Flex' package
--         in order for those modifications to take effect.  You can get
--         \`Flex' from any GNU archive site."
--    rm -f lex.yy.c
--    if [ $# -ne 1 ]; then
--        eval LASTARG="\${$#}"
--	case "$LASTARG" in
--	*.l)
--	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
--	    if [ -f "$SRCFILE" ]; then
--	         cp "$SRCFILE" lex.yy.c
--	    fi
--	  ;;
--	esac
--    fi
--    if [ ! -f lex.yy.c ]; then
--	echo 'main() { return 0; }' >lex.yy.c
--    fi
--    ;;
--
--  help2man)
--    echo 1>&2 "\
--WARNING: \`$1' is $msg.  You should only need it if
--	 you modified a dependency of a manual page.  You may need the
--	 \`Help2man' package in order for those modifications to take
--	 effect.  You can get \`Help2man' from any GNU archive site."
--
--    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
--    if test -z "$file"; then
--	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
--    fi
--    if [ -f "$file" ]; then
--	touch $file
--    else
--	test -z "$file" || exec >$file
--	echo ".ab help2man is required to generate this page"
--	exit 1
--    fi
--    ;;
--
--  makeinfo)
--    echo 1>&2 "\
--WARNING: \`$1' is $msg.  You should only need it if
--         you modified a \`.texi' or \`.texinfo' file, or any other file
--         indirectly affecting the aspect of the manual.  The spurious
--         call might also be the consequence of using a buggy \`make' (AIX,
--         DU, IRIX).  You might want to install the \`Texinfo' package or
--         the \`GNU make' package.  Grab either from any GNU archive site."
--    # The file to touch is that specified with -o ...
--    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
--    if test -z "$file"; then
--      # ... or it is the one specified with @setfilename ...
--      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
--      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
--      # ... or it is derived from the source name (dir/f.texi becomes f.info)
--      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
--    fi
--    # If the file does not exist, the user really needs makeinfo;
--    # let's fail without touching anything.
--    test -f $file || exit 1
--    touch $file
--    ;;
--
--  tar)
--    shift
--
--    # We have already tried tar in the generic part.
--    # Look for gnutar/gtar before invocation to avoid ugly error
--    # messages.
--    if (gnutar --version > /dev/null 2>&1); then
--       gnutar "$@" && exit 0
--    fi
--    if (gtar --version > /dev/null 2>&1); then
--       gtar "$@" && exit 0
--    fi
--    firstarg="$1"
--    if shift; then
--	case "$firstarg" in
--	*o*)
--	    firstarg=`echo "$firstarg" | sed s/o//`
--	    tar "$firstarg" "$@" && exit 0
--	    ;;
--	esac
--	case "$firstarg" in
--	*h*)
--	    firstarg=`echo "$firstarg" | sed s/h//`
--	    tar "$firstarg" "$@" && exit 0
--	    ;;
--	esac
--    fi
--
--    echo 1>&2 "\
--WARNING: I can't seem to be able to run \`tar' with the given arguments.
--         You may want to install GNU tar or Free paxutils, or check the
--         command line arguments."
--    exit 1
--    ;;
--
--  *)
--    echo 1>&2 "\
--WARNING: \`$1' is needed, and is $msg.
--         You might have modified some files without having the
--         proper tools for further handling them.  Check the \`README' file,
--         it often tells you about the needed prerequisites for installing
--         this package.  You may also peek at any GNU archive site, in case
--         some other package would contain this missing \`$1' program."
--    exit 1
--    ;;
--esac
--
--exit 0
-+# Propagate the correct exit status (expected to be 127 for a program
-+# not found, 63 for a program that failed due to version mismatch).
-+exit $st
- 
- # Local variables:
- # eval: (add-hook 'write-file-hooks 'time-stamp)
- # time-stamp-start: "scriptversion="
- # time-stamp-format: "%:y-%02m-%02d.%02H"
--# time-stamp-end: "$"
-+# time-stamp-time-zone: "UTC"
-+# time-stamp-end: "; # UTC"
- # End:
-diff --git a/js/src/ctypes/libffi/msvcc.sh b/js/src/ctypes/libffi/msvcc.sh
---- a/js/src/ctypes/libffi/msvcc.sh
-+++ b/js/src/ctypes/libffi/msvcc.sh
-@@ -1,19 +1,53 @@
- #!/bin/sh
- 
--# This Source Code Form is subject to the terms of the Mozilla Public
--# License, v. 2.0. If a copy of the MPL was not distributed with this
--# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-+# ***** BEGIN LICENSE BLOCK *****
-+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
-+#
-+# The contents of this file are subject to the Mozilla Public License Version
-+# 1.1 (the "License"); you may not use this file except in compliance with
-+# the License. You may obtain a copy of the License at
-+# http://www.mozilla.org/MPL/
-+#
-+# Software distributed under the License is distributed on an "AS IS" basis,
-+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-+# for the specific language governing rights and limitations under the
-+# License.
-+#
-+# The Original Code is the MSVC wrappificator.
-+#
-+# The Initial Developer of the Original Code is
-+# Timothy Wall <twalljava@dev.java.net>.
-+# Portions created by the Initial Developer are Copyright (C) 2009
-+# the Initial Developer. All Rights Reserved.
-+#
-+# Contributor(s):
-+#   Daniel Witte <dwitte@mozilla.com>
-+#
-+# Alternatively, the contents of this file may be used under the terms of
-+# either the GNU General Public License Version 2 or later (the "GPL"), or
-+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-+# in which case the provisions of the GPL or the LGPL are applicable instead
-+# of those above. If you wish to allow use of your version of this file only
-+# under the terms of either the GPL or the LGPL, and not to allow others to
-+# use your version of this file under the terms of the MPL, indicate your
-+# decision by deleting the provisions above and replace them with the notice
-+# and other provisions required by the GPL or the LGPL. If you do not delete
-+# the provisions above, a recipient may use your version of this file under
-+# the terms of any one of the MPL, the GPL or the LGPL.
-+#
-+# ***** END LICENSE BLOCK *****
- 
- #
- # GCC-compatible wrapper for cl.exe and ml.exe. Arguments are given in GCC
- # format and translated into something sensible for cl or ml.
- #
- 
-+args_orig=$@
- args="-nologo -W3"
- md=-MD
- cl="cl"
- ml="ml"
- safeseh="-safeseh"
- output=
- 
- while [ $# -gt 0 ]
-@@ -34,24 +68,45 @@ do
-       safeseh=
-       shift 1
-     ;;
-     -O0)
-       args="$args -Od"
-       shift 1
-     ;;
-     -O*)
--      # If we're optimizing, make sure we explicitly turn on some optimizations
--      # that are implicitly disabled by debug symbols (-Zi).
--      args="$args $1 -OPT:REF -OPT:ICF -INCREMENTAL:NO"
-+      # Runtime error checks (enabled by setting -RTC1 in the -DFFI_DEBUG
-+      # case below) are not compatible with optimization flags and will
-+      # cause the build to fail. Therefore, drop the optimization flag if
-+      # -DFFI_DEBUG is also set.
-+      case $args_orig in
-+        *-DFFI_DEBUG*)
-+          args="$args"
-+        ;;
-+        *)
-+          # The ax_cc_maxopt.m4 macro from the upstream autoconf-archive
-+          # project doesn't support MSVC and therefore ends up trying to
-+          # use -O3. Use the equivalent "max optimization" flag for MSVC
-+          # instead of erroring out.
-+          case $1 in
-+            -O3)
-+              args="$args -O2"
-+            ;;
-+            *)
-+              args="$args $1"
-+            ;;
-+          esac
-+          opt="true"
-+        ;;
-+      esac
-       shift 1
-     ;;
-     -g)
-       # Enable debug symbol generation.
--      args="$args -Zi -DEBUG"
-+      args="$args -Zi"
-       shift 1
-     ;;
-     -DFFI_DEBUG)
-       # Link against debug CRT and enable runtime error checks.
-       args="$args -RTC1"
-       defines="$defines $1"
-       md=-MDd
-       shift 1
-@@ -88,16 +143,20 @@ do
-       # TODO map extra warnings
-       shift 1
-     ;;
-     -Wall)
-       # -Wall on MSVC is overzealous, and we already build with -W3. Nothing
-       # to do here.
-       shift 1
-     ;;
-+    -pedantic)
-+      # libffi tests -pedantic with -Wall, so drop it also.
-+      shift 1
-+    ;;
-     -Werror)
-       args="$args -WX"
-       shift 1
-     ;;
-     -W*)
-       # TODO map specific warnings
-       shift 1
-     ;;
-@@ -132,16 +191,23 @@ do
-     *)
-       # Assume it's an MSVC argument, and pass it through.
-       args="$args $1"
-       shift 1
-     ;;
-   esac
- done
- 
-+# If -Zi is specified, certain optimizations are implicitly disabled
-+# by MSVC. Add back those optimizations if this is an optimized build.
-+# NOTE: These arguments must come after all others.
-+if [ -n "$opt" ]; then
-+    args="$args -link -OPT:REF -OPT:ICF -INCREMENTAL:NO"
-+fi
-+
- if [ -n "$assembly" ]; then
-     if [ -z "$outdir" ]; then
-       outdir="."
-     fi
-     ppsrc="$outdir/$(basename $src|sed 's/.S$/.asm/g')"
-     echo "$cl -nologo -EP $includes $defines $src > $ppsrc"
-     "$cl" -nologo -EP $includes $defines $src > $ppsrc || exit $?
-     output="$(echo $output | sed 's%/F[dpa][^ ]*%%g')"
-@@ -151,14 +217,17 @@ if [ -n "$assembly" ]; then
-     eval "\"$ml\" $args"
-     result=$?
- 
-     # required to fix ml64 broken output?
-     #mv *.obj $outdir
- else
-     args="$md $args"
-     echo "$cl $args"
--    eval "\"$cl\" $args"
-+    # Return an error code of 1 if an invalid command line parameter is passed
-+    # instead of just ignoring it.
-+    eval "(\"$cl\" $args 2>&1 1>&3 | \
-+          awk '{print \$0} /D9002/ {error=1} END{exit error}' >&2) 3>&1"
-     result=$?
- fi
- 
- exit $result
- 
-diff --git a/js/src/ctypes/libffi/src/aarch64/ffi.c b/js/src/ctypes/libffi/src/aarch64/ffi.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/aarch64/ffi.c
-@@ -0,0 +1,1133 @@
-+/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+``Software''), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#include <stdio.h>
-+
-+#include <ffi.h>
-+#include <ffi_common.h>
-+
-+#include <stdlib.h>
-+
-+/* Stack alignment requirement in bytes */
-+#if defined (__APPLE__)
-+#define AARCH64_STACK_ALIGN 1
-+#else
-+#define AARCH64_STACK_ALIGN 16
-+#endif
-+
-+#define N_X_ARG_REG 8
-+#define N_V_ARG_REG 8
-+
-+#define AARCH64_FFI_WITH_V (1 << AARCH64_FFI_WITH_V_BIT)
-+
-+union _d
-+{
-+  UINT64 d;
-+  UINT32 s[2];
-+};
-+
-+struct call_context
-+{
-+  UINT64 x [AARCH64_N_XREG];
-+  struct
-+  {
-+    union _d d[2];
-+  } v [AARCH64_N_VREG];
-+};
-+
-+#if defined (__clang__) && defined (__APPLE__)
-+extern void
-+sys_icache_invalidate (void *start, size_t len);
-+#endif
-+
-+static inline void
-+ffi_clear_cache (void *start, void *end)
-+{
-+#if defined (__clang__) && defined (__APPLE__)
-+	sys_icache_invalidate (start, (char *)end - (char *)start);
-+#elif defined (__GNUC__)
-+	__builtin___clear_cache (start, end);
-+#else
-+#error "Missing builtin to flush instruction cache"
-+#endif
-+}
-+
-+static void *
-+get_x_addr (struct call_context *context, unsigned n)
-+{
-+  return &context->x[n];
-+}
-+
-+static void *
-+get_s_addr (struct call_context *context, unsigned n)
-+{
-+#if defined __AARCH64EB__
-+  return &context->v[n].d[1].s[1];
-+#else
-+  return &context->v[n].d[0].s[0];
-+#endif
-+}
-+
-+static void *
-+get_d_addr (struct call_context *context, unsigned n)
-+{
-+#if defined __AARCH64EB__
-+  return &context->v[n].d[1];
-+#else
-+  return &context->v[n].d[0];
-+#endif
-+}
-+
-+static void *
-+get_v_addr (struct call_context *context, unsigned n)
-+{
-+  return &context->v[n];
-+}
-+
-+/* Return the memory location at which a basic type would reside
-+   were it to have been stored in register n.  */
-+
-+static void *
-+get_basic_type_addr (unsigned short type, struct call_context *context,
-+		     unsigned n)
-+{
-+  switch (type)
-+    {
-+    case FFI_TYPE_FLOAT:
-+      return get_s_addr (context, n);
-+    case FFI_TYPE_DOUBLE:
-+      return get_d_addr (context, n);
-+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
-+    case FFI_TYPE_LONGDOUBLE:
-+      return get_v_addr (context, n);
-+#endif
-+    case FFI_TYPE_UINT8:
-+    case FFI_TYPE_SINT8:
-+    case FFI_TYPE_UINT16:
-+    case FFI_TYPE_SINT16:
-+    case FFI_TYPE_UINT32:
-+    case FFI_TYPE_SINT32:
-+    case FFI_TYPE_INT:
-+    case FFI_TYPE_POINTER:
-+    case FFI_TYPE_UINT64:
-+    case FFI_TYPE_SINT64:
-+      return get_x_addr (context, n);
-+    case FFI_TYPE_VOID:
-+      return NULL;
-+    default:
-+      FFI_ASSERT (0);
-+      return NULL;
-+    }
-+}
-+
-+/* Return the alignment width for each of the basic types.  */
-+
-+static size_t
-+get_basic_type_alignment (unsigned short type)
-+{
-+  switch (type)
-+    {
-+    case FFI_TYPE_FLOAT:
-+    case FFI_TYPE_DOUBLE:
-+      return sizeof (UINT64);
-+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
-+    case FFI_TYPE_LONGDOUBLE:
-+      return sizeof (long double);
-+#endif
-+    case FFI_TYPE_UINT8:
-+    case FFI_TYPE_SINT8:
-+#if defined (__APPLE__)
-+	  return sizeof (UINT8);
-+#endif
-+    case FFI_TYPE_UINT16:
-+    case FFI_TYPE_SINT16:
-+#if defined (__APPLE__)
-+	  return sizeof (UINT16);
-+#endif
-+    case FFI_TYPE_UINT32:
-+    case FFI_TYPE_INT:
-+    case FFI_TYPE_SINT32:
-+#if defined (__APPLE__)
-+	  return sizeof (UINT32);
-+#endif
-+    case FFI_TYPE_POINTER:
-+    case FFI_TYPE_UINT64:
-+    case FFI_TYPE_SINT64:
-+      return sizeof (UINT64);
-+
-+    default:
-+      FFI_ASSERT (0);
-+      return 0;
-+    }
-+}
-+
-+/* Return the size in bytes for each of the basic types.  */
-+
-+static size_t
-+get_basic_type_size (unsigned short type)
-+{
-+  switch (type)
-+    {
-+    case FFI_TYPE_FLOAT:
-+      return sizeof (UINT32);
-+    case FFI_TYPE_DOUBLE:
-+      return sizeof (UINT64);
-+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
-+    case FFI_TYPE_LONGDOUBLE:
-+      return sizeof (long double);
-+#endif
-+    case FFI_TYPE_UINT8:
-+      return sizeof (UINT8);
-+    case FFI_TYPE_SINT8:
-+      return sizeof (SINT8);
-+    case FFI_TYPE_UINT16:
-+      return sizeof (UINT16);
-+    case FFI_TYPE_SINT16:
-+      return sizeof (SINT16);
-+    case FFI_TYPE_UINT32:
-+      return sizeof (UINT32);
-+    case FFI_TYPE_INT:
-+    case FFI_TYPE_SINT32:
-+      return sizeof (SINT32);
-+    case FFI_TYPE_POINTER:
-+    case FFI_TYPE_UINT64:
-+      return sizeof (UINT64);
-+    case FFI_TYPE_SINT64:
-+      return sizeof (SINT64);
-+
-+    default:
-+      FFI_ASSERT (0);
-+      return 0;
-+    }
-+}
-+
-+extern void
-+ffi_call_SYSV (unsigned (*)(struct call_context *context, unsigned char *,
-+			    extended_cif *),
-+               struct call_context *context,
-+               extended_cif *,
-+               size_t,
-+               void (*fn)(void));
-+
-+extern void
-+ffi_closure_SYSV (ffi_closure *);
-+
-+/* Test for an FFI floating point representation.  */
-+
-+static unsigned
-+is_floating_type (unsigned short type)
-+{
-+  return (type == FFI_TYPE_FLOAT || type == FFI_TYPE_DOUBLE
-+	  || type == FFI_TYPE_LONGDOUBLE);
-+}
-+
-+/* Test for a homogeneous structure.  */
-+
-+static unsigned short
-+get_homogeneous_type (ffi_type *ty)
-+{
-+  if (ty->type == FFI_TYPE_STRUCT && ty->elements)
-+    {
-+      unsigned i;
-+      unsigned short candidate_type
-+	= get_homogeneous_type (ty->elements[0]);
-+      for (i =1; ty->elements[i]; i++)
-+	{
-+	  unsigned short iteration_type = 0;
-+	  /* If we have a nested struct, we must find its homogeneous type.
-+	     If that fits with our candidate type, we are still
-+	     homogeneous.  */
-+	  if (ty->elements[i]->type == FFI_TYPE_STRUCT
-+	      && ty->elements[i]->elements)
-+	    {
-+	      iteration_type = get_homogeneous_type (ty->elements[i]);
-+	    }
-+	  else
-+	    {
-+	      iteration_type = ty->elements[i]->type;
-+	    }
-+
-+	  /* If we are not homogeneous, return FFI_TYPE_STRUCT.  */
-+	  if (candidate_type != iteration_type)
-+	    return FFI_TYPE_STRUCT;
-+	}
-+      return candidate_type;
-+    }
-+
-+  /* Base case, we have no more levels of nesting, so we
-+     are a basic type, and so, trivially homogeneous in that type.  */
-+  return ty->type;
-+}
-+
-+/* Determine the number of elements within a STRUCT.
-+
-+   Note, we must handle nested structs.
-+
-+   If ty is not a STRUCT this function will return 0.  */
-+
-+static unsigned
-+element_count (ffi_type *ty)
-+{
-+  if (ty->type == FFI_TYPE_STRUCT && ty->elements)
-+    {
-+      unsigned n;
-+      unsigned elems = 0;
-+      for (n = 0; ty->elements[n]; n++)
-+	{
-+	  if (ty->elements[n]->type == FFI_TYPE_STRUCT
-+	      && ty->elements[n]->elements)
-+	    elems += element_count (ty->elements[n]);
-+	  else
-+	    elems++;
-+	}
-+      return elems;
-+    }
-+  return 0;
-+}
-+
-+/* Test for a homogeneous floating point aggregate.
-+
-+   A homogeneous floating point aggregate is a homogeneous aggregate of
-+   a half- single- or double- precision floating point type with one
-+   to four elements.  Note that this includes nested structs of the
-+   basic type.  */
-+
-+static int
-+is_hfa (ffi_type *ty)
-+{
-+  if (ty->type == FFI_TYPE_STRUCT
-+      && ty->elements[0]
-+      && is_floating_type (get_homogeneous_type (ty)))
-+    {
-+      unsigned n = element_count (ty);
-+      return n >= 1 && n <= 4;
-+    }
-+  return 0;
-+}
-+
-+/* Test if an ffi_type is a candidate for passing in a register.
-+
-+   This test does not check that sufficient registers of the
-+   appropriate class are actually available, merely that IFF
-+   sufficient registers are available then the argument will be passed
-+   in register(s).
-+
-+   Note that an ffi_type that is deemed to be a register candidate
-+   will always be returned in registers.
-+
-+   Returns 1 if a register candidate else 0.  */
-+
-+static int
-+is_register_candidate (ffi_type *ty)
-+{
-+  switch (ty->type)
-+    {
-+    case FFI_TYPE_VOID:
-+    case FFI_TYPE_FLOAT:
-+    case FFI_TYPE_DOUBLE:
-+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
-+    case FFI_TYPE_LONGDOUBLE:
-+#endif
-+    case FFI_TYPE_UINT8:
-+    case FFI_TYPE_UINT16:
-+    case FFI_TYPE_UINT32:
-+    case FFI_TYPE_UINT64:
-+    case FFI_TYPE_POINTER:
-+    case FFI_TYPE_SINT8:
-+    case FFI_TYPE_SINT16:
-+    case FFI_TYPE_SINT32:
-+    case FFI_TYPE_INT:
-+    case FFI_TYPE_SINT64:
-+      return 1;
-+
-+    case FFI_TYPE_STRUCT:
-+      if (is_hfa (ty))
-+        {
-+          return 1;
-+        }
-+      else if (ty->size > 16)
-+        {
-+          /* Too large. Will be replaced with a pointer to memory. The
-+             pointer MAY be passed in a register, but the value will
-+             not. This test specifically fails since the argument will
-+             never be passed by value in registers. */
-+          return 0;
-+        }
-+      else
-+        {
-+          /* Might be passed in registers depending on the number of
-+             registers required. */
-+          return (ty->size + 7) / 8 < N_X_ARG_REG;
-+        }
-+      break;
-+
-+    default:
-+      FFI_ASSERT (0);
-+      break;
-+    }
-+
-+  return 0;
-+}
-+
-+/* Test if an ffi_type argument or result is a candidate for a vector
-+   register.  */
-+
-+static int
-+is_v_register_candidate (ffi_type *ty)
-+{
-+  return is_floating_type (ty->type)
-+	   || (ty->type == FFI_TYPE_STRUCT && is_hfa (ty));
-+}
-+
-+/* Representation of the procedure call argument marshalling
-+   state.
-+
-+   The terse state variable names match the names used in the AARCH64
-+   PCS. */
-+
-+struct arg_state
-+{
-+  unsigned ngrn;                /* Next general-purpose register number. */
-+  unsigned nsrn;                /* Next vector register number. */
-+  size_t nsaa;                  /* Next stack offset. */
-+};
-+
-+/* Initialize a procedure call argument marshalling state.  */
-+static void
-+arg_init (struct arg_state *state, size_t call_frame_size)
-+{
-+  state->ngrn = 0;
-+  state->nsrn = 0;
-+  state->nsaa = 0;
-+}
-+
-+/* Return the number of available consecutive core argument
-+   registers.  */
-+
-+static unsigned
-+available_x (struct arg_state *state)
-+{
-+  return N_X_ARG_REG - state->ngrn;
-+}
-+
-+/* Return the number of available consecutive vector argument
-+   registers.  */
-+
-+static unsigned
-+available_v (struct arg_state *state)
-+{
-+  return N_V_ARG_REG - state->nsrn;
-+}
-+
-+static void *
-+allocate_to_x (struct call_context *context, struct arg_state *state)
-+{
-+  FFI_ASSERT (state->ngrn < N_X_ARG_REG);
-+  return get_x_addr (context, (state->ngrn)++);
-+}
-+
-+static void *
-+allocate_to_s (struct call_context *context, struct arg_state *state)
-+{
-+  FFI_ASSERT (state->nsrn < N_V_ARG_REG);
-+  return get_s_addr (context, (state->nsrn)++);
-+}
-+
-+static void *
-+allocate_to_d (struct call_context *context, struct arg_state *state)
-+{
-+  FFI_ASSERT (state->nsrn < N_V_ARG_REG);
-+  return get_d_addr (context, (state->nsrn)++);
-+}
-+
-+static void *
-+allocate_to_v (struct call_context *context, struct arg_state *state)
-+{
-+  FFI_ASSERT (state->nsrn < N_V_ARG_REG);
-+  return get_v_addr (context, (state->nsrn)++);
-+}
-+
-+/* Allocate an aligned slot on the stack and return a pointer to it.  */
-+static void *
-+allocate_to_stack (struct arg_state *state, void *stack, size_t alignment,
-+		   size_t size)
-+{
-+  void *allocation;
-+
-+  /* Round up the NSAA to the larger of 8 or the natural
-+     alignment of the argument's type.  */
-+  state->nsaa = ALIGN (state->nsaa, alignment);
-+  state->nsaa = ALIGN (state->nsaa, alignment);
-+#if !defined (__APPLE__)
-+  state->nsaa = ALIGN (state->nsaa, 8);
-+#endif
-+
-+  allocation = stack + state->nsaa;
-+
-+  state->nsaa += size;
-+  return allocation;
-+}
-+
-+static void
-+copy_basic_type (void *dest, void *source, unsigned short type)
-+{
-+  /* This is necessary to ensure that basic types are copied
-+     sign extended to 64-bits as libffi expects.  */
-+  switch (type)
-+    {
-+    case FFI_TYPE_FLOAT:
-+      *(float *) dest = *(float *) source;
-+      break;
-+    case FFI_TYPE_DOUBLE:
-+      *(double *) dest = *(double *) source;
-+      break;
-+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
-+    case FFI_TYPE_LONGDOUBLE:
-+      *(long double *) dest = *(long double *) source;
-+      break;
-+#endif
-+    case FFI_TYPE_UINT8:
-+      *(ffi_arg *) dest = *(UINT8 *) source;
-+      break;
-+    case FFI_TYPE_SINT8:
-+      *(ffi_sarg *) dest = *(SINT8 *) source;
-+      break;
-+    case FFI_TYPE_UINT16:
-+      *(ffi_arg *) dest = *(UINT16 *) source;
-+      break;
-+    case FFI_TYPE_SINT16:
-+      *(ffi_sarg *) dest = *(SINT16 *) source;
-+      break;
-+    case FFI_TYPE_UINT32:
-+      *(ffi_arg *) dest = *(UINT32 *) source;
-+      break;
-+    case FFI_TYPE_INT:
-+    case FFI_TYPE_SINT32:
-+      *(ffi_sarg *) dest = *(SINT32 *) source;
-+      break;
-+    case FFI_TYPE_POINTER:
-+    case FFI_TYPE_UINT64:
-+      *(ffi_arg *) dest = *(UINT64 *) source;
-+      break;
-+    case FFI_TYPE_SINT64:
-+      *(ffi_sarg *) dest = *(SINT64 *) source;
-+      break;
-+    case FFI_TYPE_VOID:
-+      break;
-+
-+    default:
-+      FFI_ASSERT (0);
-+    }
-+}
-+
-+static void
-+copy_hfa_to_reg_or_stack (void *memory,
-+			  ffi_type *ty,
-+			  struct call_context *context,
-+			  unsigned char *stack,
-+			  struct arg_state *state)
-+{
-+  unsigned elems = element_count (ty);
-+  if (available_v (state) < elems)
-+    {
-+      /* There are insufficient V registers. Further V register allocations
-+	 are prevented, the NSAA is adjusted (by allocate_to_stack ())
-+	 and the argument is copied to memory at the adjusted NSAA.  */
-+      state->nsrn = N_V_ARG_REG;
-+      memcpy (allocate_to_stack (state, stack, ty->alignment, ty->size),
-+	      memory,
-+	      ty->size);
-+    }
-+  else
-+    {
-+      int i;
-+      unsigned short type = get_homogeneous_type (ty);
-+      for (i = 0; i < elems; i++)
-+	{
-+	  void *reg = allocate_to_v (context, state);
-+	  copy_basic_type (reg, memory, type);
-+	  memory += get_basic_type_size (type);
-+	}
-+    }
-+}
-+
-+/* Either allocate an appropriate register for the argument type, or if
-+   none are available, allocate a stack slot and return a pointer
-+   to the allocated space.  */
-+
-+static void *
-+allocate_to_register_or_stack (struct call_context *context,
-+			       unsigned char *stack,
-+			       struct arg_state *state,
-+			       unsigned short type)
-+{
-+  size_t alignment = get_basic_type_alignment (type);
-+  size_t size = alignment;
-+  switch (type)
-+    {
-+    case FFI_TYPE_FLOAT:
-+      /* This is the only case for which the allocated stack size
-+	 should not match the alignment of the type.  */
-+      size = sizeof (UINT32);
-+      /* Fall through.  */
-+    case FFI_TYPE_DOUBLE:
-+      if (state->nsrn < N_V_ARG_REG)
-+	return allocate_to_d (context, state);
-+      state->nsrn = N_V_ARG_REG;
-+      break;
-+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
-+    case FFI_TYPE_LONGDOUBLE:
-+      if (state->nsrn < N_V_ARG_REG)
-+	return allocate_to_v (context, state);
-+      state->nsrn = N_V_ARG_REG;
-+      break;
-+#endif
-+    case FFI_TYPE_UINT8:
-+    case FFI_TYPE_SINT8:
-+    case FFI_TYPE_UINT16:
-+    case FFI_TYPE_SINT16:
-+    case FFI_TYPE_UINT32:
-+    case FFI_TYPE_SINT32:
-+    case FFI_TYPE_INT:
-+    case FFI_TYPE_POINTER:
-+    case FFI_TYPE_UINT64:
-+    case FFI_TYPE_SINT64:
-+      if (state->ngrn < N_X_ARG_REG)
-+	return allocate_to_x (context, state);
-+      state->ngrn = N_X_ARG_REG;
-+      break;
-+    default:
-+      FFI_ASSERT (0);
-+    }
-+
-+    return allocate_to_stack (state, stack, alignment, size);
-+}
-+
-+/* Copy a value to an appropriate register, or if none are
-+   available, to the stack.  */
-+
-+static void
-+copy_to_register_or_stack (struct call_context *context,
-+			   unsigned char *stack,
-+			   struct arg_state *state,
-+			   void *value,
-+			   unsigned short type)
-+{
-+  copy_basic_type (
-+	  allocate_to_register_or_stack (context, stack, state, type),
-+	  value,
-+	  type);
-+}
-+
-+/* Marshall the arguments from FFI representation to procedure call
-+   context and stack.  */
-+
-+static unsigned
-+aarch64_prep_args (struct call_context *context, unsigned char *stack,
-+		   extended_cif *ecif)
-+{
-+  int i;
-+  struct arg_state state;
-+
-+  arg_init (&state, ALIGN(ecif->cif->bytes, 16));
-+
-+  for (i = 0; i < ecif->cif->nargs; i++)
-+    {
-+      ffi_type *ty = ecif->cif->arg_types[i];
-+      switch (ty->type)
-+	{
-+	case FFI_TYPE_VOID:
-+	  FFI_ASSERT (0);
-+	  break;
-+
-+	/* If the argument is a basic type the argument is allocated to an
-+	   appropriate register, or if none are available, to the stack.  */
-+	case FFI_TYPE_FLOAT:
-+	case FFI_TYPE_DOUBLE:
-+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
-+	case FFI_TYPE_LONGDOUBLE:
-+#endif
-+	case FFI_TYPE_UINT8:
-+	case FFI_TYPE_SINT8:
-+	case FFI_TYPE_UINT16:
-+	case FFI_TYPE_SINT16:
-+	case FFI_TYPE_UINT32:
-+	case FFI_TYPE_INT:
-+	case FFI_TYPE_SINT32:
-+	case FFI_TYPE_POINTER:
-+	case FFI_TYPE_UINT64:
-+	case FFI_TYPE_SINT64:
-+	  copy_to_register_or_stack (context, stack, &state,
-+				     ecif->avalue[i], ty->type);
-+	  break;
-+
-+	case FFI_TYPE_STRUCT:
-+	  if (is_hfa (ty))
-+	    {
-+	      copy_hfa_to_reg_or_stack (ecif->avalue[i], ty, context,
-+					stack, &state);
-+	    }
-+	  else if (ty->size > 16)
-+	    {
-+	      /* If the argument is a composite type that is larger than 16
-+		 bytes, then the argument has been copied to memory, and
-+		 the argument is replaced by a pointer to the copy.  */
-+
-+	      copy_to_register_or_stack (context, stack, &state,
-+					 &(ecif->avalue[i]), FFI_TYPE_POINTER);
-+	    }
-+	  else if (available_x (&state) >= (ty->size + 7) / 8)
-+	    {
-+	      /* If the argument is a composite type and the size in
-+		 double-words is not more than the number of available
-+		 X registers, then the argument is copied into consecutive
-+		 X registers.  */
-+	      int j;
-+	      for (j = 0; j < (ty->size + 7) / 8; j++)
-+		{
-+		  memcpy (allocate_to_x (context, &state),
-+			  &(((UINT64 *) ecif->avalue[i])[j]),
-+			  sizeof (UINT64));
-+		}
-+	    }
-+	  else
-+	    {
-+	      /* Otherwise, there are insufficient X registers. Further X
-+		 register allocations are prevented, the NSAA is adjusted
-+		 (by allocate_to_stack ()) and the argument is copied to
-+		 memory at the adjusted NSAA.  */
-+	      state.ngrn = N_X_ARG_REG;
-+
-+	      memcpy (allocate_to_stack (&state, stack, ty->alignment,
-+					 ty->size), ecif->avalue + i, ty->size);
-+	    }
-+	  break;
-+
-+	default:
-+	  FFI_ASSERT (0);
-+	  break;
-+	}
-+    }
-+
-+  return ecif->cif->aarch64_flags;
-+}
-+
-+ffi_status
-+ffi_prep_cif_machdep (ffi_cif *cif)
-+{
-+  /* Round the stack up to a multiple of the stack alignment requirement. */
-+  cif->bytes =
-+    (cif->bytes + (AARCH64_STACK_ALIGN - 1)) & ~ (AARCH64_STACK_ALIGN - 1);
-+
-+  /* Initialize our flags. We are interested if this CIF will touch a
-+     vector register, if so we will enable context save and load to
-+     those registers, otherwise not. This is intended to be friendly
-+     to lazy float context switching in the kernel.  */
-+  cif->aarch64_flags = 0;
-+
-+  if (is_v_register_candidate (cif->rtype))
-+    {
-+      cif->aarch64_flags |= AARCH64_FFI_WITH_V;
-+    }
-+  else
-+    {
-+      int i;
-+      for (i = 0; i < cif->nargs; i++)
-+        if (is_v_register_candidate (cif->arg_types[i]))
-+          {
-+            cif->aarch64_flags |= AARCH64_FFI_WITH_V;
-+            break;
-+          }
-+    }
-+
-+  return FFI_OK;
-+}
-+
-+/* Call a function with the provided arguments and capture the return
-+   value.  */
-+void
-+ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
-+{
-+  extended_cif ecif;
-+
-+  ecif.cif = cif;
-+  ecif.avalue = avalue;
-+  ecif.rvalue = rvalue;
-+
-+  switch (cif->abi)
-+    {
-+    case FFI_SYSV:
-+      {
-+        struct call_context context;
-+	size_t stack_bytes;
-+
-+	/* Figure out the total amount of stack space we need, the
-+	   above call frame space needs to be 16 bytes aligned to
-+	   ensure correct alignment of the first object inserted in
-+	   that space hence the ALIGN applied to cif->bytes.*/
-+	stack_bytes = ALIGN(cif->bytes, 16);
-+
-+	memset (&context, 0, sizeof (context));
-+        if (is_register_candidate (cif->rtype))
-+          {
-+            ffi_call_SYSV (aarch64_prep_args, &context, &ecif, stack_bytes, fn);
-+            switch (cif->rtype->type)
-+              {
-+              case FFI_TYPE_VOID:
-+              case FFI_TYPE_FLOAT:
-+              case FFI_TYPE_DOUBLE:
-+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
-+              case FFI_TYPE_LONGDOUBLE:
-+#endif
-+              case FFI_TYPE_UINT8:
-+              case FFI_TYPE_SINT8:
-+              case FFI_TYPE_UINT16:
-+              case FFI_TYPE_SINT16:
-+              case FFI_TYPE_UINT32:
-+              case FFI_TYPE_SINT32:
-+              case FFI_TYPE_POINTER:
-+              case FFI_TYPE_UINT64:
-+              case FFI_TYPE_INT:
-+              case FFI_TYPE_SINT64:
-+		{
-+		  void *addr = get_basic_type_addr (cif->rtype->type,
-+						    &context, 0);
-+		  copy_basic_type (rvalue, addr, cif->rtype->type);
-+		  break;
-+		}
-+
-+              case FFI_TYPE_STRUCT:
-+                if (is_hfa (cif->rtype))
-+		  {
-+		    int j;
-+		    unsigned short type = get_homogeneous_type (cif->rtype);
-+		    unsigned elems = element_count (cif->rtype);
-+		    for (j = 0; j < elems; j++)
-+		      {
-+			void *reg = get_basic_type_addr (type, &context, j);
-+			copy_basic_type (rvalue, reg, type);
-+			rvalue += get_basic_type_size (type);
-+		      }
-+		  }
-+                else if ((cif->rtype->size + 7) / 8 < N_X_ARG_REG)
-+                  {
-+                    size_t size = ALIGN (cif->rtype->size, sizeof (UINT64));
-+                    memcpy (rvalue, get_x_addr (&context, 0), size);
-+                  }
-+                else
-+                  {
-+                    FFI_ASSERT (0);
-+                  }
-+                break;
-+
-+              default:
-+                FFI_ASSERT (0);
-+                break;
-+              }
-+          }
-+        else
-+          {
-+            memcpy (get_x_addr (&context, 8), &rvalue, sizeof (UINT64));
-+            ffi_call_SYSV (aarch64_prep_args, &context, &ecif,
-+			   stack_bytes, fn);
-+          }
-+        break;
-+      }
-+
-+    default:
-+      FFI_ASSERT (0);
-+      break;
-+    }
-+}
-+
-+static unsigned char trampoline [] =
-+{ 0x70, 0x00, 0x00, 0x58,	/* ldr	x16, 1f	*/
-+  0x91, 0x00, 0x00, 0x10,	/* adr	x17, 2f	*/
-+  0x00, 0x02, 0x1f, 0xd6	/* br	x16	*/
-+};
-+
-+/* Build a trampoline.  */
-+
-+#define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX,FLAGS)			\
-+  ({unsigned char *__tramp = (unsigned char*)(TRAMP);			\
-+    UINT64  __fun = (UINT64)(FUN);					\
-+    UINT64  __ctx = (UINT64)(CTX);					\
-+    UINT64  __flags = (UINT64)(FLAGS);					\
-+    memcpy (__tramp, trampoline, sizeof (trampoline));			\
-+    memcpy (__tramp + 12, &__fun, sizeof (__fun));			\
-+    memcpy (__tramp + 20, &__ctx, sizeof (__ctx));			\
-+    memcpy (__tramp + 28, &__flags, sizeof (__flags));			\
-+    ffi_clear_cache(__tramp, __tramp + FFI_TRAMPOLINE_SIZE);		\
-+  })
-+
-+ffi_status
-+ffi_prep_closure_loc (ffi_closure* closure,
-+                      ffi_cif* cif,
-+                      void (*fun)(ffi_cif*,void*,void**,void*),
-+                      void *user_data,
-+                      void *codeloc)
-+{
-+  if (cif->abi != FFI_SYSV)
-+    return FFI_BAD_ABI;
-+
-+  FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_SYSV, codeloc,
-+		       cif->aarch64_flags);
-+
-+  closure->cif  = cif;
-+  closure->user_data = user_data;
-+  closure->fun  = fun;
-+
-+  return FFI_OK;
-+}
-+
-+/* Primary handler to setup and invoke a function within a closure.
-+
-+   A closure when invoked enters via the assembler wrapper
-+   ffi_closure_SYSV(). The wrapper allocates a call context on the
-+   stack, saves the interesting registers (from the perspective of
-+   the calling convention) into the context then passes control to
-+   ffi_closure_SYSV_inner() passing the saved context and a pointer to
-+   the stack at the point ffi_closure_SYSV() was invoked.
-+
-+   On the return path the assembler wrapper will reload call context
-+   registers.
-+
-+   ffi_closure_SYSV_inner() marshalls the call context into ffi value
-+   descriptors, invokes the wrapped function, then marshalls the return
-+   value back into the call context.  */
-+
-+void FFI_HIDDEN
-+ffi_closure_SYSV_inner (ffi_closure *closure, struct call_context *context,
-+			void *stack)
-+{
-+  ffi_cif *cif = closure->cif;
-+  void **avalue = (void**) alloca (cif->nargs * sizeof (void*));
-+  void *rvalue = NULL;
-+  int i;
-+  struct arg_state state;
-+
-+  arg_init (&state, ALIGN(cif->bytes, 16));
-+
-+  for (i = 0; i < cif->nargs; i++)
-+    {
-+      ffi_type *ty = cif->arg_types[i];
-+
-+      switch (ty->type)
-+	{
-+	case FFI_TYPE_VOID:
-+	  FFI_ASSERT (0);
-+	  break;
-+
-+	case FFI_TYPE_UINT8:
-+	case FFI_TYPE_SINT8:
-+	case FFI_TYPE_UINT16:
-+	case FFI_TYPE_SINT16:
-+	case FFI_TYPE_UINT32:
-+	case FFI_TYPE_SINT32:
-+	case FFI_TYPE_INT:
-+	case FFI_TYPE_POINTER:
-+	case FFI_TYPE_UINT64:
-+	case FFI_TYPE_SINT64:
-+	case  FFI_TYPE_FLOAT:
-+	case  FFI_TYPE_DOUBLE:
-+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
-+	case  FFI_TYPE_LONGDOUBLE:
-+	  avalue[i] = allocate_to_register_or_stack (context, stack,
-+						     &state, ty->type);
-+	  break;
-+#endif
-+
-+	case FFI_TYPE_STRUCT:
-+	  if (is_hfa (ty))
-+	    {
-+	      unsigned n = element_count (ty);
-+	      if (available_v (&state) < n)
-+		{
-+		  state.nsrn = N_V_ARG_REG;
-+		  avalue[i] = allocate_to_stack (&state, stack, ty->alignment,
-+						 ty->size);
-+		}
-+	      else
-+		{
-+		  switch (get_homogeneous_type (ty))
-+		    {
-+		    case FFI_TYPE_FLOAT:
-+		      {
-+			/* Eeek! We need a pointer to the structure,
-+			   however the homogeneous float elements are
-+			   being passed in individual S registers,
-+			   therefore the structure is not represented as
-+			   a contiguous sequence of bytes in our saved
-+			   register context. We need to fake up a copy
-+			   of the structure laid out in memory
-+			   correctly. The fake can be tossed once the
-+			   closure function has returned hence alloca()
-+			   is sufficient. */
-+			int j;
-+			UINT32 *p = avalue[i] = alloca (ty->size);
-+			for (j = 0; j < element_count (ty); j++)
-+			  memcpy (&p[j],
-+				  allocate_to_s (context, &state),
-+				  sizeof (*p));
-+			break;
-+		      }
-+
-+		    case FFI_TYPE_DOUBLE:
-+		      {
-+			/* Eeek! We need a pointer to the structure,
-+			   however the homogeneous float elements are
-+			   being passed in individual S registers,
-+			   therefore the structure is not represented as
-+			   a contiguous sequence of bytes in our saved
-+			   register context. We need to fake up a copy
-+			   of the structure laid out in memory
-+			   correctly. The fake can be tossed once the
-+			   closure function has returned hence alloca()
-+			   is sufficient. */
-+			int j;
-+			UINT64 *p = avalue[i] = alloca (ty->size);
-+			for (j = 0; j < element_count (ty); j++)
-+			  memcpy (&p[j],
-+				  allocate_to_d (context, &state),
-+				  sizeof (*p));
-+			break;
-+		      }
-+
-+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
-+		    case FFI_TYPE_LONGDOUBLE:
-+			  memcpy (&avalue[i],
-+				  allocate_to_v (context, &state),
-+				  sizeof (*avalue));
-+		      break;
-+#endif
-+
-+		    default:
-+		      FFI_ASSERT (0);
-+		      break;
-+		    }
-+		}
-+	    }
-+	  else if (ty->size > 16)
-+	    {
-+	      /* Replace Composite type of size greater than 16 with a
-+		 pointer.  */
-+	      memcpy (&avalue[i],
-+		      allocate_to_register_or_stack (context, stack,
-+						     &state, FFI_TYPE_POINTER),
-+		      sizeof (avalue[i]));
-+	    }
-+	  else if (available_x (&state) >= (ty->size + 7) / 8)
-+	    {
-+	      avalue[i] = get_x_addr (context, state.ngrn);
-+	      state.ngrn += (ty->size + 7) / 8;
-+	    }
-+	  else
-+	    {
-+	      state.ngrn = N_X_ARG_REG;
-+
-+	      avalue[i] = allocate_to_stack (&state, stack, ty->alignment,
-+					     ty->size);
-+	    }
-+	  break;
-+
-+	default:
-+	  FFI_ASSERT (0);
-+	  break;
-+	}
-+    }
-+
-+  /* Figure out where the return value will be passed, either in
-+     registers or in a memory block allocated by the caller and passed
-+     in x8.  */
-+
-+  if (is_register_candidate (cif->rtype))
-+    {
-+      /* Register candidates are *always* returned in registers. */
-+
-+      /* Allocate a scratchpad for the return value, we will let the
-+         callee scrible the result into the scratch pad then move the
-+         contents into the appropriate return value location for the
-+         call convention.  */
-+      rvalue = alloca (cif->rtype->size);
-+      (closure->fun) (cif, rvalue, avalue, closure->user_data);
-+
-+      /* Copy the return value into the call context so that it is returned
-+         as expected to our caller.  */
-+      switch (cif->rtype->type)
-+        {
-+        case FFI_TYPE_VOID:
-+          break;
-+
-+        case FFI_TYPE_UINT8:
-+        case FFI_TYPE_UINT16:
-+        case FFI_TYPE_UINT32:
-+        case FFI_TYPE_POINTER:
-+        case FFI_TYPE_UINT64:
-+        case FFI_TYPE_SINT8:
-+        case FFI_TYPE_SINT16:
-+        case FFI_TYPE_INT:
-+        case FFI_TYPE_SINT32:
-+        case FFI_TYPE_SINT64:
-+        case FFI_TYPE_FLOAT:
-+        case FFI_TYPE_DOUBLE:
-+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
-+        case FFI_TYPE_LONGDOUBLE:
-+#endif
-+	  {
-+	    void *addr = get_basic_type_addr (cif->rtype->type, context, 0);
-+	    copy_basic_type (addr, rvalue, cif->rtype->type);
-+            break;
-+	  }
-+        case FFI_TYPE_STRUCT:
-+          if (is_hfa (cif->rtype))
-+	    {
-+	      int j;
-+	      unsigned short type = get_homogeneous_type (cif->rtype);
-+	      unsigned elems = element_count (cif->rtype);
-+	      for (j = 0; j < elems; j++)
-+		{
-+		  void *reg = get_basic_type_addr (type, context, j);
-+		  copy_basic_type (reg, rvalue, type);
-+		  rvalue += get_basic_type_size (type);
-+		}
-+	    }
-+          else if ((cif->rtype->size + 7) / 8 < N_X_ARG_REG)
-+            {
-+              size_t size = ALIGN (cif->rtype->size, sizeof (UINT64)) ;
-+              memcpy (get_x_addr (context, 0), rvalue, size);
-+            }
-+          else
-+            {
-+              FFI_ASSERT (0);
-+            }
-+          break;
-+        default:
-+          FFI_ASSERT (0);
-+          break;
-+        }
-+    }
-+  else
-+    {
-+      memcpy (&rvalue, get_x_addr (context, 8), sizeof (UINT64));
-+      (closure->fun) (cif, rvalue, avalue, closure->user_data);
-+    }
-+}
-+
-diff --git a/js/src/ctypes/libffi/src/aarch64/ffitarget.h b/js/src/ctypes/libffi/src/aarch64/ffitarget.h
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/aarch64/ffitarget.h
-@@ -0,0 +1,59 @@
-+/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+``Software''), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#ifndef LIBFFI_TARGET_H
-+#define LIBFFI_TARGET_H
-+
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
-+#ifndef LIBFFI_ASM
-+typedef unsigned long ffi_arg;
-+typedef signed long ffi_sarg;
-+
-+typedef enum ffi_abi
-+  {
-+    FFI_FIRST_ABI = 0,
-+    FFI_SYSV,
-+    FFI_LAST_ABI,
-+    FFI_DEFAULT_ABI = FFI_SYSV
-+  } ffi_abi;
-+#endif
-+
-+/* ---- Definitions for closures ----------------------------------------- */
-+
-+#define FFI_CLOSURES 1
-+#define FFI_TRAMPOLINE_SIZE 36
-+#define FFI_NATIVE_RAW_API 0
-+
-+/* ---- Internal ---- */
-+
-+
-+#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_flags
-+
-+#define AARCH64_FFI_WITH_V_BIT 0
-+
-+#define AARCH64_N_XREG 32
-+#define AARCH64_N_VREG 32
-+#define AARCH64_CALL_CONTEXT_SIZE (AARCH64_N_XREG * 8 + AARCH64_N_VREG * 16)
-+
-+#endif
-diff --git a/js/src/ctypes/libffi/src/aarch64/sysv.S b/js/src/ctypes/libffi/src/aarch64/sysv.S
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/aarch64/sysv.S
-@@ -0,0 +1,327 @@
-+/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
-+
-+Permission is hereby granted, free of charge, to any person obtaining
-+a copy of this software and associated documentation files (the
-+``Software''), to deal in the Software without restriction, including
-+without limitation the rights to use, copy, modify, merge, publish,
-+distribute, sublicense, and/or sell copies of the Software, and to
-+permit persons to whom the Software is furnished to do so, subject to
-+the following conditions:
-+
-+The above copyright notice and this permission notice shall be
-+included in all copies or substantial portions of the Software.
-+
-+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+#define LIBFFI_ASM
-+#include <fficonfig.h>
-+#include <ffi.h>
-+
-+#ifdef HAVE_MACHINE_ASM_H
-+#include <machine/asm.h>
-+#else
-+#ifdef __USER_LABEL_PREFIX__
-+#define CONCAT1(a, b) CONCAT2(a, b)
-+#define CONCAT2(a, b) a ## b
-+
-+/* Use the right prefix for global labels.  */
-+#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
-+#else
-+#define CNAME(x) x
-+#endif
-+#endif
-+
-+#define cfi_adjust_cfa_offset(off)	.cfi_adjust_cfa_offset off
-+#define cfi_rel_offset(reg, off)	.cfi_rel_offset reg, off
-+#define cfi_restore(reg)		.cfi_restore reg
-+#define cfi_def_cfa_register(reg)	.cfi_def_cfa_register reg
-+
-+        .text
-+        .globl CNAME(ffi_call_SYSV)
-+#ifdef __ELF__
-+        .type CNAME(ffi_call_SYSV), #function
-+#endif
-+
-+/* ffi_call_SYSV()
-+
-+   Create a stack frame, setup an argument context, call the callee
-+   and extract the result.
-+
-+   The maximum required argument stack size is provided,
-+   ffi_call_SYSV() allocates that stack space then calls the
-+   prepare_fn to populate register context and stack.  The
-+   argument passing registers are loaded from the register
-+   context and the callee called, on return the register passing
-+   register are saved back to the context.  Our caller will
-+   extract the return value from the final state of the saved
-+   register context.
-+
-+   Prototype:
-+
-+   extern unsigned
-+   ffi_call_SYSV (void (*)(struct call_context *context, unsigned char *,
-+			   extended_cif *),
-+                  struct call_context *context,
-+                  extended_cif *,
-+                  size_t required_stack_size,
-+                  void (*fn)(void));
-+
-+   Therefore on entry we have:
-+
-+   x0 prepare_fn
-+   x1 &context
-+   x2 &ecif
-+   x3 bytes
-+   x4 fn
-+
-+   This function uses the following stack frame layout:
-+
-+   ==
-+                saved x30(lr)
-+   x29(fp)->    saved x29(fp)
-+                saved x24
-+                saved x23
-+                saved x22
-+   sp'    ->    saved x21
-+                ...
-+   sp     ->    (constructed callee stack arguments)
-+   ==
-+
-+   Voila! */
-+
-+#define ffi_call_SYSV_FS (8 * 4)
-+
-+        .cfi_startproc
-+CNAME(ffi_call_SYSV):
-+        stp     x29, x30, [sp, #-16]!
-+	cfi_adjust_cfa_offset (16)
-+        cfi_rel_offset (x29, 0)
-+        cfi_rel_offset (x30, 8)
-+
-+        mov     x29, sp
-+	cfi_def_cfa_register (x29)
-+        sub     sp, sp, #ffi_call_SYSV_FS
-+
-+        stp     x21, x22, [sp, #0]
-+        cfi_rel_offset (x21, 0 - ffi_call_SYSV_FS)
-+        cfi_rel_offset (x22, 8 - ffi_call_SYSV_FS)
-+
-+        stp     x23, x24, [sp, #16]
-+        cfi_rel_offset (x23, 16 - ffi_call_SYSV_FS)
-+        cfi_rel_offset (x24, 24 - ffi_call_SYSV_FS)
-+
-+        mov     x21, x1
-+        mov     x22, x2
-+        mov     x24, x4
-+
-+        /* Allocate the stack space for the actual arguments, many
-+           arguments will be passed in registers, but we assume
-+           worst case and allocate sufficient stack for ALL of
-+           the arguments.  */
-+        sub     sp, sp, x3
-+
-+        /* unsigned (*prepare_fn) (struct call_context *context,
-+				   unsigned char *stack, extended_cif *ecif);
-+	 */
-+        mov     x23, x0
-+        mov     x0, x1
-+        mov     x1, sp
-+        /* x2 already in place */
-+        blr     x23
-+
-+        /* Preserve the flags returned.  */
-+        mov     x23, x0
-+
-+        /* Figure out if we should touch the vector registers.  */
-+        tbz     x23, #AARCH64_FFI_WITH_V_BIT, 1f
-+
-+        /* Load the vector argument passing registers.  */
-+        ldp     q0, q1, [x21, #8*32 +  0]
-+        ldp     q2, q3, [x21, #8*32 + 32]
-+        ldp     q4, q5, [x21, #8*32 + 64]
-+        ldp     q6, q7, [x21, #8*32 + 96]
-+1:
-+        /* Load the core argument passing registers.  */
-+        ldp     x0, x1, [x21,  #0]
-+        ldp     x2, x3, [x21, #16]
-+        ldp     x4, x5, [x21, #32]
-+        ldp     x6, x7, [x21, #48]
-+
-+        /* Don't forget x8 which may be holding the address of a return buffer.
-+	 */
-+        ldr     x8,     [x21, #8*8]
-+
-+        blr     x24
-+
-+        /* Save the core argument passing registers.  */
-+        stp     x0, x1, [x21,  #0]
-+        stp     x2, x3, [x21, #16]
-+        stp     x4, x5, [x21, #32]
-+        stp     x6, x7, [x21, #48]
-+
-+        /* Note nothing useful ever comes back in x8!  */
-+
-+        /* Figure out if we should touch the vector registers.  */
-+        tbz     x23, #AARCH64_FFI_WITH_V_BIT, 1f
-+
-+        /* Save the vector argument passing registers.  */
-+        stp     q0, q1, [x21, #8*32 + 0]
-+        stp     q2, q3, [x21, #8*32 + 32]
-+        stp     q4, q5, [x21, #8*32 + 64]
-+        stp     q6, q7, [x21, #8*32 + 96]
-+1:
-+        /* All done, unwind our stack frame.  */
-+        ldp     x21, x22, [x29,  # - ffi_call_SYSV_FS]
-+        cfi_restore (x21)
-+        cfi_restore (x22)
-+
-+        ldp     x23, x24, [x29,  # - ffi_call_SYSV_FS + 16]
-+        cfi_restore (x23)
-+        cfi_restore (x24)
-+
-+        mov     sp, x29
-+	cfi_def_cfa_register (sp)
-+
-+        ldp     x29, x30, [sp], #16
-+	cfi_adjust_cfa_offset (-16)
-+        cfi_restore (x29)
-+        cfi_restore (x30)
-+
-+        ret
-+
-+        .cfi_endproc
-+#ifdef __ELF__
-+        .size CNAME(ffi_call_SYSV), .-CNAME(ffi_call_SYSV)
-+#endif
-+
-+#define ffi_closure_SYSV_FS (8 * 2 + AARCH64_CALL_CONTEXT_SIZE)
-+
-+/* ffi_closure_SYSV
-+
-+   Closure invocation glue. This is the low level code invoked directly by
-+   the closure trampoline to setup and call a closure.
-+
-+   On entry x17 points to a struct trampoline_data, x16 has been clobbered
-+   all other registers are preserved.
-+
-+   We allocate a call context and save the argument passing registers,
-+   then invoked the generic C ffi_closure_SYSV_inner() function to do all
-+   the real work, on return we load the result passing registers back from
-+   the call context.
-+
-+   On entry
-+
-+   extern void
-+   ffi_closure_SYSV (struct trampoline_data *);
-+
-+   struct trampoline_data
-+   {
-+        UINT64 *ffi_closure;
-+        UINT64 flags;
-+   };
-+
-+   This function uses the following stack frame layout:
-+
-+   ==
-+                saved x30(lr)
-+   x29(fp)->    saved x29(fp)
-+                saved x22
-+                saved x21
-+                ...
-+   sp     ->    call_context
-+   ==
-+
-+   Voila!  */
-+
-+        .text
-+        .globl CNAME(ffi_closure_SYSV)
-+        .cfi_startproc
-+CNAME(ffi_closure_SYSV):
-+        stp     x29, x30, [sp, #-16]!
-+	cfi_adjust_cfa_offset (16)
-+        cfi_rel_offset (x29, 0)
-+        cfi_rel_offset (x30, 8)
-+
-+        mov     x29, sp
-+        cfi_def_cfa_register (x29)
-+
-+        sub     sp, sp, #ffi_closure_SYSV_FS
-+
-+        stp     x21, x22, [x29, #-16]
-+        cfi_rel_offset (x21, -16)
-+        cfi_rel_offset (x22, -8)
-+
-+        /* Load x21 with &call_context.  */
-+        mov     x21, sp
-+        /* Preserve our struct trampoline_data *  */
-+        mov     x22, x17
-+
-+        /* Save the rest of the argument passing registers.  */
-+        stp     x0, x1, [x21, #0]
-+        stp     x2, x3, [x21, #16]
-+        stp     x4, x5, [x21, #32]
-+        stp     x6, x7, [x21, #48]
-+        /* Don't forget we may have been given a result scratch pad address.
-+	 */
-+        str     x8,     [x21, #64]
-+
-+        /* Figure out if we should touch the vector registers.  */
-+        ldr     x0, [x22, #8]
-+        tbz     x0, #AARCH64_FFI_WITH_V_BIT, 1f
-+
-+        /* Save the argument passing vector registers.  */
-+        stp     q0, q1, [x21, #8*32 + 0]
-+        stp     q2, q3, [x21, #8*32 + 32]
-+        stp     q4, q5, [x21, #8*32 + 64]
-+        stp     q6, q7, [x21, #8*32 + 96]
-+1:
-+        /* Load &ffi_closure..  */
-+        ldr     x0, [x22, #0]
-+        mov     x1, x21
-+        /* Compute the location of the stack at the point that the
-+           trampoline was called.  */
-+        add     x2, x29, #16
-+
-+        bl      CNAME(ffi_closure_SYSV_inner)
-+
-+        /* Figure out if we should touch the vector registers.  */
-+        ldr     x0, [x22, #8]
-+        tbz     x0, #AARCH64_FFI_WITH_V_BIT, 1f
-+
-+        /* Load the result passing vector registers.  */
-+        ldp     q0, q1, [x21, #8*32 + 0]
-+        ldp     q2, q3, [x21, #8*32 + 32]
-+        ldp     q4, q5, [x21, #8*32 + 64]
-+        ldp     q6, q7, [x21, #8*32 + 96]
-+1:
-+        /* Load the result passing core registers.  */
-+        ldp     x0, x1, [x21,  #0]
-+        ldp     x2, x3, [x21, #16]
-+        ldp     x4, x5, [x21, #32]
-+        ldp     x6, x7, [x21, #48]
-+        /* Note nothing useful is returned in x8.  */
-+
-+        /* We are done, unwind our frame.  */
-+        ldp     x21, x22, [x29,  #-16]
-+        cfi_restore (x21)
-+        cfi_restore (x22)
-+
-+        mov     sp, x29
-+        cfi_def_cfa_register (sp)
-+
-+        ldp     x29, x30, [sp], #16
-+	cfi_adjust_cfa_offset (-16)
-+        cfi_restore (x29)
-+        cfi_restore (x30)
-+
-+        ret
-+        .cfi_endproc
-+#ifdef __ELF__
-+        .size CNAME(ffi_closure_SYSV), .-CNAME(ffi_closure_SYSV)
-+#endif
-diff --git a/js/src/ctypes/libffi/src/alpha/ffi.c b/js/src/ctypes/libffi/src/alpha/ffi.c
---- a/js/src/ctypes/libffi/src/alpha/ffi.c
-+++ b/js/src/ctypes/libffi/src/alpha/ffi.c
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------------
--   ffi.c - Copyright (c) 1998, 2001, 2007, 2008  Red Hat, Inc.
-+   ffi.c - Copyright (c) 2012  Anthony Green
-+           Copyright (c) 1998, 2001, 2007, 2008  Red Hat, Inc.
-    
-    Alpha Foreign Function Interface 
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -173,16 +174,19 @@ ffi_status
- ffi_prep_closure_loc (ffi_closure* closure,
- 		      ffi_cif* cif,
- 		      void (*fun)(ffi_cif*, void*, void**, void*),
- 		      void *user_data,
- 		      void *codeloc)
- {
-   unsigned int *tramp;
- 
-+  if (cif->abi != FFI_OSF)
-+    return FFI_BAD_ABI;
-+
-   tramp = (unsigned int *) &closure->tramp[0];
-   tramp[0] = 0x47fb0401;	/* mov $27,$1		*/
-   tramp[1] = 0xa77b0010;	/* ldq $27,16($27)	*/
-   tramp[2] = 0x6bfb0000;	/* jmp $31,($27),0	*/
-   tramp[3] = 0x47ff041f;	/* nop			*/
-   *(void **) &tramp[4] = ffi_closure_osf;
- 
-   closure->cif = cif;
-diff --git a/js/src/ctypes/libffi/src/alpha/ffitarget.h b/js/src/ctypes/libffi/src/alpha/ffitarget.h
---- a/js/src/ctypes/libffi/src/alpha/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/alpha/ffitarget.h
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
-+   ffitarget.h - Copyright (c) 2012  Anthony Green
-+                 Copyright (c) 1996-2003  Red Hat, Inc.
-    Target configuration macros for Alpha.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-@@ -22,16 +23,20 @@
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
- 
-    ----------------------------------------------------------------------- */
- 
- #ifndef LIBFFI_TARGET_H
- #define LIBFFI_TARGET_H
- 
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
- #ifndef LIBFFI_ASM
- typedef unsigned long          ffi_arg;
- typedef signed long            ffi_sarg;
- 
- typedef enum ffi_abi {
-   FFI_FIRST_ABI = 0,
-   FFI_OSF,
-   FFI_LAST_ABI,
-diff --git a/js/src/ctypes/libffi/src/alpha/osf.S b/js/src/ctypes/libffi/src/alpha/osf.S
---- a/js/src/ctypes/libffi/src/alpha/osf.S
-+++ b/js/src/ctypes/libffi/src/alpha/osf.S
-@@ -1,10 +1,10 @@
- /* -----------------------------------------------------------------------
--   osf.S - Copyright (c) 1998, 2001, 2007, 2008 Red Hat
-+   osf.S - Copyright (c) 1998, 2001, 2007, 2008, 2011 Red Hat
-    
-    Alpha/OSF Foreign Function Interface 
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -294,73 +294,94 @@ ffi_closure_osf:
- 	|| FFI_TYPE_SINT64 != 12	\
- 	|| FFI_TYPE_STRUCT != 13	\
- 	|| FFI_TYPE_POINTER != 14	\
- 	|| FFI_TYPE_LAST != 14
- #error "osf.S out of sync with ffi.h"
- #endif
- 
- #ifdef __ELF__
-+# define UA_SI		.4byte
-+# define FDE_ENCODING	0x1b	/* pcrel sdata4 */
-+# define FDE_ENCODE(X)	.4byte X-.
-+# define FDE_ARANGE(X)	.4byte X
-+#elif defined __osf__
-+# define UA_SI		.align 0; .long
-+# define FDE_ENCODING	0x50	/* aligned absolute */
-+# define FDE_ENCODE(X)	.align 3; .quad X
-+# define FDE_ARANGE(X)	.align 0; .quad X
-+#endif
-+
-+#ifdef __ELF__
- 	.section	.eh_frame,EH_FRAME_FLAGS,@progbits
-+#elif defined __osf__
-+	.data
-+	.align 3
-+	.globl _GLOBAL__F_ffi_call_osf
-+_GLOBAL__F_ffi_call_osf:
-+#endif
- __FRAME_BEGIN__:
--	.4byte	$LECIE1-$LSCIE1	# Length of Common Information Entry
-+	UA_SI	$LECIE1-$LSCIE1	# Length of Common Information Entry
- $LSCIE1:
--	.4byte	0x0		# CIE Identifier Tag
-+	UA_SI	0x0		# CIE Identifier Tag
- 	.byte	0x1		# CIE Version
- 	.ascii "zR\0"		# CIE Augmentation
- 	.byte	0x1		# uleb128 0x1; CIE Code Alignment Factor
- 	.byte	0x78		# sleb128 -8; CIE Data Alignment Factor
- 	.byte	26		# CIE RA Column
- 	.byte	0x1		# uleb128 0x1; Augmentation size
--	.byte	0x1b		# FDE Encoding (pcrel sdata4)
-+	.byte	FDE_ENCODING	# FDE Encoding
- 	.byte	0xc		# DW_CFA_def_cfa
- 	.byte	30		# uleb128 column 30
- 	.byte	0		# uleb128 offset 0
- 	.align 3
- $LECIE1:
- $LSFDE1:
--	.4byte	$LEFDE1-$LASFDE1		# FDE Length
-+	UA_SI	$LEFDE1-$LASFDE1		# FDE Length
- $LASFDE1:
--	.4byte	$LASFDE1-__FRAME_BEGIN__	# FDE CIE offset
--	.4byte	$LFB1-.		# FDE initial location
--	.4byte	$LFE1-$LFB1	# FDE address range
-+	UA_SI	$LASFDE1-__FRAME_BEGIN__	# FDE CIE offset
-+	FDE_ENCODE($LFB1)			# FDE initial location
-+	FDE_ARANGE($LFE1-$LFB1)			# FDE address range
- 	.byte	0x0		# uleb128 0x0; Augmentation size
- 
- 	.byte	0x4		# DW_CFA_advance_loc4
--	.4byte	$LCFI1-$LFB1
-+	UA_SI	$LCFI1-$LFB1
- 	.byte	0x9a		# DW_CFA_offset, column 26
- 	.byte	4		# uleb128 4*-8
- 	.byte	0x8f		# DW_CFA_offset, column 15
- 	.byte	0x3		# uleb128 3*-8
- 	.byte	0xc		# DW_CFA_def_cfa
- 	.byte	15		# uleb128 column 15
- 	.byte	32		# uleb128 offset 32
- 
- 	.byte	0x4		# DW_CFA_advance_loc4
--	.4byte	$LCFI2-$LCFI1
-+	UA_SI	$LCFI2-$LCFI1
- 	.byte	0xda		# DW_CFA_restore, column 26
- 	.align 3
- $LEFDE1:
- 
- $LSFDE3:
--	.4byte	$LEFDE3-$LASFDE3		# FDE Length
-+	UA_SI	$LEFDE3-$LASFDE3		# FDE Length
- $LASFDE3:
--	.4byte	$LASFDE3-__FRAME_BEGIN__	# FDE CIE offset
--	.4byte	$LFB2-.		# FDE initial location
--	.4byte	$LFE2-$LFB2	# FDE address range
-+	UA_SI	$LASFDE3-__FRAME_BEGIN__	# FDE CIE offset
-+	FDE_ENCODE($LFB2)			# FDE initial location
-+	FDE_ARANGE($LFE2-$LFB2)			# FDE address range
- 	.byte	0x0		# uleb128 0x0; Augmentation size
- 
- 	.byte	0x4		# DW_CFA_advance_loc4
--	.4byte	$LCFI5-$LFB2
-+	UA_SI	$LCFI5-$LFB2
- 	.byte	0xe		# DW_CFA_def_cfa_offset
- 	.byte	0x80,0x1	# uleb128 128
- 
- 	.byte	0x4		# DW_CFA_advance_loc4
--	.4byte	$LCFI6-$LCFI5
-+	UA_SI	$LCFI6-$LCFI5
- 	.byte	0x9a		# DW_CFA_offset, column 26
- 	.byte	16		# uleb128 offset 16*-8
- 	.align 3
- $LEFDE3:
-+#if defined __osf__
-+	.align 0
-+	.long	0		# End of Table
-+#endif
- 
--#ifdef __linux__
-+#if defined __ELF__ && defined __linux__
- 	.section	.note.GNU-stack,"",@progbits
- #endif
--#endif
-diff --git a/js/src/ctypes/libffi/src/arc/arcompact.S b/js/src/ctypes/libffi/src/arc/arcompact.S
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/arc/arcompact.S
-@@ -0,0 +1,135 @@
-+/* -----------------------------------------------------------------------
-+   arcompact.S - Copyright (c) 2013 Synposys, Inc. (www.synopsys.com)
-+   
-+   ARCompact Foreign Function Interface 
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+   IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR
-+   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-+   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+   OTHER DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#define LIBFFI_ASM
-+#include <fficonfig.h>
-+#include <ffi.h>
-+#ifdef HAVE_MACHINE_ASM_H
-+#include <machine/asm.h>
-+#else
-+#define CNAME(x) x
-+#define ENTRY(x) .globl CNAME(x)` .type CNAME(x),%function` CNAME(x):
-+#endif
-+
-+.text
-+
-+        /* R0:   ffi_prep_args */
-+        /* R1:   &ecif */
-+        /* R2:   cif->bytes */
-+        /* R3:   fig->flags */
-+        /* R4:   ecif.rvalue */
-+        /* R5:   fn */
-+ENTRY(ffi_call_ARCompact)
-+        /* Save registers.  */
-+        st.a       fp, [sp, -4]        /* fp + 20, fp */
-+        push_s     blink               /* fp + 16, blink */
-+        st.a       r4, [sp, -4]        /* fp + 12, ecif.rvalue */
-+        push_s     r3                  /* fp +  8, fig->flags */
-+        st.a       r5, [sp, -4]        /* fp +  4, fn */
-+        push_s     r2                  /* fp +  0, cif->bytes */
-+        mov        fp, sp
-+
-+        /* Make room for all of the new args.  */
-+        sub        sp, sp, r2
-+
-+        /* Place all of the ffi_prep_args in position.  */
-+        /* ffi_prep_args(char *stack, extended_cif *ecif) */
-+        /* R1 already set.  */
-+
-+        /* And call.  */
-+        jl_s.d     [r0]
-+        mov_s      r0, sp
-+
-+        ld.ab      r12, [fp, 4]        /* cif->bytes */
-+        ld.ab      r11, [fp, 4]        /* fn */
-+
-+        /* Move first 8 parameters in registers...  */
-+        ld_s       r0, [sp]
-+        ld_s       r1, [sp, 4]
-+        ld_s       r2, [sp, 8]
-+        ld_s       r3, [sp, 12]
-+        ld         r4, [sp, 16]
-+        ld         r5, [sp, 20]
-+        ld         r6, [sp, 24]
-+        ld         r7, [sp, 28]
-+
-+        /* ...and adjust the stack.  */
-+        min        r12, r12, 32
-+
-+        /* Call the function.  */
-+        jl.d       [r11]
-+        add        sp, sp, r12 
-+
-+        mov        sp, fp        
-+        pop_s      r3        /* fig->flags, return type */
-+        pop_s      r2        /* ecif.rvalue, pointer for return value */
-+
-+        /* If the return value pointer is NULL, assume no return value.  */
-+        breq.d     r2, 0, epilogue
-+        pop_s      blink
-+
-+        /* Return INT.  */
-+        brne       r3, FFI_TYPE_INT, return_double
-+        b.d        epilogue
-+        st_s       r0, [r2]        
-+
-+return_double:
-+        brne       r3, FFI_TYPE_DOUBLE, epilogue
-+        st_s       r0, [r2]        
-+        st_s       r1, [r2,4]
-+
-+epilogue:
-+        j_s.d      [blink]
-+        ld.ab      fp, [sp, 4]
-+
-+ENTRY(ffi_closure_ARCompact)
-+        st.a       r0, [sp, -32]
-+        st_s       r1, [sp, 4]
-+        st_s       r2, [sp, 8]
-+        st_s       r3, [sp, 12]
-+        st         r4, [sp, 16]
-+        st         r5, [sp, 20]
-+        st         r6, [sp, 24]
-+        st         r7, [sp, 28]
-+
-+        /* pointer to arguments */
-+        mov_s      r2, sp
-+
-+        /* return value goes here */
-+        sub        sp, sp, 8
-+        mov_s      r1, sp
-+
-+        push_s     blink
-+        
-+        bl.d       ffi_closure_inner_ARCompact
-+        mov_s      r0, r8                /* codeloc, set by trampoline */
-+
-+        pop_s      blink
-+
-+        /* set return value to r1:r0 */
-+        pop_s      r0
-+        pop_s      r1
-+        j_s.d      [blink]
-+        add_s      sp, sp, 32
-diff --git a/js/src/ctypes/libffi/src/arc/ffi.c b/js/src/ctypes/libffi/src/arc/ffi.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/arc/ffi.c
-@@ -0,0 +1,268 @@
-+/* -----------------------------------------------------------------------
-+   ffi.c - Copyright (c) 2013  Synopsys, Inc. (www.synopsys.com)
-+   
-+   ARC Foreign Function Interface 
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+   IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR
-+   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-+   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+   OTHER DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#include <ffi.h>
-+#include <ffi_common.h>
-+
-+#include <stdlib.h>
-+#include <stdint.h>
-+
-+#include <sys/cachectl.h>
-+
-+/* for little endian ARC, the code is in fact stored as mixed endian for
-+   performance reasons */
-+#if __BIG_ENDIAN__
-+#define CODE_ENDIAN(x) (x)
-+#else
-+#define CODE_ENDIAN(x) ( (((uint32_t) (x)) << 16) | (((uint32_t) (x)) >> 16))
-+#endif
-+
-+/* ffi_prep_args is called by the assembly routine once stack
-+   space has been allocated for the function's arguments.  */
-+
-+void
-+ffi_prep_args (char *stack, extended_cif * ecif)
-+{
-+  unsigned int i;
-+  int tmp;
-+  void **p_argv;
-+  char *argp;
-+  ffi_type **p_arg;
-+
-+  tmp = 0;
-+  argp = stack;
-+
-+  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT)
-+    {
-+      *(void **) argp = ecif->rvalue;
-+      argp += 4;
-+    }
-+
-+  p_argv = ecif->avalue;
-+
-+  for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
-+       (i != 0); i--, p_arg++)
-+    {
-+      size_t z;
-+      int alignment;
-+
-+      /* align alignment to 4 */
-+      alignment = (((*p_arg)->alignment - 1) | 3) + 1;
-+
-+      /* Align if necessary.  */
-+      if ((alignment - 1) & (unsigned) argp)
-+	argp = (char *) ALIGN (argp, alignment);
-+
-+      z = (*p_arg)->size;
-+      if (z < sizeof (int))
-+	{
-+	  z = sizeof (int);
-+
-+	  switch ((*p_arg)->type)
-+	    {
-+	    case FFI_TYPE_SINT8:
-+	      *(signed int *) argp = (signed int) *(SINT8 *) (*p_argv);
-+	      break;
-+
-+	    case FFI_TYPE_UINT8:
-+	      *(unsigned int *) argp = (unsigned int) *(UINT8 *) (*p_argv);
-+	      break;
-+
-+	    case FFI_TYPE_SINT16:
-+	      *(signed int *) argp = (signed int) *(SINT16 *) (*p_argv);
-+	      break;
-+
-+	    case FFI_TYPE_UINT16:
-+	      *(unsigned int *) argp = (unsigned int) *(UINT16 *) (*p_argv);
-+	      break;
-+
-+	    case FFI_TYPE_STRUCT:
-+	      memcpy (argp, *p_argv, (*p_arg)->size);
-+	      break;
-+
-+	    default:
-+	      FFI_ASSERT (0);
-+	    }
-+	}
-+      else if (z == sizeof (int))
-+	{
-+	  *(unsigned int *) argp = (unsigned int) *(UINT32 *) (*p_argv);
-+	}
-+      else
-+	{
-+	  if ((*p_arg)->type == FFI_TYPE_STRUCT)
-+	    {
-+	      memcpy (argp, *p_argv, z);
-+	    }
-+	  else
-+	    {
-+	      /* Double or long long 64bit.  */
-+	      memcpy (argp, *p_argv, z);
-+	    }
-+	}
-+      p_argv++;
-+      argp += z;
-+    }
-+
-+  return;
-+}
-+
-+/* Perform machine dependent cif processing.  */
-+ffi_status
-+ffi_prep_cif_machdep (ffi_cif * cif)
-+{
-+  /* Set the return type flag.  */
-+  switch (cif->rtype->type)
-+    {
-+    case FFI_TYPE_VOID:
-+      cif->flags = (unsigned) cif->rtype->type;
-+      break;
-+
-+    case FFI_TYPE_STRUCT:
-+      cif->flags = (unsigned) cif->rtype->type;
-+      break;
-+
-+    case FFI_TYPE_SINT64:
-+    case FFI_TYPE_UINT64:
-+    case FFI_TYPE_DOUBLE:
-+      cif->flags = FFI_TYPE_DOUBLE;
-+      break;
-+
-+    case FFI_TYPE_FLOAT:
-+    default:
-+      cif->flags = FFI_TYPE_INT;
-+      break;
-+    }
-+
-+  return FFI_OK;
-+}
-+
-+extern void ffi_call_ARCompact (void (*)(char *, extended_cif *),
-+				extended_cif *, unsigned, unsigned,
-+				unsigned *, void (*fn) (void));
-+
-+void
-+ffi_call (ffi_cif * cif, void (*fn) (void), void *rvalue, void **avalue)
-+{
-+  extended_cif ecif;
-+
-+  ecif.cif = cif;
-+  ecif.avalue = avalue;
-+
-+  /* If the return value is a struct and we don't have
-+     a return value address then we need to make one.  */
-+  if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT))
-+    {
-+      ecif.rvalue = alloca (cif->rtype->size);
-+    }
-+  else
-+    ecif.rvalue = rvalue;
-+
-+  switch (cif->abi)
-+    {
-+    case FFI_ARCOMPACT:
-+      ffi_call_ARCompact (ffi_prep_args, &ecif, cif->bytes,
-+			  cif->flags, ecif.rvalue, fn);
-+      break;
-+
-+    default:
-+      FFI_ASSERT (0);
-+      break;
-+    }
-+}
-+
-+int
-+ffi_closure_inner_ARCompact (ffi_closure * closure, void *rvalue,
-+			     ffi_arg * args)
-+{
-+  void **arg_area, **p_argv;
-+  ffi_cif *cif = closure->cif;
-+  char *argp = (char *) args;
-+  ffi_type **p_argt;
-+  int i;
-+
-+  arg_area = (void **) alloca (cif->nargs * sizeof (void *));
-+
-+  /* handle hidden argument */
-+  if (cif->flags == FFI_TYPE_STRUCT)
-+    {
-+      rvalue = *(void **) argp;
-+      argp += 4;
-+    }
-+
-+  p_argv = arg_area;
-+
-+  for (i = 0, p_argt = cif->arg_types; i < cif->nargs;
-+       i++, p_argt++, p_argv++)
-+    {
-+      size_t z;
-+      int alignment;
-+
-+      /* align alignment to 4 */
-+      alignment = (((*p_argt)->alignment - 1) | 3) + 1;
-+
-+      /* Align if necessary.  */
-+      if ((alignment - 1) & (unsigned) argp)
-+	argp = (char *) ALIGN (argp, alignment);
-+
-+      z = (*p_argt)->size;
-+      *p_argv = (void *) argp;
-+      argp += z;
-+    }
-+
-+  (closure->fun) (cif, rvalue, arg_area, closure->user_data);
-+
-+  return cif->flags;
-+}
-+
-+extern void ffi_closure_ARCompact (void);
-+
-+ffi_status
-+ffi_prep_closure_loc (ffi_closure * closure, ffi_cif * cif,
-+		      void (*fun) (ffi_cif *, void *, void **, void *),
-+		      void *user_data, void *codeloc)
-+{
-+  uint32_t *tramp = (uint32_t *) & (closure->tramp[0]);
-+
-+  switch (cif->abi)
-+    {
-+    case FFI_ARCOMPACT:
-+      FFI_ASSERT (tramp == codeloc);
-+      tramp[0] = CODE_ENDIAN (0x200a1fc0);	/* mov r8, pcl  */
-+      tramp[1] = CODE_ENDIAN (0x20200f80);	/* j [long imm] */
-+      tramp[2] = CODE_ENDIAN (ffi_closure_ARCompact);
-+      break;
-+
-+    default:
-+      return FFI_BAD_ABI;
-+    }
-+
-+  closure->cif = cif;
-+  closure->fun = fun;
-+  closure->user_data = user_data;
-+  cacheflush (codeloc, FFI_TRAMPOLINE_SIZE, BCACHE);
-+
-+  return FFI_OK;
-+}
-diff --git a/js/src/ctypes/libffi/src/arc/ffitarget.h b/js/src/ctypes/libffi/src/arc/ffitarget.h
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/arc/ffitarget.h
-@@ -0,0 +1,53 @@
-+/* -----------------------------------------------------------------------
-+   ffitarget.h - Copyright (c) 2012  Anthony Green
-+                 Copyright (c) 2013  Synopsys, Inc. (www.synopsys.com)
-+   Target configuration macros for ARC.
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+   IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR
-+   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-+   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+   OTHER DEALINGS IN THE SOFTWARE.
-+
-+   ----------------------------------------------------------------------- */
-+
-+#ifndef LIBFFI_TARGET_H
-+#define LIBFFI_TARGET_H
-+
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
-+/* ---- Generic type definitions ----------------------------------------- */
-+
-+#ifndef LIBFFI_ASM
-+typedef unsigned long ffi_arg;
-+typedef signed long ffi_sarg;
-+
-+typedef enum ffi_abi
-+{
-+  FFI_FIRST_ABI = 0,
-+  FFI_ARCOMPACT,
-+  FFI_LAST_ABI,
-+  FFI_DEFAULT_ABI = FFI_ARCOMPACT
-+} ffi_abi;
-+#endif
-+
-+#define FFI_CLOSURES 		1
-+#define FFI_TRAMPOLINE_SIZE	12
-+#define FFI_NATIVE_RAW_API 	0
-+
-+#endif
-diff --git a/js/src/ctypes/libffi/src/arm/ffi.c b/js/src/ctypes/libffi/src/arm/ffi.c
---- a/js/src/ctypes/libffi/src/arm/ffi.c
-+++ b/js/src/ctypes/libffi/src/arm/ffi.c
-@@ -1,12 +1,16 @@
- /* -----------------------------------------------------------------------
--   ffi.c - Copyright (c) 1998, 2008  Red Hat, Inc.
--   
--   ARM Foreign Function Interface 
-+   ffi.c - Copyright (c) 2011 Timothy Wall
-+           Copyright (c) 2011 Plausible Labs Cooperative, Inc.
-+           Copyright (c) 2011 Anthony Green
-+	   Copyright (c) 2011 Free Software Foundation
-+           Copyright (c) 1998, 2008, 2011  Red Hat, Inc.
-+
-+   ARM Foreign Function Interface
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-    the following conditions:
-@@ -28,110 +32,205 @@
- #include <ffi_common.h>
- 
- #include <stdlib.h>
- 
- /* Forward declares. */
- static int vfp_type_p (ffi_type *);
- static void layout_vfp_args (ffi_cif *);
- 
-+int ffi_prep_args_SYSV(char *stack, extended_cif *ecif, float *vfp_space);
-+int ffi_prep_args_VFP(char *stack, extended_cif *ecif, float *vfp_space);
-+
-+static char* ffi_align(ffi_type **p_arg, char *argp)
-+{
-+  /* Align if necessary */
-+  register size_t alignment = (*p_arg)->alignment;
-+  if (alignment < 4)
-+  {
-+    alignment = 4;
-+  }
-+#ifdef _WIN32_WCE
-+  if (alignment > 4)
-+  {
-+    alignment = 4;
-+  }
-+#endif
-+  if ((alignment - 1) & (unsigned) argp)
-+  {
-+    argp = (char *) ALIGN(argp, alignment);
-+  }
-+
-+  if ((*p_arg)->type == FFI_TYPE_STRUCT)
-+  {
-+    argp = (char *) ALIGN(argp, 4);
-+  }
-+  return argp;
-+}
-+
-+static size_t ffi_put_arg(ffi_type **arg_type, void **arg, char *stack)
-+{
-+	register char* argp = stack;
-+	register ffi_type **p_arg = arg_type;
-+	register void **p_argv = arg;
-+	register size_t z = (*p_arg)->size;
-+  if (z < sizeof(int))
-+    {
-+		z = sizeof(int);
-+		switch ((*p_arg)->type)
-+      {
-+      case FFI_TYPE_SINT8:
-+        *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv);
-+        break;
-+        
-+      case FFI_TYPE_UINT8:
-+        *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv);
-+        break;
-+        
-+      case FFI_TYPE_SINT16:
-+        *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv);
-+        break;
-+        
-+      case FFI_TYPE_UINT16:
-+        *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv);
-+        break;
-+        
-+      case FFI_TYPE_STRUCT:
-+        memcpy(argp, *p_argv, (*p_arg)->size);
-+        break;
-+
-+      default:
-+        FFI_ASSERT(0);
-+      }
-+    }
-+  else if (z == sizeof(int))
-+    {
-+		if ((*p_arg)->type == FFI_TYPE_FLOAT)
-+			*(float *) argp = *(float *)(* p_argv);
-+		else
-+			*(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv);
-+    }
-+	else if (z == sizeof(double) && (*p_arg)->type == FFI_TYPE_DOUBLE)
-+		{
-+			*(double *) argp = *(double *)(* p_argv);
-+		}
-+  else
-+    {
-+      memcpy(argp, *p_argv, z);
-+    }
-+  return z;
-+}
- /* ffi_prep_args is called by the assembly routine once stack space
-    has been allocated for the function's arguments
-    
-    The vfp_space parameter is the load area for VFP regs, the return
-    value is cif->vfp_used (word bitset of VFP regs used for passing
-    arguments). These are only used for the VFP hard-float ABI.
- */
--int ffi_prep_args(char *stack, extended_cif *ecif, float *vfp_space)
-+int ffi_prep_args_SYSV(char *stack, extended_cif *ecif, float *vfp_space)
- {
--  register unsigned int i, vi = 0;
-+  register unsigned int i;
-   register void **p_argv;
-   register char *argp;
-   register ffi_type **p_arg;
--
-   argp = stack;
-+  
- 
-   if ( ecif->cif->flags == FFI_TYPE_STRUCT ) {
-     *(void **) argp = ecif->rvalue;
-     argp += 4;
-   }
- 
-   p_argv = ecif->avalue;
- 
-   for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
-        (i != 0);
--       i--, p_arg++)
-+       i--, p_arg++, p_argv++)
-     {
--      size_t z;
-+    argp = ffi_align(p_arg, argp);
-+    argp += ffi_put_arg(p_arg, p_argv, argp);
-+    }
-+
-+  return 0;
-+}
-+
-+int ffi_prep_args_VFP(char *stack, extended_cif *ecif, float *vfp_space)
-+{
-+  // make sure we are using FFI_VFP
-+  FFI_ASSERT(ecif->cif->abi == FFI_VFP);
-+
-+  register unsigned int i, vi = 0;
-+  register void **p_argv;
-+  register char *argp, *regp, *eo_regp;
-+  register ffi_type **p_arg;
-+  char stack_used = 0;
-+  char done_with_regs = 0;
-+  char is_vfp_type;
-+
-+  /* the first 4 words on the stack are used for values passed in core
-+   * registers. */
-+  regp = stack;
-+  eo_regp = argp = regp + 16;
-+  
-+
-+  /* if the function returns an FFI_TYPE_STRUCT in memory, that address is
-+   * passed in r0 to the function */
-+  if ( ecif->cif->flags == FFI_TYPE_STRUCT ) {
-+    *(void **) regp = ecif->rvalue;
-+    regp += 4;
-+  }
-+
-+  p_argv = ecif->avalue;
-+
-+  for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
-+       (i != 0);
-+       i--, p_arg++, p_argv++)
-+    {
-+      is_vfp_type = vfp_type_p (*p_arg);
- 
-       /* Allocated in VFP registers. */
--      if (ecif->cif->abi == FFI_VFP
--	  && vi < ecif->cif->vfp_nargs && vfp_type_p (*p_arg))
--	{
--	  float* vfp_slot = vfp_space + ecif->cif->vfp_args[vi++];
--	  if ((*p_arg)->type == FFI_TYPE_FLOAT)
--	    *((float*)vfp_slot) = *((float*)*p_argv);
--	  else if ((*p_arg)->type == FFI_TYPE_DOUBLE)
--	    *((double*)vfp_slot) = *((double*)*p_argv);
--	  else
--	    memcpy(vfp_slot, *p_argv, (*p_arg)->size);
--	  p_argv++;
--	  continue;
--	}
--
--      /* Align if necessary */
--      if (((*p_arg)->alignment - 1) & (unsigned) argp) {
--	argp = (char *) ALIGN(argp, (*p_arg)->alignment);
--      }
--
--      if ((*p_arg)->type == FFI_TYPE_STRUCT)
--	argp = (char *) ALIGN(argp, 4);
--
--	  z = (*p_arg)->size;
--	  if (z < sizeof(int))
--	    {
--	      z = sizeof(int);
--	      switch ((*p_arg)->type)
--		{
--		case FFI_TYPE_SINT8:
--		  *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv);
--		  break;
--		  
--		case FFI_TYPE_UINT8:
--		  *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv);
--		  break;
--		  
--		case FFI_TYPE_SINT16:
--		  *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv);
--		  break;
--		  
--		case FFI_TYPE_UINT16:
--		  *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv);
--		  break;
--		  
--		case FFI_TYPE_STRUCT:
--		  memcpy(argp, *p_argv, (*p_arg)->size);
--		  break;
--
--		default:
--		  FFI_ASSERT(0);
--		}
--	    }
--	  else if (z == sizeof(int))
--	    {
--	      *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv);
--	    }
--	  else
--	    {
--	      memcpy(argp, *p_argv, z);
--	    }
--	  p_argv++;
--	  argp += z;
-+      if(vi < ecif->cif->vfp_nargs && is_vfp_type)
-+        {
-+          char *vfp_slot = (char *)(vfp_space + ecif->cif->vfp_args[vi++]);
-+          ffi_put_arg(p_arg, p_argv, vfp_slot);
-+          continue;
-+        }
-+      /* Try allocating in core registers. */
-+      else if (!done_with_regs && !is_vfp_type)
-+        {
-+          char *tregp = ffi_align(p_arg, regp);
-+          size_t size = (*p_arg)->size; 
-+          size = (size < 4)? 4 : size; // pad
-+          /* Check if there is space left in the aligned register area to place
-+           * the argument */
-+          if(tregp + size <= eo_regp)
-+            {
-+              regp = tregp + ffi_put_arg(p_arg, p_argv, tregp);
-+              done_with_regs = (regp == argp);
-+              // ensure we did not write into the stack area
-+              FFI_ASSERT(regp <= argp);
-+              continue;
-+            }
-+          /* In case there are no arguments in the stack area yet, 
-+          the argument is passed in the remaining core registers and on the
-+          stack. */
-+          else if (!stack_used) 
-+            {
-+              stack_used = 1;
-+              done_with_regs = 1;
-+              argp = tregp + ffi_put_arg(p_arg, p_argv, tregp);
-+              FFI_ASSERT(eo_regp < argp);
-+              continue;
-+            }
-+        }
-+      /* Base case, arguments are passed on the stack */
-+      stack_used = 1;
-+      argp = ffi_align(p_arg, argp);
-+      argp += ffi_put_arg(p_arg, p_argv, argp);
-     }
--
-   /* Indicate the VFP registers used. */
-   return ecif->cif->vfp_used;
- }
- 
- /* Perform machine dependent cif processing */
- ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
- {
-   int type_code;
-@@ -181,36 +280,48 @@ ffi_status ffi_prep_cif_machdep(ffi_cif 
-      The VFP hard-float calling conventions are slightly more sophisticated than
-      the base calling conventions, so we do it here instead of in ffi_prep_args(). */
-   if (cif->abi == FFI_VFP)
-     layout_vfp_args (cif);
- 
-   return FFI_OK;
- }
- 
-+/* Perform machine dependent cif processing for variadic calls */
-+ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif,
-+				    unsigned int nfixedargs,
-+				    unsigned int ntotalargs)
-+{
-+  /* VFP variadic calls actually use the SYSV ABI */
-+  if (cif->abi == FFI_VFP)
-+	cif->abi = FFI_SYSV;
-+
-+  return ffi_prep_cif_machdep(cif);
-+}
-+
- /* Prototypes for assembly functions, in sysv.S */
- extern void ffi_call_SYSV (void (*fn)(void), extended_cif *, unsigned, unsigned, unsigned *);
- extern void ffi_call_VFP (void (*fn)(void), extended_cif *, unsigned, unsigned, unsigned *);
- 
- void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
- {
-   extended_cif ecif;
- 
-   int small_struct = (cif->flags == FFI_TYPE_INT 
- 		      && cif->rtype->type == FFI_TYPE_STRUCT);
-   int vfp_struct = (cif->flags == FFI_TYPE_STRUCT_VFP_FLOAT
- 		    || cif->flags == FFI_TYPE_STRUCT_VFP_DOUBLE);
- 
-+  unsigned int temp;
-+  
-   ecif.cif = cif;
-   ecif.avalue = avalue;
- 
--  unsigned int temp;
--  
-   /* If the return value is a struct and we don't have a return	*/
--  /* value address then we need to make one		        */
-+  /* value address then we need to make one			*/
- 
-   if ((rvalue == NULL) && 
-       (cif->flags == FFI_TYPE_STRUCT))
-     {
-       ecif.rvalue = alloca(cif->rtype->size);
-     }
-   else if (small_struct)
-     ecif.rvalue = &temp;
-@@ -224,159 +335,473 @@ void ffi_call(ffi_cif *cif, void (*fn)(v
- 
-   switch (cif->abi) 
-     {
-     case FFI_SYSV:
-       ffi_call_SYSV (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue);
-       break;
- 
-     case FFI_VFP:
-+#ifdef __ARM_EABI__
-       ffi_call_VFP (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue);
-       break;
-+#endif
- 
-     default:
-       FFI_ASSERT(0);
-       break;
-     }
-   if (small_struct)
--    memcpy (rvalue, &temp, cif->rtype->size);
-+    {
-+      FFI_ASSERT(rvalue != NULL);
-+      memcpy (rvalue, &temp, cif->rtype->size);
-+    }
-+    
-   else if (vfp_struct)
--    memcpy (rvalue, ecif.rvalue, cif->rtype->size);
-+    {
-+      FFI_ASSERT(rvalue != NULL);
-+      memcpy (rvalue, ecif.rvalue, cif->rtype->size);
-+    }
-+    
- }
- 
- /** private members **/
- 
- static void ffi_prep_incoming_args_SYSV (char *stack, void **ret,
- 					 void** args, ffi_cif* cif, float *vfp_stack);
- 
-+static void ffi_prep_incoming_args_VFP (char *stack, void **ret,
-+					 void** args, ffi_cif* cif, float *vfp_stack);
-+
- void ffi_closure_SYSV (ffi_closure *);
- 
- void ffi_closure_VFP (ffi_closure *);
- 
- /* This function is jumped to by the trampoline */
- 
--unsigned int
--ffi_closure_SYSV_inner (closure, respp, args, vfp_args)
--     ffi_closure *closure;
--     void **respp;
--     void *args;
--     void *vfp_args;
-+unsigned int FFI_HIDDEN
-+ffi_closure_inner (ffi_closure *closure, 
-+		   void **respp, void *args, void *vfp_args)
- {
-   // our various things...
-   ffi_cif       *cif;
-   void         **arg_area;
- 
-   cif         = closure->cif;
-   arg_area    = (void**) alloca (cif->nargs * sizeof (void*));  
- 
-   /* this call will initialize ARG_AREA, such that each
-    * element in that array points to the corresponding 
-    * value on the stack; and if the function returns
-    * a structure, it will re-set RESP to point to the
-    * structure return address.  */
--
--  ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args);
-+  if (cif->abi == FFI_VFP)
-+    ffi_prep_incoming_args_VFP(args, respp, arg_area, cif, vfp_args);
-+  else
-+    ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args);
- 
-   (closure->fun) (cif, *respp, arg_area, closure->user_data);
- 
-   return cif->flags;
- }
- 
- /*@-exportheader@*/
- static void 
- ffi_prep_incoming_args_SYSV(char *stack, void **rvalue,
- 			    void **avalue, ffi_cif *cif,
- 			    /* Used only under VFP hard-float ABI. */
- 			    float *vfp_stack)
- /*@=exportheader@*/
- {
--  register unsigned int i, vi = 0;
-+  register unsigned int i;
-   register void **p_argv;
-   register char *argp;
-   register ffi_type **p_arg;
- 
-   argp = stack;
- 
-   if ( cif->flags == FFI_TYPE_STRUCT ) {
-     *rvalue = *(void **) argp;
-     argp += 4;
-   }
- 
-   p_argv = avalue;
- 
-   for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++)
-     {
-       size_t z;
--      size_t alignment;
--  
--      if (cif->abi == FFI_VFP
--	  && vi < cif->vfp_nargs && vfp_type_p (*p_arg))
--	{
--	  *p_argv++ = (void*)(vfp_stack + cif->vfp_args[vi++]);
--	  continue;
--	}
- 
--      alignment = (*p_arg)->alignment;
--      if (alignment < 4)
--	alignment = 4;
--      /* Align if necessary */
--      if ((alignment - 1) & (unsigned) argp) {
--	argp = (char *) ALIGN(argp, alignment);
--      }
-+      argp = ffi_align(p_arg, argp);
- 
-       z = (*p_arg)->size;
- 
-       /* because we're little endian, this is what it turns into.   */
- 
-       *p_argv = (void*) argp;
- 
-       p_argv++;
-       argp += z;
-     }
-   
-   return;
- }
- 
-+/*@-exportheader@*/
-+static void 
-+ffi_prep_incoming_args_VFP(char *stack, void **rvalue,
-+			    void **avalue, ffi_cif *cif,
-+			    /* Used only under VFP hard-float ABI. */
-+			    float *vfp_stack)
-+/*@=exportheader@*/
-+{
-+  register unsigned int i, vi = 0;
-+  register void **p_argv;
-+  register char *argp, *regp, *eo_regp;
-+  register ffi_type **p_arg;
-+  char done_with_regs = 0;
-+  char stack_used = 0;
-+  char is_vfp_type;
-+
-+  FFI_ASSERT(cif->abi == FFI_VFP);
-+  regp = stack;
-+  eo_regp = argp = regp + 16;
-+
-+  if ( cif->flags == FFI_TYPE_STRUCT ) {
-+    *rvalue = *(void **) regp;
-+    regp += 4;
-+  }
-+
-+  p_argv = avalue;
-+
-+  for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++)
-+    {
-+    size_t z;
-+    is_vfp_type = vfp_type_p (*p_arg); 
-+
-+    if(vi < cif->vfp_nargs && is_vfp_type)
-+      {
-+        *p_argv++ = (void*)(vfp_stack + cif->vfp_args[vi++]);
-+        continue;
-+      }
-+    else if (!done_with_regs && !is_vfp_type)
-+      {
-+        char* tregp = ffi_align(p_arg, regp);
-+
-+        z = (*p_arg)->size; 
-+        z = (z < 4)? 4 : z; // pad
-+        
-+        /* if the arguments either fits into the registers or uses registers
-+         * and stack, while we haven't read other things from the stack */
-+        if(tregp + z <= eo_regp || !stack_used) 
-+          {
-+          /* because we're little endian, this is what it turns into. */
-+          *p_argv = (void*) tregp;
-+
-+          p_argv++;
-+          regp = tregp + z;
-+          // if we read past the last core register, make sure we have not read
-+          // from the stack before and continue reading after regp
-+          if(regp > eo_regp)
-+            {
-+            if(stack_used)
-+              {
-+                abort(); // we should never read past the end of the register
-+                         // are if the stack is already in use
-+              }
-+            argp = regp;
-+            }
-+          if(regp >= eo_regp)
-+            {
-+            done_with_regs = 1;
-+            stack_used = 1;
-+            }
-+          continue;
-+          }
-+      }
-+    stack_used = 1;
-+
-+    argp = ffi_align(p_arg, argp);
-+
-+    z = (*p_arg)->size;
-+
-+    /* because we're little endian, this is what it turns into.   */
-+
-+    *p_argv = (void*) argp;
-+
-+    p_argv++;
-+    argp += z;
-+    }
-+  
-+  return;
-+}
-+
- /* How to make a trampoline.  */
- 
-+extern unsigned int ffi_arm_trampoline[3];
-+
-+#if FFI_EXEC_TRAMPOLINE_TABLE
-+
-+#include <mach/mach.h>
-+#include <pthread.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+
-+extern void *ffi_closure_trampoline_table_page;
-+
-+typedef struct ffi_trampoline_table ffi_trampoline_table;
-+typedef struct ffi_trampoline_table_entry ffi_trampoline_table_entry;
-+
-+struct ffi_trampoline_table {
-+  /* contiguous writable and executable pages */
-+  vm_address_t config_page;
-+  vm_address_t trampoline_page;
-+
-+  /* free list tracking */
-+  uint16_t free_count;
-+  ffi_trampoline_table_entry *free_list;
-+  ffi_trampoline_table_entry *free_list_pool;
-+
-+  ffi_trampoline_table *prev;
-+  ffi_trampoline_table *next;
-+};
-+
-+struct ffi_trampoline_table_entry {
-+  void *(*trampoline)();
-+  ffi_trampoline_table_entry *next;
-+};
-+
-+/* Override the standard architecture trampoline size */
-+// XXX TODO - Fix
-+#undef FFI_TRAMPOLINE_SIZE
-+#define FFI_TRAMPOLINE_SIZE 12
-+
-+/* The trampoline configuration is placed at 4080 bytes prior to the trampoline's entry point */
-+#define FFI_TRAMPOLINE_CODELOC_CONFIG(codeloc) ((void **) (((uint8_t *) codeloc) - 4080));
-+
-+/* The first 16 bytes of the config page are unused, as they are unaddressable from the trampoline page. */
-+#define FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET 16
-+
-+/* Total number of trampolines that fit in one trampoline table */
-+#define FFI_TRAMPOLINE_COUNT ((PAGE_SIZE - FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET) / FFI_TRAMPOLINE_SIZE)
-+
-+static pthread_mutex_t ffi_trampoline_lock = PTHREAD_MUTEX_INITIALIZER;
-+static ffi_trampoline_table *ffi_trampoline_tables = NULL;
-+
-+static ffi_trampoline_table *
-+ffi_trampoline_table_alloc ()
-+{
-+  ffi_trampoline_table *table = NULL;
-+
-+  /* Loop until we can allocate two contiguous pages */
-+  while (table == NULL) {
-+    vm_address_t config_page = 0x0;
-+    kern_return_t kt;
-+
-+    /* Try to allocate two pages */
-+    kt = vm_allocate (mach_task_self (), &config_page, PAGE_SIZE*2, VM_FLAGS_ANYWHERE);
-+    if (kt != KERN_SUCCESS) {
-+      fprintf(stderr, "vm_allocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__);
-+      break;
-+    }
-+
-+    /* Now drop the second half of the allocation to make room for the trampoline table */
-+    vm_address_t trampoline_page = config_page+PAGE_SIZE;
-+    kt = vm_deallocate (mach_task_self (), trampoline_page, PAGE_SIZE);
-+    if (kt != KERN_SUCCESS) {
-+      fprintf(stderr, "vm_deallocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__);
-+      break;
-+    }
-+
-+    /* Remap the trampoline table to directly follow the config page */
-+    vm_prot_t cur_prot;
-+    vm_prot_t max_prot;
-+
-+    kt = vm_remap (mach_task_self (), &trampoline_page, PAGE_SIZE, 0x0, FALSE, mach_task_self (), (vm_address_t) &ffi_closure_trampoline_table_page, FALSE, &cur_prot, &max_prot, VM_INHERIT_SHARE);
-+
-+    /* If we lost access to the destination trampoline page, drop our config allocation mapping and retry */
-+    if (kt != KERN_SUCCESS) {
-+      /* Log unexpected failures */
-+      if (kt != KERN_NO_SPACE) {
-+        fprintf(stderr, "vm_remap() failure: %d at %s:%d\n", kt, __FILE__, __LINE__);
-+      }
-+
-+      vm_deallocate (mach_task_self (), config_page, PAGE_SIZE);
-+      continue;
-+    }
-+
-+    /* We have valid trampoline and config pages */
-+    table = calloc (1, sizeof(ffi_trampoline_table));
-+    table->free_count = FFI_TRAMPOLINE_COUNT;
-+    table->config_page = config_page;
-+    table->trampoline_page = trampoline_page;
-+
-+    /* Create and initialize the free list */
-+    table->free_list_pool = calloc(FFI_TRAMPOLINE_COUNT, sizeof(ffi_trampoline_table_entry));
-+
-+    uint16_t i;
-+    for (i = 0; i < table->free_count; i++) {
-+      ffi_trampoline_table_entry *entry = &table->free_list_pool[i];
-+      entry->trampoline = (void *) (table->trampoline_page + (i * FFI_TRAMPOLINE_SIZE));
-+
-+      if (i < table->free_count - 1)
-+        entry->next = &table->free_list_pool[i+1];
-+    }
-+
-+    table->free_list = table->free_list_pool;
-+  }
-+
-+  return table;
-+}
-+
-+void *
-+ffi_closure_alloc (size_t size, void **code)
-+{
-+  /* Create the closure */
-+  ffi_closure *closure = malloc(size);
-+  if (closure == NULL)
-+    return NULL;
-+
-+  pthread_mutex_lock(&ffi_trampoline_lock);
-+
-+  /* Check for an active trampoline table with available entries. */
-+  ffi_trampoline_table *table = ffi_trampoline_tables;
-+  if (table == NULL || table->free_list == NULL) {
-+    table = ffi_trampoline_table_alloc ();
-+    if (table == NULL) {
-+      free(closure);
-+      return NULL;
-+    }
-+
-+    /* Insert the new table at the top of the list */
-+    table->next = ffi_trampoline_tables;
-+    if (table->next != NULL)
-+        table->next->prev = table;
-+
-+    ffi_trampoline_tables = table;
-+  }
-+
-+  /* Claim the free entry */
-+  ffi_trampoline_table_entry *entry = ffi_trampoline_tables->free_list;
-+  ffi_trampoline_tables->free_list = entry->next;
-+  ffi_trampoline_tables->free_count--;
-+  entry->next = NULL;
-+
-+  pthread_mutex_unlock(&ffi_trampoline_lock);
-+
-+  /* Initialize the return values */
-+  *code = entry->trampoline;
-+  closure->trampoline_table = table;
-+  closure->trampoline_table_entry = entry;
-+
-+  return closure;
-+}
-+
-+void
-+ffi_closure_free (void *ptr)
-+{
-+  ffi_closure *closure = ptr;
-+
-+  pthread_mutex_lock(&ffi_trampoline_lock);
-+
-+  /* Fetch the table and entry references */
-+  ffi_trampoline_table *table = closure->trampoline_table;
-+  ffi_trampoline_table_entry *entry = closure->trampoline_table_entry;
-+
-+  /* Return the entry to the free list */
-+  entry->next = table->free_list;
-+  table->free_list = entry;
-+  table->free_count++;
-+
-+  /* If all trampolines within this table are free, and at least one other table exists, deallocate
-+   * the table */
-+  if (table->free_count == FFI_TRAMPOLINE_COUNT && ffi_trampoline_tables != table) {
-+    /* Remove from the list */
-+    if (table->prev != NULL)
-+      table->prev->next = table->next;
-+
-+    if (table->next != NULL)
-+      table->next->prev = table->prev;
-+
-+    /* Deallocate pages */
-+    kern_return_t kt;
-+    kt = vm_deallocate (mach_task_self (), table->config_page, PAGE_SIZE);
-+    if (kt != KERN_SUCCESS)
-+      fprintf(stderr, "vm_deallocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__);
-+
-+    kt = vm_deallocate (mach_task_self (), table->trampoline_page, PAGE_SIZE);
-+    if (kt != KERN_SUCCESS)
-+      fprintf(stderr, "vm_deallocate() failure: %d at %s:%d\n", kt, __FILE__, __LINE__);
-+
-+    /* Deallocate free list */
-+    free (table->free_list_pool);
-+    free (table);
-+  } else if (ffi_trampoline_tables != table) {
-+    /* Otherwise, bump this table to the top of the list */
-+    table->prev = NULL;
-+    table->next = ffi_trampoline_tables;
-+    if (ffi_trampoline_tables != NULL)
-+      ffi_trampoline_tables->prev = table;
-+
-+    ffi_trampoline_tables = table;
-+  }
-+
-+  pthread_mutex_unlock (&ffi_trampoline_lock);
-+
-+  /* Free the closure */
-+  free (closure);
-+}
-+
-+#else
-+
- #define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX)				\
- ({ unsigned char *__tramp = (unsigned char*)(TRAMP);			\
-    unsigned int  __fun = (unsigned int)(FUN);				\
-    unsigned int  __ctx = (unsigned int)(CTX);				\
--   *(unsigned int*) &__tramp[0] = 0xe92d000f; /* stmfd sp!, {r0-r3} */	\
--   *(unsigned int*) &__tramp[4] = 0xe59f0000; /* ldr r0, [pc] */	\
--   *(unsigned int*) &__tramp[8] = 0xe59ff000; /* ldr pc, [pc] */	\
-+   unsigned char *insns = (unsigned char *)(CTX);                       \
-+   memcpy (__tramp, ffi_arm_trampoline, sizeof ffi_arm_trampoline);     \
-    *(unsigned int*) &__tramp[12] = __ctx;				\
-    *(unsigned int*) &__tramp[16] = __fun;				\
--   __clear_cache((&__tramp[0]), (&__tramp[19]));			\
-+   __clear_cache((&__tramp[0]), (&__tramp[19])); /* Clear data mapping.  */ \
-+   __clear_cache(insns, insns + 3 * sizeof (unsigned int));             \
-+                                                 /* Clear instruction   \
-+                                                    mapping.  */        \
-  })
- 
-+#endif
- 
- /* the cif must already be prep'ed */
- 
- ffi_status
- ffi_prep_closure_loc (ffi_closure* closure,
- 		      ffi_cif* cif,
- 		      void (*fun)(ffi_cif*,void*,void**,void*),
- 		      void *user_data,
- 		      void *codeloc)
- {
-   void (*closure_func)(ffi_closure*) = NULL;
- 
-   if (cif->abi == FFI_SYSV)
-     closure_func = &ffi_closure_SYSV;
-+#ifdef __ARM_EABI__
-   else if (cif->abi == FFI_VFP)
-     closure_func = &ffi_closure_VFP;
-+#endif
-   else
--    FFI_ASSERT (0);
--    
-+    return FFI_BAD_ABI;
-+
-+#if FFI_EXEC_TRAMPOLINE_TABLE
-+  void **config = FFI_TRAMPOLINE_CODELOC_CONFIG(codeloc);
-+  config[0] = closure;
-+  config[1] = closure_func;
-+#else
-   FFI_INIT_TRAMPOLINE (&closure->tramp[0], \
- 		       closure_func,  \
- 		       codeloc);
--    
-+#endif
-+
-   closure->cif  = cif;
-   closure->user_data = user_data;
-   closure->fun  = fun;
- 
-   return FFI_OK;
- }
- 
- /* Below are routines for VFP hard-float support. */
-@@ -439,19 +864,19 @@ static int vfp_type_p (ffi_type *t)
- 		       ? FFI_TYPE_STRUCT_VFP_FLOAT
- 		       : FFI_TYPE_STRUCT_VFP_DOUBLE);
- 	}
-       return (int) t->type;
-     }
-   return 0;
- }
- 
--static void place_vfp_arg (ffi_cif *cif, ffi_type *t)
-+static int place_vfp_arg (ffi_cif *cif, ffi_type *t)
- {
--  int reg = cif->vfp_reg_free;
-+  short reg = cif->vfp_reg_free;
-   int nregs = t->size / sizeof (float);
-   int align = ((t->type == FFI_TYPE_STRUCT_VFP_FLOAT
- 		|| t->type == FFI_TYPE_FLOAT) ? 1 : 2);
-   /* Align register number. */
-   if ((reg & 1) && align == 2)
-     reg++;
-   while (reg + nregs <= 16)
-     {
-@@ -472,29 +897,35 @@ static void place_vfp_arg (ffi_cif *cif,
-       /* Update vfp_reg_free. */
-       if (cif->vfp_used & (1 << cif->vfp_reg_free))
- 	{
- 	  reg += nregs;
- 	  while (cif->vfp_used & (1 << reg))
- 	    reg += 1;
- 	  cif->vfp_reg_free = reg;
- 	}
--      return;
-+      return 0;
-     next_reg: ;
-     }
-+  // done, mark all regs as used
-+  cif->vfp_reg_free = 16;
-+  cif->vfp_used = 0xFFFF;
-+  return 1;
- }
- 
- static void layout_vfp_args (ffi_cif *cif)
- {
-   int i;
-   /* Init VFP fields */
-   cif->vfp_used = 0;
-   cif->vfp_nargs = 0;
-   cif->vfp_reg_free = 0;
-   memset (cif->vfp_args, -1, 16); /* Init to -1. */
- 
-   for (i = 0; i < cif->nargs; i++)
-     {
-       ffi_type *t = cif->arg_types[i];
--      if (vfp_type_p (t))
--	place_vfp_arg (cif, t);
-+      if (vfp_type_p (t) && place_vfp_arg (cif, t) == 1)
-+        {
-+          break;
-+        }
-     }
- }
-diff --git a/js/src/ctypes/libffi/src/arm/ffitarget.h b/js/src/ctypes/libffi/src/arm/ffitarget.h
---- a/js/src/ctypes/libffi/src/arm/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/arm/ffitarget.h
-@@ -1,10 +1,13 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
-+   ffitarget.h - Copyright (c) 2012  Anthony Green
-+                 Copyright (c) 2010  CodeSourcery
-+                 Copyright (c) 1996-2003  Red Hat, Inc.
-+
-    Target configuration macros for ARM.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-@@ -22,42 +25,47 @@
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
- 
-    ----------------------------------------------------------------------- */
- 
- #ifndef LIBFFI_TARGET_H
- #define LIBFFI_TARGET_H
- 
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
- #ifndef LIBFFI_ASM
- typedef unsigned long          ffi_arg;
- typedef signed long            ffi_sarg;
- 
- typedef enum ffi_abi {
-   FFI_FIRST_ABI = 0,
-   FFI_SYSV,
-   FFI_VFP,
-   FFI_LAST_ABI,
- #ifdef __ARM_PCS_VFP
--  FFI_DEFAULT_ABI = FFI_VFP
-+  FFI_DEFAULT_ABI = FFI_VFP,
- #else
--  FFI_DEFAULT_ABI = FFI_SYSV
-+  FFI_DEFAULT_ABI = FFI_SYSV,
- #endif
- } ffi_abi;
- #endif
- 
- #define FFI_EXTRA_CIF_FIELDS			\
-   int vfp_used;					\
-   short vfp_reg_free, vfp_nargs;		\
-   signed char vfp_args[16]			\
- 
- /* Internally used. */
- #define FFI_TYPE_STRUCT_VFP_FLOAT  (FFI_TYPE_LAST + 1)
- #define FFI_TYPE_STRUCT_VFP_DOUBLE (FFI_TYPE_LAST + 2)
- 
-+#define FFI_TARGET_SPECIFIC_VARIADIC
-+
- /* ---- Definitions for closures ----------------------------------------- */
- 
- #define FFI_CLOSURES 1
- #define FFI_TRAMPOLINE_SIZE 20
- #define FFI_NATIVE_RAW_API 0
- 
- #endif
--
-diff --git a/js/src/ctypes/libffi/src/arm/gentramp.sh b/js/src/ctypes/libffi/src/arm/gentramp.sh
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/arm/gentramp.sh
-@@ -0,0 +1,118 @@
-+#!/bin/sh
-+
-+# -----------------------------------------------------------------------
-+#  gentramp.sh - Copyright (c) 2010, Plausible Labs Cooperative, Inc.
-+#  
-+#  ARM Trampoline Page Generator
-+#
-+#  Permission is hereby granted, free of charge, to any person obtaining
-+#  a copy of this software and associated documentation files (the
-+#  ``Software''), to deal in the Software without restriction, including
-+#  without limitation the rights to use, copy, modify, merge, publish,
-+#  distribute, sublicense, and/or sell copies of the Software, and to
-+#  permit persons to whom the Software is furnished to do so, subject to
-+#  the following conditions:
-+#
-+#  The above copyright notice and this permission notice shall be included
-+#  in all copies or substantial portions of the Software.
-+#
-+#  THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+#  NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+#  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+#  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+#  DEALINGS IN THE SOFTWARE.
-+#  -----------------------------------------------------------------------
-+
-+PROGNAME=$0
-+
-+# Each trampoline is exactly 3 instructions, or 12 bytes. If any of these values change,
-+# the entire arm trampoline implementation must be updated to match, too.
-+
-+# Size of an individual trampoline, in bytes
-+TRAMPOLINE_SIZE=12
-+
-+# Page size, in bytes
-+PAGE_SIZE=4096
-+
-+# Compute the size of the reachable config page; The first 16 bytes of the config page
-+# are unreachable due to our maximum pc-relative ldr offset.
-+PAGE_AVAIL=`expr $PAGE_SIZE - 16`
-+
-+# Compute the number of of available trampolines. 
-+TRAMPOLINE_COUNT=`expr $PAGE_AVAIL / $TRAMPOLINE_SIZE`
-+
-+header () {
-+    echo "# GENERATED CODE - DO NOT EDIT"
-+    echo "# This file was generated by $PROGNAME"
-+    echo ""
-+
-+    # Write out the license header
-+cat << EOF
-+#  Copyright (c) 2010, Plausible Labs Cooperative, Inc.
-+#  
-+#  Permission is hereby granted, free of charge, to any person obtaining
-+#  a copy of this software and associated documentation files (the
-+#  ``Software''), to deal in the Software without restriction, including
-+#  without limitation the rights to use, copy, modify, merge, publish,
-+#  distribute, sublicense, and/or sell copies of the Software, and to
-+#  permit persons to whom the Software is furnished to do so, subject to
-+#  the following conditions:
-+#
-+#  The above copyright notice and this permission notice shall be included
-+#  in all copies or substantial portions of the Software.
-+#
-+#  THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+#  NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+#  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+#  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+#  DEALINGS IN THE SOFTWARE.
-+#  -----------------------------------------------------------------------
-+
-+EOF
-+
-+    # Write out the trampoline table, aligned to the page boundary
-+    echo ".text"
-+    echo ".align 12"
-+    echo ".globl _ffi_closure_trampoline_table_page"
-+    echo "_ffi_closure_trampoline_table_page:"
-+}
-+
-+
-+# WARNING - Don't modify the trampoline code size without also updating the relevant libffi code
-+trampoline () {
-+    cat << END
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+END
-+}
-+
-+main () {
-+    # Write out the header
-+    header
-+
-+    # Write out the trampolines
-+    local i=0
-+    while [ $i -lt ${TRAMPOLINE_COUNT} ]; do
-+        trampoline
-+        local i=`expr $i + 1`
-+    done
-+}
-+
-+main
-diff --git a/js/src/ctypes/libffi/src/arm/sysv.S b/js/src/ctypes/libffi/src/arm/sysv.S
---- a/js/src/ctypes/libffi/src/arm/sysv.S
-+++ b/js/src/ctypes/libffi/src/arm/sysv.S
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------------
--   sysv.S - Copyright (c) 1998, 2008 Red Hat, Inc.
-+   sysv.S - Copyright (c) 1998, 2008, 2011 Red Hat, Inc.
-+	    Copyright (c) 2011 Plausible Labs Cooperative, Inc.
-    
-    ARM Foreign Function Interface 
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -34,25 +35,35 @@
- #define CONCAT1(a, b) CONCAT2(a, b)
- #define CONCAT2(a, b) a ## b
- 
- /* Use the right prefix for global labels.  */
- #define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
- #else
- #define CNAME(x) x
- #endif
-+#ifdef __APPLE__
-+#define ENTRY(x) .globl _##x; _##x:
-+#else
- #define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x):
-+#endif /* __APPLE__ */
- #endif
- 
- #ifdef __ELF__
- #define LSYM(x) .x
- #else
- #define LSYM(x) x
- #endif
- 
-+/* Use the SOFTFP return value ABI on Mac OS X, as per the iOS ABI
-+  Function Call Guide */
-+#ifdef __APPLE__
-+#define __SOFTFP__
-+#endif
-+
- /* We need a better way of testing for this, but for now, this is all 
-    we can do.  */
- @ This selects the minimum architecture level required.
- #define __ARM_ARCH__ 3
- 
- #if defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__)
- # undef __ARM_ARCH__
- # define __ARM_ARCH__ 4
-@@ -93,40 +104,37 @@
- 
- /* Conditionally compile unwinder directives.  */
- #ifdef __ARM_EABI__
- #define UNWIND
- #else
- #define UNWIND @
- #endif	
- 
--	
-+.syntax unified
-+
- #if defined(__thumb__) && !defined(__THUMB_INTERWORK__)
--.macro	ARM_FUNC_START name
--	.text
--	.align 0
--	.thumb
--	.thumb_func
--	ENTRY(\name)
--	bx	pc
--	nop
--	.arm
-+#define ARM_FUNC_START(name) \
-+	.text; \
-+	.align 2; \
-+	.thumb; \
-+	.thumb_func; \
-+	ENTRY(name); \
-+	bx pc; \
-+	nop; \
-+	.arm; \
-+	UNWIND .fnstart; \
-+_L__##name:
-+#else
-+#define ARM_FUNC_START(name) \
-+	.text; \
-+	.align 2; \
-+	.arm; \
-+	ENTRY(name); \
- 	UNWIND .fnstart
--/* A hook to tell gdb that we've switched to ARM mode.  Also used to call
--   directly from other local arm routines.  */
--_L__\name:		
--.endm
--#else
--.macro	ARM_FUNC_START name
--	.text
--	.align 0
--	.arm
--	ENTRY(\name)
--	UNWIND .fnstart
--.endm
- #endif
- 
- .macro	RETLDM	regs=, cond=, dirn=ia
- #if defined (__INTERWORKING__)
- 	.ifc "\regs",""
- 	ldr\cond	lr, [sp], #4
- 	.else
- 	ldm\cond\dirn	sp!, {\regs, lr}
-@@ -136,41 +144,40 @@
- 	.ifc "\regs",""
- 	ldr\cond	pc, [sp], #4
- 	.else
- 	ldm\cond\dirn	sp!, {\regs, pc}
- 	.endif
- #endif
- .endm
- 
--
--	@ r0:   fn
-+	@ r0:   ffi_prep_args
- 	@ r1:   &ecif
- 	@ r2:   cif->bytes
- 	@ r3:   fig->flags
- 	@ sp+0: ecif.rvalue
- 
- 	@ This assumes we are using gas.
--ARM_FUNC_START ffi_call_SYSV
-+ARM_FUNC_START(ffi_call_SYSV)
- 	@ Save registers
-         stmfd	sp!, {r0-r3, fp, lr}
- 	UNWIND .save	{r0-r3, fp, lr}
- 	mov	fp, sp
- 
- 	UNWIND .setfp	fp, sp
- 
- 	@ Make room for all of the new args.
- 	sub	sp, fp, r2
- 
- 	@ Place all of the ffi_prep_args in position
- 	mov	r0, sp
- 	@     r1 already set
- 
- 	@ Call ffi_prep_args(stack, &ecif)
--	bl	ffi_prep_args
-+	bl	CNAME(ffi_prep_args_SYSV)
- 
- 	@ move first 4 parameters in registers
- 	ldmia	sp, {r0-r3}
- 
- 	@ and adjust stack
- 	sub	lr, fp, sp	@ cif->bytes == fp - sp
- 	ldr	ip, [fp]	@ load fn() in advance
- 	cmp	lr, #16
-@@ -201,156 +208,65 @@ ARM_FUNC_START ffi_call_SYSV
- 	streq	r0, [r2]
- 	beq	LSYM(Lepilogue)
- 
- 	@ return INT64
- 	cmp	r3, #FFI_TYPE_SINT64
- #if defined(__SOFTFP__) || defined(__ARM_EABI__)
- 	cmpne	r3, #FFI_TYPE_DOUBLE
- #endif
--	stmeqia	r2, {r0, r1}
-+	stmiaeq	r2, {r0, r1}
- 
- #if !defined(__SOFTFP__) && !defined(__ARM_EABI__)
- 	beq	LSYM(Lepilogue)
- 
- @ return FLOAT
- 	cmp	r3, #FFI_TYPE_FLOAT
- 	stfeqs	f0, [r2]
- 	beq	LSYM(Lepilogue)
- 
- @ return DOUBLE or LONGDOUBLE
- 	cmp	r3, #FFI_TYPE_DOUBLE
- 	stfeqd	f0, [r2]
- #endif
- 
- LSYM(Lepilogue):
--	RETLDM	"r0-r3,fp"
-+#if defined (__INTERWORKING__)
-+	ldmia   sp!, {r0-r3,fp, lr}
-+	bx	lr
-+#else
-+	ldmia   sp!, {r0-r3,fp, pc}
-+#endif
- 
- .ffi_call_SYSV_end:
- 	UNWIND .fnend
-+#ifdef __ELF__
-         .size    CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV)
-+#endif
- 
- 
--/* Below are VFP hard-float ABI call and closure implementations.
--   Add VFP FPU directive here. */
--	.fpu	vfp
--
--	@ r0:   fn
--	@ r1:   &ecif
--	@ r2:   cif->bytes
--	@ r3:   fig->flags
--	@ sp+0: ecif.rvalue
--
--ARM_FUNC_START ffi_call_VFP
--	@ Save registers
--        stmfd	sp!, {r0-r3, fp, lr}
--	UNWIND .save	{r0-r3, fp, lr}
--	mov	fp, sp
--	UNWIND .setfp	fp, sp
--
--	@ Make room for all of the new args.
--	sub	sp, sp, r2
--
--	@ Make room for loading VFP args
--	sub	sp, sp, #64
--
--	@ Place all of the ffi_prep_args in position
--	mov	r0, sp
--	@     r1 already set
--	sub	r2, fp, #64   @ VFP scratch space
--
--	@ Call ffi_prep_args(stack, &ecif, vfp_space)
--	bl	ffi_prep_args
--
--	@ Load VFP register args if needed
--	cmp	r0, #0
--	beq	LSYM(Lbase_args)
--
--	@ Load only d0 if possible
--	cmp	r0, #3
--	sub	ip, fp, #64
--	flddle	d0, [ip]
--	fldmiadgt	ip, {d0-d7}
--
--LSYM(Lbase_args):
--	@ move first 4 parameters in registers
--	ldmia	sp, {r0-r3}
--
--	@ and adjust stack
--	sub	lr, ip, sp	@ cif->bytes == (fp - 64) - sp
--	ldr	ip, [fp]	@ load fn() in advance
--        cmp	lr, #16
--	movhs	lr, #16
--        add	sp, sp, lr
--
--	@ call (fn) (...)
--	call_reg(ip)
--
--	@ Remove the space we pushed for the args
--	mov	sp, fp
--
--	@ Load r2 with the pointer to storage for
--	@ the return value
--	ldr	r2, [sp, #24]
--
--	@ Load r3 with the return type code 
--	ldr	r3, [sp, #12]
--
--	@ If the return value pointer is NULL,
--	@ assume no return value.
--	cmp	r2, #0
--	beq	LSYM(Lepilogue_vfp)
--	
--	cmp	r3, #FFI_TYPE_INT
--	streq	r0, [r2]
--	beq	LSYM(Lepilogue_vfp)
--
--	cmp	r3, #FFI_TYPE_SINT64
--	stmeqia	r2, {r0, r1}
--	beq	LSYM(Lepilogue_vfp)
--
--	cmp	r3, #FFI_TYPE_FLOAT
--	fstseq	s0, [r2]
--	beq	LSYM(Lepilogue_vfp)
--	
--	cmp	r3, #FFI_TYPE_DOUBLE
--	fstdeq	d0, [r2]
--	beq	LSYM(Lepilogue_vfp)
--
--	cmp	r3, #FFI_TYPE_STRUCT_VFP_FLOAT
--	cmpne	r3, #FFI_TYPE_STRUCT_VFP_DOUBLE
--	fstmiadeq	r2, {d0-d3}
--
--LSYM(Lepilogue_vfp):
--	RETLDM	"r0-r3,fp"
--
--.ffi_call_VFP_end:
--	UNWIND .fnend
--        .size    CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP)
--	
--	
- /*
- 	unsigned int FFI_HIDDEN
--	ffi_closure_SYSV_inner (closure, respp, args)
-+	ffi_closure_inner (closure, respp, args)
- 	     ffi_closure *closure;
- 	     void **respp;
-   	     void *args;
- */
- 
--ARM_FUNC_START ffi_closure_SYSV
-+ARM_FUNC_START(ffi_closure_SYSV)
- 	UNWIND .pad #16
- 	add	ip, sp, #16
- 	stmfd	sp!, {ip, lr}
- 	UNWIND .save	{r0, lr}
- 	add	r2, sp, #8
--	.pad #16
-+	UNWIND .pad #16
- 	sub	sp, sp, #16
- 	str	sp, [sp, #8]
- 	add	r1, sp, #8
--	bl	ffi_closure_SYSV_inner
-+	bl	CNAME(ffi_closure_inner)
- 	cmp	r0, #FFI_TYPE_INT
- 	beq	.Lretint
- 
- 	cmp	r0, #FFI_TYPE_FLOAT
- #if defined(__SOFTFP__) || defined(__ARM_EABI__)
- 	beq	.Lretint
- #else
- 	beq	.Lretfloat
-@@ -392,33 +308,136 @@ ARM_FUNC_START ffi_closure_SYSV
- 	b	.Lclosure_epilogue
- .Lretlongdouble:
- 	ldfd	f0, [sp]
- 	b	.Lclosure_epilogue
- #endif
- 
- .ffi_closure_SYSV_end:
- 	UNWIND .fnend
-+#ifdef __ELF__
-         .size    CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV)
-+#endif
- 
- 
--ARM_FUNC_START ffi_closure_VFP
-+/* Below are VFP hard-float ABI call and closure implementations.
-+   Add VFP FPU directive here. This is only compiled into the library
-+   under EABI.  */
-+#ifdef __ARM_EABI__
-+	.fpu	vfp
-+
-+	@ r0:   fn
-+	@ r1:   &ecif
-+	@ r2:   cif->bytes
-+	@ r3:   fig->flags
-+	@ sp+0: ecif.rvalue
-+
-+ARM_FUNC_START(ffi_call_VFP)
-+	@ Save registers
-+        stmfd	sp!, {r0-r3, fp, lr}
-+	UNWIND .save	{r0-r3, fp, lr}
-+	mov	fp, sp
-+	UNWIND .setfp	fp, sp
-+
-+	@ Make room for all of the new args.
-+	sub	sp, sp, r2
-+
-+	@ Make room for loading VFP args
-+	sub	sp, sp, #64
-+
-+	@ Place all of the ffi_prep_args in position
-+	mov	r0, sp
-+	@     r1 already set
-+	sub	r2, fp, #64   @ VFP scratch space
-+
-+	@ Call ffi_prep_args(stack, &ecif, vfp_space)
-+	bl	CNAME(ffi_prep_args_VFP)
-+
-+	@ Load VFP register args if needed
-+	cmp	r0, #0
-+	mov	ip, fp
-+	beq	LSYM(Lbase_args)
-+
-+	@ Load only d0 if possible
-+	cmp	r0, #3
-+	sub	ip, fp, #64
-+	flddle	d0, [ip]
-+	fldmiadgt	ip, {d0-d7}
-+
-+LSYM(Lbase_args):
-+	@ move first 4 parameters in registers
-+	ldmia	sp, {r0-r3}
-+
-+	@ and adjust stack
-+	sub	lr, ip, sp	@ cif->bytes == (fp - 64) - sp
-+	ldr	ip, [fp]	@ load fn() in advance
-+        cmp	lr, #16
-+	movhs	lr, #16
-+        add	sp, sp, lr
-+
-+	@ call (fn) (...)
-+	call_reg(ip)
-+
-+	@ Remove the space we pushed for the args
-+	mov	sp, fp
-+
-+	@ Load r2 with the pointer to storage for
-+	@ the return value
-+	ldr	r2, [sp, #24]
-+
-+	@ Load r3 with the return type code 
-+	ldr	r3, [sp, #12]
-+
-+	@ If the return value pointer is NULL,
-+	@ assume no return value.
-+	cmp	r2, #0
-+	beq	LSYM(Lepilogue_vfp)
-+
-+	cmp	r3, #FFI_TYPE_INT
-+	streq	r0, [r2]
-+	beq	LSYM(Lepilogue_vfp)
-+
-+	cmp	r3, #FFI_TYPE_SINT64
-+	stmeqia	r2, {r0, r1}
-+	beq	LSYM(Lepilogue_vfp)
-+
-+	cmp	r3, #FFI_TYPE_FLOAT
-+	fstseq	s0, [r2]
-+	beq	LSYM(Lepilogue_vfp)
-+	
-+	cmp	r3, #FFI_TYPE_DOUBLE
-+	fstdeq	d0, [r2]
-+	beq	LSYM(Lepilogue_vfp)
-+
-+	cmp	r3, #FFI_TYPE_STRUCT_VFP_FLOAT
-+	cmpne	r3, #FFI_TYPE_STRUCT_VFP_DOUBLE
-+	fstmiadeq	r2, {d0-d3}
-+
-+LSYM(Lepilogue_vfp):
-+	RETLDM	"r0-r3,fp"
-+
-+.ffi_call_VFP_end:
-+	UNWIND .fnend
-+        .size    CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP)
-+
-+
-+ARM_FUNC_START(ffi_closure_VFP)
- 	fstmfdd	sp!, {d0-d7}
- 	@ r0-r3, then d0-d7
- 	UNWIND .pad #80
- 	add	ip, sp, #80
- 	stmfd	sp!, {ip, lr}
- 	UNWIND .save	{r0, lr}
- 	add	r2, sp, #72
- 	add	r3, sp, #8
--	.pad #72
-+	UNWIND .pad #72
- 	sub	sp, sp, #72
- 	str	sp, [sp, #64]
- 	add	r1, sp, #64
--	bl	ffi_closure_SYSV_inner
-+	bl	CNAME(ffi_closure_inner)
- 
- 	cmp	r0, #FFI_TYPE_INT
- 	beq	.Lretint_vfp
- 
- 	cmp	r0, #FFI_TYPE_FLOAT
- 	beq	.Lretfloat_vfp
- 
- 	cmp	r0, #FFI_TYPE_DOUBLE
-@@ -455,12 +474,18 @@ ARM_FUNC_START ffi_closure_VFP
- 	b	.Lclosure_epilogue_vfp
- .Lretdouble_struct_vfp:
- 	fldmiad	sp, {d0-d3}
- 	b	.Lclosure_epilogue_vfp
- 
- .ffi_closure_VFP_end:
- 	UNWIND .fnend
-         .size    CNAME(ffi_closure_VFP),.ffi_closure_VFP_end-CNAME(ffi_closure_VFP)
-+#endif
-+
-+ENTRY(ffi_arm_trampoline)
-+	stmfd sp!, {r0-r3}
-+	ldr r0, [pc]
-+	ldr pc, [pc]
- 
- #if defined __ELF__ && defined __linux__
- 	.section	.note.GNU-stack,"",%progbits
- #endif
-diff --git a/js/src/ctypes/libffi/src/arm/trampoline.S b/js/src/ctypes/libffi/src/arm/trampoline.S
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/arm/trampoline.S
-@@ -0,0 +1,4450 @@
-+# GENERATED CODE - DO NOT EDIT
-+# This file was generated by src/arm/gentramp.sh
-+
-+#  Copyright (c) 2010, Plausible Labs Cooperative, Inc.
-+#  
-+#  Permission is hereby granted, free of charge, to any person obtaining
-+#  a copy of this software and associated documentation files (the
-+#  Software''), to deal in the Software without restriction, including
-+#  without limitation the rights to use, copy, modify, merge, publish,
-+#  distribute, sublicense, and/or sell copies of the Software, and to
-+#  permit persons to whom the Software is furnished to do so, subject to
-+#  the following conditions:
-+#
-+#  The above copyright notice and this permission notice shall be included
-+#  in all copies or substantial portions of the Software.
-+#
-+#  THE SOFTWARE IS PROVIDED AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+#  NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+#  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+#  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+#  DEALINGS IN THE SOFTWARE.
-+#  -----------------------------------------------------------------------
-+
-+.text
-+.align 12
-+.globl _ffi_closure_trampoline_table_page
-+_ffi_closure_trampoline_table_page:
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-+
-+    // trampoline
-+    // Save to stack
-+    stmfd sp!, {r0-r3}
-+
-+    // Load the context argument from the config page.
-+    // This places the first usable config value at _ffi_closure_trampoline_table-4080
-+    // This accounts for the above 4-byte stmfd instruction, plus 8 bytes constant when loading from pc.
-+    ldr r0, [pc, #-4092]
-+
-+    // Load the jump address from the config page.
-+    ldr pc, [pc, #-4092]
-+
-diff --git a/js/src/ctypes/libffi/src/avr32/ffi.c b/js/src/ctypes/libffi/src/avr32/ffi.c
---- a/js/src/ctypes/libffi/src/avr32/ffi.c
-+++ b/js/src/ctypes/libffi/src/avr32/ffi.c
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------------
--   ffi.c - Copyright (c) 2009  Bradley Smith <brad@brad-smith.co.uk>
-+   ffi.c - Copyright (c) 2011  Anthony Green
-+           Copyright (c) 2009  Bradley Smith <brad@brad-smith.co.uk>
- 
-    AVR32 Foreign Function Interface
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -389,17 +390,18 @@ unsigned int ffi_closure_SYSV_inner(ffi_
- 
-     return cif->flags;
- }
- 
- ffi_status ffi_prep_closure_loc(ffi_closure* closure, ffi_cif* cif,
-     void (*fun)(ffi_cif*, void*, void**, void*), void *user_data,
-     void *codeloc)
- {
--    FFI_ASSERT(cif->abi == FFI_SYSV);
-+    if (cif->abi != FFI_SYSV)
-+      return FFI_BAD_ABI;
- 
-     unsigned char *__tramp = (unsigned char*)(&closure->tramp[0]);
-     unsigned int  __fun = (unsigned int)(&ffi_closure_SYSV);
-     unsigned int  __ctx = (unsigned int)(codeloc);
-     unsigned int  __rstruct_flag = (unsigned int)(cif->rstruct_flag);
-     unsigned int  __inner = (unsigned int)(&ffi_closure_SYSV_inner);
-     *(unsigned int*) &__tramp[0] = 0xebcd1f00;    /* pushm  r8-r12 */
-     *(unsigned int*) &__tramp[4] = 0xfefc0010;    /* ld.w   r12, pc[16] */
-diff --git a/js/src/ctypes/libffi/src/avr32/ffitarget.h b/js/src/ctypes/libffi/src/avr32/ffitarget.h
---- a/js/src/ctypes/libffi/src/avr32/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/avr32/ffitarget.h
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 2009  Bradley Smith <brad@brad-smith.co.uk>
-+   ffitarget.h - Copyright (c) 2012  Anthony Green
-+                 Copyright (c) 2009  Bradley Smith <brad@brad-smith.co.uk>
-    Target configuration macros for AVR32.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-@@ -22,16 +23,20 @@
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
- 
-    ----------------------------------------------------------------------- */
- 
- #ifndef LIBFFI_TARGET_H
- #define LIBFFI_TARGET_H
- 
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
- #ifndef LIBFFI_ASM
- typedef unsigned long          ffi_arg;
- typedef signed long            ffi_sarg;
- 
- typedef enum ffi_abi {
-   FFI_FIRST_ABI = 0,
-   FFI_SYSV,
-   FFI_LAST_ABI,
-diff --git a/js/src/ctypes/libffi/src/bfin/ffi.c b/js/src/ctypes/libffi/src/bfin/ffi.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/bfin/ffi.c
-@@ -0,0 +1,196 @@
-+/* -----------------------------------------------------------------------
-+   ffi.c - Copyright (c) 2012  Alexandre K. I. de Mendonca <alexandre.keunecke@gmail.com>,
-+							   Paulo Pizarro <paulo.pizarro@gmail.com>
-+
-+   Blackfin Foreign Function Interface
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+   DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+#include <ffi.h>
-+#include <ffi_common.h>
-+
-+#include <stdlib.h>
-+#include <stdio.h>
-+
-+/* Maximum number of GPRs available for argument passing.  */
-+#define MAX_GPRARGS 3
-+
-+/*
-+ * Return types
-+ */
-+#define FFIBFIN_RET_VOID 0
-+#define FFIBFIN_RET_BYTE 1
-+#define FFIBFIN_RET_HALFWORD 2
-+#define FFIBFIN_RET_INT64 3
-+#define FFIBFIN_RET_INT32 4
-+
-+/*====================================================================*/
-+/*                          PROTOTYPE          *
-+ /*====================================================================*/
-+void ffi_prep_args(unsigned char *, extended_cif *);
-+
-+/*====================================================================*/
-+/*                          Externals                                 */
-+/*                          (Assembly)                                */
-+/*====================================================================*/
-+
-+extern void ffi_call_SYSV(unsigned, extended_cif *, void(*)(unsigned char *, extended_cif *), unsigned, void *, void(*fn)(void));
-+
-+/*====================================================================*/
-+/*                          Implementation                            */
-+/*                                                            */
-+/*====================================================================*/
-+
-+
-+/*
-+ * This function calculates the return type (size) based on type.
-+ */
-+
-+ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
-+{
-+   /* --------------------------------------*
-+    *   Return handling                *
-+    * --------------------------------------*/
-+   switch (cif->rtype->type) {
-+      case FFI_TYPE_VOID:
-+         cif->flags = FFIBFIN_RET_VOID;
-+         break;
-+      case FFI_TYPE_UINT16:
-+      case FFI_TYPE_SINT16:
-+         cif->flags = FFIBFIN_RET_HALFWORD;
-+         break;
-+      case FFI_TYPE_UINT8:
-+         cif->flags = FFIBFIN_RET_BYTE;
-+         break;
-+      case FFI_TYPE_INT:
-+      case FFI_TYPE_UINT32:
-+      case FFI_TYPE_SINT32:
-+      case FFI_TYPE_FLOAT:
-+      case FFI_TYPE_POINTER:
-+      case FFI_TYPE_SINT8:
-+         cif->flags = FFIBFIN_RET_INT32;
-+         break;
-+      case FFI_TYPE_SINT64:
-+      case FFI_TYPE_UINT64:
-+      case FFI_TYPE_DOUBLE:
-+          cif->flags = FFIBFIN_RET_INT64;
-+          break;
-+      case FFI_TYPE_STRUCT:
-+         if (cif->rtype->size <= 4){
-+        	 cif->flags = FFIBFIN_RET_INT32;
-+         }else if (cif->rtype->size == 8){
-+        	 cif->flags = FFIBFIN_RET_INT64;
-+         }else{
-+        	 //it will return via a hidden pointer in P0
-+        	 cif->flags = FFIBFIN_RET_VOID;
-+         }
-+         break;
-+      default:
-+         FFI_ASSERT(0);
-+         break;
-+   }
-+   return FFI_OK;
-+}
-+
-+/*
-+ * This will prepare the arguments and will call the assembly routine
-+ * cif = the call interface
-+ * fn = the function to be called
-+ * rvalue = the return value
-+ * avalue = the arguments
-+ */
-+void ffi_call(ffi_cif *cif, void(*fn)(void), void *rvalue, void **avalue)
-+{
-+   int ret_type = cif->flags;
-+   extended_cif ecif;
-+   ecif.cif = cif;
-+   ecif.avalue = avalue;
-+   ecif.rvalue = rvalue;
-+
-+   switch (cif->abi) {
-+      case FFI_SYSV:
-+         ffi_call_SYSV(cif->bytes, &ecif, ffi_prep_args, ret_type, ecif.rvalue, fn);
-+         break;
-+      default:
-+         FFI_ASSERT(0);
-+         break;
-+   }
-+}
-+
-+
-+/*
-+* This function prepares the parameters (copies them from the ecif to the stack)
-+*  to call the function (ffi_prep_args is called by the assembly routine in file
-+*  sysv.S, which also calls the actual function)
-+*/
-+void ffi_prep_args(unsigned char *stack, extended_cif *ecif)
-+{
-+   register unsigned int i = 0;
-+   void **p_argv;
-+   unsigned char *argp;
-+   ffi_type **p_arg;
-+   argp = stack;
-+   p_argv = ecif->avalue;
-+   for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
-+        (i != 0);
-+        i--, p_arg++) {
-+      size_t z;
-+      z = (*p_arg)->size;
-+      if (z < sizeof(int)) {
-+         z = sizeof(int);
-+         switch ((*p_arg)->type) {
-+            case FFI_TYPE_SINT8: {
-+                  signed char v = *(SINT8 *)(* p_argv);
-+                  signed int t = v;
-+                  *(signed int *) argp = t;
-+               }
-+               break;
-+            case FFI_TYPE_UINT8: {
-+                  unsigned char v = *(UINT8 *)(* p_argv);
-+                  unsigned int t = v;
-+                  *(unsigned int *) argp = t;
-+               }
-+               break;
-+            case FFI_TYPE_SINT16:
-+               *(signed int *) argp = (signed int) * (SINT16 *)(* p_argv);
-+               break;
-+            case FFI_TYPE_UINT16:
-+               *(unsigned int *) argp = (unsigned int) * (UINT16 *)(* p_argv);
-+               break;
-+            case FFI_TYPE_STRUCT:
-+               memcpy(argp, *p_argv, (*p_arg)->size);
-+               break;
-+            default:
-+               FFI_ASSERT(0);
-+               break;
-+         }
-+      } else if (z == sizeof(int)) {
-+         *(unsigned int *) argp = (unsigned int) * (UINT32 *)(* p_argv);
-+      } else {
-+         memcpy(argp, *p_argv, z);
-+      }
-+      p_argv++;
-+      argp += z;
-+   }
-+}
-+
-+
-+
-diff --git a/js/src/ctypes/libffi/src/bfin/ffitarget.h b/js/src/ctypes/libffi/src/bfin/ffitarget.h
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/bfin/ffitarget.h
-@@ -0,0 +1,43 @@
-+/* -----------------------------------------------------------------------
-+   ffitarget.h - Copyright (c) 2012  Alexandre K. I. de Mendonca <alexandre.keunecke@gmail.com>
-+
-+   Blackfin Foreign Function Interface
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+   DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#ifndef LIBFFI_TARGET_H
-+#define LIBFFI_TARGET_H
-+
-+#ifndef LIBFFI_ASM
-+typedef unsigned long          ffi_arg;
-+typedef signed 	 long          ffi_sarg;
-+
-+typedef enum ffi_abi {
-+  FFI_FIRST_ABI = 0,
-+  FFI_SYSV,
-+  FFI_LAST_ABI,
-+  FFI_DEFAULT_ABI = FFI_SYSV
-+} ffi_abi;
-+#endif
-+
-+#endif
-+
-diff --git a/js/src/ctypes/libffi/src/bfin/sysv.S b/js/src/ctypes/libffi/src/bfin/sysv.S
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/bfin/sysv.S
-@@ -0,0 +1,179 @@
-+/* -----------------------------------------------------------------------
-+   sysv.S - Copyright (c) 2012  Alexandre K. I. de Mendonca <alexandre.keunecke@gmail.com>,
-+                                Paulo Pizarro <paulo.pizarro@gmail.com>
-+
-+   Blackfin Foreign Function Interface
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+   DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#define LIBFFI_ASM
-+#include <fficonfig.h>
-+#include <ffi.h>
-+
-+.text
-+.align 4
-+
-+	/*
-+	 There is a "feature" in the bfin toolchain that it puts a _ before function names
-+	 that's why the function here it's called _ffi_call_SYSV and not ffi_call_SYSV
-+	 */
-+	.global _ffi_call_SYSV;
-+	.type _ffi_call_SYSV, STT_FUNC;
-+	.func ffi_call_SYSV
-+
-+	/*
-+         cif->bytes    = R0    (fp+8)
-+         &ecif         = R1    (fp+12)
-+         ffi_prep_args = R2    (fp+16)
-+         ret_type      = stack (fp+20)
-+         ecif.rvalue   = stack (fp+24)
-+         fn            = stack (fp+28)
-+                           got (fp+32)
-+
-+        There is room for improvement here (we can use temporary registers
-+        instead of saving the values in the memory)
-+        REGS:
-+        P5 => Stack pointer (function arguments)
-+        R5 => cif->bytes
-+        R4 => ret->type
-+
-+        FP-20 = P3
-+        FP-16 = SP (parameters area)
-+        FP-12 = SP (temp)
-+        FP-08 = function return part 1 [R0]
-+        FP-04 = function return part 2 [R1]
-+	*/
-+
-+_ffi_call_SYSV:
-+.prologue:
-+	LINK 20;
-+	[FP-20] = P3;
-+	[FP+8] = R0;
-+	[FP+12] = R1;
-+	[FP+16] = R2;
-+
-+.allocate_stack:
-+	//alocate cif->bytes into the stack
-+	R1 = [FP+8];
-+	R0 = SP;
-+	R0 = R0 - R1;
-+	R1 = 4;
-+	R0 = R0 - R1;
-+	[FP-12] = SP;
-+	SP = R0;
-+	[FP-16] = SP;
-+
-+.call_prep_args:
-+	//get the addr of prep_args
-+	P0 = [P3 + _ffi_prep_args@FUNCDESC_GOT17M4];
-+	P1 = [P0];
-+	P3 = [P0+4];
-+	R0 = [FP-16];//SP (parameter area)
-+	R1 = [FP+12];//ecif
-+	call (P1);
-+
-+.call_user_function:
-+	//ajust SP so as to allow the user function access the parameters on the stack
-+	SP = [FP-16]; //point to function parameters
-+	R0 = [SP];
-+	R1 = [SP+4];
-+	R2 = [SP+8];
-+	//load user function address
-+	P0 = FP;
-+	P0 +=28;
-+	P1 = [P0];
-+	P1 = [P1];
-+	P3 = [P0+4];
-+	/*
-+		For functions returning aggregate values (struct) occupying more than 8 bytes,
-+		the caller allocates the return value object on the stack and the address
-+		of this object is passed to the callee as a hidden argument in register P0.
-+	*/
-+	P0 = [FP+24];
-+
-+	call (P1);
-+	SP = [FP-12];
-+.compute_return:
-+	P2 = [FP-20];
-+	[FP-8] = R0;
-+	[FP-4] = R1;
-+
-+	R0 = [FP+20];
-+	R1 = R0 << 2;
-+
-+	R0 = [P2+.rettable@GOT17M4];
-+	R0 = R1 + R0;
-+	P2 = R0;
-+	R1 = [P2];
-+
-+	P2 = [FP+-20];
-+	R0 = [P2+.rettable@GOT17M4];
-+	R0 = R1 + R0;
-+	P2 = R0;
-+	R0 = [FP-8];
-+	R1 = [FP-4];
-+	jump (P2);
-+
-+/*
-+#define FFIBFIN_RET_VOID 0
-+#define FFIBFIN_RET_BYTE 1
-+#define FFIBFIN_RET_HALFWORD 2
-+#define FFIBFIN_RET_INT64 3
-+#define FFIBFIN_RET_INT32 4
-+*/
-+.align 4
-+.align 4
-+.rettable:
-+	.dd .epilogue - .rettable
-+	.dd	.rbyte - .rettable;
-+	.dd	.rhalfword - .rettable;
-+	.dd	.rint64 - .rettable;
-+	.dd	.rint32 - .rettable;
-+
-+.rbyte:
-+	P0 = [FP+24];
-+	R0 = R0.B (Z);
-+	[P0] = R0;
-+	JUMP .epilogue
-+.rhalfword:
-+	P0 = [FP+24];
-+	R0 = R0.L;
-+	[P0] = R0;
-+	JUMP .epilogue
-+.rint64:
-+	P0 = [FP+24];// &rvalue
-+	[P0] = R0;
-+	[P0+4] = R1;
-+	JUMP .epilogue
-+.rint32:
-+	P0 = [FP+24];
-+	[P0] = R0;
-+.epilogue:
-+	R0 = [FP+8];
-+	R1 = [FP+12];
-+	R2 = [FP+16];
-+	P3 = [FP-20];
-+	UNLINK;
-+	RTS;
-+
-+.size _ffi_call_SYSV,.-_ffi_call_SYSV;
-+.endfunc
-diff --git a/js/src/ctypes/libffi/src/closures.c b/js/src/ctypes/libffi/src/closures.c
---- a/js/src/ctypes/libffi/src/closures.c
-+++ b/js/src/ctypes/libffi/src/closures.c
-@@ -1,11 +1,12 @@
- /* -----------------------------------------------------------------------
--   closures.c - Copyright (c) 2007  Red Hat, Inc.
--   Copyright (C) 2007, 2009 Free Software Foundation, Inc
-+   closures.c - Copyright (c) 2007, 2009, 2010  Red Hat, Inc.
-+                Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc
-+                Copyright (c) 2011 Plausible Labs Cooperative, Inc.
- 
-    Code to allocate and deallocate memory for closures.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -27,18 +28,18 @@
- 
- #if defined __linux__ && !defined _GNU_SOURCE
- #define _GNU_SOURCE 1
- #endif
- 
- #include <ffi.h>
- #include <ffi_common.h>
- 
--#ifndef FFI_MMAP_EXEC_WRIT
--# if __gnu_linux__
-+#if !FFI_MMAP_EXEC_WRIT && !FFI_EXEC_TRAMPOLINE_TABLE
-+# if __gnu_linux__ && !defined(__ANDROID__)
- /* This macro indicates it may be forbidden to map anonymous memory
-    with both write and execute permission.  Code compiled when this
-    option is defined will attempt to map such pages once, but if it
-    fails, it falls back to creating a temporary file in a writable and
-    executable filesystem and mapping pages from it into separate
-    locations in the virtual memory space, one location writable and
-    another executable.  */
- #  define FFI_MMAP_EXEC_WRIT 1
-@@ -58,17 +59,21 @@
-    don't attempt PROT_EXEC|PROT_WRITE mapping at all, as that
-    might cause audit messages.  */
- #  define FFI_MMAP_EXEC_SELINUX 1
- # endif
- #endif
- 
- #if FFI_CLOSURES
- 
--# if FFI_MMAP_EXEC_WRIT
-+# if FFI_EXEC_TRAMPOLINE_TABLE
-+
-+// Per-target implementation; It's unclear what can reasonable be shared between two OS/architecture implementations.
-+
-+# elif FFI_MMAP_EXEC_WRIT /* !FFI_EXEC_TRAMPOLINE_TABLE */
- 
- #define USE_LOCKS 1
- #define USE_DL_PREFIX 1
- #ifdef __GNUC__
- #ifndef USE_BUILTIN_FFS
- #define USE_BUILTIN_FFS 1
- #endif
- #endif
-@@ -162,25 +167,48 @@ selinux_enabled_check (void)
- 			      : (selinux_enabled = selinux_enabled_check ()))
- 
- #else
- 
- #define is_selinux_enabled() 0
- 
- #endif /* !FFI_MMAP_EXEC_SELINUX */
- 
--#elif defined (__CYGWIN__)
-+/* On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. */
-+#ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX
-+#include <stdlib.h>
-+
-+static int emutramp_enabled = -1;
-+
-+static int
-+emutramp_enabled_check (void)
-+{
-+  if (getenv ("FFI_DISABLE_EMUTRAMP") == NULL)
-+    return 1;
-+  else
-+    return 0;
-+}
-+
-+#define is_emutramp_enabled() (emutramp_enabled >= 0 ? emutramp_enabled \
-+                               : (emutramp_enabled = emutramp_enabled_check ()))
-+#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */
-+
-+#elif defined (__CYGWIN__) || defined(__INTERIX)
- 
- #include <sys/mman.h>
- 
- /* Cygwin is Linux-like, but not quite that Linux-like.  */
- #define is_selinux_enabled() 0
- 
- #endif /* !defined(X86_WIN32) && !defined(X86_WIN64) */
- 
-+#ifndef FFI_MMAP_EXEC_EMUTRAMP_PAX
-+#define is_emutramp_enabled() 0
-+#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */
-+
- /* Declare all functions defined in dlmalloc.c as static.  */
- static void *dlmalloc(size_t);
- static void dlfree(void*);
- static void *dlcalloc(size_t, size_t) MAYBE_UNUSED;
- static void *dlrealloc(void *, size_t) MAYBE_UNUSED;
- static void *dlmemalign(size_t, size_t) MAYBE_UNUSED;
- static void *dlvalloc(size_t) MAYBE_UNUSED;
- static int dlmallopt(int, int) MAYBE_UNUSED;
-@@ -188,31 +216,31 @@ static size_t dlmalloc_footprint(void) M
- static size_t dlmalloc_max_footprint(void) MAYBE_UNUSED;
- static void** dlindependent_calloc(size_t, size_t, void**) MAYBE_UNUSED;
- static void** dlindependent_comalloc(size_t, size_t*, void**) MAYBE_UNUSED;
- static void *dlpvalloc(size_t) MAYBE_UNUSED;
- static int dlmalloc_trim(size_t) MAYBE_UNUSED;
- static size_t dlmalloc_usable_size(void*) MAYBE_UNUSED;
- static void dlmalloc_stats(void) MAYBE_UNUSED;
- 
--#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__)
-+#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX)
- /* Use these for mmap and munmap within dlmalloc.c.  */
- static void *dlmmap(void *, size_t, int, int, int, off_t);
- static int dlmunmap(void *, size_t);
--#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) */
-+#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */
- 
- #define mmap dlmmap
- #define munmap dlmunmap
- 
- #include "dlmalloc.c"
- 
- #undef mmap
- #undef munmap
- 
--#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__)
-+#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX)
- 
- /* A mutex used to synchronize access to *exec* variables in this file.  */
- static pthread_mutex_t open_temp_exec_file_mutex = PTHREAD_MUTEX_INITIALIZER;
- 
- /* A file descriptor of a temporary file from which we'll map
-    executable pages.  */
- static int execfd = -1;
- 
-@@ -231,17 +259,17 @@ open_temp_exec_file_name (char *name)
-   return fd;
- }
- 
- /* Open a temporary file in the named directory.  */
- static int
- open_temp_exec_file_dir (const char *dir)
- {
-   static const char suffix[] = "/ffiXXXXXX";
--  int lendir = strlen (dir);
-+  size_t lendir = strlen (dir);
-   char *tempname = __builtin_alloca (lendir + sizeof (suffix));
- 
-   if (!tempname)
-     return -1;
- 
-   memcpy (tempname, dir, lendir);
-   memcpy (tempname + lendir, suffix, sizeof (suffix));
- 
-@@ -289,17 +317,17 @@ open_temp_exec_file_mnt (const char *mou
-     return -1;
- 
-   for (;;)
-     {
-       int fd;
-       struct mntent mnt;
-       char buf[MAXPATHLEN * 3];
- 
--      if (getmntent_r (last_mntent, &mnt, buf, sizeof (buf)))
-+      if (getmntent_r (last_mntent, &mnt, buf, sizeof (buf)) == NULL)
- 	return -1;
- 
-       if (hasmntopt (&mnt, "ro")
- 	  || hasmntopt (&mnt, "noexec")
- 	  || access (mnt.mnt_dir, W_OK))
- 	continue;
- 
-       fd = open_temp_exec_file_dir (mnt.mnt_dir);
-@@ -349,17 +377,17 @@ open_temp_exec_file_opts_next (void)
-       open_temp_exec_file_opts_idx = 0;
-       return 1;
-     }
- 
-   return 0;
- }
- 
- /* Return a file descriptor of a temporary zero-sized file in a
--   writable and exexutable filesystem.  */
-+   writable and executable filesystem.  */
- static int
- open_temp_exec_file (void)
- {
-   int fd;
- 
-   do
-     {
-       fd = open_temp_exec_file_opts[open_temp_exec_file_opts_idx].func
-@@ -448,16 +476,22 @@ dlmmap (void *start, size_t length, int 
- 	  && prot == (PROT_READ | PROT_WRITE)
- 	  && flags == (MAP_PRIVATE | MAP_ANONYMOUS)
- 	  && fd == -1 && offset == 0);
- 
- #if FFI_CLOSURE_TEST
-   printf ("mapping in %zi\n", length);
- #endif
- 
-+  if (execfd == -1 && is_emutramp_enabled ())
-+    {
-+      ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset);
-+      return ptr;
-+    }
-+
-   if (execfd == -1 && !is_selinux_enabled ())
-     {
-       ptr = mmap (start, length, prot | PROT_EXEC, flags, fd, offset);
- 
-       if (ptr != MFAIL || (errno != EPERM && errno != EACCES))
- 	/* Cool, no need to mess with separate segments.  */
- 	return ptr;
- 
-@@ -517,17 +551,17 @@ segment_holding_code (mstate m, char* ad
- 	&& addr < add_segment_exec_offset (sp->base, sp) + sp->size)
-       return sp;
-     if ((sp = sp->next) == 0)
-       return 0;
-   }
- }
- #endif
- 
--#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) */
-+#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */
- 
- /* Allocate a chunk of memory with the given size.  Returns a pointer
-    to the writable address, and sets *CODE to the executable
-    corresponding virtual address.  */
- void *
- ffi_closure_alloc (size_t size, void **code)
- {
-   void *ptr;
-diff --git a/js/src/ctypes/libffi/src/cris/ffi.c b/js/src/ctypes/libffi/src/cris/ffi.c
---- a/js/src/ctypes/libffi/src/cris/ffi.c
-+++ b/js/src/ctypes/libffi/src/cris/ffi.c
-@@ -148,31 +148,34 @@ ffi_prep_args (char *stack, extended_cif
- 	}
-       p_argv++;
-       argp += z;
-     }
- 
-   return (struct_count);
- }
- 
--ffi_status
--ffi_prep_cif (ffi_cif * cif,
--	      ffi_abi abi, unsigned int nargs,
--	      ffi_type * rtype, ffi_type ** atypes)
-+ffi_status FFI_HIDDEN
-+ffi_prep_cif_core (ffi_cif * cif,
-+	           ffi_abi abi, unsigned int isvariadic,
-+		   unsigned int nfixedargs, unsigned int ntotalargs,
-+	           ffi_type * rtype, ffi_type ** atypes)
- {
-   unsigned bytes = 0;
-   unsigned int i;
-   ffi_type **ptr;
- 
-   FFI_ASSERT (cif != NULL);
-+  FFI_ASSERT((!isvariadic) || (nfixedargs >= 1));
-+  FFI_ASSERT(nfixedargs <= ntotalargs);
-   FFI_ASSERT (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI);
- 
-   cif->abi = abi;
-   cif->arg_types = atypes;
--  cif->nargs = nargs;
-+  cif->nargs = ntotalargs;
-   cif->rtype = rtype;
- 
-   cif->flags = 0;
- 
-   if ((cif->rtype->size == 0)
-       && (initialize_aggregate_packed_struct (cif->rtype) != FFI_OK))
-     return FFI_BAD_TYPEDEF;
- 
-diff --git a/js/src/ctypes/libffi/src/cris/ffitarget.h b/js/src/ctypes/libffi/src/cris/ffitarget.h
---- a/js/src/ctypes/libffi/src/cris/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/cris/ffitarget.h
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
-+   ffitarget.h - Copyright (c) 2012  Anthony Green
-+                 Copyright (c) 1996-2003  Red Hat, Inc.
-    Target configuration macros for CRIS.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-@@ -22,16 +23,20 @@
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
- 
-    ----------------------------------------------------------------------- */
- 
- #ifndef LIBFFI_TARGET_H
- #define LIBFFI_TARGET_H
- 
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
- #ifndef LIBFFI_ASM
- typedef unsigned long          ffi_arg;
- typedef signed long            ffi_sarg;
- 
- typedef enum ffi_abi {
-   FFI_FIRST_ABI = 0,
-   FFI_SYSV,
-   FFI_LAST_ABI,
-diff --git a/js/src/ctypes/libffi/src/dlmalloc.c b/js/src/ctypes/libffi/src/dlmalloc.c
---- a/js/src/ctypes/libffi/src/dlmalloc.c
-+++ b/js/src/ctypes/libffi/src/dlmalloc.c
-@@ -617,16 +617,19 @@ DEFAULT_MMAP_THRESHOLD       default: 25
- */
- 
- /* #define HAVE_USR_INCLUDE_MALLOC_H */
- 
- #ifdef HAVE_USR_INCLUDE_MALLOC_H
- #include "/usr/include/malloc.h"
- #else /* HAVE_USR_INCLUDE_MALLOC_H */
- 
-+/* HP-UX's stdlib.h redefines mallinfo unless _STRUCT_MALLINFO is defined */
-+#define _STRUCT_MALLINFO
-+
- struct mallinfo {
-   MALLINFO_FIELD_TYPE arena;    /* non-mmapped space allocated from system */
-   MALLINFO_FIELD_TYPE ordblks;  /* number of free chunks */
-   MALLINFO_FIELD_TYPE smblks;   /* always 0 */
-   MALLINFO_FIELD_TYPE hblks;    /* always 0 */
-   MALLINFO_FIELD_TYPE hblkhd;   /* space in mmapped regions */
-   MALLINFO_FIELD_TYPE usmblks;  /* maximum total allocated space */
-   MALLINFO_FIELD_TYPE fsmblks;  /* always 0 */
-@@ -1247,17 +1250,17 @@ extern void*     sbrk(ptrdiff_t);
- 
- /* ------------------- size_t and alignment properties -------------------- */
- 
- /* The byte and bit size of a size_t */
- #define SIZE_T_SIZE         (sizeof(size_t))
- #define SIZE_T_BITSIZE      (sizeof(size_t) << 3)
- 
- /* Some constants coerced to size_t */
--/* Annoying but necessary to avoid errors on some plaftorms */
-+/* Annoying but necessary to avoid errors on some platforms */
- #define SIZE_T_ZERO         ((size_t)0)
- #define SIZE_T_ONE          ((size_t)1)
- #define SIZE_T_TWO          ((size_t)2)
- #define TWO_SIZE_T_SIZES    (SIZE_T_SIZE<<1)
- #define FOUR_SIZE_T_SIZES   (SIZE_T_SIZE<<2)
- #define SIX_SIZE_T_SIZES    (FOUR_SIZE_T_SIZES+TWO_SIZE_T_SIZES)
- #define HALF_MAX_SIZE_T     (MAX_SIZE_T / 2U)
- 
-@@ -1401,17 +1404,17 @@ static int win32munmap(void* ptr, size_t
- #endif /* HAVE_MMAP && HAVE_MREMAP */
- 
- #if HAVE_MORECORE
- #define CALL_MORECORE(S)     MORECORE(S)
- #else  /* HAVE_MORECORE */
- #define CALL_MORECORE(S)     MFAIL
- #endif /* HAVE_MORECORE */
- 
--/* mstate bit set if continguous morecore disabled or failed */
-+/* mstate bit set if contiguous morecore disabled or failed */
- #define USE_NONCONTIGUOUS_BIT (4U)
- 
- /* segment bit set in create_mspace_with_base */
- #define EXTERN_BIT            (8U)
- 
- 
- /* --------------------------- Lock preliminaries ------------------------ */
- 
-@@ -1653,17 +1656,17 @@ struct malloc_chunk {
-   size_t               head;       /* Size and inuse bits. */
-   struct malloc_chunk* fd;         /* double links -- used only if free. */
-   struct malloc_chunk* bk;
- };
- 
- typedef struct malloc_chunk  mchunk;
- typedef struct malloc_chunk* mchunkptr;
- typedef struct malloc_chunk* sbinptr;  /* The type of bins of chunks */
--typedef unsigned int bindex_t;         /* Described below */
-+typedef size_t bindex_t;               /* Described below */
- typedef unsigned int binmap_t;         /* Described below */
- typedef unsigned int flag_t;           /* The type of various bit flag sets */
- 
- /* ------------------- Chunks sizes and alignments ----------------------- */
- 
- #define MCHUNK_SIZE         (sizeof(mchunk))
- 
- #if FOOTERS
-@@ -3082,18 +3085,18 @@ static void internal_malloc_stats(mstate
- 
- /*
-   Unlink steps:
- 
-   1. If x is a chained node, unlink it from its same-sized fd/bk links
-      and choose its bk node as its replacement.
-   2. If x was the last node of its size, but not a leaf node, it must
-      be replaced with a leaf node (not merely one with an open left or
--     right), to make sure that lefts and rights of descendents
--     correspond properly to bit masks.  We use the rightmost descendent
-+     right), to make sure that lefts and rights of descendants
-+     correspond properly to bit masks.  We use the rightmost descendant
-      of x.  We could use any other leaf, but this is easy to locate and
-      tends to counteract removal of leftmosts elsewhere, and so keeps
-      paths shorter than minimally guaranteed.  This doesn't loop much
-      because on average a node in a tree is near the bottom.
-   3. If x is the base of a chain (i.e., has parent links) relink
-      x's parent and children to x's replacement (or null if none).
- */
- 
-@@ -3380,17 +3383,17 @@ static void add_segment(mstate m, char* 
-   init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE);
- 
-   /* Set up segment record */
-   assert(is_aligned(ss));
-   set_size_and_pinuse_of_inuse_chunk(m, sp, ssize);
-   *ss = m->seg; /* Push current record */
-   m->seg.base = tbase;
-   m->seg.size = tsize;
--  set_segment_flags(&m->seg, mmapped);
-+  (void)set_segment_flags(&m->seg, mmapped);
-   m->seg.next = ss;
- 
-   /* Insert trailing fenceposts */
-   for (;;) {
-     mchunkptr nextp = chunk_plus_offset(p, SIZE_T_SIZE);
-     p->head = FENCEPOST_HEAD;
-     ++nfences;
-     if ((char*)(&(nextp->head)) < old_end)
-@@ -3540,17 +3543,17 @@ static void* sys_alloc(mstate m, size_t 
-   if (tbase != CMFAIL) {
- 
-     if ((m->footprint += tsize) > m->max_footprint)
-       m->max_footprint = m->footprint;
- 
-     if (!is_initialized(m)) { /* first-time initialization */
-       m->seg.base = m->least_addr = tbase;
-       m->seg.size = tsize;
--      set_segment_flags(&m->seg, mmap_flag);
-+      (void)set_segment_flags(&m->seg, mmap_flag);
-       m->magic = mparams.magic;
-       init_bins(m);
-       if (is_global(m)) 
-         init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE);
-       else {
-         /* Offset top by embedded malloc_state */
-         mchunkptr mn = next_chunk(mem2chunk(m));
-         init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) -TOP_FOOT_SIZE);
-@@ -5083,20 +5086,20 @@ History:
-       * Add linux mremap support code from HJ Liu
- 
-     V2.6.2 Tue Dec  5 06:52:55 1995  Doug Lea  (dl at gee)
-       * Integrated most documentation with the code.
-       * Add support for mmap, with help from
-         Wolfram Gloger (Gloger@lrz.uni-muenchen.de).
-       * Use last_remainder in more cases.
-       * Pack bins using idea from  colin@nyx10.cs.du.edu
--      * Use ordered bins instead of best-fit threshhold
-+      * Use ordered bins instead of best-fit threshold
-       * Eliminate block-local decls to simplify tracing and debugging.
-       * Support another case of realloc via move into top
--      * Fix error occuring when initial sbrk_base not word-aligned.
-+      * Fix error occurring when initial sbrk_base not word-aligned.
-       * Rely on page size for units instead of SBRK_UNIT to
-         avoid surprises about sbrk alignment conventions.
-       * Add mallinfo, mallopt. Thanks to Raymond Nijssen
-         (raymond@es.ele.tue.nl) for the suggestion.
-       * Add `pad' argument to malloc_trim and top_pad mallopt parameter.
-       * More precautions for cases where other routines call sbrk,
-         courtesy of Wolfram Gloger (Gloger@lrz.uni-muenchen.de).
-       * Added macros etc., allowing use in linux libc from
-diff --git a/js/src/ctypes/libffi/src/frv/ffitarget.h b/js/src/ctypes/libffi/src/frv/ffitarget.h
---- a/js/src/ctypes/libffi/src/frv/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/frv/ffitarget.h
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 1996-2004  Red Hat, Inc.
-+   ffitarget.h - Copyright (c) 2012  Anthony Green
-+                 Copyright (c) 1996-2004  Red Hat, Inc.
-    Target configuration macros for FR-V
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-@@ -22,16 +23,20 @@
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
- 
-    ----------------------------------------------------------------------- */
- 
- #ifndef LIBFFI_TARGET_H
- #define LIBFFI_TARGET_H
- 
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
- /* ---- System specific configurations ----------------------------------- */
- 
- #ifndef LIBFFI_ASM
- typedef unsigned long          ffi_arg;
- typedef signed long            ffi_sarg;
- 
- typedef enum ffi_abi {
-   FFI_FIRST_ABI = 0,
-diff --git a/js/src/ctypes/libffi/src/ia64/ffi.c b/js/src/ctypes/libffi/src/ia64/ffi.c
---- a/js/src/ctypes/libffi/src/ia64/ffi.c
-+++ b/js/src/ctypes/libffi/src/ia64/ffi.c
-@@ -1,11 +1,12 @@
- /* -----------------------------------------------------------------------
--   ffi.c - Copyright (c) 1998, 2007, 2008 Red Hat, Inc.
-+   ffi.c - Copyright (c) 1998, 2007, 2008, 2012 Red Hat, Inc.
- 	   Copyright (c) 2000 Hewlett Packard Company
-+	   Copyright (c) 2011 Anthony Green
-    
-    IA64 Foreign Function Interface 
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -319,23 +320,27 @@ ffi_call(ffi_cif *cif, void (*fn)(void),
- 
- 	case FFI_TYPE_POINTER:
- 	  stack->gp_regs[gpcount++] = (UINT64)(PTR64) *(void **)avalue[i];
- 	  break;
- 
- 	case FFI_TYPE_FLOAT:
- 	  if (gpcount < 8 && fpcount < 8)
- 	    stf_spill (&stack->fp_regs[fpcount++], *(float *)avalue[i]);
--	  stack->gp_regs[gpcount++] = *(UINT32 *)avalue[i];
-+	  {
-+	    UINT32 tmp;
-+	    memcpy (&tmp, avalue[i], sizeof (UINT32));
-+	    stack->gp_regs[gpcount++] = tmp;
-+	  }
- 	  break;
- 
- 	case FFI_TYPE_DOUBLE:
- 	  if (gpcount < 8 && fpcount < 8)
- 	    stf_spill (&stack->fp_regs[fpcount++], *(double *)avalue[i]);
--	  stack->gp_regs[gpcount++] = *(UINT64 *)avalue[i];
-+	  memcpy (&stack->gp_regs[gpcount++], avalue[i], sizeof (UINT64));
- 	  break;
- 
- 	case FFI_TYPE_LONGDOUBLE:
- 	  if (gpcount & 1)
- 	    gpcount++;
- 	  if (LDBL_MANT_DIG == 64 && gpcount < 8 && fpcount < 8)
- 	    stf_spill (&stack->fp_regs[fpcount++], *(__float80 *)avalue[i]);
- 	  memcpy (&stack->gp_regs[gpcount], avalue[i], 16);
-@@ -391,17 +396,17 @@ ffi_call(ffi_cif *cif, void (*fn)(void),
-    interpreted procedure, into a closure.
- 
-    For IA64, function pointer are already pairs consisting of a code
-    pointer, and a gp pointer.  The latter is needed to access global
-    variables.  Here we set up such a pair as the first two words of
-    the closure (in the "trampoline" area), but we replace the gp
-    pointer with a pointer to the closure itself.  We also add the real
-    gp pointer to the closure.  This allows the function entry code to
--   both retrieve the user data, and to restire the correct gp pointer.  */
-+   both retrieve the user data, and to restore the correct gp pointer.  */
- 
- extern void ffi_closure_unix ();
- 
- ffi_status
- ffi_prep_closure_loc (ffi_closure* closure,
- 		      ffi_cif* cif,
- 		      void (*fun)(ffi_cif*,void*,void**,void*),
- 		      void *user_data,
-@@ -420,17 +425,18 @@ ffi_prep_closure_loc (ffi_closure* closu
-     UINT64 code_pointer;	/* Pointer to ffi_closure_unix.  */
-     UINT64 fake_gp;		/* Pointer to closure, installed as gp.  */
-     UINT64 real_gp;		/* Real gp value.  */
-   };
- 
-   struct ffi_ia64_trampoline_struct *tramp;
-   struct ia64_fd *fd;
- 
--  FFI_ASSERT (cif->abi == FFI_UNIX);
-+  if (cif->abi != FFI_UNIX)
-+    return FFI_BAD_ABI;
- 
-   tramp = (struct ffi_ia64_trampoline_struct *)closure->tramp;
-   fd = (struct ia64_fd *)(void *)ffi_closure_unix;
- 
-   tramp->code_pointer = fd->code_pointer;
-   tramp->real_gp = fd->gp;
-   tramp->fake_gp = (UINT64)(PTR64)codeloc;
-   closure->cif = cif;
-diff --git a/js/src/ctypes/libffi/src/ia64/ffitarget.h b/js/src/ctypes/libffi/src/ia64/ffitarget.h
---- a/js/src/ctypes/libffi/src/ia64/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/ia64/ffitarget.h
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
-+   ffitarget.h - Copyright (c) 2012  Anthony Green
-+                 Copyright (c) 1996-2003  Red Hat, Inc.
-    Target configuration macros for IA-64.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-@@ -22,16 +23,20 @@
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
- 
-    ----------------------------------------------------------------------- */
- 
- #ifndef LIBFFI_TARGET_H
- #define LIBFFI_TARGET_H
- 
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
- #ifndef LIBFFI_ASM
- typedef unsigned long long          ffi_arg;
- typedef signed long long            ffi_sarg;
- 
- typedef enum ffi_abi {
-   FFI_FIRST_ABI = 0,
-   FFI_UNIX,   	/* Linux and all Unix variants use the same conventions	*/
-   FFI_LAST_ABI,
-diff --git a/js/src/ctypes/libffi/src/java_raw_api.c b/js/src/ctypes/libffi/src/java_raw_api.c
---- a/js/src/ctypes/libffi/src/java_raw_api.c
-+++ b/js/src/ctypes/libffi/src/java_raw_api.c
-@@ -306,17 +306,17 @@ void ffi_java_raw_call (ffi_cif *cif, vo
- static void
- ffi_java_translate_args (ffi_cif *cif, void *rvalue,
- 		    void **avalue, void *user_data)
- {
-   ffi_java_raw *raw = (ffi_java_raw*)alloca (ffi_java_raw_size (cif));
-   ffi_raw_closure *cl = (ffi_raw_closure*)user_data;
- 
-   ffi_java_ptrarray_to_raw (cif, avalue, raw);
--  (*cl->fun) (cif, rvalue, raw, cl->user_data);
-+  (*cl->fun) (cif, rvalue, (ffi_raw*)raw, cl->user_data);
-   ffi_java_raw_to_rvalue (cif, rvalue);
- }
- 
- ffi_status
- ffi_prep_java_raw_closure_loc (ffi_java_raw_closure* cl,
- 			       ffi_cif *cif,
- 			       void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
- 			       void *user_data,
-diff --git a/js/src/ctypes/libffi/src/m32r/ffitarget.h b/js/src/ctypes/libffi/src/m32r/ffitarget.h
---- a/js/src/ctypes/libffi/src/m32r/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/m32r/ffitarget.h
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 2004  Renesas Technology.
-+   ffitarget.h - Copyright (c) 2012  Anthony Green
-+                 Copyright (c) 2004  Renesas Technology.
-    Target configuration macros for M32R.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-@@ -21,16 +22,20 @@
-    ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-    OTHER DEALINGS IN THE SOFTWARE.
- 
-    ----------------------------------------------------------------------- */
- 
- #ifndef LIBFFI_TARGET_H
- #define LIBFFI_TARGET_H
- 
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
- /* ---- Generic type definitions ----------------------------------------- */
- 
- #ifndef LIBFFI_ASM
- typedef unsigned long          ffi_arg;
- typedef signed long            ffi_sarg;
- 
- typedef enum ffi_abi
-   {
-diff --git a/js/src/ctypes/libffi/src/m68k/ffi.c b/js/src/ctypes/libffi/src/m68k/ffi.c
---- a/js/src/ctypes/libffi/src/m68k/ffi.c
-+++ b/js/src/ctypes/libffi/src/m68k/ffi.c
-@@ -1,21 +1,30 @@
- /* -----------------------------------------------------------------------
-    ffi.c
--   
--   m68k Foreign Function Interface 
-+
-+   m68k Foreign Function Interface
-    ----------------------------------------------------------------------- */
- 
- #include <ffi.h>
- #include <ffi_common.h>
- 
- #include <stdlib.h>
- #include <unistd.h>
-+#ifdef __rtems__
-+void rtems_cache_flush_multiple_data_lines( const void *, size_t );
-+#else
- #include <sys/syscall.h>
-+#ifdef __MINT__
-+#include <mint/mintbind.h>
-+#include <mint/ssystem.h>
-+#else
- #include <asm/cachectl.h>
-+#endif
-+#endif
- 
- void ffi_call_SYSV (extended_cif *,
- 		    unsigned, unsigned,
- 		    void *, void (*fn) ());
- void *ffi_prep_args (void *stack, extended_cif *ecif);
- void ffi_closure_SYSV (ffi_closure *);
- void ffi_closure_struct_SYSV (ffi_closure *);
- unsigned int ffi_closure_SYSV_inner (ffi_closure *closure,
-@@ -30,34 +39,38 @@ ffi_prep_args (void *stack, extended_cif
-   unsigned int i;
-   void **p_argv;
-   char *argp;
-   ffi_type **p_arg;
-   void *struct_value_ptr;
- 
-   argp = stack;
- 
--  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT
--      && !ecif->cif->flags)
-+  if (
-+#ifdef __MINT__
-+      (ecif->cif->rtype->type == FFI_TYPE_LONGDOUBLE) ||
-+#endif
-+      (((ecif->cif->rtype->type == FFI_TYPE_STRUCT)
-+        && !ecif->cif->flags)))
-     struct_value_ptr = ecif->rvalue;
-   else
-     struct_value_ptr = NULL;
- 
-   p_argv = ecif->avalue;
- 
-   for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
-        i != 0;
-        i--, p_arg++)
-     {
--      size_t z;
-+      size_t z = (*p_arg)->size;
-+      int type = (*p_arg)->type;
- 
--      z = (*p_arg)->size;
-       if (z < sizeof (int))
- 	{
--	  switch ((*p_arg)->type)
-+	  switch (type)
- 	    {
- 	    case FFI_TYPE_SINT8:
- 	      *(signed int *) argp = (signed int) *(SINT8 *) *p_argv;
- 	      break;
- 
- 	    case FFI_TYPE_UINT8:
- 	      *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv;
- 	      break;
-@@ -66,17 +79,24 @@ ffi_prep_args (void *stack, extended_cif
- 	      *(signed int *) argp = (signed int) *(SINT16 *) *p_argv;
- 	      break;
- 
- 	    case FFI_TYPE_UINT16:
- 	      *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv;
- 	      break;
- 
- 	    case FFI_TYPE_STRUCT:
-+#ifdef __MINT__
-+	      if (z == 1 || z == 2)
-+		memcpy (argp + 2, *p_argv, z);
-+              else
-+		memcpy (argp, *p_argv, z);
-+#else
- 	      memcpy (argp + sizeof (int) - z, *p_argv, z);
-+#endif
- 	      break;
- 
- 	    default:
- 	      FFI_ASSERT (0);
- 	    }
- 	  z = sizeof (int);
- 	}
-       else
-@@ -98,40 +118,59 @@ ffi_prep_args (void *stack, extended_cif
- #define CIF_FLAGS_INT		1
- #define CIF_FLAGS_DINT		2
- #define CIF_FLAGS_FLOAT		4
- #define CIF_FLAGS_DOUBLE	8
- #define CIF_FLAGS_LDOUBLE	16
- #define CIF_FLAGS_POINTER	32
- #define CIF_FLAGS_STRUCT1	64
- #define CIF_FLAGS_STRUCT2	128
-+#define CIF_FLAGS_SINT8		256
-+#define CIF_FLAGS_SINT16	512
- 
- /* Perform machine dependent cif processing */
- ffi_status
- ffi_prep_cif_machdep (ffi_cif *cif)
- {
-   /* Set the return type flag */
-   switch (cif->rtype->type)
-     {
-     case FFI_TYPE_VOID:
-       cif->flags = 0;
-       break;
- 
-     case FFI_TYPE_STRUCT:
-+      if (cif->rtype->elements[0]->type == FFI_TYPE_STRUCT &&
-+          cif->rtype->elements[1])
-+        {
-+          cif->flags = 0;
-+          break;
-+        }
-+
-       switch (cif->rtype->size)
- 	{
- 	case 1:
-+#ifdef __MINT__
-+	  cif->flags = CIF_FLAGS_STRUCT2;
-+#else
- 	  cif->flags = CIF_FLAGS_STRUCT1;
-+#endif
- 	  break;
- 	case 2:
- 	  cif->flags = CIF_FLAGS_STRUCT2;
- 	  break;
-+#ifdef __MINT__
-+	case 3:
-+#endif
- 	case 4:
- 	  cif->flags = CIF_FLAGS_INT;
- 	  break;
-+#ifdef __MINT__
-+	case 7:
-+#endif
- 	case 8:
- 	  cif->flags = CIF_FLAGS_DINT;
- 	  break;
- 	default:
- 	  cif->flags = 0;
- 	  break;
- 	}
-       break;
-@@ -139,29 +178,43 @@ ffi_prep_cif_machdep (ffi_cif *cif)
-     case FFI_TYPE_FLOAT:
-       cif->flags = CIF_FLAGS_FLOAT;
-       break;
- 
-     case FFI_TYPE_DOUBLE:
-       cif->flags = CIF_FLAGS_DOUBLE;
-       break;
- 
-+#if (FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE)
-     case FFI_TYPE_LONGDOUBLE:
-+#ifdef __MINT__
-+      cif->flags = 0;
-+#else
-       cif->flags = CIF_FLAGS_LDOUBLE;
-+#endif
-       break;
-+#endif
- 
-     case FFI_TYPE_POINTER:
-       cif->flags = CIF_FLAGS_POINTER;
-       break;
- 
-     case FFI_TYPE_SINT64:
-     case FFI_TYPE_UINT64:
-       cif->flags = CIF_FLAGS_DINT;
-       break;
- 
-+    case FFI_TYPE_SINT16:
-+      cif->flags = CIF_FLAGS_SINT16;
-+      break;
-+
-+    case FFI_TYPE_SINT8:
-+      cif->flags = CIF_FLAGS_SINT8;
-+      break;
-+
-     default:
-       cif->flags = CIF_FLAGS_INT;
-       break;
-     }
- 
-   return FFI_OK;
- }
- 
-@@ -207,16 +260,36 @@ ffi_prep_incoming_args_SYSV (char *stack
-   argp = stack;
-   p_argv = avalue;
- 
-   for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++)
-     {
-       size_t z;
- 
-       z = (*p_arg)->size;
-+#ifdef __MINT__
-+      if (cif->flags &&
-+          cif->rtype->type == FFI_TYPE_STRUCT &&
-+          (z == 1 || z == 2))
-+ 	{
-+	  *p_argv = (void *) (argp + 2);
-+
-+	  z = 4;
-+	}
-+      else
-+      if (cif->flags &&
-+          cif->rtype->type == FFI_TYPE_STRUCT &&
-+          (z == 3 || z == 4))
-+ 	{
-+	  *p_argv = (void *) (argp);
-+
-+	  z = 4;
-+	}
-+      else
-+#endif
-       if (z <= 4)
- 	{
- 	  *p_argv = (void *) (argp + 4 - z);
- 
- 	  z = 4;
- 	}
-       else
- 	{
-@@ -250,29 +323,40 @@ ffi_closure_SYSV_inner (ffi_closure *clo
- 
- ffi_status
- ffi_prep_closure_loc (ffi_closure* closure,
- 		      ffi_cif* cif,
- 		      void (*fun)(ffi_cif*,void*,void**,void*),
- 		      void *user_data,
- 		      void *codeloc)
- {
--  FFI_ASSERT (cif->abi == FFI_SYSV);
-+  if (cif->abi != FFI_SYSV)
-+    return FFI_BAD_ABI;
- 
-   *(unsigned short *)closure->tramp = 0x207c;
-   *(void **)(closure->tramp + 2) = codeloc;
-   *(unsigned short *)(closure->tramp + 6) = 0x4ef9;
--  if (cif->rtype->type == FFI_TYPE_STRUCT
--      && !cif->flags)
-+
-+  if (
-+#ifdef __MINT__
-+      (cif->rtype->type == FFI_TYPE_LONGDOUBLE) ||
-+#endif
-+      (((cif->rtype->type == FFI_TYPE_STRUCT)
-+         && !cif->flags)))
-     *(void **)(closure->tramp + 8) = ffi_closure_struct_SYSV;
-   else
-     *(void **)(closure->tramp + 8) = ffi_closure_SYSV;
- 
-+#ifdef __rtems__
-+  rtems_cache_flush_multiple_data_lines( codeloc, FFI_TRAMPOLINE_SIZE );
-+#elif defined(__MINT__)
-+  Ssystem(S_FLUSHCACHE, codeloc, FFI_TRAMPOLINE_SIZE);
-+#else
-   syscall(SYS_cacheflush, codeloc, FLUSH_SCOPE_LINE,
- 	  FLUSH_CACHE_BOTH, FFI_TRAMPOLINE_SIZE);
-+#endif
- 
-   closure->cif  = cif;
-   closure->user_data = user_data;
-   closure->fun  = fun;
- 
-   return FFI_OK;
- }
--
-diff --git a/js/src/ctypes/libffi/src/m68k/ffitarget.h b/js/src/ctypes/libffi/src/m68k/ffitarget.h
---- a/js/src/ctypes/libffi/src/m68k/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/m68k/ffitarget.h
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
-+   ffitarget.h - Copyright (c) 2012  Anthony Green
-+                 Copyright (c) 1996-2003  Red Hat, Inc.
-    Target configuration macros for Motorola 68K.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-@@ -22,16 +23,20 @@
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
- 
-    ----------------------------------------------------------------------- */
- 
- #ifndef LIBFFI_TARGET_H
- #define LIBFFI_TARGET_H
- 
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
- #ifndef LIBFFI_ASM
- typedef unsigned long          ffi_arg;
- typedef signed long            ffi_sarg;
- 
- typedef enum ffi_abi {
-   FFI_FIRST_ABI = 0,
-   FFI_SYSV,
-   FFI_LAST_ABI,
-diff --git a/js/src/ctypes/libffi/src/m68k/sysv.S b/js/src/ctypes/libffi/src/m68k/sysv.S
---- a/js/src/ctypes/libffi/src/m68k/sysv.S
-+++ b/js/src/ctypes/libffi/src/m68k/sysv.S
-@@ -1,13 +1,16 @@
- /* -----------------------------------------------------------------------
--   sysv.S - Copyright (c) 1998 Andreas Schwab
--	    Copyright (c) 2008 Red Hat, Inc. 
--   
--   m68k Foreign Function Interface 
-+	
-+   sysv.S - Copyright (c) 2012 Alan Hourihane
-+	    Copyright (c) 1998, 2012 Andreas Schwab
-+	    Copyright (c) 2008 Red Hat, Inc.
-+	    Copyright (c) 2012 Thorsten Glaser
-+
-+   m68k Foreign Function Interface
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-    the following conditions:
-@@ -36,61 +39,76 @@
- #define CFI_ENDPROC()		.cfi_endproc
- #else
- #define CFI_STARTPROC()
- #define CFI_OFFSET(reg,off)
- #define CFI_DEF_CFA(reg,off)
- #define CFI_ENDPROC()
- #endif
- 
-+#ifdef __MINT__
-+#define CALLFUNC(funcname) _ ## funcname
-+#else
-+#define CALLFUNC(funcname) funcname
-+#endif
-+
- 	.text
- 
--	.globl	ffi_call_SYSV
--	.type	ffi_call_SYSV,@function
-+	.globl	CALLFUNC(ffi_call_SYSV)
-+	.type	CALLFUNC(ffi_call_SYSV),@function
- 	.align	4
- 
--ffi_call_SYSV:
-+CALLFUNC(ffi_call_SYSV):
- 	CFI_STARTPROC()
- 	link	%fp,#0
- 	CFI_OFFSET(14,-8)
- 	CFI_DEF_CFA(14,8)
- 	move.l	%d2,-(%sp)
- 	CFI_OFFSET(2,-12)
- 
- 	| Make room for all of the new args.
- 	sub.l	12(%fp),%sp
- 
- 	| Call ffi_prep_args
- 	move.l	8(%fp),-(%sp)
- 	pea	4(%sp)
- #if !defined __PIC__
--	jsr	ffi_prep_args
-+	jsr	CALLFUNC(ffi_prep_args)
- #else
--	bsr.l	ffi_prep_args@PLTPC
-+	bsr.l	CALLFUNC(ffi_prep_args@PLTPC)
- #endif
- 	addq.l	#8,%sp	
- 
- 	| Pass pointer to struct value, if any
-+#ifdef __MINT__
-+	move.l	%d0,%a1
-+#else
- 	move.l	%a0,%a1
-+#endif
- 
- 	| Call the function
- 	move.l	24(%fp),%a0
- 	jsr	(%a0)
- 
- 	| Remove the space we pushed for the args
- 	add.l	12(%fp),%sp
- 
- 	| Load the pointer to storage for the return value
- 	move.l	20(%fp),%a1
- 
- 	| Load the return type code 
- 	move.l	16(%fp),%d2
- 
- 	| If the return value pointer is NULL, assume no return value.
-+	| NOTE: On the mc68000, tst on an address register is not supported.
-+#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__)
-+	cmp.w	#0, %a1
-+#else
- 	tst.l	%a1
-+#endif
- 	jbeq	noretval
- 
- 	btst	#0,%d2
- 	jbeq	retlongint
- 	move.l	%d0,(%a1)
- 	jbra	epilogue
- 
- retlongint:
-@@ -98,137 +116,215 @@ retlongint:
- 	jbeq	retfloat
- 	move.l	%d0,(%a1)
- 	move.l	%d1,4(%a1)
- 	jbra	epilogue
- 
- retfloat:
- 	btst	#2,%d2
- 	jbeq	retdouble
-+#if defined(__MC68881__) || defined(__HAVE_68881__)
- 	fmove.s	%fp0,(%a1)
-+#else
-+	move.l	%d0,(%a1)
-+#endif
- 	jbra	epilogue
- 
- retdouble:
- 	btst	#3,%d2
- 	jbeq	retlongdouble
-+#if defined(__MC68881__) || defined(__HAVE_68881__)
- 	fmove.d	%fp0,(%a1)
-+#else
-+	move.l	%d0,(%a1)+
-+	move.l	%d1,(%a1)
-+#endif
- 	jbra	epilogue
- 
- retlongdouble:
- 	btst	#4,%d2
- 	jbeq	retpointer
-+#if defined(__MC68881__) || defined(__HAVE_68881__)
- 	fmove.x	%fp0,(%a1)
-+#else
-+	move.l	%d0,(%a1)+
-+	move.l	%d1,(%a1)+
-+	move.l	%d2,(%a1)
-+#endif
- 	jbra	epilogue
- 
- retpointer:
- 	btst	#5,%d2
- 	jbeq	retstruct1
-+#ifdef __MINT__
-+	move.l	%d0,(%a1)
-+#else
- 	move.l	%a0,(%a1)
-+#endif
- 	jbra	epilogue
- 
- retstruct1:
- 	btst	#6,%d2
- 	jbeq	retstruct2
- 	move.b	%d0,(%a1)
- 	jbra	epilogue
- 
- retstruct2:
- 	btst	#7,%d2
-+	jbeq	retsint8
-+	move.w	%d0,(%a1)
-+	jbra	epilogue
-+
-+retsint8:
-+	btst	#8,%d2
-+	jbeq	retsint16
-+	| NOTE: On the mc68000, extb is not supported. 8->16, then 16->32.
-+#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__)
-+	ext.w	%d0
-+	ext.l	%d0
-+#else
-+	extb.l	%d0
-+#endif
-+	move.l	%d0,(%a1)
-+	jbra	epilogue
-+
-+retsint16:
-+	btst	#9,%d2
- 	jbeq	noretval
--	move.w	%d0,(%a1)
-+	ext.l	%d0
-+	move.l	%d0,(%a1)
- 
- noretval:
- epilogue:
- 	move.l	(%sp)+,%d2
- 	unlk	%fp
- 	rts
- 	CFI_ENDPROC()
--	.size	ffi_call_SYSV,.-ffi_call_SYSV
-+	.size	CALLFUNC(ffi_call_SYSV),.-CALLFUNC(ffi_call_SYSV)
- 
--	.globl	ffi_closure_SYSV
--	.type	ffi_closure_SYSV, @function
-+	.globl	CALLFUNC(ffi_closure_SYSV)
-+	.type	CALLFUNC(ffi_closure_SYSV), @function
- 	.align	4
- 
--ffi_closure_SYSV:
-+CALLFUNC(ffi_closure_SYSV):
- 	CFI_STARTPROC()
- 	link	%fp,#-12
- 	CFI_OFFSET(14,-8)
- 	CFI_DEF_CFA(14,8)
- 	move.l	%sp,-12(%fp)
- 	pea	8(%fp)
- 	pea	-12(%fp)
- 	move.l	%a0,-(%sp)
- #if !defined __PIC__
--	jsr	ffi_closure_SYSV_inner
-+	jsr	CALLFUNC(ffi_closure_SYSV_inner)
- #else
--	bsr.l	ffi_closure_SYSV_inner@PLTPC
-+	bsr.l	CALLFUNC(ffi_closure_SYSV_inner@PLTPC)
- #endif
- 
- 	lsr.l	#1,%d0
- 	jne	1f
- 	jcc	.Lcls_epilogue
-+	| CIF_FLAGS_INT
- 	move.l	-12(%fp),%d0
- .Lcls_epilogue:
-+	| no CIF_FLAGS_*
- 	unlk	%fp
- 	rts
- 1:
- 	lea	-12(%fp),%a0
- 	lsr.l	#2,%d0
- 	jne	1f
- 	jcs	.Lcls_ret_float
-+	| CIF_FLAGS_DINT
- 	move.l	(%a0)+,%d0
- 	move.l	(%a0),%d1
- 	jra	.Lcls_epilogue
- .Lcls_ret_float:
-+#if defined(__MC68881__) || defined(__HAVE_68881__)
- 	fmove.s	(%a0),%fp0
-+#else
-+	move.l	(%a0),%d0
-+#endif
- 	jra	.Lcls_epilogue
- 1:
- 	lsr.l	#2,%d0
- 	jne	1f
- 	jcs	.Lcls_ret_ldouble
-+	| CIF_FLAGS_DOUBLE
-+#if defined(__MC68881__) || defined(__HAVE_68881__)
- 	fmove.d	(%a0),%fp0
-+#else
-+	move.l	(%a0)+,%d0
-+	move.l	(%a0),%d1
-+#endif
- 	jra	.Lcls_epilogue
- .Lcls_ret_ldouble:
-+#if defined(__MC68881__) || defined(__HAVE_68881__)
- 	fmove.x	(%a0),%fp0
-+#else
-+	move.l	(%a0)+,%d0
-+	move.l	(%a0)+,%d1
-+	move.l	(%a0),%d2
-+#endif
- 	jra	.Lcls_epilogue
- 1:
- 	lsr.l	#2,%d0
--	jne	.Lcls_ret_struct2
-+	jne	1f
- 	jcs	.Lcls_ret_struct1
-+	| CIF_FLAGS_POINTER
- 	move.l	(%a0),%a0
- 	move.l	%a0,%d0
- 	jra	.Lcls_epilogue
- .Lcls_ret_struct1:
- 	move.b	(%a0),%d0
- 	jra	.Lcls_epilogue
--.Lcls_ret_struct2:
-+1:
-+	lsr.l	#2,%d0
-+	jne	1f
-+	jcs	.Lcls_ret_sint8
-+	| CIF_FLAGS_STRUCT2
- 	move.w	(%a0),%d0
- 	jra	.Lcls_epilogue
-+.Lcls_ret_sint8:
-+	move.l	(%a0),%d0
-+	| NOTE: On the mc68000, extb is not supported. 8->16, then 16->32.
-+#if !defined(__mc68020__) && !defined(__mc68030__) && !defined(__mc68040__) && !defined(__mc68060__) && !defined(__mcoldfire__)
-+	ext.w	%d0
-+	ext.l	%d0
-+#else
-+	extb.l	%d0
-+#endif
-+	jra	.Lcls_epilogue
-+1:
-+	| CIF_FLAGS_SINT16
-+	move.l	(%a0),%d0
-+	ext.l	%d0
-+	jra	.Lcls_epilogue
- 	CFI_ENDPROC()
- 
--	.size	ffi_closure_SYSV,.-ffi_closure_SYSV
-+	.size	CALLFUNC(ffi_closure_SYSV),.-CALLFUNC(ffi_closure_SYSV)
- 
--	.globl	ffi_closure_struct_SYSV
--	.type	ffi_closure_struct_SYSV, @function
-+	.globl	CALLFUNC(ffi_closure_struct_SYSV)
-+	.type	CALLFUNC(ffi_closure_struct_SYSV), @function
- 	.align	4
- 
--ffi_closure_struct_SYSV:
-+CALLFUNC(ffi_closure_struct_SYSV):
- 	CFI_STARTPROC()
- 	link	%fp,#0
- 	CFI_OFFSET(14,-8)
- 	CFI_DEF_CFA(14,8)
- 	move.l	%sp,-12(%fp)
- 	pea	8(%fp)
- 	move.l	%a1,-(%sp)
- 	move.l	%a0,-(%sp)
- #if !defined __PIC__
--	jsr	ffi_closure_SYSV_inner
-+	jsr	CALLFUNC(ffi_closure_SYSV_inner)
- #else
--	bsr.l	ffi_closure_SYSV_inner@PLTPC
-+	bsr.l	CALLFUNC(ffi_closure_SYSV_inner@PLTPC)
- #endif
- 	unlk	%fp
- 	rts
- 	CFI_ENDPROC()
--	.size	ffi_closure_struct_SYSV,.-ffi_closure_struct_SYSV
-+	.size	CALLFUNC(ffi_closure_struct_SYSV),.-CALLFUNC(ffi_closure_struct_SYSV)
- 
- #if defined __ELF__ && defined __linux__
- 	.section	.note.GNU-stack,"",@progbits
- #endif
-diff --git a/js/src/ctypes/libffi/src/m88k/ffi.c b/js/src/ctypes/libffi/src/m88k/ffi.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/m88k/ffi.c
-@@ -0,0 +1,400 @@
-+/*
-+ * Copyright (c) 2013 Miodrag Vallat.  <miod@openbsd.org>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * ``Software''), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ * 
-+ * The above copyright notice and this permission notice shall be included
-+ * in all copies or substantial portions of the Software.
-+ * 
-+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/*
-+ * m88k Foreign Function Interface
-+ *
-+ * This file attempts to provide all the FFI entry points which can reliably
-+ * be implemented in C.
-+ *
-+ * Only OpenBSD/m88k is currently supported; other platforms (such as
-+ * Motorola's SysV/m88k) could be supported with the following tweaks:
-+ *
-+ * - non-OpenBSD systems use an `outgoing parameter area' as part of the
-+ *   88BCS calling convention, which is not supported under OpenBSD from
-+ *   release 3.6 onwards.  Supporting it should be as easy as taking it
-+ *   into account when adjusting the stack, in the assembly code.
-+ *
-+ * - the logic deciding whether a function argument gets passed through
-+ *   registers, or on the stack, has changed several times in OpenBSD in
-+ *   edge cases (especially for structs larger than 32 bytes being passed
-+ *   by value). The code below attemps to match the logic used by the
-+ *   system compiler of OpenBSD 5.3, i.e. gcc 3.3.6 with many m88k backend
-+ *   fixes.
-+ */
-+
-+#include <ffi.h>
-+#include <ffi_common.h>
-+
-+#include <stdlib.h>
-+#include <unistd.h>
-+
-+void ffi_call_OBSD (unsigned int, extended_cif *, unsigned int, void *,
-+		    void (*fn) ());
-+void *ffi_prep_args (void *, extended_cif *);
-+void ffi_closure_OBSD (ffi_closure *);
-+void ffi_closure_struct_OBSD (ffi_closure *);
-+unsigned int ffi_closure_OBSD_inner (ffi_closure *, void *, unsigned int *,
-+				     char *);
-+void ffi_cacheflush_OBSD (unsigned int, unsigned int);
-+
-+#define CIF_FLAGS_INT		(1 << 0)
-+#define CIF_FLAGS_DINT		(1 << 1)
-+
-+/*
-+ * Foreign Function Interface API
-+ */
-+
-+/* ffi_prep_args is called by the assembly routine once stack space has
-+   been allocated for the function's arguments.  */
-+
-+void *
-+ffi_prep_args (void *stack, extended_cif *ecif)
-+{
-+  unsigned int i;
-+  void **p_argv;
-+  char *argp, *stackp;
-+  unsigned int *regp;
-+  unsigned int regused;
-+  ffi_type **p_arg;
-+  void *struct_value_ptr;
-+
-+  regp = (unsigned int *)stack;
-+  stackp = (char *)(regp + 8);
-+  regused = 0;
-+
-+  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT
-+      && !ecif->cif->flags)
-+    struct_value_ptr = ecif->rvalue;
-+  else
-+    struct_value_ptr = NULL;
-+
-+  p_argv = ecif->avalue;
-+
-+  for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; i != 0; i--, p_arg++)
-+    {
-+      size_t z;
-+      unsigned short t, a;
-+
-+      z = (*p_arg)->size;
-+      t = (*p_arg)->type;
-+      a = (*p_arg)->alignment;
-+
-+      /*
-+       * Figure out whether the argument can be passed through registers
-+       * or on the stack.
-+       * The rule is that registers can only receive simple types not larger
-+       * than 64 bits, or structs the exact size of a register and aligned to
-+       * the size of a register.
-+       */
-+      if (t == FFI_TYPE_STRUCT)
-+	{
-+	  if (z == sizeof (int) && a == sizeof (int) && regused < 8)
-+	    argp = (char *)regp;
-+	  else
-+	    argp = stackp;
-+	}
-+      else
-+	{
-+	  if (z > sizeof (int) && regused < 8 - 1)
-+	    {
-+	      /* align to an even register pair */
-+	      if (regused & 1)
-+		{
-+		  regp++;
-+		  regused++;
-+		}
-+	    }
-+	  if (regused < 8)
-+	    argp = (char *)regp;
-+	  else
-+	    argp = stackp;
-+	}
-+
-+      /* Enforce proper stack alignment of 64-bit types */
-+      if (argp == stackp && a > sizeof (int))
-+	{
-+	  stackp = (char *) ALIGN(stackp, a);
-+	  argp = stackp;
-+	}
-+
-+      switch (t)
-+	{
-+	case FFI_TYPE_SINT8:
-+	  *(signed int *) argp = (signed int) *(SINT8 *) *p_argv;
-+	  break;
-+
-+	case FFI_TYPE_UINT8:
-+	  *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv;
-+	  break;
-+
-+	case FFI_TYPE_SINT16:
-+	  *(signed int *) argp = (signed int) *(SINT16 *) *p_argv;
-+	  break;
-+
-+	case FFI_TYPE_UINT16:
-+	  *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv;
-+	  break;
-+
-+	case FFI_TYPE_INT:
-+	case FFI_TYPE_FLOAT:
-+	case FFI_TYPE_UINT32:
-+	case FFI_TYPE_SINT32:
-+	case FFI_TYPE_POINTER:
-+	  *(unsigned int *) argp = *(unsigned int *) *p_argv;
-+	  break;
-+
-+	case FFI_TYPE_DOUBLE:
-+	case FFI_TYPE_UINT64:
-+	case FFI_TYPE_SINT64:
-+	case FFI_TYPE_STRUCT:
-+	  memcpy (argp, *p_argv, z);
-+	  break;
-+
-+	default:
-+	  FFI_ASSERT (0);
-+	}
-+
-+      /* Align if necessary.  */
-+      if ((sizeof (int) - 1) & z)
-+	z = ALIGN(z, sizeof (int));
-+
-+      p_argv++;
-+
-+      /* Be careful, once all registers are filled, and about to continue
-+         on stack, regp == stackp.  Therefore the check for regused as well. */
-+      if (argp == (char *)regp && regused < 8)
-+	{
-+	  regp += z / sizeof (int);
-+	  regused += z / sizeof (int);
-+	}
-+      else
-+	stackp += z;
-+    }
-+
-+  return struct_value_ptr;
-+}
-+
-+/* Perform machine dependent cif processing */
-+ffi_status
-+ffi_prep_cif_machdep (ffi_cif *cif)
-+{
-+  /* Set the return type flag */
-+  switch (cif->rtype->type)
-+    {
-+    case FFI_TYPE_VOID:
-+      cif->flags = 0;
-+      break;
-+
-+    case FFI_TYPE_STRUCT:
-+      if (cif->rtype->size == sizeof (int) &&
-+	  cif->rtype->alignment == sizeof (int))
-+	cif->flags = CIF_FLAGS_INT;
-+      else
-+	cif->flags = 0;
-+      break;
-+
-+    case FFI_TYPE_DOUBLE:
-+    case FFI_TYPE_SINT64:
-+    case FFI_TYPE_UINT64:
-+      cif->flags = CIF_FLAGS_DINT;
-+      break;
-+
-+    default:
-+      cif->flags = CIF_FLAGS_INT;
-+      break;
-+    }
-+
-+  return FFI_OK;
-+}
-+
-+void
-+ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue)
-+{
-+  extended_cif ecif;
-+
-+  ecif.cif = cif;
-+  ecif.avalue = avalue;
-+
-+  /* If the return value is a struct and we don't have a return value
-+     address then we need to make one.  */
-+
-+  if (rvalue == NULL
-+      && cif->rtype->type == FFI_TYPE_STRUCT
-+      && (cif->rtype->size != sizeof (int)
-+	  || cif->rtype->alignment != sizeof (int)))
-+    ecif.rvalue = alloca (cif->rtype->size);
-+  else
-+    ecif.rvalue = rvalue;
-+
-+  switch (cif->abi)
-+    {
-+    case FFI_OBSD:
-+      ffi_call_OBSD (cif->bytes, &ecif, cif->flags, ecif.rvalue, fn);
-+      break;
-+
-+    default:
-+      FFI_ASSERT (0);
-+      break;
-+    }
-+}
-+
-+/*
-+ * Closure API
-+ */
-+
-+static void
-+ffi_prep_closure_args_OBSD (ffi_cif *cif, void **avalue, unsigned int *regp,
-+			    char *stackp)
-+{
-+  unsigned int i;
-+  void **p_argv;
-+  char *argp;
-+  unsigned int regused;
-+  ffi_type **p_arg;
-+
-+  regused = 0;
-+
-+  p_argv = avalue;
-+
-+  for (i = cif->nargs, p_arg = cif->arg_types; i != 0; i--, p_arg++)
-+    {
-+      size_t z;
-+      unsigned short t, a;
-+
-+      z = (*p_arg)->size;
-+      t = (*p_arg)->type;
-+      a = (*p_arg)->alignment;
-+
-+      /*
-+       * Figure out whether the argument has been passed through registers
-+       * or on the stack.
-+       * The rule is that registers can only receive simple types not larger
-+       * than 64 bits, or structs the exact size of a register and aligned to
-+       * the size of a register.
-+       */
-+      if (t == FFI_TYPE_STRUCT)
-+	{
-+	  if (z == sizeof (int) && a == sizeof (int) && regused < 8)
-+	    argp = (char *)regp;
-+	  else
-+	    argp = stackp;
-+	}
-+      else
-+	{
-+	  if (z > sizeof (int) && regused < 8 - 1)
-+	    {
-+	      /* align to an even register pair */
-+	      if (regused & 1)
-+		{
-+		  regp++;
-+		  regused++;
-+		}
-+	    }
-+	  if (regused < 8)
-+	    argp = (char *)regp;
-+	  else
-+	    argp = stackp;
-+	}
-+
-+      /* Enforce proper stack alignment of 64-bit types */
-+      if (argp == stackp && a > sizeof (int))
-+	{
-+	  stackp = (char *) ALIGN(stackp, a);
-+	  argp = stackp;
-+	}
-+
-+      if (z < sizeof (int) && t != FFI_TYPE_STRUCT)
-+	*p_argv = (void *) (argp + sizeof (int) - z);
-+      else
-+	*p_argv = (void *) argp;
-+
-+      /* Align if necessary */
-+      if ((sizeof (int) - 1) & z)
-+	z = ALIGN(z, sizeof (int));
-+
-+      p_argv++;
-+
-+      /* Be careful, once all registers are exhausted, and about to fetch from
-+	 stack, regp == stackp.  Therefore the check for regused as well. */
-+      if (argp == (char *)regp && regused < 8)
-+	{
-+	  regp += z / sizeof (int);
-+	  regused += z / sizeof (int);
-+	}
-+      else
-+	stackp += z;
-+    }
-+}
-+
-+unsigned int
-+ffi_closure_OBSD_inner (ffi_closure *closure, void *resp, unsigned int *regp,
-+			char *stackp)
-+{
-+  ffi_cif *cif;
-+  void **arg_area;
-+
-+  cif = closure->cif;
-+  arg_area = (void**) alloca (cif->nargs * sizeof (void *));
-+
-+  ffi_prep_closure_args_OBSD(cif, arg_area, regp, stackp);
-+
-+  (closure->fun) (cif, resp, arg_area, closure->user_data);
-+
-+  return cif->flags;
-+}
-+
-+ffi_status
-+ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif,
-+		      void (*fun)(ffi_cif*,void*,void**,void*),
-+		      void *user_data, void *codeloc)
-+{
-+  unsigned int *tramp = (unsigned int *) codeloc;
-+  void *fn;
-+
-+  FFI_ASSERT (cif->abi == FFI_OBSD);
-+
-+  if (cif->rtype->type == FFI_TYPE_STRUCT && !cif->flags)
-+    fn = &ffi_closure_struct_OBSD;
-+  else
-+    fn = &ffi_closure_OBSD;
-+
-+  /* or.u %r10, %r0, %hi16(fn) */
-+  tramp[0] = 0x5d400000 | (((unsigned int)fn) >> 16);
-+  /* or.u %r13, %r0, %hi16(closure) */
-+  tramp[1] = 0x5da00000 | ((unsigned int)closure >> 16);
-+  /* or %r10, %r10, %lo16(fn) */
-+  tramp[2] = 0x594a0000 | (((unsigned int)fn) & 0xffff);
-+  /* jmp.n %r10 */
-+  tramp[3] = 0xf400c40a;
-+  /* or %r13, %r13, %lo16(closure) */
-+  tramp[4] = 0x59ad0000 | ((unsigned int)closure & 0xffff);
-+
-+  ffi_cacheflush_OBSD((unsigned int)codeloc, FFI_TRAMPOLINE_SIZE);
-+
-+  closure->cif  = cif;
-+  closure->user_data = user_data;
-+  closure->fun  = fun;
-+
-+  return FFI_OK;
-+}
-diff --git a/js/src/ctypes/libffi/src/m88k/ffitarget.h b/js/src/ctypes/libffi/src/m88k/ffitarget.h
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/m88k/ffitarget.h
-@@ -0,0 +1,49 @@
-+/*
-+ * Copyright (c) 2013 Miodrag Vallat.  <miod@openbsd.org>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * ``Software''), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ * 
-+ * The above copyright notice and this permission notice shall be included
-+ * in all copies or substantial portions of the Software.
-+ * 
-+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/*
-+ * m88k Foreign Function Interface
-+ */
-+
-+#ifndef LIBFFI_TARGET_H
-+#define LIBFFI_TARGET_H
-+
-+#ifndef LIBFFI_ASM
-+typedef unsigned long ffi_arg;
-+typedef signed long ffi_sarg;
-+
-+typedef enum ffi_abi {
-+  FFI_FIRST_ABI = 0,
-+  FFI_OBSD,
-+  FFI_DEFAULT_ABI = FFI_OBSD,
-+  FFI_LAST_ABI = FFI_DEFAULT_ABI + 1
-+} ffi_abi;
-+#endif
-+
-+/* ---- Definitions for closures ----------------------------------------- */
-+
-+#define FFI_CLOSURES 1
-+#define FFI_TRAMPOLINE_SIZE 0x14
-+#define FFI_NATIVE_RAW_API 0
-+
-+#endif
-diff --git a/js/src/ctypes/libffi/src/m88k/obsd.S b/js/src/ctypes/libffi/src/m88k/obsd.S
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/m88k/obsd.S
-@@ -0,0 +1,209 @@
-+/*
-+ * Copyright (c) 2013 Miodrag Vallat.  <miod@openbsd.org>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * ``Software''), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ * 
-+ * The above copyright notice and this permission notice shall be included
-+ * in all copies or substantial portions of the Software.
-+ * 
-+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/*
-+ * m88k Foreign Function Interface
-+ */
-+
-+#define LIBFFI_ASM	
-+#include <fficonfig.h>
-+#include <ffi.h>
-+
-+	.text
-+
-+/*
-+ * ffi_cacheflush_OBSD(unsigned int addr,	%r2
-+ *		       unsigned int size);	%r3
-+ */
-+	.align	4
-+	.globl	ffi_cacheflush_OBSD
-+	.type	ffi_cacheflush_OBSD,@function
-+ffi_cacheflush_OBSD:
-+	tb0	0,   %r0, 451
-+	or	%r0, %r0, %r0
-+	jmp	%r1
-+	.size	ffi_cacheflush_OBSD, . - ffi_cacheflush_OBSD
-+
-+/*
-+ * ffi_call_OBSD(unsigned bytes,		%r2
-+ *		 extended_cif *ecif,		%r3
-+ *		 unsigned flags,		%r4
-+ *		 void *rvalue,			%r5
-+ *		 void (*fn)());			%r6
-+ */
-+	.align	4
-+	.globl	ffi_call_OBSD
-+	.type	ffi_call_OBSD,@function
-+ffi_call_OBSD:
-+	subu	%r31, %r31, 32
-+	st	%r30, %r31, 4
-+	st	%r1,  %r31, 0
-+	addu	%r30, %r31, 32
-+
-+	| Save the few arguments we'll need after ffi_prep_args()
-+	st.d	%r4, %r31, 8
-+	st	%r6, %r31, 16
-+
-+	| Allocate room for the image of r2-r9, and the stack space for
-+	| the args (rounded to a 16-byte boundary)
-+	addu	%r2,  %r2,  (8 * 4) + 15
-+	clr	%r2,  %r2,  4<0>
-+	subu	%r31, %r31, %r2
-+
-+	| Fill register and stack image
-+	or	%r2, %r31, %r0
-+#ifdef PIC
-+	bsr	ffi_prep_args#plt
-+#else
-+	bsr	ffi_prep_args
-+#endif
-+
-+	| Save pointer to return struct address, if any
-+	or	%r12, %r2, %r0
-+
-+	| Get function pointer
-+	subu	%r4,  %r30, 32
-+	ld	%r1,  %r4,  16
-+
-+	| Fetch the register arguments
-+	ld.d	%r2, %r31, (0 * 4)
-+	ld.d	%r4, %r31, (2 * 4)
-+	ld.d	%r6, %r31, (4 * 4)
-+	ld.d	%r8, %r31, (6 * 4)
-+	addu	%r31, %r31, (8 * 4)
-+
-+	| Invoke the function
-+	jsr	%r1
-+
-+	| Restore stack now that we don't need the args anymore
-+	subu	%r31, %r30, 32
-+
-+	| Figure out what to return as the function's return value
-+	ld	%r5, %r31, 12		| rvalue
-+	ld	%r4, %r31, 8		| flags
-+
-+	bcnd	eq0, %r5, 9f
-+
-+	bb0	0, %r4, 1f		| CIF_FLAGS_INT
-+	st	%r2, %r5, 0
-+	br	9f
-+
-+1:
-+	bb0	1, %r4, 1f		| CIF_FLAGS_DINT
-+	st.d	%r2, %r5, 0
-+	br	9f
-+
-+1:
-+9:
-+	ld	%r1,  %r31, 0
-+	ld	%r30, %r31, 4
-+	jmp.n	%r1
-+	 addu	%r31, %r31, 32
-+	.size	ffi_call_OBSD, . - ffi_call_OBSD
-+
-+/*
-+ * ffi_closure_OBSD(ffi_closure *closure);	%r13
-+ */
-+	.align	4
-+	.globl	ffi_closure_OBSD
-+	.type	ffi_closure_OBSD, @function
-+ffi_closure_OBSD:
-+	subu	%r31, %r31, 16
-+	st	%r30, %r31, 4
-+	st	%r1,  %r31, 0
-+	addu	%r30, %r31, 16
-+
-+	| Make room on the stack for saved register arguments and return
-+	| value
-+	subu	%r31, %r31, (8 * 4) + (2 * 4)
-+	st.d	%r2,  %r31, (0 * 4)
-+	st.d	%r4,  %r31, (2 * 4)
-+	st.d	%r6,  %r31, (4 * 4)
-+	st.d	%r8,  %r31, (6 * 4)
-+
-+	| Invoke the closure function
-+	or	%r5,  %r30, 0			| calling stack
-+	addu	%r4,  %r31, 0			| saved registers
-+	addu	%r3,  %r31, (8 * 4)		| return value
-+	or	%r2,  %r13, %r0			| closure
-+#ifdef PIC
-+	bsr	ffi_closure_OBSD_inner#plt
-+#else
-+	bsr	ffi_closure_OBSD_inner
-+#endif
-+
-+	| Figure out what to return as the function's return value
-+	bb0	0, %r2, 1f		| CIF_FLAGS_INT
-+	ld	%r2, %r31, (8 * 4)
-+	br	9f
-+
-+1:
-+	bb0	1, %r2, 1f		| CIF_FLAGS_DINT
-+	ld.d	%r2, %r31, (8 * 4)
-+	br	9f
-+
-+1:
-+9:
-+	subu	%r31, %r30, 16
-+	ld	%r1,  %r31, 0
-+	ld	%r30, %r31, 4
-+	jmp.n	%r1
-+	 addu	%r31, %r31, 16
-+	.size	ffi_closure_OBSD,.-ffi_closure_OBSD
-+
-+/*
-+ * ffi_closure_struct_OBSD(ffi_closure *closure);	%r13
-+ */
-+	.align	4
-+	.globl	ffi_closure_struct_OBSD
-+	.type	ffi_closure_struct_OBSD, @function
-+ffi_closure_struct_OBSD:
-+	subu	%r31, %r31, 16
-+	st	%r30, %r31, 4
-+	st	%r1,  %r31, 0
-+	addu	%r30, %r31, 16
-+
-+	| Make room on the stack for saved register arguments
-+	subu	%r31, %r31, (8 * 4)
-+	st.d	%r2,  %r31, (0 * 4)
-+	st.d	%r4,  %r31, (2 * 4)
-+	st.d	%r6,  %r31, (4 * 4)
-+	st.d	%r8,  %r31, (6 * 4)
-+
-+	| Invoke the closure function
-+	or	%r5,  %r30, 0			| calling stack
-+	addu	%r4,  %r31, 0			| saved registers
-+	or	%r3,  %r12, 0			| return value
-+	or	%r2,  %r13, %r0			| closure
-+#ifdef PIC
-+	bsr	ffi_closure_OBSD_inner#plt
-+#else
-+	bsr	ffi_closure_OBSD_inner
-+#endif
-+
-+	subu	%r31, %r30, 16
-+	ld	%r1,  %r31, 0
-+	ld	%r30, %r31, 4
-+	jmp.n	%r1
-+	 addu	%r31, %r31, 16
-+	.size	ffi_closure_struct_OBSD,.-ffi_closure_struct_OBSD
-diff --git a/js/src/ctypes/libffi/src/metag/ffi.c b/js/src/ctypes/libffi/src/metag/ffi.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/metag/ffi.c
-@@ -0,0 +1,330 @@
-+/* ----------------------------------------------------------------------
-+  ffi.c - Copyright (c) 2013 Imagination Technologies
-+
-+  Meta Foreign Function Interface
-+  Permission is hereby granted, free of charge, to any person obtaining
-+  a copy of this software and associated documentation files (the
-+  `Software''), to deal in the Software without restriction, including
-+  without limitation the rights to use, copy, modify, merge, publish,
-+  distribute, sublicense, and/or sell copies of the Software, and to
-+  permit persons to whom the Software is furnished to do so, subject to
-+  the following conditions:
-+
-+  The above copyright notice and this permission notice shall be included
-+  in all copies or substantial portions of the Software.
-+
-+  THE SOFTWARE IS PROVIDED `AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+  IN NO EVENT SHALL SIMON POSNJAK BE LIABLE FOR ANY CLAIM, DAMAGES OR
-+  OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-+  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+  OTHER DEALINGS IN THE SOFTWARE.
-+----------------------------------------------------------------------- */
-+
-+#include <ffi.h>
-+#include <ffi_common.h>
-+
-+#include <stdlib.h>
-+
-+#define MIN(a,b) (((a) < (b)) ? (a) : (b))
-+
-+/*
-+ * ffi_prep_args is called by the assembly routine once stack space has been
-+ * allocated for the function's arguments
-+ */
-+
-+unsigned int ffi_prep_args(char *stack, extended_cif *ecif)
-+{
-+	register unsigned int i;
-+	register void **p_argv;
-+	register char *argp;
-+	register ffi_type **p_arg;
-+
-+	argp = stack;
-+
-+	/* Store return value */
-+	if ( ecif->cif->flags == FFI_TYPE_STRUCT ) {
-+		argp -= 4;
-+		*(void **) argp = ecif->rvalue;
-+	}
-+
-+	p_argv = ecif->avalue;
-+
-+	/* point to next location */
-+	for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; (i != 0); i--, p_arg++, p_argv++)
-+	{
-+		size_t z;
-+
-+		/* Move argp to address of argument */
-+		z = (*p_arg)->size;
-+		argp -= z;
-+
-+		/* Align if necessary */
-+		argp = (char *) ALIGN_DOWN(ALIGN_DOWN(argp, (*p_arg)->alignment), 4);
-+
-+		if (z < sizeof(int)) {
-+			z = sizeof(int);
-+			switch ((*p_arg)->type)
-+			{
-+			case FFI_TYPE_SINT8:
-+				*(signed int *) argp = (signed int)*(SINT8 *)(* p_argv);
-+				break;
-+			case FFI_TYPE_UINT8:
-+				*(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv);
-+				break;
-+			case FFI_TYPE_SINT16:
-+				*(signed int *) argp = (signed int)*(SINT16 *)(* p_argv);
-+				break;
-+			case FFI_TYPE_UINT16:
-+				*(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv);
-+			case FFI_TYPE_STRUCT:
-+				memcpy(argp, *p_argv, (*p_arg)->size);
-+				break;
-+			default:
-+				FFI_ASSERT(0);
-+			}
-+		} else if ( z == sizeof(int)) {
-+			*(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv);
-+		} else {
-+			memcpy(argp, *p_argv, z);
-+		}
-+	}
-+
-+	/* return the size of the arguments to be passed in registers,
-+	   padded to an 8 byte boundary to preserve stack alignment */
-+	return ALIGN(MIN(stack - argp, 6*4), 8);
-+}
-+
-+/* Perform machine dependent cif processing */
-+ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
-+{
-+	ffi_type **ptr;
-+	unsigned i, bytes = 0;
-+
-+	for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++) {
-+		if ((*ptr)->size == 0)
-+			return FFI_BAD_TYPEDEF;
-+
-+		/* Perform a sanity check on the argument type, do this
-+		   check after the initialization.  */
-+		FFI_ASSERT_VALID_TYPE(*ptr);
-+
-+		/* Add any padding if necessary */
-+		if (((*ptr)->alignment - 1) & bytes)
-+			bytes = ALIGN(bytes, (*ptr)->alignment);
-+
-+		bytes += ALIGN((*ptr)->size, 4);
-+	}
-+
-+	/* Ensure arg space is aligned to an 8-byte boundary */
-+	bytes = ALIGN(bytes, 8);
-+
-+	/* Make space for the return structure pointer */
-+	if (cif->rtype->type == FFI_TYPE_STRUCT) {
-+		bytes += sizeof(void*);
-+
-+		/* Ensure stack is aligned to an 8-byte boundary */
-+		bytes = ALIGN(bytes, 8);
-+	}
-+
-+	cif->bytes = bytes;
-+
-+	/* Set the return type flag */
-+	switch (cif->rtype->type) {
-+	case FFI_TYPE_VOID:
-+	case FFI_TYPE_FLOAT:
-+	case FFI_TYPE_DOUBLE:
-+		cif->flags = (unsigned) cif->rtype->type;
-+		break;
-+	case FFI_TYPE_SINT64:
-+	case FFI_TYPE_UINT64:
-+		cif->flags = (unsigned) FFI_TYPE_SINT64;
-+		break;
-+	case FFI_TYPE_STRUCT:
-+		/* Meta can store return values which are <= 64 bits */
-+		if (cif->rtype->size <= 4)
-+			/* Returned to D0Re0 as 32-bit value */
-+			cif->flags = (unsigned)FFI_TYPE_INT;
-+		else if ((cif->rtype->size > 4) && (cif->rtype->size <= 8))
-+			/* Returned valued is stored to D1Re0|R0Re0 */
-+			cif->flags = (unsigned)FFI_TYPE_DOUBLE;
-+		else
-+			/* value stored in memory */
-+			cif->flags = (unsigned)FFI_TYPE_STRUCT;
-+		break;
-+	default:
-+		cif->flags = (unsigned)FFI_TYPE_INT;
-+		break;
-+	}
-+	return FFI_OK;
-+}
-+
-+extern void ffi_call_SYSV(void (*fn)(void), extended_cif *, unsigned, unsigned, double *);
-+
-+/*
-+ * Exported in API. Entry point
-+ * cif -> ffi_cif object
-+ * fn -> function pointer
-+ * rvalue -> pointer to return value
-+ * avalue -> vector of void * pointers pointing to memory locations holding the
-+ * arguments
-+ */
-+void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
-+{
-+	extended_cif ecif;
-+
-+	int small_struct = (((cif->flags == FFI_TYPE_INT) || (cif->flags == FFI_TYPE_DOUBLE)) && (cif->rtype->type == FFI_TYPE_STRUCT));
-+	ecif.cif = cif;
-+	ecif.avalue = avalue;
-+
-+	double temp;
-+
-+	/*
-+	 * If the return value is a struct and we don't have a return value address
-+	 * then we need to make one
-+	 */
-+
-+	if ((rvalue == NULL ) && (cif->flags == FFI_TYPE_STRUCT))
-+		ecif.rvalue = alloca(cif->rtype->size);
-+	else if (small_struct)
-+		ecif.rvalue = &temp;
-+	else
-+		ecif.rvalue = rvalue;
-+
-+	switch (cif->abi) {
-+	case FFI_SYSV:
-+		ffi_call_SYSV(fn, &ecif, cif->bytes, cif->flags, ecif.rvalue);
-+		break;
-+	default:
-+		FFI_ASSERT(0);
-+		break;
-+	}
-+
-+	if (small_struct)
-+		memcpy (rvalue, &temp, cif->rtype->size);
-+}
-+
-+/* private members */
-+
-+static void ffi_prep_incoming_args_SYSV (char *, void **, void **,
-+	ffi_cif*, float *);
-+
-+void ffi_closure_SYSV (ffi_closure *);
-+
-+/* Do NOT change that without changing the FFI_TRAMPOLINE_SIZE */
-+extern unsigned int ffi_metag_trampoline[10]; /* 10 instructions */
-+
-+/* end of private members */
-+
-+/*
-+ * __tramp: trampoline memory location
-+ * __fun: assembly routine
-+ * __ctx: memory location for wrapper
-+ *
-+ * At this point, tramp[0] == __ctx !
-+ */
-+void ffi_init_trampoline(unsigned char *__tramp, unsigned int __fun, unsigned int __ctx) {
-+	memcpy (__tramp, ffi_metag_trampoline, sizeof(ffi_metag_trampoline));
-+	*(unsigned int*) &__tramp[40] = __ctx;
-+	*(unsigned int*) &__tramp[44] = __fun;
-+	/* This will flush the instruction cache */
-+	__builtin_meta2_cachewd(&__tramp[0], 1);
-+	__builtin_meta2_cachewd(&__tramp[47], 1);
-+}
-+
-+
-+
-+/* the cif must already be prepared */
-+
-+ffi_status
-+ffi_prep_closure_loc (ffi_closure *closure,
-+	ffi_cif* cif,
-+	void (*fun)(ffi_cif*,void*,void**,void*),
-+	void *user_data,
-+	void *codeloc)
-+{
-+	void (*closure_func)(ffi_closure*) = NULL;
-+
-+	if (cif->abi == FFI_SYSV)
-+		closure_func = &ffi_closure_SYSV;
-+	else
-+		return FFI_BAD_ABI;
-+
-+	ffi_init_trampoline(
-+		(unsigned char*)&closure->tramp[0],
-+		(unsigned int)closure_func,
-+		(unsigned int)codeloc);
-+
-+	closure->cif = cif;
-+	closure->user_data = user_data;
-+	closure->fun = fun;
-+
-+	return FFI_OK;
-+}
-+
-+
-+/* This function is jumped to by the trampoline */
-+unsigned int ffi_closure_SYSV_inner (closure, respp, args, vfp_args)
-+	ffi_closure *closure;
-+	void **respp;
-+	void *args;
-+	void *vfp_args;
-+{
-+	ffi_cif *cif;
-+	void **arg_area;
-+
-+	cif = closure->cif;
-+	arg_area = (void**) alloca (cif->nargs * sizeof (void*));
-+
-+	/*
-+	 * This call will initialize ARG_AREA, such that each
-+	 * element in that array points to the corresponding
-+	 * value on the stack; and if the function returns
-+	 * a structure, it will re-set RESP to point to the
-+	 * structure return address.
-+	 */
-+	ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args);
-+
-+	(closure->fun) ( cif, *respp, arg_area, closure->user_data);
-+
-+	return cif->flags;
-+}
-+
-+static void ffi_prep_incoming_args_SYSV(char *stack, void **rvalue,
-+	void **avalue, ffi_cif *cif,
-+	float *vfp_stack)
-+{
-+	register unsigned int i;
-+	register void **p_argv;
-+	register char *argp;
-+	register ffi_type **p_arg;
-+
-+	/* stack points to original arguments */
-+	argp = stack;
-+
-+	/* Store return value */
-+	if ( cif->flags == FFI_TYPE_STRUCT ) {
-+		argp -= 4;
-+		*rvalue = *(void **) argp;
-+	}
-+
-+	p_argv = avalue;
-+
-+	for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) {
-+		size_t z;
-+		size_t alignment;
-+
-+		alignment = (*p_arg)->alignment;
-+		if (alignment < 4)
-+			alignment = 4;
-+		if ((alignment - 1) & (unsigned)argp)
-+			argp = (char *) ALIGN(argp, alignment);
-+
-+		z = (*p_arg)->size;
-+		*p_argv = (void*) argp;
-+		p_argv++;
-+		argp -= z;
-+	}
-+	return;
-+}
-diff --git a/js/src/ctypes/libffi/src/metag/ffitarget.h b/js/src/ctypes/libffi/src/metag/ffitarget.h
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/metag/ffitarget.h
-@@ -0,0 +1,53 @@
-+/* -----------------------------------------------------------------*-C-*-
-+   ffitarget.h - Copyright (c) 2013 Imagination Technologies Ltd.
-+   Target configuration macros for Meta
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+   DEALINGS IN THE SOFTWARE.
-+
-+   ----------------------------------------------------------------------- */
-+
-+#ifndef LIBFFI_TARGET_H
-+#define LIBFFI_TARGET_H
-+
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
-+#ifndef LIBFFI_ASM
-+typedef unsigned long          ffi_arg;
-+typedef signed long            ffi_sarg;
-+
-+typedef enum ffi_abi {
-+  FFI_FIRST_ABI = 0,
-+  FFI_SYSV,
-+  FFI_DEFAULT_ABI = FFI_SYSV,
-+  FFI_LAST_ABI = FFI_DEFAULT_ABI + 1,
-+} ffi_abi;
-+#endif
-+
-+/* ---- Definitions for closures ----------------------------------------- */
-+
-+#define FFI_CLOSURES 1
-+#define FFI_TRAMPOLINE_SIZE 48
-+#define FFI_NATIVE_RAW_API 0
-+
-+#endif
-+
-diff --git a/js/src/ctypes/libffi/src/metag/sysv.S b/js/src/ctypes/libffi/src/metag/sysv.S
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/metag/sysv.S
-@@ -0,0 +1,311 @@
-+/* -----------------------------------------------------------------------
-+   sysv.S - Copyright (c) 2013 Imagination Technologies Ltd.
-+
-+   Meta Foreign Function Interface
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+   DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#define LIBFFI_ASM
-+#include <fficonfig.h>
-+#include <ffi.h>
-+#ifdef HAVE_MACHINE_ASM_H
-+#include <machine/asm.h>
-+#else
-+#ifdef __USER_LABEL_PREFIX__
-+#define CONCAT1(a, b) CONCAT2(a, b)
-+#define CONCAT2(a, b) a ## b
-+
-+/* Use the right prefix for global labels. */
-+#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
-+#else
-+#define CNAME(x) x
-+#endif
-+#define ENTRY(x) .globl CNAME(x); .type CNAME(x), %function; CNAME(x):
-+#endif
-+
-+#ifdef __ELF__
-+#define LSYM(x) .x
-+#else
-+#define LSYM(x) x
-+#endif
-+
-+.macro call_reg x=
-+	.text
-+	.balign 4
-+	mov D1RtP, \x
-+	swap D1RtP, PC
-+.endm
-+
-+! Save register arguments
-+.macro SAVE_ARGS
-+	.text
-+	.balign 4
-+	setl	[A0StP++], D0Ar6, D1Ar5
-+	setl	[A0StP++], D0Ar4, D1Ar3
-+	setl	[A0StP++], D0Ar2, D1Ar1
-+.endm
-+
-+! Save retrun, frame pointer and other regs
-+.macro SAVE_REGS regs=
-+	.text
-+	.balign 4
-+	setl	[A0StP++], D0FrT, D1RtP
-+	! Needs to be a pair of regs
-+	.ifnc "\regs",""
-+	setl	[A0StP++], \regs
-+	.endif
-+.endm
-+
-+! Declare a global function
-+.macro METAG_FUNC_START name
-+	.text
-+	.balign 4
-+	ENTRY(\name)
-+.endm
-+
-+! Return registers from the stack. Reverse SAVE_REGS operation
-+.macro RET_REGS regs=, cond=
-+	.ifnc "\regs", ""
-+	getl	\regs, [--A0StP]
-+	.endif
-+	getl	D0FrT, D1RtP, [--A0StP]
-+.endm
-+
-+! Return arguments
-+.macro RET_ARGS
-+	getl	D0Ar2, D1Ar1, [--A0StP]
-+	getl	D0Ar4, D1Ar3, [--A0StP]
-+	getl	D0Ar6, D1Ar5, [--A0StP]
-+.endm
-+
-+
-+	! D1Ar1:	fn
-+	! D0Ar2:	&ecif
-+	! D1Ar3:	cif->bytes
-+	! D0Ar4:	fig->flags
-+	! D1Ar5:	ecif.rvalue
-+
-+	! This assumes we are using GNU as
-+METAG_FUNC_START ffi_call_SYSV
-+	! Save argument registers
-+
-+	SAVE_ARGS
-+
-+	! new frame
-+	mov	D0FrT, A0FrP
-+	add     A0FrP, A0StP, #0
-+
-+	! Preserve the old frame pointer
-+	SAVE_REGS "D1.5, D0.5"
-+
-+	! Make room for new args. cifs->bytes is the total space for input
-+	! and return arguments
-+
-+	add	A0StP, A0StP, D1Ar3
-+
-+	! Preserve cifs->bytes & fn
-+	mov	D0.5, D1Ar3
-+	mov	D1.5, D1Ar1
-+
-+	! Place all of the ffi_prep_args in position
-+	mov	D1Ar1, A0StP
-+
-+	! Call ffi_prep_args(stack, &ecif)
-+#ifdef __PIC__
-+	callr  D1RtP, CNAME(ffi_prep_args@PLT)
-+#else
-+	callr  D1RtP, CNAME(ffi_prep_args)
-+#endif
-+
-+	! Restore fn pointer
-+
-+	! The foreign stack should look like this
-+	! XXXXX XXXXXX <--- stack pointer
-+	! FnArgN rvalue
-+	! FnArgN+2 FnArgN+1
-+	! FnArgN+4 FnArgN+3
-+	! ....
-+	!
-+
-+	! A0StP now points to the first (or return) argument + 4
-+
-+	! Preserve cif->bytes
-+	getl	D0Ar2, D1Ar1, [--A0StP]
-+	getl	D0Ar4, D1Ar3, [--A0StP]
-+	getl	D0Ar6, D1Ar5, [--A0StP]
-+
-+	! Place A0StP to the first argument again
-+	add	A0StP, A0StP, #24 ! That's because we loaded 6 regs x 4 byte each
-+
-+	! A0FrP points to the initial stack without the reserved space for the
-+	! cifs->bytes, whilst A0StP points to the stack after the space allocation
-+
-+	! fn was the first argument of ffi_call_SYSV.
-+	! The stack at this point looks like this:
-+	!
-+	! A0StP(on entry to _SYSV) ->	Arg6	Arg5     | low
-+	!				Arg4	Arg3     |
-+	! 				Arg2	Arg1     |
-+	! A0FrP ---->			D0FrtP	D1RtP    |
-+	!				D1.5	D0.5	 |
-+	! A0StP(bf prep_args) ->	FnArgn	FnArgn-1 |
-+	!				FnArgn-2FnArgn-3 |
-+	!				................ | <= cifs->bytes
-+	!				FnArg4  FnArg3	 |
-+	! A0StP (prv_A0StP+cifs->bytes) FnArg2  FnArg1   | high
-+	!
-+	! fn was in Arg1 so it's located in in A0FrP+#-0xC
-+	!
-+
-+	! D0Re0 contains the size of arguments stored in registers
-+	sub	A0StP, A0StP, D0Re0
-+
-+	! Arg1 is the function pointer for the foreign call. This has been
-+	! preserved in D1.5
-+
-+	! Time to call (fn). Arguments should be like this:
-+	! Arg1-Arg6 are loaded to regs
-+	! The rest of the arguments are stored in stack pointed by A0StP
-+
-+	call_reg D1.5
-+
-+	! Reset stack.
-+
-+	mov	A0StP, A0FrP
-+
-+	! Load Arg1 with the pointer to storage for the return type
-+	! This was stored in Arg5
-+
-+	getd	D1Ar1, [A0FrP+#-20]
-+
-+	! Load D0Ar2 with the return type code. This was stored in Arg4 (flags)
-+
-+	getd	D0Ar2, [A0FrP+#-16]
-+
-+	! We are ready to start processing the return value
-+	! D0Re0 (and D1Re0) hold the return value
-+
-+	! If the return value is NULL, assume no return value
-+	cmp	D1Ar1, #0
-+	beq	LSYM(Lepilogue)
-+
-+	! return INT
-+	cmp		D0Ar2, #FFI_TYPE_INT
-+	! Sadly, there is no setd{cc} instruction so we need to workaround that
-+	bne	.INT64
-+	setd	[D1Ar1], D0Re0
-+	b	LSYM(Lepilogue)
-+
-+	! return INT64
-+.INT64:
-+	cmp	D0Ar2, #FFI_TYPE_SINT64
-+	setleq	[D1Ar1], D0Re0, D1Re0
-+
-+	! return DOUBLE
-+	cmp	D0Ar2, #FFI_TYPE_DOUBLE
-+	setl	[D1AR1++], D0Re0, D1Re0
-+
-+LSYM(Lepilogue):
-+	! At this point, the stack pointer points right after the argument
-+	! saved area. We need to restore 4 regs, therefore we need to move
-+	! 16 bytes ahead.
-+	add     A0StP, A0StP, #16
-+	RET_REGS "D1.5, D0.5"
-+	RET_ARGS
-+	getd	D0Re0, [A0StP]
-+	mov     A0FrP, D0FrT
-+	swap	D1RtP, PC
-+
-+.ffi_call_SYSV_end:
-+       .size   CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV)
-+
-+
-+/*
-+	(called by ffi_metag_trampoline)
-+	void ffi_closure_SYSV (ffi_closure*)
-+
-+	(called by ffi_closure_SYSV)
-+	unsigned int FFI_HIDDEN
-+	ffi_closure_SYSV_inner (closure,respp, args)
-+		ffi_closure *closure;
-+		void **respp;
-+		void *args;
-+*/
-+
-+METAG_FUNC_START ffi_closure_SYSV
-+	! We assume that D1Ar1 holds the address of the
-+	! ffi_closure struct. We will use that to fetch the
-+	! arguments. The stack pointer points to an empty space
-+	! and it is ready to store more data.
-+
-+	! D1Ar1 is ready
-+	! Allocate stack space for return value
-+	add A0StP, A0StP, #8
-+	! Store it to D0Ar2
-+	sub D0Ar2, A0StP, #8
-+
-+	sub D1Ar3, A0FrP, #4
-+
-+	! D1Ar3 contains the address of the original D1Ar1 argument
-+	! We need to subtract #4 later on
-+
-+	! Preverve D0Ar2
-+	mov D0.5, D0Ar2
-+
-+#ifdef __PIC__
-+	callr D1RtP, CNAME(ffi_closure_SYSV_inner@PLT)
-+#else
-+	callr D1RtP, CNAME(ffi_closure_SYSV_inner)
-+#endif
-+
-+	! Check the return value and store it to D0.5
-+	cmp D0Re0, #FFI_TYPE_INT
-+	beq .Lretint
-+	cmp D0Re0, #FFI_TYPE_DOUBLE
-+	beq .Lretdouble
-+.Lclosure_epilogue:
-+	sub A0StP, A0StP, #8
-+	RET_REGS "D1.5, D0.5"
-+	RET_ARGS
-+	swap	D1RtP, PC
-+
-+.Lretint:
-+	setd [D0.5], D0Re0
-+	b .Lclosure_epilogue
-+.Lretdouble:
-+	setl [D0.5++], D0Re0, D1Re0
-+	b .Lclosure_epilogue
-+.ffi_closure_SYSV_end:
-+.size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV)
-+
-+
-+ENTRY(ffi_metag_trampoline)
-+	SAVE_ARGS
-+	! New frame
-+	mov A0FrP, A0StP
-+	SAVE_REGS "D1.5, D0.5"
-+	mov D0.5, PC
-+	! Load D1Ar1 the value of ffi_metag_trampoline
-+	getd D1Ar1, [D0.5 + #8]
-+	! Jump to ffi_closure_SYSV
-+	getd PC, [D0.5 + #12]
-diff --git a/js/src/ctypes/libffi/src/microblaze/ffi.c b/js/src/ctypes/libffi/src/microblaze/ffi.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/microblaze/ffi.c
-@@ -0,0 +1,321 @@
-+/* -----------------------------------------------------------------------
-+   ffi.c - Copyright (c) 2012, 2013 Xilinx, Inc
-+
-+   MicroBlaze Foreign Function Interface
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+   DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#include <ffi.h>
-+#include <ffi_common.h>
-+
-+extern void ffi_call_SYSV(void (*)(void*, extended_cif*), extended_cif*,
-+		unsigned int, unsigned int, unsigned int*, void (*fn)(void),
-+		unsigned int, unsigned int);
-+
-+extern void ffi_closure_SYSV(void);
-+
-+#define WORD_SIZE			sizeof(unsigned int)
-+#define ARGS_REGISTER_SIZE	(WORD_SIZE * 6)
-+#define WORD_ALIGN(x)		ALIGN(x, WORD_SIZE)
-+
-+/* ffi_prep_args is called by the assembly routine once stack space
-+   has been allocated for the function's arguments */
-+void ffi_prep_args(void* stack, extended_cif* ecif)
-+{
-+	unsigned int i;
-+	ffi_type** p_arg;
-+	void** p_argv;
-+	void* stack_args_p = stack;
-+
-+	p_argv = ecif->avalue;
-+
-+	if (ecif == NULL || ecif->cif == NULL) {
-+		return; /* no description to prepare */
-+	}
-+
-+	if ((ecif->cif->rtype != NULL) &&
-+			(ecif->cif->rtype->type == FFI_TYPE_STRUCT))
-+	{
-+		/* if return type is a struct which is referenced on the stack/reg5,
-+		 * by a pointer. Stored the return value pointer in r5.
-+		 */
-+		char* addr = stack_args_p;
-+		memcpy(addr, &(ecif->rvalue), WORD_SIZE);
-+		stack_args_p += WORD_SIZE;
-+	}
-+
-+	if (ecif->avalue == NULL) {
-+		return; /* no arguments to prepare */
-+	}
-+
-+	for (i = 0, p_arg = ecif->cif->arg_types; i < ecif->cif->nargs;
-+			i++, p_arg++)
-+	{
-+		size_t size = (*p_arg)->size;
-+		int type = (*p_arg)->type;
-+		void* value = p_argv[i];
-+		char* addr = stack_args_p;
-+		int aligned_size = WORD_ALIGN(size);
-+
-+		/* force word alignment on the stack */
-+		stack_args_p += aligned_size;
-+		
-+		switch (type)
-+		{
-+			case FFI_TYPE_UINT8:
-+				*(unsigned int *)addr = (unsigned int)*(UINT8*)(value);
-+				break;
-+			case FFI_TYPE_SINT8:
-+				*(signed int *)addr = (signed int)*(SINT8*)(value);
-+				break;
-+			case FFI_TYPE_UINT16:
-+				*(unsigned int *)addr = (unsigned int)*(UINT16*)(value);
-+				break;
-+			case FFI_TYPE_SINT16:
-+				*(signed int *)addr = (signed int)*(SINT16*)(value);
-+				break;
-+			case FFI_TYPE_STRUCT:
-+#if __BIG_ENDIAN__
-+				/*
-+				 * MicroBlaze toolchain appears to emit:
-+				 * bsrli r5, r5, 8 (caller)
-+				 * ...
-+				 * <branch to callee>
-+				 * ...
-+				 * bslli r5, r5, 8 (callee)
-+				 * 
-+				 * For structs like "struct a { uint8_t a[3]; };", when passed
-+				 * by value.
-+				 *
-+				 * Structs like "struct b { uint16_t a; };" are also expected
-+				 * to be packed strangely in registers.
-+				 *
-+				 * This appears to be because the microblaze toolchain expects
-+				 * "struct b == uint16_t", which is only any issue for big
-+				 * endian.
-+				 *
-+				 * The following is a work around for big-endian only, for the
-+				 * above mentioned case, it will re-align the contents of a
-+				 * <= 3-byte struct value.
-+				 */
-+				if (size < WORD_SIZE)
-+				{
-+				  memcpy (addr + (WORD_SIZE - size), value, size);
-+				  break;
-+				}
-+#endif
-+			case FFI_TYPE_SINT32:
-+			case FFI_TYPE_UINT32:
-+			case FFI_TYPE_FLOAT:
-+			case FFI_TYPE_SINT64:
-+			case FFI_TYPE_UINT64:
-+			case FFI_TYPE_DOUBLE:
-+			default:
-+				memcpy(addr, value, aligned_size);
-+		}
-+	}
-+}
-+
-+ffi_status ffi_prep_cif_machdep(ffi_cif* cif)
-+{
-+	/* check ABI */
-+	switch (cif->abi)
-+	{
-+		case FFI_SYSV:
-+			break;
-+		default:
-+			return FFI_BAD_ABI;
-+	}
-+	return FFI_OK;
-+}
-+
-+void ffi_call(ffi_cif* cif, void (*fn)(void), void* rvalue, void** avalue)
-+{
-+	extended_cif ecif;
-+	ecif.cif = cif;
-+	ecif.avalue = avalue;
-+
-+	/* If the return value is a struct and we don't have a return */
-+	/* value address then we need to make one */
-+	if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) {
-+		ecif.rvalue = alloca(cif->rtype->size);
-+	} else {
-+		ecif.rvalue = rvalue;
-+	}
-+
-+	switch (cif->abi)
-+	{
-+	case FFI_SYSV:
-+		ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags,
-+				ecif.rvalue, fn, cif->rtype->type, cif->rtype->size);
-+		break;
-+	default:
-+		FFI_ASSERT(0);
-+		break;
-+	}
-+}
-+
-+void ffi_closure_call_SYSV(void* register_args, void* stack_args,
-+			ffi_closure* closure, void* rvalue,
-+			unsigned int* rtype, unsigned int* rsize)
-+{
-+	/* prepare arguments for closure call */
-+	ffi_cif* cif = closure->cif;
-+	ffi_type** arg_types = cif->arg_types;
-+
-+	/* re-allocate data for the args. This needs to be done in order to keep
-+	 * multi-word objects (e.g. structs) in contiguous memory. Callers are not
-+	 * required to store the value of args in the lower 6 words in the stack
-+	 * (although they are allocated in the stack).
-+	 */
-+	char* stackclone = alloca(cif->bytes);
-+	void** avalue = alloca(cif->nargs * sizeof(void*));
-+	void* struct_rvalue = NULL;
-+	char* ptr = stackclone;
-+	int i;
-+
-+	/* copy registers into stack clone */
-+	int registers_used = cif->bytes;
-+	if (registers_used > ARGS_REGISTER_SIZE) {
-+		registers_used = ARGS_REGISTER_SIZE;
-+	}
-+	memcpy(stackclone, register_args, registers_used);
-+
-+	/* copy stack allocated args into stack clone */
-+	if (cif->bytes > ARGS_REGISTER_SIZE) {
-+		int stack_used = cif->bytes - ARGS_REGISTER_SIZE;
-+		memcpy(stackclone + ARGS_REGISTER_SIZE, stack_args, stack_used);
-+	}
-+
-+	/* preserve struct type return pointer passing */
-+	if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) {
-+		struct_rvalue = *((void**)ptr);
-+		ptr += WORD_SIZE;
-+	}
-+
-+	/* populate arg pointer list */
-+	for (i = 0; i < cif->nargs; i++)
-+	{
-+		switch (arg_types[i]->type)
-+		{
-+			case FFI_TYPE_SINT8:
-+			case FFI_TYPE_UINT8:
-+#ifdef __BIG_ENDIAN__
-+				avalue[i] = ptr + 3;
-+#else
-+				avalue[i] = ptr;
-+#endif
-+				break;
-+			case FFI_TYPE_SINT16:
-+			case FFI_TYPE_UINT16:
-+#ifdef __BIG_ENDIAN__
-+				avalue[i] = ptr + 2;
-+#else
-+				avalue[i] = ptr;
-+#endif
-+				break;
-+			case FFI_TYPE_STRUCT:
-+#if __BIG_ENDIAN__
-+				/*
-+				 * Work around strange ABI behaviour.
-+				 * (see info in ffi_prep_args)
-+				 */
-+				if (arg_types[i]->size < WORD_SIZE)
-+				{
-+				  memcpy (ptr, ptr + (WORD_SIZE - arg_types[i]->size), arg_types[i]->size);
-+				}
-+#endif
-+				avalue[i] = (void*)ptr;
-+				break;
-+			case FFI_TYPE_UINT64:
-+			case FFI_TYPE_SINT64:
-+			case FFI_TYPE_DOUBLE:
-+				avalue[i] = ptr;
-+				break;
-+			case FFI_TYPE_SINT32:
-+			case FFI_TYPE_UINT32:
-+			case FFI_TYPE_FLOAT:
-+			default:
-+				/* default 4-byte argument */
-+				avalue[i] = ptr;
-+				break;
-+		}
-+		ptr += WORD_ALIGN(arg_types[i]->size);
-+	}
-+
-+	/* set the return type info passed back to the wrapper */
-+	*rsize = cif->rtype->size;
-+	*rtype = cif->rtype->type;
-+	if (struct_rvalue != NULL) {
-+		closure->fun(cif, struct_rvalue, avalue, closure->user_data);
-+		/* copy struct return pointer value into function return value */
-+		*((void**)rvalue) = struct_rvalue;
-+	} else {
-+		closure->fun(cif, rvalue, avalue, closure->user_data);
-+	}
-+}
-+
-+ffi_status ffi_prep_closure_loc(
-+		ffi_closure* closure, ffi_cif* cif,
-+		void (*fun)(ffi_cif*, void*, void**, void*),
-+		void* user_data, void* codeloc)
-+{
-+	unsigned long* tramp = (unsigned long*)&(closure->tramp[0]);
-+	unsigned long cls = (unsigned long)codeloc;
-+	unsigned long fn = 0;
-+	unsigned long fn_closure_call_sysv = (unsigned long)ffi_closure_call_SYSV;
-+
-+	closure->cif = cif;
-+	closure->fun = fun;
-+	closure->user_data = user_data;
-+
-+	switch (cif->abi)
-+	{
-+	case FFI_SYSV:
-+		fn = (unsigned long)ffi_closure_SYSV;
-+
-+		/* load r11 (temp) with fn */
-+		/* imm fn(upper) */
-+		tramp[0] = 0xb0000000 | ((fn >> 16) & 0xffff);
-+		/* addik r11, r0, fn(lower) */
-+		tramp[1] = 0x31600000 | (fn & 0xffff);
-+
-+		/* load r12 (temp) with cls */
-+		/* imm cls(upper) */
-+		tramp[2] = 0xb0000000 | ((cls >> 16) & 0xffff);
-+		/* addik r12, r0, cls(lower) */
-+		tramp[3] = 0x31800000 | (cls & 0xffff);
-+
-+		/* load r3 (temp) with ffi_closure_call_SYSV */
-+		/* imm fn_closure_call_sysv(upper) */
-+		tramp[4] = 0xb0000000 | ((fn_closure_call_sysv >> 16) & 0xffff);
-+		/* addik r3, r0, fn_closure_call_sysv(lower) */
-+		tramp[5] = 0x30600000 | (fn_closure_call_sysv & 0xffff);
-+		/* branch/jump to address stored in r11 (fn) */
-+		tramp[6] = 0x98085800; /* bra r11 */
-+
-+		break;
-+	default:
-+		return FFI_BAD_ABI;
-+	}
-+	return FFI_OK;
-+}
-diff --git a/js/src/ctypes/libffi/src/microblaze/ffitarget.h b/js/src/ctypes/libffi/src/microblaze/ffitarget.h
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/microblaze/ffitarget.h
-@@ -0,0 +1,53 @@
-+/* -----------------------------------------------------------------------
-+   ffitarget.h - Copyright (c) 2012, 2013 Xilinx, Inc
-+
-+   Target configuration macros for MicroBlaze.
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+   DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#ifndef LIBFFI_TARGET_H
-+#define LIBFFI_TARGET_H
-+
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
-+#ifndef LIBFFI_ASM
-+typedef unsigned long			ffi_arg;
-+typedef signed long			ffi_sarg;
-+
-+typedef enum ffi_abi {
-+	FFI_FIRST_ABI = 0,
-+	FFI_SYSV,
-+	FFI_LAST_ABI,
-+	FFI_DEFAULT_ABI = FFI_SYSV
-+} ffi_abi;
-+#endif
-+
-+/* Definitions for closures */
-+
-+#define FFI_CLOSURES 1
-+#define FFI_NATIVE_RAW_API 0
-+
-+#define FFI_TRAMPOLINE_SIZE (4*8)
-+
-+#endif
-diff --git a/js/src/ctypes/libffi/src/microblaze/sysv.S b/js/src/ctypes/libffi/src/microblaze/sysv.S
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/microblaze/sysv.S
-@@ -0,0 +1,302 @@
-+/* -----------------------------------------------------------------------
-+   sysv.S - Copyright (c) 2012, 2013 Xilinx, Inc
-+
-+   MicroBlaze Foreign Function Interface
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+   DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#define LIBFFI_ASM
-+#include <fficonfig.h>
-+#include <ffi.h>
-+
-+	/*
-+	 * arg[0] (r5)  = ffi_prep_args,
-+	 * arg[1] (r6)  = &ecif,
-+	 * arg[2] (r7)  = cif->bytes,
-+	 * arg[3] (r8)  = cif->flags,
-+	 * arg[4] (r9)  = ecif.rvalue,
-+	 * arg[5] (r10) = fn
-+	 * arg[6] (sp[0]) = cif->rtype->type
-+	 * arg[7] (sp[4]) = cif->rtype->size
-+	 */
-+	.text
-+	.globl ffi_call_SYSV
-+	.type ffi_call_SYSV, @function
-+ffi_call_SYSV:
-+	/* push callee saves */
-+	addik r1, r1, -20
-+	swi r19, r1, 0 /* Frame Pointer */
-+	swi r20, r1, 4 /* PIC register */
-+	swi r21, r1, 8 /* PIC register */
-+	swi r22, r1, 12 /* save for locals */
-+	swi r23, r1, 16 /* save for locals */
-+	
-+	/* save the r5-r10 registers in the stack */
-+	addik r1, r1, -24 /* increment sp to store 6x 32-bit words */
-+	swi r5, r1, 0
-+	swi r6, r1, 4
-+	swi r7, r1, 8
-+	swi r8, r1, 12
-+	swi r9, r1, 16
-+	swi r10, r1, 20
-+
-+	/* save function pointer */
-+	addik r3, r5, 0 /* copy ffi_prep_args into r3 */
-+	addik r22, r1, 0 /* save sp for unallocated args into r22 (callee-saved) */
-+	addik r23, r10, 0 /* save function address into r23 (callee-saved) */
-+
-+	/* prepare stack with allocation for n (bytes = r7) args */
-+	rsub r1, r7, r1 /* subtract bytes from sp */
-+
-+	/* prep args for ffi_prep_args call */
-+	addik r5, r1, 0 /* store stack pointer into arg[0] */
-+	/* r6 still holds ecif for arg[1] */
-+
-+	/* Call ffi_prep_args(stack, &ecif). */
-+	addik r1, r1, -4
-+	swi r15, r1, 0 /* store the link register in the frame */
-+	brald r15, r3
-+	nop /* branch has delay slot */
-+	lwi r15, r1, 0
-+	addik r1, r1, 4 /* restore the link register from the frame */
-+	/* returns calling stack pointer location */
-+
-+	/* prepare args for fn call, prep_args populates them onto the stack */
-+	lwi r5, r1, 0 /* arg[0] */
-+	lwi r6, r1, 4 /* arg[1] */
-+	lwi r7, r1, 8 /* arg[2] */
-+	lwi r8, r1, 12 /* arg[3] */
-+	lwi r9, r1, 16 /* arg[4] */
-+	lwi r10, r1, 20 /* arg[5] */
-+
-+	/* call (fn) (...). */
-+	addik r1, r1, -4
-+	swi r15, r1, 0 /* store the link register in the frame */
-+	brald r15, r23
-+	nop /* branch has delay slot */
-+	lwi r15, r1, 0
-+	addik r1, r1, 4 /* restore the link register from the frame */
-+
-+	/* Remove the space we pushed for the args. */
-+	addik r1, r22, 0 /* restore old SP */
-+
-+	/* restore this functions parameters */
-+	lwi r5, r1, 0 /* arg[0] */
-+	lwi r6, r1, 4 /* arg[1] */
-+	lwi r7, r1, 8 /* arg[2] */
-+	lwi r8, r1, 12 /* arg[3] */
-+	lwi r9, r1, 16 /* arg[4] */
-+	lwi r10, r1, 20 /* arg[5] */
-+	addik r1, r1, 24 /* decrement sp to de-allocate 6x 32-bit words */
-+
-+	/* If the return value pointer is NULL, assume no return value. */
-+	beqi r9, ffi_call_SYSV_end
-+
-+	lwi r22, r1, 48 /* get return type (20 for locals + 28 for arg[6]) */
-+	lwi r23, r1, 52 /* get return size (20 for locals + 32 for arg[7])  */
-+	
-+	/* Check if return type is actually a struct, do nothing */
-+	rsubi r11, r22, FFI_TYPE_STRUCT
-+	beqi r11, ffi_call_SYSV_end
-+
-+	/* Return 8bit */
-+	rsubi r11, r23, 1
-+	beqi r11, ffi_call_SYSV_store8
-+
-+	/* Return 16bit */
-+	rsubi r11, r23, 2
-+	beqi r11, ffi_call_SYSV_store16
-+
-+	/* Return 32bit */
-+	rsubi r11, r23, 4
-+	beqi r11, ffi_call_SYSV_store32
-+
-+	/* Return 64bit */
-+	rsubi r11, r23, 8
-+	beqi r11, ffi_call_SYSV_store64
-+
-+	/* Didn't match anything */
-+	bri ffi_call_SYSV_end
-+
-+ffi_call_SYSV_store64:
-+	swi r3, r9, 0 /* store word r3 into return value */
-+	swi r4, r9, 4 /* store word r4 into return value */
-+	bri ffi_call_SYSV_end
-+
-+ffi_call_SYSV_store32:
-+	swi r3, r9, 0 /* store word r3 into return value */
-+	bri ffi_call_SYSV_end
-+
-+ffi_call_SYSV_store16:
-+#ifdef __BIG_ENDIAN__
-+	shi r3, r9, 2 /* store half-word r3 into return value */
-+#else
-+	shi r3, r9, 0 /* store half-word r3 into return value */
-+#endif
-+	bri ffi_call_SYSV_end
-+
-+ffi_call_SYSV_store8:
-+#ifdef __BIG_ENDIAN__
-+	sbi r3, r9, 3 /* store byte r3 into return value */
-+#else
-+	sbi r3, r9, 0 /* store byte r3 into return value */
-+#endif
-+	bri ffi_call_SYSV_end
-+
-+ffi_call_SYSV_end:
-+	/* callee restores */
-+	lwi r19, r1, 0 /* frame pointer */
-+	lwi r20, r1, 4 /* PIC register */
-+	lwi r21, r1, 8 /* PIC register */
-+	lwi r22, r1, 12
-+	lwi r23, r1, 16
-+	addik r1, r1, 20
-+
-+	/* return from sub-routine (with delay slot) */
-+	rtsd r15, 8
-+	nop
-+
-+	.size ffi_call_SYSV, . - ffi_call_SYSV
-+
-+/* ------------------------------------------------------------------------- */
-+
-+	/*
-+	 * args passed into this function, are passed down to the callee.
-+	 * this function is the target of the closure trampoline, as such r12 is 
-+	 * a pointer to the closure object.
-+	 */
-+	.text
-+	.globl ffi_closure_SYSV
-+	.type ffi_closure_SYSV, @function
-+ffi_closure_SYSV:
-+	/* push callee saves */
-+	addik r11, r1, 28 /* save stack args start location (excluding regs/link) */
-+	addik r1, r1, -12
-+	swi r19, r1, 0 /* Frame Pointer */
-+	swi r20, r1, 4 /* PIC register */
-+	swi r21, r1, 8 /* PIC register */
-+
-+	/* store register args on stack */
-+	addik r1, r1, -24
-+	swi r5, r1, 0
-+	swi r6, r1, 4
-+	swi r7, r1, 8
-+	swi r8, r1, 12
-+	swi r9, r1, 16
-+	swi r10, r1, 20
-+
-+	/* setup args */
-+	addik r5, r1, 0 /* register_args */
-+	addik r6, r11, 0 /* stack_args */
-+	addik r7, r12, 0 /* closure object */
-+	addik r1, r1, -8 /* allocate return value */
-+	addik r8, r1, 0 /* void* rvalue */
-+	addik r1, r1, -8 /* allocate for return type/size values */
-+	addik r9, r1, 0 /* void* rtype */
-+	addik r10, r1, 4 /* void* rsize */
-+
-+	/* call the wrap_call function */
-+	addik r1, r1, -28 /* allocate args + link reg */
-+	swi r15, r1, 0 /* store the link register in the frame */
-+	brald r15, r3
-+	nop /* branch has delay slot */
-+	lwi r15, r1, 0
-+	addik r1, r1, 28 /* restore the link register from the frame */
-+
-+ffi_closure_SYSV_prepare_return:
-+	lwi r9, r1, 0 /* rtype */
-+	lwi r10, r1, 4 /* rsize */
-+	addik r1, r1, 8 /* de-allocate return info values */
-+
-+	/* Check if return type is actually a struct, store 4 bytes */
-+	rsubi r11, r9, FFI_TYPE_STRUCT
-+	beqi r11, ffi_closure_SYSV_store32
-+
-+	/* Return 8bit */
-+	rsubi r11, r10, 1
-+	beqi r11, ffi_closure_SYSV_store8
-+
-+	/* Return 16bit */
-+	rsubi r11, r10, 2
-+	beqi r11, ffi_closure_SYSV_store16
-+
-+	/* Return 32bit */
-+	rsubi r11, r10, 4
-+	beqi r11, ffi_closure_SYSV_store32
-+
-+	/* Return 64bit */
-+	rsubi r11, r10, 8
-+	beqi r11, ffi_closure_SYSV_store64
-+
-+	/* Didn't match anything */
-+	bri ffi_closure_SYSV_end
-+
-+ffi_closure_SYSV_store64:
-+	lwi r3, r1, 0 /* store word r3 into return value */
-+	lwi r4, r1, 4 /* store word r4 into return value */
-+	/* 64 bits == 2 words, no sign extend occurs */
-+	bri ffi_closure_SYSV_end
-+
-+ffi_closure_SYSV_store32:
-+	lwi r3, r1, 0 /* store word r3 into return value */
-+	/* 32 bits == 1 word, no sign extend occurs */
-+	bri ffi_closure_SYSV_end
-+
-+ffi_closure_SYSV_store16:
-+#ifdef __BIG_ENDIAN__
-+	lhui r3, r1, 2 /* store half-word r3 into return value */
-+#else
-+	lhui r3, r1, 0 /* store half-word r3 into return value */
-+#endif
-+	rsubi r11, r9, FFI_TYPE_SINT16
-+	bnei r11, ffi_closure_SYSV_end
-+	sext16 r3, r3 /* fix sign extend of sint8 */
-+	bri ffi_closure_SYSV_end
-+
-+ffi_closure_SYSV_store8:
-+#ifdef __BIG_ENDIAN__
-+	lbui r3, r1, 3 /* store byte r3 into return value */
-+#else
-+	lbui r3, r1, 0 /* store byte r3 into return value */
-+#endif
-+	rsubi r11, r9, FFI_TYPE_SINT8
-+	bnei r11, ffi_closure_SYSV_end
-+	sext8 r3, r3 /* fix sign extend of sint8 */
-+	bri ffi_closure_SYSV_end
-+
-+ffi_closure_SYSV_end:
-+	addik r1, r1, 8 /* de-allocate return value */
-+
-+	/* de-allocate stored args */
-+	addik r1, r1, 24
-+
-+	/* callee restores */
-+	lwi r19, r1, 0 /* frame pointer */
-+	lwi r20, r1, 4 /* PIC register */
-+	lwi r21, r1, 8 /* PIC register */
-+	addik r1, r1, 12
-+
-+	/* return from sub-routine (with delay slot) */
-+	rtsd r15, 8
-+	nop
-+
-+	.size ffi_closure_SYSV, . - ffi_closure_SYSV
-diff --git a/js/src/ctypes/libffi/src/mips/ffi.c b/js/src/ctypes/libffi/src/mips/ffi.c
---- a/js/src/ctypes/libffi/src/mips/ffi.c
-+++ b/js/src/ctypes/libffi/src/mips/ffi.c
-@@ -1,11 +1,12 @@
- /* -----------------------------------------------------------------------
--   ffi.c - Copyright (c) 1996, 2007, 2008  Red Hat, Inc.
--           Copyright (c) 2008       David Daney
-+   ffi.c - Copyright (c) 2011  Anthony Green
-+           Copyright (c) 2008  David Daney
-+           Copyright (c) 1996, 2007, 2008, 2011  Red Hat, Inc.
-    
-    MIPS Foreign Function Interface 
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -164,17 +165,24 @@ static void ffi_prep_args(char *stack,
- 		*(ffi_arg *)argp = *(UINT16 *)(* p_argv);
- 		break;
- 		  
- 	      case FFI_TYPE_SINT32:
- 		*(ffi_arg *)argp = *(SINT32 *)(* p_argv);
- 		break;
- 		  
- 	      case FFI_TYPE_UINT32:
-+#ifdef FFI_MIPS_N32
-+		/* The N32 ABI requires that 32-bit integers
-+		   be sign-extended to 64-bits, regardless of
-+		   whether they are signed or unsigned. */
-+		*(ffi_arg *)argp = *(SINT32 *)(* p_argv);
-+#else
- 		*(ffi_arg *)argp = *(UINT32 *)(* p_argv);
-+#endif
- 		break;
- 
- 	      /* This can only happen with 64bit slots.  */
- 	      case FFI_TYPE_FLOAT:
- 		*(float *) argp = *(float *)(* p_argv);
- 		break;
- 
- 	      /* Handle structures.  */
-@@ -661,20 +669,29 @@ ffi_prep_closure_loc (ffi_closure *closu
- 		      void *user_data,
- 		      void *codeloc)
- {
-   unsigned int *tramp = (unsigned int *) &closure->tramp[0];
-   void * fn;
-   char *clear_location = (char *) codeloc;
- 
- #if defined(FFI_MIPS_O32)
--  FFI_ASSERT(cif->abi == FFI_O32 || cif->abi == FFI_O32_SOFT_FLOAT);
-+  if (cif->abi != FFI_O32 && cif->abi != FFI_O32_SOFT_FLOAT)
-+    return FFI_BAD_ABI;
-   fn = ffi_closure_O32;
--#else /* FFI_MIPS_N32 */
--  FFI_ASSERT(cif->abi == FFI_N32 || cif->abi == FFI_N64);
-+#else
-+#if _MIPS_SIM ==_ABIN32
-+  if (cif->abi != FFI_N32
-+      && cif->abi != FFI_N32_SOFT_FLOAT)
-+    return FFI_BAD_ABI;
-+#else
-+  if (cif->abi != FFI_N64
-+      && cif->abi != FFI_N64_SOFT_FLOAT)
-+    return FFI_BAD_ABI;
-+#endif
-   fn = ffi_closure_N32;
- #endif /* FFI_MIPS_O32 */
- 
- #if defined(FFI_MIPS_O32) || (_MIPS_SIM ==_ABIN32)
-   /* lui  $25,high(fn) */
-   tramp[0] = 0x3c190000 | ((unsigned)fn >> 16);
-   /* ori  $25,low(fn)  */
-   tramp[1] = 0x37390000 | ((unsigned)fn & 0xffff);
-diff --git a/js/src/ctypes/libffi/src/mips/ffitarget.h b/js/src/ctypes/libffi/src/mips/ffitarget.h
---- a/js/src/ctypes/libffi/src/mips/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/mips/ffitarget.h
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
-+   ffitarget.h - Copyright (c) 2012  Anthony Green
-+                 Copyright (c) 1996-2003  Red Hat, Inc.
-    Target configuration macros for MIPS.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-@@ -22,41 +23,53 @@
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
- 
-    ----------------------------------------------------------------------- */
- 
- #ifndef LIBFFI_TARGET_H
- #define LIBFFI_TARGET_H
- 
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
- #ifdef linux
- # include <asm/sgidefs.h>
-+#elif defined(__rtems__)
-+/*
-+ * Subprogram calling convention - copied from sgidefs.h
-+ */
-+#define _MIPS_SIM_ABI32		1
-+#define _MIPS_SIM_NABI32	2
-+#define _MIPS_SIM_ABI64		3
- #elif !defined(__OpenBSD__)
- # include <sgidefs.h>
- #endif
-+
- #  ifndef _ABIN32
- #    define _ABIN32 _MIPS_SIM_NABI32
- #  endif
- #  ifndef _ABI64
- #    define _ABI64 _MIPS_SIM_ABI64
- #  endif
- #  ifndef _ABIO32
- #    define _ABIO32 _MIPS_SIM_ABI32
- #  endif
- 
- #if !defined(_MIPS_SIM)
---- something is very wrong --
-+# error -- something is very wrong --
- #else
- #  if (_MIPS_SIM==_ABIN32 && defined(_ABIN32)) || (_MIPS_SIM==_ABI64 && defined(_ABI64))
- #    define FFI_MIPS_N32
- #  else
- #    if (_MIPS_SIM==_ABIO32 && defined(_ABIO32))
- #      define FFI_MIPS_O32
- #    else
---- this is an unsupported platform --
-+#     error -- this is an unsupported platform --
- #    endif
- #  endif
- #endif
- 
- #ifdef FFI_MIPS_O32
- /* O32 stack frames have 32bit integer args */
- #  define FFI_SIZEOF_ARG    4
- #else
-diff --git a/js/src/ctypes/libffi/src/mips/n32.S b/js/src/ctypes/libffi/src/mips/n32.S
---- a/js/src/ctypes/libffi/src/mips/n32.S
-+++ b/js/src/ctypes/libffi/src/mips/n32.S
-@@ -38,16 +38,17 @@
- #define raddr    a4
- #define fn       a5
- 
- #define SIZEOF_FRAME	( 8 * FFI_SIZEOF_ARG )
- 
- #ifdef __GNUC__
- 	.abicalls
- #endif
-+	.set mips4
- 	.text
- 	.align	2
- 	.globl	ffi_call_N32
- 	.ent	ffi_call_N32
- ffi_call_N32:	
- .LFB3:
- 	.frame	$fp, SIZEOF_FRAME, ra
- 	.mask	0xc0000000,-FFI_SIZEOF_ARG
-@@ -102,111 +103,95 @@ sixteen:
- 
- 	ADDU	t9, t9, t8
- 	
- loadregs:	
- 
- 	REG_L	t6, 3*FFI_SIZEOF_ARG($fp)  # load the flags word into t6.
- 
- 	and	t4, t6, ((1<<FFI_FLAG_BITS)-1)
--	bnez	t4, arg1_floatp
- 	REG_L	a0, 0*FFI_SIZEOF_ARG(t9)
--	b	arg1_next
--arg1_floatp:	
-+	beqz	t4, arg1_next
- 	bne	t4, FFI_TYPE_FLOAT, arg1_doublep
- 	l.s	$f12, 0*FFI_SIZEOF_ARG(t9)
- 	b	arg1_next
- arg1_doublep:	
- 	l.d	$f12, 0*FFI_SIZEOF_ARG(t9)
- arg1_next:	
- 	
- 	SRL	t4, t6, 1*FFI_FLAG_BITS
- 	and	t4, ((1<<FFI_FLAG_BITS)-1)
--	bnez	t4, arg2_floatp
- 	REG_L	a1, 1*FFI_SIZEOF_ARG(t9)
--	b	arg2_next
--arg2_floatp:
-+	beqz	t4, arg2_next
- 	bne	t4, FFI_TYPE_FLOAT, arg2_doublep
- 	l.s	$f13, 1*FFI_SIZEOF_ARG(t9)	
- 	b	arg2_next
- arg2_doublep:	
- 	l.d	$f13, 1*FFI_SIZEOF_ARG(t9)	
- arg2_next:	
- 	
- 	SRL	t4, t6, 2*FFI_FLAG_BITS
- 	and	t4, ((1<<FFI_FLAG_BITS)-1)
--	bnez	t4, arg3_floatp
- 	REG_L	a2, 2*FFI_SIZEOF_ARG(t9)
--	b	arg3_next
--arg3_floatp:
-+	beqz	t4, arg3_next
- 	bne	t4, FFI_TYPE_FLOAT, arg3_doublep
- 	l.s	$f14, 2*FFI_SIZEOF_ARG(t9)	
- 	b	arg3_next
- arg3_doublep:	
- 	l.d	$f14, 2*FFI_SIZEOF_ARG(t9)	
- arg3_next:	
- 	
- 	SRL	t4, t6, 3*FFI_FLAG_BITS
- 	and	t4, ((1<<FFI_FLAG_BITS)-1)
--	bnez	t4, arg4_floatp
- 	REG_L	a3, 3*FFI_SIZEOF_ARG(t9)
--	b	arg4_next
--arg4_floatp:
-+	beqz	t4, arg4_next
- 	bne	t4, FFI_TYPE_FLOAT, arg4_doublep
- 	l.s	$f15, 3*FFI_SIZEOF_ARG(t9)	
- 	b	arg4_next
- arg4_doublep:	
- 	l.d	$f15, 3*FFI_SIZEOF_ARG(t9)	
- arg4_next:	
- 	
- 	SRL	t4, t6, 4*FFI_FLAG_BITS
- 	and	t4, ((1<<FFI_FLAG_BITS)-1)
--	bnez	t4, arg5_floatp
- 	REG_L	a4, 4*FFI_SIZEOF_ARG(t9)
--	b	arg5_next
--arg5_floatp:
-+	beqz	t4, arg5_next
- 	bne	t4, FFI_TYPE_FLOAT, arg5_doublep
- 	l.s	$f16, 4*FFI_SIZEOF_ARG(t9)	
- 	b	arg5_next
- arg5_doublep:	
- 	l.d	$f16, 4*FFI_SIZEOF_ARG(t9)	
- arg5_next:	
- 	
- 	SRL	t4, t6, 5*FFI_FLAG_BITS
- 	and	t4, ((1<<FFI_FLAG_BITS)-1)
--	bnez	t4, arg6_floatp
- 	REG_L	a5, 5*FFI_SIZEOF_ARG(t9)
--	b	arg6_next
--arg6_floatp:
-+	beqz	t4, arg6_next
- 	bne	t4, FFI_TYPE_FLOAT, arg6_doublep
- 	l.s	$f17, 5*FFI_SIZEOF_ARG(t9)	
- 	b	arg6_next
- arg6_doublep:	
- 	l.d	$f17, 5*FFI_SIZEOF_ARG(t9)	
- arg6_next:	
- 	
- 	SRL	t4, t6, 6*FFI_FLAG_BITS
- 	and	t4, ((1<<FFI_FLAG_BITS)-1)
--	bnez	t4, arg7_floatp
- 	REG_L	a6, 6*FFI_SIZEOF_ARG(t9)
--	b	arg7_next
--arg7_floatp:
-+	beqz	t4, arg7_next
- 	bne	t4, FFI_TYPE_FLOAT, arg7_doublep
- 	l.s	$f18, 6*FFI_SIZEOF_ARG(t9)	
- 	b	arg7_next
- arg7_doublep:	
- 	l.d	$f18, 6*FFI_SIZEOF_ARG(t9)	
- arg7_next:	
- 	
- 	SRL	t4, t6, 7*FFI_FLAG_BITS
- 	and	t4, ((1<<FFI_FLAG_BITS)-1)
--	bnez	t4, arg8_floatp
- 	REG_L	a7, 7*FFI_SIZEOF_ARG(t9)
--	b	arg8_next
--arg8_floatp:
-+	beqz	t4, arg8_next
- 	bne	t4, FFI_TYPE_FLOAT, arg8_doublep
-  	l.s	$f19, 7*FFI_SIZEOF_ARG(t9)	
- 	b	arg8_next
- arg8_doublep:	
-  	l.d	$f19, 7*FFI_SIZEOF_ARG(t9)	
- arg8_next:	
- 
- callit:		
-diff --git a/js/src/ctypes/libffi/src/moxie/eabi.S b/js/src/ctypes/libffi/src/moxie/eabi.S
---- a/js/src/ctypes/libffi/src/moxie/eabi.S
-+++ b/js/src/ctypes/libffi/src/moxie/eabi.S
-@@ -1,12 +1,12 @@
- /* -----------------------------------------------------------------------
--   eabi.S - Copyright (c) 2004  Anthony Green
-+   eabi.S - Copyright (c) 2012, 2013  Anthony Green
-    
--   FR-V Assembly glue.
-+   Moxie Assembly glue.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-    the following conditions:
-@@ -29,100 +29,73 @@
- 
- 	.globl ffi_prep_args_EABI
- 
- 	.text
- 	.p2align 4
- 	.globl ffi_call_EABI
- 	.type ffi_call_EABI, @function
- 
--	# gr8 :   ffi_prep_args
--	# gr9 :   &ecif
--	# gr10:   cif->bytes
--	# gr11:   fig->flags
--	# gr12:   ecif.rvalue
--	# gr13:   fn
-+	# $r0 :   ffi_prep_args
-+	# $r1 :   &ecif
-+	# $r2 :   cif->bytes
-+	# $r3 :   fig->flags
-+	# $r4 :   ecif.rvalue
-+	# $r5 :   fn
- 	
--ffi_call_EABI:	
--	addi	sp, #-80, sp
--	sti	fp, @(sp, #24)
--	addi	sp, #24, fp
--	movsg	lr, gr5
-+ffi_call_EABI:
-+	push	$sp, $r6
-+	push	$sp, $r7
-+	push	$sp, $r8
-+	dec	$sp, 24
- 
--	/* Make room for the new arguments.  */
--	/* subi	sp, fp, gr10 */
--	
--	/* Store return address and incoming args on stack.  */
--	sti	gr5, @(fp, #8)
--	sti	gr8, @(fp, #-4)
--	sti	gr9, @(fp, #-8)
--	sti	gr10, @(fp, #-12)
--	sti	gr11, @(fp, #-16)
--	sti	gr12, @(fp, #-20)
--	sti	gr13, @(fp, #-24)
--
--	sub     sp, gr10, sp
-+	/* Store incoming args on stack.  */
-+	sto.l	0($sp), $r0 /* ffi_prep_args */
-+	sto.l	4($sp), $r1 /* ecif */
-+	sto.l	8($sp), $r2 /* bytes */
-+	sto.l	12($sp), $r3 /* flags */
-+	sto.l	16($sp), $r4 /* &rvalue */
-+	sto.l	20($sp), $r5 /* fn */
- 	
- 	/* Call ffi_prep_args.  */
--	ldi	@(fp, #-4), gr4
--	addi	sp, #0, gr8
--	ldi	@(fp, #-8), gr9
--#ifdef __FRV_FDPIC__
--	ldd	@(gr4, gr0), gr14
--	calll	@(gr14, gr0)
--#else
--	calll	@(gr4, gr0)
--#endif	
-+	mov 	$r6, $r4 /* Save result buffer */
-+	mov	$r7, $r5 /* Save the target fn */
-+	mov	$r8, $r3 /* Save the flags */
-+	sub.l	$sp, $r2 /* Allocate stack space */
-+	mov	$r0, $sp /* We can stomp over $r0 */
-+	/* $r1 is already set up */
-+	jsra 	ffi_prep_args
- 
--	/* ffi_prep_args returns the new stack pointer.  */
--	mov	gr8, gr4
--		
--	ldi	@(sp, #0), gr8
--	ldi	@(sp, #4), gr9
--	ldi	@(sp, #8), gr10
--	ldi	@(sp, #12), gr11
--	ldi	@(sp, #16), gr12
--	ldi	@(sp, #20), gr13
--
--	/* Always copy the return value pointer into the hidden
--	   parameter register.  This is only strictly necessary
--	   when we're returning an aggregate type, but it doesn't
--	   hurt to do this all the time, and it saves a branch.  */
--	ldi	@(fp, #-20), gr3
--
--	/* Use the ffi_prep_args return value for the new sp.  */
--	mov	gr4, sp
-+	/* Load register arguments.  */
-+	ldo.l	$r0, 0($sp)
-+	ldo.l	$r1, 4($sp)
-+	ldo.l	$r2, 8($sp)
-+	ldo.l	$r3, 12($sp)
-+	ldo.l	$r4, 16($sp)
-+	ldo.l	$r5, 20($sp)
- 	
- 	/* Call the target function.  */
--	ldi	@(fp, -24), gr4
--#ifdef __FRV_FDPIC__
--	ldd	@(gr4, gr0), gr14
--	calll	@(gr14, gr0)
--#else
--	calll	@(gr4, gr0)
--#endif	
-+	jsr	$r7
- 
--	/* Store the result. */
--	ldi	@(fp, #-16), gr10  /* fig->flags */
--	ldi	@(fp, #-20), gr4   /* ecif.rvalue */
-+	ldi.l	$r7, 0xffffffff
-+	cmp	$r8, $r7
-+	beq	retstruct
- 
--	/* Is the return value stored in two registers?  */
--	cmpi	gr10, #8, icc0
--	bne	icc0, 0, .L2
--	/*   Yes, save them.  */
--	sti	gr8, @(gr4, #0)
--	sti	gr9, @(gr4, #4)
--	bra	.L3
--.L2:
--	/* Is the return value a structure?  */
--	cmpi	gr10, #-1, icc0
--	beq	icc0, 0, .L3
--	/*   No, save a 4 byte return value.  */
--	sti	gr8, @(gr4, #0)
--.L3:	
-+	ldi.l	$r7, 4
-+	cmp	$r8, $r7
-+	bgt	ret2reg
- 
--	/* Restore the stack, and return.  */
--	ldi	@(fp, 8), gr5
--	ld	@(fp, gr0), fp
--	addi	sp,#80,sp
--	jmpl	@(gr5,gr0)
-+	st.l	($r6), $r0
-+	jmpa	retdone
-+
-+ret2reg:	
-+	st.l	($r6), $r0
-+	sto.l	4($r6), $r1
-+
-+retstruct:
-+retdone:	
-+	/* Return.  */
-+	ldo.l	$r6, -4($fp)
-+	ldo.l	$r7, -8($fp)
-+	ldo.l	$r8, -12($fp)
-+	ret
- 	.size ffi_call_EABI, .-ffi_call_EABI
- 	
-diff --git a/js/src/ctypes/libffi/src/moxie/ffi.c b/js/src/ctypes/libffi/src/moxie/ffi.c
---- a/js/src/ctypes/libffi/src/moxie/ffi.c
-+++ b/js/src/ctypes/libffi/src/moxie/ffi.c
-@@ -1,10 +1,10 @@
- /* -----------------------------------------------------------------------
--   ffi.c - Copyright (C) 2009  Anthony Green
-+   ffi.c - Copyright (C) 2012, 2013  Anthony Green
-    
-    Moxie Foreign Function Interface 
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -38,40 +38,35 @@ void *ffi_prep_args(char *stack, extende
-   register void **p_argv;
-   register char *argp;
-   register ffi_type **p_arg;
-   register int count = 0;
- 
-   p_argv = ecif->avalue;
-   argp = stack;
- 
-+  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT)
-+    {
-+      *(void **) argp = ecif->rvalue;
-+      argp += 4;
-+    }
-+
-   for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
-        (i != 0);
-        i--, p_arg++)
-     {
-       size_t z;
-       
-       z = (*p_arg)->size;
- 
-       if ((*p_arg)->type == FFI_TYPE_STRUCT)
- 	{
- 	  z = sizeof(void*);
- 	  *(void **) argp = *p_argv;
- 	} 
--      /*      if ((*p_arg)->type == FFI_TYPE_FLOAT)
--	{
--	  if (count > 24)
--	    {
--	      // This is going on the stack.  Turn it into a double.  
--	      *(double *) argp = (double) *(float*)(* p_argv);
--	      z = sizeof(double);
--	    }
--	  else
--	    *(void **) argp = *(void **)(* p_argv);
--	}  */
-       else if (z < sizeof(int))
- 	{
- 	  z = sizeof(int);
- 	  switch ((*p_arg)->type)
- 	    {
- 	    case FFI_TYPE_SINT8:
- 	      *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv);
- 	      break;
-@@ -142,135 +137,136 @@ void ffi_call(ffi_cif *cif,
- 
-   if ((rvalue == NULL) && 
-       (cif->rtype->type == FFI_TYPE_STRUCT))
-     {
-       ecif.rvalue = alloca(cif->rtype->size);
-     }
-   else
-     ecif.rvalue = rvalue;
--    
--  
-+
-   switch (cif->abi) 
-     {
-     case FFI_EABI:
-       ffi_call_EABI(ffi_prep_args, &ecif, cif->bytes, 
- 		    cif->flags, ecif.rvalue, fn);
-       break;
-     default:
-       FFI_ASSERT(0);
-       break;
-     }
- }
- 
- void ffi_closure_eabi (unsigned arg1, unsigned arg2, unsigned arg3,
- 		       unsigned arg4, unsigned arg5, unsigned arg6)
- {
-   /* This function is called by a trampoline.  The trampoline stows a
--     pointer to the ffi_closure object in gr7.  We must save this
-+     pointer to the ffi_closure object in $r7.  We must save this
-      pointer in a place that will persist while we do our work.  */
--  register ffi_closure *creg __asm__ ("gr7");
-+  register ffi_closure *creg __asm__ ("$r12");
-   ffi_closure *closure = creg;
- 
-   /* Arguments that don't fit in registers are found on the stack
-      at a fixed offset above the current frame pointer.  */
--  register char *frame_pointer __asm__ ("fp");
--  char *stack_args = frame_pointer + 16;
-+  register char *frame_pointer __asm__ ("$fp");
-+
-+  /* Pointer to a struct return value.  */
-+  void *struct_rvalue = (void *) arg1;
-+
-+  /* 6 words reserved for register args + 3 words from jsr */
-+  char *stack_args = frame_pointer + 9*4; 
- 
-   /* Lay the register arguments down in a continuous chunk of memory.  */
-   unsigned register_args[6] =
-     { arg1, arg2, arg3, arg4, arg5, arg6 };
-+  char *register_args_ptr = (char *) register_args;
- 
-   ffi_cif *cif = closure->cif;
-   ffi_type **arg_types = cif->arg_types;
-   void **avalue = alloca (cif->nargs * sizeof(void *));
-   char *ptr = (char *) register_args;
-   int i;
- 
-+  /* preserve struct type return pointer passing */
-+  if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) {
-+    ptr += 4;
-+    register_args_ptr = (char *)&register_args[1];
-+  }
-+
-   /* Find the address of each argument.  */
-   for (i = 0; i < cif->nargs; i++)
-     {
-       switch (arg_types[i]->type)
- 	{
- 	case FFI_TYPE_SINT8:
- 	case FFI_TYPE_UINT8:
- 	  avalue[i] = ptr + 3;
- 	  break;
- 	case FFI_TYPE_SINT16:
- 	case FFI_TYPE_UINT16:
- 	  avalue[i] = ptr + 2;
- 	  break;
- 	case FFI_TYPE_SINT32:
- 	case FFI_TYPE_UINT32:
- 	case FFI_TYPE_FLOAT:
-+	case FFI_TYPE_POINTER:
- 	  avalue[i] = ptr;
- 	  break;
- 	case FFI_TYPE_STRUCT:
- 	  avalue[i] = *(void**)ptr;
- 	  break;
- 	default:
- 	  /* This is an 8-byte value.  */
- 	  avalue[i] = ptr;
- 	  ptr += 4;
- 	  break;
- 	}
-       ptr += 4;
- 
-       /* If we've handled more arguments than fit in registers,
- 	 start looking at the those passed on the stack.  */
--      if (ptr == ((char *)register_args + (6*4)))
-+      if (ptr == &register_args[6])
- 	ptr = stack_args;
-     }
- 
-   /* Invoke the closure.  */
--  if (cif->rtype->type == FFI_TYPE_STRUCT)
-+  if (cif->rtype && (cif->rtype->type == FFI_TYPE_STRUCT))
-     {
--      /* The caller allocates space for the return structure, and
--       passes a pointer to this space in gr3.  Use this value directly
--       as the return value.  */
--      register void *return_struct_ptr __asm__("gr3");
--      (closure->fun) (cif, return_struct_ptr, avalue, closure->user_data);
-+      (closure->fun) (cif, struct_rvalue, avalue, closure->user_data);
-     }
-   else
-     {
-       /* Allocate space for the return value and call the function.  */
-       long long rvalue;
-       (closure->fun) (cif, &rvalue, avalue, closure->user_data);
--
--      /* Functions return 4-byte or smaller results in gr8.  8-byte
--	 values also use gr9.  We fill the both, even for small return
--	 values, just to avoid a branch.  */ 
--      asm ("ldi  @(%0, #0), gr8" : : "r" (&rvalue));
--      asm ("ldi  @(%0, #0), gr9" : : "r" (&((int *) &rvalue)[1]));
-+      asm ("mov $r12, %0\n ld.l $r0, ($r12)\n ldo.l $r1, 4($r12)" : : "r" (&rvalue));
-     }
- }
- 
- ffi_status
- ffi_prep_closure_loc (ffi_closure* closure,
- 		      ffi_cif* cif,
- 		      void (*fun)(ffi_cif*, void*, void**, void*),
- 		      void *user_data,
- 		      void *codeloc)
- {
--  unsigned int *tramp = (unsigned int *) &closure->tramp[0];
-+  unsigned short *tramp = (unsigned short *) &closure->tramp[0];
-   unsigned long fn = (long) ffi_closure_eabi;
-   unsigned long cls = (long) codeloc;
--  int i;
-+
-+  if (cif->abi != FFI_EABI)
-+    return FFI_BAD_ABI;
- 
-   fn = (unsigned long) ffi_closure_eabi;
- 
--  tramp[0] = 0x8cfc0000 + (fn  & 0xffff); /* setlos lo(fn), gr6    */
--  tramp[1] = 0x8efc0000 + (cls & 0xffff); /* setlos lo(cls), gr7   */
--  tramp[2] = 0x8cf80000 + (fn  >> 16);	  /* sethi hi(fn), gr6     */
--  tramp[3] = 0x8ef80000 + (cls >> 16);    /* sethi hi(cls), gr7    */
--  tramp[4] = 0x80300006;                  /* jmpl @(gr0, gr6)      */
-+  tramp[0] = 0x01e0; /* ldi.l $r7, .... */
-+  tramp[1] = cls >> 16;
-+  tramp[2] = cls & 0xffff;
-+  tramp[3] = 0x1a00; /* jmpa .... */
-+  tramp[4] = fn >> 16;
-+  tramp[5] = fn & 0xffff;
- 
-   closure->cif = cif;
-   closure->fun = fun;
-   closure->user_data = user_data;
- 
--  /* Cache flushing.  */
--  for (i = 0; i < FFI_TRAMPOLINE_SIZE; i++)
--    __asm__ volatile ("dcf @(%0,%1)\n\tici @(%2,%1)" :: "r" (tramp), "r" (i),
--		      "r" (codeloc));
--
-   return FFI_OK;
- }
-diff --git a/js/src/ctypes/libffi/src/moxie/ffitarget.h b/js/src/ctypes/libffi/src/moxie/ffitarget.h
---- a/js/src/ctypes/libffi/src/moxie/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/moxie/ffitarget.h
-@@ -1,10 +1,10 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 2009 Anthony Green
-+   ffitarget.h - Copyright (c) 2012, 2013  Anthony Green
-    Target configuration macros for Moxie
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-@@ -31,22 +31,22 @@
- 
- #ifndef LIBFFI_ASM
- typedef unsigned long          ffi_arg;
- typedef signed long            ffi_sarg;
- 
- typedef enum ffi_abi {
-   FFI_FIRST_ABI = 0,
-   FFI_EABI,
--  FFI_LAST_ABI,
--  FFI_DEFAULT_ABI = FFI_EABI
-+  FFI_DEFAULT_ABI = FFI_EABI,
-+  FFI_LAST_ABI = FFI_DEFAULT_ABI + 1
- } ffi_abi;
- #endif
- 
- /* ---- Definitions for closures ----------------------------------------- */
- 
--#define FFI_CLOSURES 0
-+#define FFI_CLOSURES 1
- #define FFI_NATIVE_RAW_API 0
- 
--/* Trampolines are 5 4-byte instructions long.  */
--#define FFI_TRAMPOLINE_SIZE (5*4)
-+/* Trampolines are 12-bytes long.  See ffi_prep_closure_loc.  */
-+#define FFI_TRAMPOLINE_SIZE (12)
- 
- #endif
-diff --git a/js/src/ctypes/libffi/src/nios2/ffi.c b/js/src/ctypes/libffi/src/nios2/ffi.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/nios2/ffi.c
-@@ -0,0 +1,304 @@
-+/* libffi support for Altera Nios II.
-+
-+   Copyright (c) 2013 Mentor Graphics.
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+   
-+   The above copyright notice and this permission notice shall be
-+   included in all copies or substantial portions of the Software.
-+   
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+
-+#include <ffi.h>
-+#include <ffi_common.h>
-+
-+#include <stdlib.h>
-+
-+/* The Nios II Processor Reference Handbook defines the procedure call
-+   ABI as follows.
-+
-+   Arguments are passed as if a structure containing the types of
-+   the arguments were constructed.  The first 16 bytes are passed in r4
-+   through r7, the remainder on the stack.  The first 16 bytes of a function
-+   taking variable arguments are passed in r4-r7 in the same way.
-+
-+   Return values of types up to 8 bytes are returned in r2 and r3.  For
-+   return values greater than 8 bytes, the caller must allocate memory for
-+   the result and pass the address as if it were argument 0.  
-+
-+   While this isn't specified explicitly in the ABI documentation, GCC
-+   promotes integral arguments smaller than int size to 32 bits.
-+
-+   Also of note, the ABI specifies that all structure objects are
-+   aligned to 32 bits even if all their fields have a smaller natural
-+   alignment.  See FFI_AGGREGATE_ALIGNMENT.  */
-+
-+
-+/* Declare the assembly language hooks.  */
-+
-+extern UINT64 ffi_call_sysv (void (*) (char *, extended_cif *),
-+			     extended_cif *,
-+			     unsigned, 
-+			     void (*fn) (void));
-+extern void ffi_closure_sysv (void);
-+
-+/* Perform machine-dependent cif processing.  */
-+
-+ffi_status ffi_prep_cif_machdep (ffi_cif *cif)
-+{
-+  /* We always want at least 16 bytes in the parameter block since it
-+     simplifies the low-level call function.  Also round the parameter
-+     block size up to a multiple of 4 bytes to preserve
-+     32-bit alignment of the stack pointer.  */
-+  if (cif->bytes < 16)
-+    cif->bytes = 16;
-+  else
-+    cif->bytes = (cif->bytes + 3) & ~3;
-+
-+  return FFI_OK;
-+}
-+
-+
-+/* ffi_prep_args is called by the assembly routine to transfer arguments
-+   to the stack using the pointers in the ecif array.
-+   Note that the stack buffer is big enough to fit all the arguments,
-+   but the first 16 bytes will be copied to registers for the actual
-+   call.  */
-+
-+void ffi_prep_args (char *stack, extended_cif *ecif)
-+{
-+  char *argp = stack;
-+  unsigned int i;
-+
-+  /* The implicit return value pointer is passed as if it were a hidden
-+     first argument.  */
-+  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT
-+      && ecif->cif->rtype->size > 8)
-+    {
-+      (*(void **) argp) = ecif->rvalue;
-+      argp += 4;
-+    }
-+
-+  for (i = 0; i < ecif->cif->nargs; i++)
-+    {
-+      void *avalue = ecif->avalue[i];
-+      ffi_type *atype = ecif->cif->arg_types[i];
-+      size_t size = atype->size;
-+      size_t alignment = atype->alignment;
-+
-+      /* Align argp as appropriate for the argument type.  */
-+      if ((alignment - 1) & (unsigned) argp)
-+	argp = (char *) ALIGN (argp, alignment);
-+
-+      /* Copy the argument, promoting integral types smaller than a
-+	 word to word size.  */
-+      if (size < sizeof (int))
-+	{
-+	  size = sizeof (int);
-+	  switch (atype->type)
-+	    {
-+	    case FFI_TYPE_SINT8:
-+	      *(signed int *) argp = (signed int) *(SINT8 *) avalue;
-+	      break;
-+		  
-+	    case FFI_TYPE_UINT8:
-+	      *(unsigned int *) argp = (unsigned int) *(UINT8 *) avalue;
-+	      break;
-+		  
-+	    case FFI_TYPE_SINT16:
-+	      *(signed int *) argp = (signed int) *(SINT16 *) avalue;
-+	      break;
-+		  
-+	    case FFI_TYPE_UINT16:
-+	      *(unsigned int *) argp = (unsigned int) *(UINT16 *) avalue;
-+	      break;
-+
-+	    case FFI_TYPE_STRUCT:
-+	      memcpy (argp, avalue, atype->size);
-+	      break;
-+
-+	    default:
-+	      FFI_ASSERT(0);
-+	    }
-+	}
-+      else if (size == sizeof (int))
-+	*(unsigned int *) argp = (unsigned int) *(UINT32 *) avalue;
-+      else
-+	memcpy (argp, avalue, size);
-+      argp += size;
-+    }
-+}
-+
-+
-+/* Call FN using the prepared CIF.  RVALUE points to space allocated by
-+   the caller for the return value, and AVALUE is an array of argument
-+   pointers.  */
-+
-+void ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue)
-+{
-+
-+  extended_cif ecif;
-+  UINT64 result;
-+
-+  /* If bigret is true, this is the case where a return value of larger
-+     than 8 bytes is handled by being passed by reference as an implicit
-+     argument.  */
-+  int bigret = (cif->rtype->type == FFI_TYPE_STRUCT
-+		&& cif->rtype->size > 8);
-+
-+  ecif.cif = cif;
-+  ecif.avalue = avalue;
-+
-+  /* Allocate space for return value if this is the pass-by-reference case
-+     and the caller did not provide a buffer.  */
-+  if (rvalue == NULL && bigret)
-+    ecif.rvalue = alloca (cif->rtype->size);
-+  else
-+    ecif.rvalue = rvalue;
-+
-+  result = ffi_call_sysv (ffi_prep_args, &ecif, cif->bytes, fn);
-+
-+  /* Now result contains the 64 bit contents returned from fn in
-+     r2 and r3.  Copy the value of the appropriate size to the user-provided
-+     rvalue buffer.  */
-+  if (rvalue && !bigret)
-+    switch (cif->rtype->size)
-+      {
-+      case 1:
-+	*(UINT8 *)rvalue = (UINT8) result;
-+	break;
-+      case 2:
-+	*(UINT16 *)rvalue = (UINT16) result;
-+	break;
-+      case 4:
-+	*(UINT32 *)rvalue = (UINT32) result;
-+	break;
-+      case 8:
-+	*(UINT64 *)rvalue = (UINT64) result;
-+	break;
-+      default:
-+	memcpy (rvalue, (void *)&result, cif->rtype->size);
-+	break;
-+      }
-+}
-+
-+/* This function is invoked from the closure trampoline to invoke
-+   CLOSURE with argument block ARGS.  Parse ARGS according to
-+   CLOSURE->cfi and invoke CLOSURE->fun.  */
-+
-+static UINT64
-+ffi_closure_helper (unsigned char *args,
-+		    ffi_closure *closure)
-+{
-+  ffi_cif *cif = closure->cif;
-+  unsigned char *argp = args;
-+  void **parsed_args = alloca (cif->nargs * sizeof (void *));
-+  UINT64 result;
-+  void *retptr;
-+  unsigned int i;
-+
-+  /* First figure out what to do about the return type.  If this is the
-+     big-structure-return case, the first arg is the hidden return buffer
-+     allocated by the caller.  */
-+  if (cif->rtype->type == FFI_TYPE_STRUCT
-+      && cif->rtype->size > 8)
-+    {
-+      retptr = *((void **) argp);
-+      argp += 4;
-+    }
-+  else
-+    retptr = (void *) &result;
-+
-+  /* Fill in the array of argument pointers.  */
-+  for (i = 0; i < cif->nargs; i++)
-+    {
-+      size_t size = cif->arg_types[i]->size;
-+      size_t alignment = cif->arg_types[i]->alignment;
-+
-+      /* Align argp as appropriate for the argument type.  */
-+      if ((alignment - 1) & (unsigned) argp)
-+	argp = (char *) ALIGN (argp, alignment);
-+
-+      /* Arguments smaller than an int are promoted to int.  */
-+      if (size < sizeof (int))
-+	size = sizeof (int);
-+
-+      /* Store the pointer.  */
-+      parsed_args[i] = argp;
-+      argp += size;
-+    }
-+
-+  /* Call the user-supplied function.  */
-+  (closure->fun) (cif, retptr, parsed_args, closure->user_data);
-+  return result;
-+}
-+
-+
-+/* Initialize CLOSURE with a trampoline to call FUN with
-+   CIF and USER_DATA.  */
-+ffi_status
-+ffi_prep_closure_loc (ffi_closure* closure,
-+		      ffi_cif* cif,
-+		      void (*fun) (ffi_cif*, void*, void**, void*),
-+		      void *user_data,
-+		      void *codeloc)
-+{
-+  unsigned int *tramp = (unsigned int *) &closure->tramp[0];
-+  int i;
-+
-+  if (cif->abi != FFI_SYSV)
-+    return FFI_BAD_ABI;
-+
-+  /* The trampoline looks like:
-+       movhi r8, %hi(ffi_closure_sysv)
-+       ori r8, r8, %lo(ffi_closure_sysv)
-+       movhi r9, %hi(ffi_closure_helper)
-+       ori r0, r9, %lo(ffi_closure_helper)
-+       movhi r10, %hi(closure)
-+       ori r10, r10, %lo(closure)
-+       jmp r8
-+     and then ffi_closure_sysv retrieves the closure pointer out of r10
-+     in addition to the arguments passed in the normal way for the call,
-+     and invokes ffi_closure_helper.  We encode the pointer to
-+     ffi_closure_helper in the trampoline because making a PIC call
-+     to it in ffi_closure_sysv would be messy (it would have to indirect
-+     through the GOT).  */
-+
-+#define HI(x) ((((unsigned int) (x)) >> 16) & 0xffff)
-+#define LO(x) (((unsigned int) (x)) & 0xffff)
-+  tramp[0] = (0 << 27) | (8 << 22) | (HI (ffi_closure_sysv) << 6) | 0x34;
-+  tramp[1] = (8 << 27) | (8 << 22) | (LO (ffi_closure_sysv) << 6) | 0x14;
-+  tramp[2] = (0 << 27) | (9 << 22) | (HI (ffi_closure_helper) << 6) | 0x34;
-+  tramp[3] = (9 << 27) | (9 << 22) | (LO (ffi_closure_helper) << 6) | 0x14;
-+  tramp[4] = (0 << 27) | (10 << 22) | (HI (closure) << 6) | 0x34;
-+  tramp[5] = (10 << 27) | (10 << 22) | (LO (closure) << 6) | 0x14;
-+  tramp[6] = (8 << 27) | (0x0d << 11) | 0x3a;
-+#undef HI
-+#undef LO
-+
-+  /* Flush the caches.
-+     See Example 9-4 in the Nios II Software Developer's Handbook.  */
-+  for (i = 0; i < 7; i++)
-+    asm volatile ("flushd 0(%0); flushi %0" :: "r"(tramp + i) : "memory");
-+  asm volatile ("flushp" ::: "memory");
-+
-+  closure->cif = cif;
-+  closure->fun = fun;
-+  closure->user_data = user_data;
-+
-+  return FFI_OK;
-+}
-+
-diff --git a/js/src/ctypes/libffi/src/nios2/ffitarget.h b/js/src/ctypes/libffi/src/nios2/ffitarget.h
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/nios2/ffitarget.h
-@@ -0,0 +1,52 @@
-+/* libffi target includes for Altera Nios II.
-+
-+   Copyright (c) 2013 Mentor Graphics.
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+   
-+   The above copyright notice and this permission notice shall be
-+   included in all copies or substantial portions of the Software.
-+   
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+
-+#ifndef LIBFFI_TARGET_H
-+#define LIBFFI_TARGET_H
-+
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
-+#ifndef LIBFFI_ASM
-+typedef unsigned long          ffi_arg;
-+typedef signed long            ffi_sarg;
-+
-+typedef enum ffi_abi {
-+  FFI_FIRST_ABI = 0,
-+  FFI_SYSV,
-+  FFI_LAST_ABI,
-+  FFI_DEFAULT_ABI = FFI_SYSV
-+} ffi_abi;
-+#endif
-+
-+/* Structures have a 4-byte alignment even if all the fields have lesser
-+   alignment requirements.  */
-+#define FFI_AGGREGATE_ALIGNMENT 4
-+
-+#define FFI_CLOSURES 1
-+#define FFI_TRAMPOLINE_SIZE 28   /* 7 instructions */
-+#define FFI_NATIVE_RAW_API 0
-+
-+#endif
-diff --git a/js/src/ctypes/libffi/src/nios2/sysv.S b/js/src/ctypes/libffi/src/nios2/sysv.S
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/nios2/sysv.S
-@@ -0,0 +1,136 @@
-+/* Low-level libffi support for Altera Nios II.
-+
-+   Copyright (c) 2013 Mentor Graphics.
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+   
-+   The above copyright notice and this permission notice shall be
-+   included in all copies or substantial portions of the Software.
-+   
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
-+
-+/* This function is declared on the C side as 
-+
-+   extern UINT64 ffi_call_sysv (void (*arghook) (char *, extended_cif *),
-+	  		        extended_cif *ecif,
-+				unsigned nbytes, 
-+				void (*fn) (void));
-+	
-+   On input, the arguments appear as
-+	r4 = arghook
-+	r5 = ecif
-+	r6 = nbytes
-+	r7 = fn
-+*/
-+
-+	.section	.text
-+	.align	2
-+	.global	ffi_call_sysv
-+	.type	ffi_call_sysv, @function
-+
-+ffi_call_sysv:
-+	.cfi_startproc
-+
-+	/* Create the stack frame, saving r16 so we can use it locally.  */
-+	addi	sp, sp, -12
-+	.cfi_def_cfa_offset 12
-+	stw	ra, 8(sp)
-+	stw	fp, 4(sp)
-+	stw	r16, 0(sp)
-+	.cfi_offset 31, -4
-+	.cfi_offset 28, -8
-+	.cfi_offset 16, -12
-+	mov	fp, sp
-+	.cfi_def_cfa_register 28
-+	mov	r16, r7
-+
-+	/* Adjust the stack pointer to create the argument buffer
-+	   nbytes long.  */
-+	sub	sp, sp, r6
-+
-+	/* Call the arghook function.  */
-+	mov	r2, r4		/* fn */
-+	mov	r4, sp		/* argbuffer */
-+	callr	r2		/* r5 already contains ecif */
-+
-+	/* Pop off the first 16 bytes of the argument buffer on the stack,
-+	   transferring the contents to the argument registers.  */
-+	ldw	r4, 0(sp)
-+	ldw	r5, 4(sp)
-+	ldw	r6, 8(sp)
-+	ldw	r7, 12(sp)
-+	addi	sp, sp, 16
-+
-+	/* Call the user function, which leaves its result in r2 and r3.  */
-+	callr	r16
-+
-+	/* Pop off the stack frame.  */
-+	mov	sp, fp
-+	ldw	ra, 8(sp)
-+	ldw	fp, 4(sp)
-+	ldw	r16, 0(sp)
-+	addi	sp, sp, 12
-+	ret
-+	.cfi_endproc
-+	.size	ffi_call_sysv, .-ffi_call_sysv
-+
-+
-+/* Closure trampolines jump here after putting the C helper address
-+   in r9 and the closure pointer in r10.  The user-supplied arguments
-+   to the closure are in the normal places, in r4-r7 and on the
-+   stack.  Push the register arguments on the stack too and then call the
-+   C helper function to deal with them.  */
-+   
-+	.section	.text
-+	.align	2
-+	.global	ffi_closure_sysv
-+	.type	ffi_closure_sysv, @function
-+
-+ffi_closure_sysv:
-+	.cfi_startproc
-+
-+	/* Create the stack frame, pushing the register args on the stack
-+	   just below the stack args.  This is the same trick illustrated
-+	   in Figure 7-3 in the Nios II Processor Reference Handbook, used
-+	   for variable arguments and structures passed by value.  */
-+	addi	sp, sp, -20
-+	.cfi_def_cfa_offset 20
-+	stw	ra, 0(sp)
-+	.cfi_offset 31, -20
-+	stw	r4, 4(sp)
-+	.cfi_offset 4, -16
-+	stw	r5, 8(sp)
-+	.cfi_offset 5, -12
-+	stw	r6, 12(sp)
-+	.cfi_offset 6, -8
-+	stw	r7, 16(sp)
-+	.cfi_offset 7, -4
-+
-+	/* Call the helper.
-+	   r4 = pointer to arguments on stack
-+	   r5 = closure pointer (loaded in r10 by the trampoline)
-+	   r9 = address of helper function (loaded by trampoline) */
-+	addi	r4, sp, 4
-+	mov	r5, r10
-+	callr	r9
-+	
-+	/* Pop the stack and return.  */
-+	ldw	ra, 0(sp)
-+	addi	sp, sp, 20
-+	.cfi_def_cfa_offset -20
-+	ret
-+	.cfi_endproc
-+	.size	ffi_closure_sysv, .-ffi_closure_sysv
-+
-diff --git a/js/src/ctypes/libffi/src/pa/ffi.c b/js/src/ctypes/libffi/src/pa/ffi.c
---- a/js/src/ctypes/libffi/src/pa/ffi.c
-+++ b/js/src/ctypes/libffi/src/pa/ffi.c
-@@ -1,14 +1,16 @@
- /* -----------------------------------------------------------------------
--   ffi.c - (c) 2003-2004 Randolph Chung <tausq@debian.org>
-+   ffi.c - (c) 2011 Anthony Green
-            (c) 2008 Red Hat, Inc.
--
-+	   (c) 2006 Free Software Foundation, Inc.
-+           (c) 2003-2004 Randolph Chung <tausq@debian.org>
-+           
-    HPPA Foreign Function Interface
--   HP-UX PA ABI support (c) 2006 Free Software Foundation, Inc.
-+   HP-UX PA ABI support 
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-    the following conditions:
-@@ -628,17 +630,18 @@ ffi_prep_closure_loc (ffi_closure* closu
- 		      void *user_data,
- 		      void *codeloc)
- {
-   UINT32 *tramp = (UINT32 *)(closure->tramp);
- #ifdef PA_HPUX
-   UINT32 *tmp;
- #endif
- 
--  FFI_ASSERT (cif->abi == FFI_PA32);
-+  if (cif->abi != FFI_PA32)
-+    return FFI_BAD_ABI;
- 
-   /* Make a small trampoline that will branch to our
-      handler function. Use PC-relative addressing.  */
- 
- #ifdef PA_LINUX
-   tramp[0] = 0xeaa00000; /* b,l .+8,%r21        ; %r21 <- pc+8 */
-   tramp[1] = 0xd6a01c1e; /* depi 0,31,2,%r21    ; mask priv bits */
-   tramp[2] = 0x4aa10028; /* ldw 20(%r21),%r1    ; load plabel */
-diff --git a/js/src/ctypes/libffi/src/pa/ffitarget.h b/js/src/ctypes/libffi/src/pa/ffitarget.h
---- a/js/src/ctypes/libffi/src/pa/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/pa/ffitarget.h
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
-+   ffitarget.h - Copyright (c) 2012  Anthony Green
-+                 Copyright (c) 1996-2003  Red Hat, Inc.
-    Target configuration macros for hppa.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-@@ -22,16 +23,20 @@
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
- 
-    ----------------------------------------------------------------------- */
- 
- #ifndef LIBFFI_TARGET_H
- #define LIBFFI_TARGET_H
- 
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
- /* ---- System specific configurations ----------------------------------- */
- 
- #ifndef LIBFFI_ASM
- typedef unsigned long          ffi_arg;
- typedef signed long            ffi_sarg;
- 
- typedef enum ffi_abi {
-   FFI_FIRST_ABI = 0,
-diff --git a/js/src/ctypes/libffi/src/powerpc/aix.S b/js/src/ctypes/libffi/src/powerpc/aix.S
---- a/js/src/ctypes/libffi/src/powerpc/aix.S
-+++ b/js/src/ctypes/libffi/src/powerpc/aix.S
-@@ -1,10 +1,10 @@
- /* -----------------------------------------------------------------------
--   aix.S - Copyright (c) 2002,2009 Free Software Foundation, Inc.
-+   aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc.
-    based on darwin.S by John Hornkvist
- 
-    PowerPC Assembly glue.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-@@ -74,16 +74,18 @@
- 	.set f15,15
- 	.set f16,16
- 	.set f17,17
- 	.set f18,18
- 	.set f19,19
- 	.set f20,20
- 	.set f21,21
- 
-+	.extern .ffi_prep_args
-+
- #define LIBFFI_ASM
- #include <fficonfig.h>
- #include <ffi.h>
- #define JUMPTARGET(name) name
- #define L(x) x
- 	.file "aix.S"
- 	.toc
- 
-@@ -120,39 +122,40 @@ ffi_call_AIX:
- 	mr	r31, r5	/* flags, */
- 	mr	r30, r6	/* rvalue, */
- 	mr	r29, r7	/* function address.  */
- 	std	r2, 40(r1)
- 
- 	/* Call ffi_prep_args.  */
- 	mr	r4, r1
- 	bl	.ffi_prep_args
-+	nop
- 
- 	/* Now do the call.  */
- 	ld	r0, 0(r29)
- 	ld	r2, 8(r29)
- 	ld	r11, 16(r29)
- 	/* Set up cr1 with bits 4-7 of the flags.  */
- 	mtcrf	0x40, r31
- 	mtctr	r0
- 	/* Load all those argument registers.  */
--	// We have set up a nice stack frame, just load it into registers.
-+	/* We have set up a nice stack frame, just load it into registers. */
- 	ld	r3, 40+(1*8)(r1)
- 	ld	r4, 40+(2*8)(r1)
- 	ld	r5, 40+(3*8)(r1)
- 	ld	r6, 40+(4*8)(r1)
- 	nop
- 	ld	r7, 40+(5*8)(r1)
- 	ld	r8, 40+(6*8)(r1)
- 	ld	r9, 40+(7*8)(r1)
- 	ld	r10,40+(8*8)(r1)
- 
- L1:
- 	/* Load all the FP registers.  */
--	bf	6,L2 // 2f + 0x18
-+	bf	6,L2 /* 2f + 0x18 */
- 	lfd	f1,-32-(13*8)(r28)
- 	lfd	f2,-32-(12*8)(r28)
- 	lfd	f3,-32-(11*8)(r28)
- 	lfd	f4,-32-(10*8)(r28)
- 	nop
- 	lfd	f5,-32-(9*8)(r28)
- 	lfd	f6,-32-(8*8)(r28)
- 	lfd	f7,-32-(7*8)(r28)
-@@ -221,39 +224,40 @@ L(float_return_value):
- 	mr	r31, r5	/* flags, */
- 	mr	r30, r6	/* rvalue, */
- 	mr	r29, r7	/* function address, */
- 	stw	r2, 20(r1)
- 
- 	/* Call ffi_prep_args.  */
- 	mr	r4, r1
- 	bl	.ffi_prep_args
-+	nop
- 
- 	/* Now do the call.  */
- 	lwz	r0, 0(r29)
- 	lwz	r2, 4(r29)
- 	lwz	r11, 8(r29)
- 	/* Set up cr1 with bits 4-7 of the flags.  */
- 	mtcrf	0x40, r31
- 	mtctr	r0
- 	/* Load all those argument registers.  */
--	// We have set up a nice stack frame, just load it into registers.
-+	/* We have set up a nice stack frame, just load it into registers. */
- 	lwz	r3, 20+(1*4)(r1)
- 	lwz	r4, 20+(2*4)(r1)
- 	lwz	r5, 20+(3*4)(r1)
- 	lwz	r6, 20+(4*4)(r1)
- 	nop
- 	lwz	r7, 20+(5*4)(r1)
- 	lwz	r8, 20+(6*4)(r1)
- 	lwz	r9, 20+(7*4)(r1)
- 	lwz	r10,20+(8*4)(r1)
- 
- L1:
- 	/* Load all the FP registers.  */
--	bf	6,L2 // 2f + 0x18
-+	bf	6,L2 /* 2f + 0x18 */
- 	lfd	f1,-16-(13*8)(r28)
- 	lfd	f2,-16-(12*8)(r28)
- 	lfd	f3,-16-(11*8)(r28)
- 	lfd	f4,-16-(10*8)(r28)
- 	nop
- 	lfd	f5,-16-(9*8)(r28)
- 	lfd	f6,-16-(8*8)(r28)
- 	lfd	f7,-16-(7*8)(r28)
-@@ -298,17 +302,17 @@ L(fp_return_value):
- 	stfd	f1, 0(r30)
- 	b	L(done_return_value)
- L(float_return_value):
- 	stfs	f1, 0(r30)
- 	b	L(done_return_value)
- #endif
- 	.long 0
- 	.byte 0,0,0,1,128,4,0,0
--//END(ffi_call_AIX)
-+/* END(ffi_call_AIX) */
- 
- .csect .text[PR]
- 	.align 2
- 	.globl ffi_call_DARWIN
- 	.globl .ffi_call_DARWIN
- .csect ffi_call_DARWIN[DS]
- ffi_call_DARWIN:
- #ifdef __64BIT__
-@@ -316,9 +320,9 @@ ffi_call_DARWIN:
- #else
- 	.long .ffi_call_DARWIN, TOC[tc0], 0
- #endif
- 	.csect .text[PR]
- .ffi_call_DARWIN:
- 	blr
- 	.long 0
- 	.byte 0,0,0,0,0,0,0,0
--//END(ffi_call_DARWIN)
-+/* END(ffi_call_DARWIN) */
-diff --git a/js/src/ctypes/libffi/src/powerpc/aix_closure.S b/js/src/ctypes/libffi/src/powerpc/aix_closure.S
---- a/js/src/ctypes/libffi/src/powerpc/aix_closure.S
-+++ b/js/src/ctypes/libffi/src/powerpc/aix_closure.S
-@@ -74,16 +74,18 @@
- 	.set f15,15
- 	.set f16,16
- 	.set f17,17
- 	.set f18,18
- 	.set f19,19
- 	.set f20,20
- 	.set f21,21
- 
-+	.extern .ffi_closure_helper_DARWIN
-+
- #define LIBFFI_ASM
- #define JUMPTARGET(name) name
- #define L(x) x
- 	.file "aix_closure.S"
- 	.toc
- LC..60:
- 	.tc L..60[TC],L..60
- 	.csect .text[PR]
-@@ -160,16 +162,17 @@ ffi_closure_ASM:
- 	nop
- 
- 	/* now r3 contains the return type */
- 	/* so use it to look up in a table */
- 	/* so we know how to deal with each type */
- 
- 	/* look up the proper starting point in table  */
- 	/* by using return type as offset */
-+	lhz	r3, 10(r3)	/* load type from return type */
- 	ld	r4, LC..60(2)	/* get address of jump table */
- 	sldi	r3, r3, 4	/* now multiply return type by 16 */
- 	ld	r0, 240+16(r1)	/* load return address */
- 	add	r3, r3, r4	/* add contents of table to table address */
- 	mtctr	r3
- 	bctr			/* jump to it */
- 
- /* Each fragment must be exactly 16 bytes long (4 instructions).
-@@ -332,18 +335,19 @@ L..finish:
- 	nop
- 
- 	/* now r3 contains the return type */
- 	/* so use it to look up in a table */
- 	/* so we know how to deal with each type */
- 
- 	/* look up the proper starting point in table  */
- 	/* by using return type as offset */
-+	lhz	r3, 6(r3)	/* load type from return type */
- 	lwz	r4, LC..60(2)	/* get address of jump table */
--	slwi	r3, r3, 4	/* now multiply return type by 4 */
-+	slwi	r3, r3, 4	/* now multiply return type by 16 */
- 	lwz	r0, 176+8(r1)	/* load return address */
- 	add	r3, r3, r4	/* add contents of table to table address */
- 	mtctr	r3
- 	bctr			/* jump to it */
- 
- /* Each fragment must be exactly 16 bytes long (4 instructions).
-    Align to 16 byte boundary for cache and dispatch efficiency.  */
- 	.align 4
-diff --git a/js/src/ctypes/libffi/src/powerpc/asm.h b/js/src/ctypes/libffi/src/powerpc/asm.h
---- a/js/src/ctypes/libffi/src/powerpc/asm.h
-+++ b/js/src/ctypes/libffi/src/powerpc/asm.h
-@@ -37,17 +37,17 @@
- /* This seems to always be the case on PPC.  */
- #define ALIGNARG(log2) log2
- /* For ELF we need the `.type' directive to make shared libs work right.  */
- #define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
- #define ASM_SIZE_DIRECTIVE(name) .size name,.-name
- 
- /* If compiled for profiling, call `_mcount' at the start of each function.  */
- #ifdef	PROF
--/* The mcount code relies on a the return address being on the stack
-+/* The mcount code relies on the return address being on the stack
-    to locate our caller and so it can restore it; so store one just
-    for its benefit.  */
- #ifdef PIC
- #define CALL_MCOUNT							      \
-   .pushsection;								      \
-   .section ".data";							      \
-   .align ALIGNARG(2);							      \
- 0:.long 0;								      \
-diff --git a/js/src/ctypes/libffi/src/powerpc/darwin.S b/js/src/ctypes/libffi/src/powerpc/darwin.S
---- a/js/src/ctypes/libffi/src/powerpc/darwin.S
-+++ b/js/src/ctypes/libffi/src/powerpc/darwin.S
-@@ -1,11 +1,11 @@
- /* -----------------------------------------------------------------------
-    darwin.S - Copyright (c) 2000 John Hornkvist
--	      Copyright (c) 2004 Free Software Foundation, Inc.
-+	      Copyright (c) 2004, 2010 Free Software Foundation, Inc.
- 
-    PowerPC Assembly glue.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -19,207 +19,342 @@
-    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-    IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR
-    OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-    ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-    OTHER DEALINGS IN THE SOFTWARE.
-    ----------------------------------------------------------------------- */
- 
-+#define LIBFFI_ASM
- #if defined(__ppc64__)
- #define MODE_CHOICE(x, y) y
- #else
- #define MODE_CHOICE(x, y) x
- #endif
- 
--#define g_long  MODE_CHOICE(long, quad)         /* usage is ".g_long" */
-+#define machine_choice	MODE_CHOICE(ppc7400,ppc64)
- 
--#define LOG2_GPR_BYTES  MODE_CHOICE(2,3)        /* log2(GPR_BYTES) */
-+; Define some pseudo-opcodes for size-independent load & store of GPRs ...
-+#define lgu		MODE_CHOICE(lwzu, ldu)
-+#define lg		MODE_CHOICE(lwz,ld)
-+#define sg		MODE_CHOICE(stw,std)
-+#define sgu		MODE_CHOICE(stwu,stdu)
-+#define sgux		MODE_CHOICE(stwux,stdux)
- 
--#define LIBFFI_ASM
-+; ... and the size of GPRs and their storage indicator.
-+#define GPR_BYTES	MODE_CHOICE(4,8)
-+#define LOG2_GPR_BYTES	MODE_CHOICE(2,3)	/* log2(GPR_BYTES) */
-+#define g_long		MODE_CHOICE(long, quad)	/* usage is ".g_long" */
-+
-+; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04.
-+#define LINKAGE_SIZE	MODE_CHOICE(24,48)
-+#define PARAM_AREA	MODE_CHOICE(32,64)
-+#define SAVED_LR_OFFSET	MODE_CHOICE(8,16)	/* save position for lr */
-+
-+/* If there is any FP stuff we make space for all of the regs.  */
-+#define SAVED_FPR_COUNT 13
-+#define FPR_SIZE	8
-+#define RESULT_BYTES	16
-+
-+/* This should be kept in step with the same value in ffi_darwin.c.  */
-+#define ASM_NEEDS_REGISTERS 4
-+#define SAVE_REGS_SIZE (ASM_NEEDS_REGISTERS * GPR_BYTES)
-+
- #include <fficonfig.h>
- #include <ffi.h>
-+
- #define JUMPTARGET(name) name
- #define L(x) x
--.text
-+
-+	.text
- 	.align 2
--.globl _ffi_prep_args
-+	.globl _ffi_prep_args
- 
--.text
- 	.align 2
--.globl _ffi_call_DARWIN
--.text
--	.align 2
-+	.globl _ffi_call_DARWIN
-+
-+	/* We arrive here with:
-+	   r3 = ptr to extended cif.
-+	   r4 = -bytes.
-+	   r5 = cif flags.
-+	   r6 = ptr to return value.
-+	   r7 = fn pointer (user func).
-+	   r8 = fn pointer (ffi_prep_args).
-+	   r9 = ffi_type* for the ret val.  */
-+
- _ffi_call_DARWIN:
--LFB0:
-+Lstartcode:
- 	mr   	r12,r8	/* We only need r12 until the call,
--			   so it doesn't have to be saved.  */
-+			   so it does not have to be saved.  */
- LFB1:
- 	/* Save the old stack pointer as AP.  */
- 	mr	r8,r1
- LCFI0:
-+	
-+	/* Save the retval type in parents frame.  */
-+	sg	r9,(LINKAGE_SIZE+6*GPR_BYTES)(r8)
-+
- 	/* Allocate the stack space we need.  */
--	stwux	r1,r1,r4
-+	sgux	r1,r1,r4
- 
- 	/* Save registers we use.  */
- 	mflr	r9
-+	sg	r9,SAVED_LR_OFFSET(r8)
- 
--	stw	r28,-16(r8)	
--	stw	r29,-12(r8)
--	stw	r30,-8(r8)
--	stw	r31,-4(r8)
-+	sg	r28,-(4 * GPR_BYTES)(r8)	
-+	sg	r29,-(3 * GPR_BYTES)(r8)
-+	sg	r30,-(2 * GPR_BYTES)(r8)
-+	sg	r31,-(    GPR_BYTES)(r8)
- 
--	stw	r9,8(r8)
--	stw	r2,20(r1)
-+#if !defined(POWERPC_DARWIN)
-+	/* The TOC slot is reserved in the Darwin ABI and r2 is volatile.  */
-+	sg	r2,(5 * GPR_BYTES)(r1)
-+#endif
-+
- LCFI1:
- 
- 	/* Save arguments over call.  */
- 	mr	r31,r5	/* flags,  */
- 	mr	r30,r6	/* rvalue,  */
- 	mr	r29,r7	/* function address,  */
- 	mr	r28,r8	/* our AP.  */
- LCFI2:
--	/* Call ffi_prep_args.  */
-+	/* Call ffi_prep_args. r3 = extended cif, r4 = stack ptr copy.  */
- 	mr	r4,r1
- 	li	r9,0
- 
- 	mtctr	r12 /* r12 holds address of _ffi_prep_args.  */
- 	bctrl
--	lwz     r2,20(r1)
- 
-+#if !defined(POWERPC_DARWIN)
-+	/* The TOC slot is reserved in the Darwin ABI and r2 is volatile.  */
-+	lg     r2,(5 * GPR_BYTES)(r1)
-+#endif
- 	/* Now do the call.
- 	   Set up cr1 with bits 4-7 of the flags.  */
- 	mtcrf	0x40,r31
- 	/* Get the address to call into CTR.  */
- 	mtctr	r29
- 	/* Load all those argument registers.
- 	   We have set up a nice stack frame, just load it into registers.  */
--	lwz     r3,20+(1*4)(r1)
--	lwz     r4,20+(2*4)(r1)
--	lwz     r5,20+(3*4)(r1)
--	lwz     r6,20+(4*4)(r1)
-+	lg     r3, (LINKAGE_SIZE                )(r1)
-+	lg     r4, (LINKAGE_SIZE +     GPR_BYTES)(r1)
-+	lg     r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r1)
-+	lg     r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r1)
- 	nop
--	lwz     r7,20+(5*4)(r1)
--	lwz     r8,20+(6*4)(r1)
--	lwz     r9,20+(7*4)(r1)
--	lwz     r10,20+(8*4)(r1)
-+	lg     r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r1)
-+	lg     r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r1)
-+	lg     r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r1)
-+	lg     r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r1)
- 
- L1:
--	/* Load all the FP registers.  */
-+	/* ... Load all the FP registers.  */
- 	bf	6,L2	/* No floats to load.  */
--	lfd	f1,-16-(13*8)(r28)
--	lfd	f2,-16-(12*8)(r28)
--	lfd	f3,-16-(11*8)(r28)
--	lfd	f4,-16-(10*8)(r28)
-+	lfd	f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28)
-+	lfd	f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28)
-+	lfd	f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28)
-+	lfd	f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28)
- 	nop
--	lfd	f5,-16-(9*8)(r28)
--	lfd	f6,-16-(8*8)(r28)
--	lfd	f7,-16-(7*8)(r28)
--	lfd	f8,-16-(6*8)(r28)
-+	lfd	f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28)
-+	lfd	f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28)
-+	lfd	f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28)
-+	lfd	f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28)
- 	nop
--	lfd     f9,-16-(5*8)(r28)
--	lfd     f10,-16-(4*8)(r28)
--	lfd     f11,-16-(3*8)(r28)
--	lfd     f12,-16-(2*8)(r28)
-+	lfd     f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28)
-+	lfd     f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28)
-+	lfd     f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28)
-+	lfd     f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28)
- 	nop
--	lfd     f13,-16-(1*8)(r28)
-+	lfd     f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28)
- 
- L2:
- 	mr	r12,r29	/* Put the target address in r12 as specified.  */
- 	mtctr  	r12
- 	nop
- 	nop
-+
- 	/* Make the call.  */
- 	bctrl
- 
- 	/* Now, deal with the return value.  */
--	mtcrf	0x01,r31
- 
--	bt	30,L(done_return_value)
--	bt	29,L(fp_return_value)
--	stw	r3,0(r30)
--	bf	28,L(done_return_value)
--	stw	r4,4(r30)
-+	/* m64 structure returns can occupy the same set of registers as
-+	   would be used to pass such a structure as arg0 - so take care 
-+	   not to step on any possibly hot regs.  */
- 
--	/* Fall through.  */
-+	/* Get the flags.. */
-+	mtcrf	0x03,r31 ; we need c6 & cr7 now.
-+	; FLAG_RETURNS_NOTHING also covers struct ret-by-ref.
-+	bt	30,L(done_return_value)	  ; FLAG_RETURNS_NOTHING
-+	bf	27,L(scalar_return_value) ; not FLAG_RETURNS_STRUCT
-+	
-+	/* OK, so we have a struct.  */
-+#if defined(__ppc64__)
-+	bt	31,L(maybe_return_128) ; FLAG_RETURNS_128BITS, special case 
- 
--L(done_return_value):
--	/* Restore the registers we used and return.  */
--	lwz	r9,8(r28)
--	lwz	r31,-4(r28)
--	mtlr	r9
--	lwz	r30,-8(r28)
--	lwz	r29,-12(r28)
--	lwz	r28,-16(r28)
--	lwz	r1,0(r1)
--	blr
-+	/* OK, we have to map the return back to a mem struct.
-+	   We are about to trample the parents param area, so recover the
-+	   return type.  r29 is free, since the call is done.  */
-+	lg	r29,(LINKAGE_SIZE + 6 * GPR_BYTES)(r28)
-+
-+	sg	r3, (LINKAGE_SIZE                )(r28)
-+	sg	r4, (LINKAGE_SIZE +     GPR_BYTES)(r28)
-+	sg	r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r28)
-+	sg	r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r28)
-+	nop
-+	sg	r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r28)
-+	sg	r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r28)
-+	sg	r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r28)
-+	sg	r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28)
-+	/* OK, so do the block move - we trust that memcpy will not trample
-+	   the fprs...  */
-+	mr 	r3,r30 ; dest
-+	addi	r4,r28,LINKAGE_SIZE ; source
-+	/* The size is a size_t, should be long.  */
-+	lg	r5,0(r29)
-+	/* Figure out small structs */
-+	cmpi	0,r5,4
-+	bgt	L3	; 1, 2 and 4 bytes have special rules.
-+	cmpi	0,r5,3
-+	beq	L3	; not 3
-+	addi	r4,r4,8
-+	subf	r4,r5,r4
-+L3:
-+	bl	_memcpy
-+	
-+	/* ... do we need the FP registers? - recover the flags.. */
-+	mtcrf	0x03,r31 ; we need c6 & cr7 now.
-+	bf	29,L(done_return_value)	/* No floats in the struct.  */
-+	stfd	f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28)
-+	stfd	f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28)
-+	stfd	f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28)
-+	stfd	f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28)
-+	nop
-+	stfd	f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28)
-+	stfd	f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28)
-+	stfd	f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28)
-+	stfd	f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28)
-+	nop
-+	stfd	f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28)
-+	stfd	f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28)
-+	stfd	f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28)
-+	stfd	f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28)
-+	nop
-+	stfd	f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28)
-+
-+	mr	r3,r29	; ffi_type *
-+	mr	r4,r30	; dest
-+	addi	r5,r28,-SAVE_REGS_SIZE-(13*FPR_SIZE) ; fprs
-+	xor	r6,r6,r6
-+	sg	r6,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28)
-+	addi	r6,r28,(LINKAGE_SIZE + 7 * GPR_BYTES) ; point to a zeroed counter.
-+	bl 	_darwin64_struct_floats_to_mem
-+
-+	b L(done_return_value)
-+#else
-+	stw	r3,0(r30) ; m32 the only struct return in reg is 4 bytes.
-+#endif
-+	b L(done_return_value)
- 
- L(fp_return_value):
- 	/* Do we have long double to store?  */
--	bf	31,L(fd_return_value)
-+	bf	31,L(fd_return_value) ; FLAG_RETURNS_128BITS
- 	stfd	f1,0(r30)
--	stfd	f2,8(r30)
-+	stfd	f2,FPR_SIZE(r30)
- 	b	L(done_return_value)
- 
- L(fd_return_value):
- 	/* Do we have double to store?  */
- 	bf	28,L(float_return_value)
- 	stfd	f1,0(r30)
- 	b	L(done_return_value)
- 
- L(float_return_value):
- 	/* We only have a float to store.  */
- 	stfs	f1,0(r30)
- 	b	L(done_return_value)
- 
-+L(scalar_return_value):
-+	bt	29,L(fp_return_value)	; FLAG_RETURNS_FP
-+	; ffi_arg is defined as unsigned long. 
-+	sg	r3,0(r30)		; Save the reg.
-+	bf	28,L(done_return_value) ; not FLAG_RETURNS_64BITS 
-+
-+#if defined(__ppc64__)
-+L(maybe_return_128):
-+	std	r3,0(r30)
-+	bf	31,L(done_return_value) ; not FLAG_RETURNS_128BITS 
-+	std	r4,8(r30)
-+#else
-+	stw	r4,4(r30)
-+#endif
-+
-+	/* Fall through.  */
-+	/* We want this at the end to simplify eh epilog computation.  */
-+
-+L(done_return_value):
-+	/* Restore the registers we used and return.  */
-+	lg	r29,SAVED_LR_OFFSET(r28)
-+	; epilog
-+	lg	r31,-(1 * GPR_BYTES)(r28)
-+	mtlr	r29
-+	lg	r30,-(2 * GPR_BYTES)(r28)
-+	lg	r29,-(3 * GPR_BYTES)(r28)
-+	lg	r28,-(4 * GPR_BYTES)(r28)
-+	lg	r1,0(r1)
-+	blr
- LFE1:
-+	.align	1
- /* END(_ffi_call_DARWIN)  */
- 
- /* Provide a null definition of _ffi_call_AIX.  */
--.text
--	.align 2
--.globl _ffi_call_AIX
--.text
-+	.text
-+	.globl _ffi_call_AIX
- 	.align 2
- _ffi_call_AIX:
- 	blr
- /* END(_ffi_call_AIX)  */
- 
--.data
--.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms
-+/* EH stuff.  */
-+
-+#define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78)
-+
-+	.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
- EH_frame1:
- 	.set	L$set$0,LECIE1-LSCIE1
- 	.long	L$set$0	; Length of Common Information Entry
- LSCIE1:
- 	.long	0x0	; CIE Identifier Tag
- 	.byte	0x1	; CIE Version
- 	.ascii	"zR\0"	; CIE Augmentation
- 	.byte	0x1	; uleb128 0x1; CIE Code Alignment Factor
--	.byte	0x7c	; sleb128 -4; CIE Data Alignment Factor
-+	.byte	EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor
- 	.byte	0x41	; CIE RA Column
- 	.byte	0x1	; uleb128 0x1; Augmentation size
--	.byte	0x90	; FDE Encoding (indirect pcrel)
-+	.byte	0x10	; FDE Encoding (pcrel)
- 	.byte	0xc	; DW_CFA_def_cfa
- 	.byte	0x1	; uleb128 0x1
- 	.byte	0x0	; uleb128 0x0
- 	.align	LOG2_GPR_BYTES
- LECIE1:
--.globl _ffi_call_DARWIN.eh
-+
-+	.globl _ffi_call_DARWIN.eh
- _ffi_call_DARWIN.eh:
- LSFDE1:
- 	.set	L$set$1,LEFDE1-LASFDE1
- 	.long	L$set$1	; FDE Length
- LASFDE1:
- 	.long	LASFDE1-EH_frame1 ; FDE CIE offset
--	.g_long	LLFB0$non_lazy_ptr-.	; FDE initial location
--	.set	L$set$3,LFE1-LFB0
-+	.g_long	Lstartcode-.	; FDE initial location
-+	.set	L$set$3,LFE1-Lstartcode
- 	.g_long	L$set$3	; FDE address range
- 	.byte   0x0     ; uleb128 0x0; Augmentation size
- 	.byte	0x4	; DW_CFA_advance_loc4
--	.set	L$set$4,LCFI0-LFB1
-+	.set	L$set$4,LCFI0-Lstartcode
- 	.long	L$set$4
- 	.byte	0xd	; DW_CFA_def_cfa_register
- 	.byte	0x08	; uleb128 0x08
- 	.byte	0x4	; DW_CFA_advance_loc4
- 	.set	L$set$5,LCFI1-LCFI0
- 	.long	L$set$5
- 	.byte   0x11    ; DW_CFA_offset_extended_sf
- 	.byte	0x41	; uleb128 0x41
-@@ -234,12 +369,10 @@ LASFDE1:
- 	.byte	0x4	; uleb128 0x4
- 	.byte	0x4	; DW_CFA_advance_loc4
- 	.set	L$set$6,LCFI2-LCFI1
- 	.long	L$set$6
- 	.byte	0xd	; DW_CFA_def_cfa_register
- 	.byte	0x1c	; uleb128 0x1c
- 	.align LOG2_GPR_BYTES
- LEFDE1:
--.data
--	.align LOG2_GPR_BYTES
--LLFB0$non_lazy_ptr:
--	.g_long LFB0
-+	.align 1
-+
-diff --git a/js/src/ctypes/libffi/src/powerpc/darwin_closure.S b/js/src/ctypes/libffi/src/powerpc/darwin_closure.S
---- a/js/src/ctypes/libffi/src/powerpc/darwin_closure.S
-+++ b/js/src/ctypes/libffi/src/powerpc/darwin_closure.S
-@@ -1,11 +1,12 @@
- /* -----------------------------------------------------------------------
--   darwin_closure.S - Copyright (c) 2002, 2003, 2004, Free Software Foundation,
--   Inc. based on ppc_closure.S
-+   darwin_closure.S - Copyright (c) 2002, 2003, 2004, 2010, 
-+   Free Software Foundation, Inc. 
-+   based on ppc_closure.S
- 
-    PowerPC Assembly glue.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -28,101 +29,187 @@
- #define L(x) x
- 
- #if defined(__ppc64__)
- #define MODE_CHOICE(x, y) y
- #else
- #define MODE_CHOICE(x, y) x
- #endif
- 
--#define lgu     MODE_CHOICE(lwzu, ldu)
-+#define machine_choice	MODE_CHOICE(ppc7400,ppc64)
- 
--#define g_long  MODE_CHOICE(long, quad)         /* usage is ".g_long" */
-+; Define some pseudo-opcodes for size-independent load & store of GPRs ...
-+#define lgu		MODE_CHOICE(lwzu, ldu)
-+#define lg		MODE_CHOICE(lwz,ld)
-+#define sg		MODE_CHOICE(stw,std)
-+#define sgu		MODE_CHOICE(stwu,stdu)
- 
--#define LOG2_GPR_BYTES  MODE_CHOICE(2,3)        /* log2(GPR_BYTES) */
-+; ... and the size of GPRs and their storage indicator.
-+#define GPR_BYTES	MODE_CHOICE(4,8)
-+#define LOG2_GPR_BYTES	MODE_CHOICE(2,3)	/* log2(GPR_BYTES) */
-+#define g_long		MODE_CHOICE(long, quad)	/* usage is ".g_long" */
-+
-+; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04.
-+#define LINKAGE_SIZE	MODE_CHOICE(24,48)
-+#define PARAM_AREA	MODE_CHOICE(32,64)
-+
-+#define SAVED_CR_OFFSET	MODE_CHOICE(4,8)	/* save position for CR */
-+#define SAVED_LR_OFFSET	MODE_CHOICE(8,16)	/* save position for lr */
-+
-+/* WARNING: if ffi_type is changed... here be monsters.  
-+   Offsets of items within the result type.  */
-+#define FFI_TYPE_TYPE	MODE_CHOICE(6,10)
-+#define FFI_TYPE_ELEM	MODE_CHOICE(8,16)
-+
-+#define SAVED_FPR_COUNT 13
-+#define FPR_SIZE	8
-+/* biggest m64 struct ret is 8GPRS + 13FPRS = 168 bytes - rounded to 16bytes = 176. */
-+#define RESULT_BYTES	MODE_CHOICE(16,176)
-+
-+; The whole stack frame **MUST** be 16byte-aligned.
-+#define SAVE_SIZE (((LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES)+15) & -16LL)
-+#define PAD_SIZE (SAVE_SIZE-(LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES))
-+
-+#define PARENT_PARM_BASE (SAVE_SIZE+LINKAGE_SIZE)
-+#define FP_SAVE_BASE (LINKAGE_SIZE+PARAM_AREA)
-+
-+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050
-+; We no longer need the pic symbol stub for Darwin >= 9.
-+#define BLCLS_HELP _ffi_closure_helper_DARWIN
-+#define STRUCT_RETVALUE_P _darwin64_struct_ret_by_value_p
-+#define PASS_STR_FLOATS _darwin64_pass_struct_floats
-+#undef WANT_STUB
-+#else
-+#define BLCLS_HELP L_ffi_closure_helper_DARWIN$stub
-+#define STRUCT_RETVALUE_P L_darwin64_struct_ret_by_value_p$stub
-+#define PASS_STR_FLOATS L_darwin64_pass_struct_floats$stub
-+#define WANT_STUB
-+#endif
-+
-+/* m32/m64
-+
-+   The stack layout looks like this:
-+
-+   |   Additional params...			| |     Higher address
-+   ~						~ ~
-+   |   Parameters      (at least 8*4/8=32/64)	| | NUM_GPR_ARG_REGISTERS
-+   |--------------------------------------------| |
-+   |   TOC=R2 (AIX) Reserved (Darwin)   4/8	| |
-+   |--------------------------------------------| |
-+   |   Reserved                       2*4/8	| |
-+   |--------------------------------------------| |
-+   |   Space for callee`s LR		4/8	| |
-+   |--------------------------------------------| |
-+   |   Saved CR [low word for m64]      4/8	| |
-+   |--------------------------------------------| |
-+   |   Current backchain pointer	4/8	|-/ Parent`s frame.
-+   |--------------------------------------------| <+ <<< on entry to
-+   |   Result Bytes		       16/176	| |
-+   |--------------------------------------------| |
-+   ~   padding to 16-byte alignment		~ ~
-+   |--------------------------------------------| |
-+   |   NUM_FPR_ARG_REGISTERS slots		| |
-+   |   here fp13 .. fp1		       13*8	| |
-+   |--------------------------------------------| |
-+   |   R3..R10			  8*4/8=32/64	| | NUM_GPR_ARG_REGISTERS
-+   |--------------------------------------------| |
-+   |   TOC=R2 (AIX) Reserved (Darwin)   4/8	| |
-+   |--------------------------------------------| |	stack	|
-+   |   Reserved [compiler,binder]     2*4/8	| |	grows	|
-+   |--------------------------------------------| |	down	V
-+   |   Space for callees LR		4/8	| |
-+   |--------------------------------------------| |	lower addresses
-+   |   Saved CR [low word for m64]      4/8	| |
-+   |--------------------------------------------| |     stack pointer here
-+   |   Current backchain pointer	4/8	|-/	during
-+   |--------------------------------------------|   <<<	call.
-+
-+*/
- 
- 	.file	"darwin_closure.S"
--.text
--	.align LOG2_GPR_BYTES
--.globl _ffi_closure_ASM
- 
--.text
-+	.machine machine_choice
-+
-+	.text
-+	.globl _ffi_closure_ASM
- 	.align LOG2_GPR_BYTES
- _ffi_closure_ASM:
- LFB1:
--	mflr	r0		/* extract return address  */
--	stw	r0,8(r1)	/* save the return address  */
-+Lstartcode:
-+	mflr	r0			/* extract return address  */
-+	sg	r0,SAVED_LR_OFFSET(r1)	/* save the return address  */
- LCFI0:
--	/* 24 Bytes (Linkage Area)
--	   32 Bytes (outgoing parameter area, always reserved)
--	   104 Bytes (13*8 from FPR)
--	   16 Bytes (result)
--	   176 Bytes  */
--
--	stwu	r1,-176(r1)	/* skip over caller save area
--				keep stack aligned to 16.  */
-+	sgu	r1,-SAVE_SIZE(r1)	/* skip over caller save area
-+					keep stack aligned to 16.  */
- LCFI1:
- 	/* We want to build up an area for the parameters passed
- 	   in registers. (both floating point and integer)  */
- 
--	/* We store gpr 3 to gpr 10 (aligned to 4)
--	   in the parents outgoing area.  */
--	stw   r3,200(r1)
--	stw   r4,204(r1)
--	stw   r5,208(r1)
--	stw   r6,212(r1)
--	stw   r7,216(r1)
--	stw   r8,220(r1)
--	stw   r9,224(r1)
--	stw   r10,228(r1)
-+	/* Put gpr 3 to gpr 10 in the parents outgoing area...
-+	   ... the remainder of any params that overflowed the regs will
-+	   follow here.  */
-+	sg	r3, (PARENT_PARM_BASE                )(r1)
-+	sg	r4, (PARENT_PARM_BASE + GPR_BYTES    )(r1)
-+	sg	r5, (PARENT_PARM_BASE + GPR_BYTES * 2)(r1)
-+	sg	r6, (PARENT_PARM_BASE + GPR_BYTES * 3)(r1)
-+	sg	r7, (PARENT_PARM_BASE + GPR_BYTES * 4)(r1)
-+	sg	r8, (PARENT_PARM_BASE + GPR_BYTES * 5)(r1)
-+	sg	r9, (PARENT_PARM_BASE + GPR_BYTES * 6)(r1)
-+	sg	r10,(PARENT_PARM_BASE + GPR_BYTES * 7)(r1)
- 
--	/* We save fpr 1 to fpr 13. (aligned to 8)  */
--	stfd  f1,56(r1)
--	stfd  f2,64(r1)
--	stfd  f3,72(r1)
--	stfd  f4,80(r1)
--	stfd  f5,88(r1)
--	stfd  f6,96(r1)
--	stfd  f7,104(r1)
--	stfd  f8,112(r1)
--	stfd  f9,120(r1)
--	stfd  f10,128(r1)
--	stfd  f11,136(r1)
--	stfd  f12,144(r1)
--	stfd  f13,152(r1)
-+	/* We save fpr 1 to fpr 14 in our own save frame.  */
-+	stfd	f1, (FP_SAVE_BASE                 )(r1)
-+	stfd	f2, (FP_SAVE_BASE +  FPR_SIZE     )(r1)
-+	stfd	f3, (FP_SAVE_BASE +  FPR_SIZE * 2 )(r1)
-+	stfd	f4, (FP_SAVE_BASE +  FPR_SIZE * 3 )(r1)
-+	stfd	f5, (FP_SAVE_BASE +  FPR_SIZE * 4 )(r1)
-+	stfd	f6, (FP_SAVE_BASE +  FPR_SIZE * 5 )(r1)
-+	stfd	f7, (FP_SAVE_BASE +  FPR_SIZE * 6 )(r1)
-+	stfd	f8, (FP_SAVE_BASE +  FPR_SIZE * 7 )(r1)
-+	stfd	f9, (FP_SAVE_BASE +  FPR_SIZE * 8 )(r1)
-+	stfd	f10,(FP_SAVE_BASE +  FPR_SIZE * 9 )(r1)
-+	stfd	f11,(FP_SAVE_BASE +  FPR_SIZE * 10)(r1)
-+	stfd	f12,(FP_SAVE_BASE +  FPR_SIZE * 11)(r1)
-+	stfd	f13,(FP_SAVE_BASE +  FPR_SIZE * 12)(r1)
- 
- 	/* Set up registers for the routine that actually does the work
- 	   get the context pointer from the trampoline.  */
--	mr r3,r11
-+	mr	r3,r11
- 
- 	/* Now load up the pointer to the result storage.  */
--	addi r4,r1,160
-+	addi	r4,r1,(SAVE_SIZE-RESULT_BYTES)
- 
- 	/* Now load up the pointer to the saved gpr registers.  */
--	addi r5,r1,200
-+	addi	r5,r1,PARENT_PARM_BASE
- 
- 	/* Now load up the pointer to the saved fpr registers.  */
--	addi r6,r1,56
-+	addi	r6,r1,FP_SAVE_BASE
- 
- 	/* Make the call.  */
--	bl	Lffi_closure_helper_DARWIN$stub
-+	bl	BLCLS_HELP
- 
--	/* Now r3 contains the return type
--	   so use it to look up in a table
-+	/* r3 contains the rtype pointer... save it since we will need
-+	   it later.  */
-+	sg	r3,LINKAGE_SIZE(r1)	; ffi_type * result_type
-+	lg	r0,0(r3)		; size => r0
-+	lhz	r3,FFI_TYPE_TYPE(r3)	; type => r3
-+
-+	/* The helper will have intercepted structure returns and inserted
-+	   the caller`s destination address for structs returned by ref.  */
-+
-+	/* r3 contains the return type  so use it to look up in a table
- 	   so we know how to deal with each type.  */
- 
--	/* Look up the proper starting point in table
--	   by using return type as offset.  */
--	addi  r5,r1,160		  /* Get pointer to results area.  */
--	bl    Lget_ret_type0_addr /* Get pointer to Lret_type0 into LR.  */
--	mflr  r4		  /* Move to r4.  */
--	slwi  r3,r3,4		  /* Now multiply return type by 16.  */
--	add   r3,r3,r4		  /* Add contents of table to table address.  */
--	mtctr r3
--	bctr			  /* Jump to it.  */
-+	addi	r5,r1,(SAVE_SIZE-RESULT_BYTES) /* Otherwise, our return is here.  */
-+	bl	Lget_ret_type0_addr	/* Get pointer to Lret_type0 into LR.  */
-+	mflr	r4			/* Move to r4.  */
-+	slwi	r3,r3,4			/* Now multiply return type by 16.  */
-+	add	r3,r3,r4		/* Add contents of table to table address.  */
-+	mtctr	r3
-+	bctr			 	 /* Jump to it.  */
- LFE1:
- /* Each of the ret_typeX code fragments has to be exactly 16 bytes long
-    (4 instructions). For cache effectiveness we align to a 16 byte boundary
-    first.  */
- 
- 	.align 4
- 
- 	nop
-@@ -135,17 +222,17 @@ Lget_ret_type0_addr:
- Lret_type0:
- 	b	Lfinish
- 	nop
- 	nop
- 	nop
- 
- /* case FFI_TYPE_INT  */
- Lret_type1:
--	lwz	r3,0(r5)
-+	lg	r3,0(r5)
- 	b	Lfinish
- 	nop
- 	nop
- 
- /* case FFI_TYPE_FLOAT  */
- Lret_type2:
- 	lfs	f1,0(r5)
- 	b	Lfinish
-@@ -163,155 +250,322 @@ Lret_type3:
- Lret_type4:
- 	lfd	f1,0(r5)
- 	lfd	f2,8(r5)
- 	b	Lfinish
- 	nop
- 
- /* case FFI_TYPE_UINT8  */
- Lret_type5:
-+#if defined(__ppc64__)
-+	lbz	r3,7(r5)
-+#else
- 	lbz	r3,3(r5)
-+#endif
- 	b	Lfinish
- 	nop
- 	nop
- 
- /* case FFI_TYPE_SINT8  */
- Lret_type6:
-+#if defined(__ppc64__)
-+	lbz	r3,7(r5)
-+#else
- 	lbz	r3,3(r5)
-+#endif
- 	extsb	r3,r3
- 	b	Lfinish
- 	nop
- 
- /* case FFI_TYPE_UINT16  */
- Lret_type7:
-+#if defined(__ppc64__)
-+	lhz	r3,6(r5)
-+#else
- 	lhz	r3,2(r5)
-+#endif
- 	b	Lfinish
- 	nop
- 	nop
- 
- /* case FFI_TYPE_SINT16  */
- Lret_type8:
-+#if defined(__ppc64__)
-+	lha	r3,6(r5)
-+#else
- 	lha	r3,2(r5)
-+#endif
- 	b	Lfinish
- 	nop
- 	nop
- 
- /* case FFI_TYPE_UINT32  */
- Lret_type9:
-+#if defined(__ppc64__)
-+	lwz	r3,4(r5)
-+#else
- 	lwz	r3,0(r5)
-+#endif
- 	b	Lfinish
- 	nop
- 	nop
- 
- /* case FFI_TYPE_SINT32  */
- Lret_type10:
-+#if defined(__ppc64__)
-+	lwz	r3,4(r5)
-+#else
- 	lwz	r3,0(r5)
-+#endif
- 	b	Lfinish
- 	nop
- 	nop
- 
- /* case FFI_TYPE_UINT64  */
- Lret_type11:
-+#if defined(__ppc64__)
-+	lg	r3,0(r5)
-+	b	Lfinish
-+	nop
-+#else
- 	lwz	r3,0(r5)
- 	lwz	r4,4(r5)
- 	b	Lfinish
-+#endif
- 	nop
- 
- /* case FFI_TYPE_SINT64  */
- Lret_type12:
-+#if defined(__ppc64__)
-+	lg	r3,0(r5)
-+	b	Lfinish
-+	nop
-+#else
- 	lwz	r3,0(r5)
- 	lwz	r4,4(r5)
- 	b	Lfinish
-+#endif
- 	nop
- 
- /* case FFI_TYPE_STRUCT  */
- Lret_type13:
-+#if defined(__ppc64__)
-+	lg	r3,0(r5)		; we need at least this...
-+	cmpi	0,r0,4
-+	bgt	Lstructend		; not a special small case
-+	b	Lsmallstruct		; see if we need more.
-+#else
-+	cmpi	0,r0,4
-+	bgt	Lfinish		; not by value
-+	lg	r3,0(r5)
-+	b	Lfinish
-+#endif
-+/* case FFI_TYPE_POINTER  */
-+Lret_type14:
-+	lg	r3,0(r5)
- 	b	Lfinish
- 	nop
- 	nop
--	nop
- 
--/* case FFI_TYPE_POINTER  */
--Lret_type14:
--	lwz	r3,0(r5)
--	b	Lfinish
--	nop
--	nop
-+#if defined(__ppc64__)
-+Lsmallstruct:
-+	beq	Lfour			; continuation of Lret13.
-+	cmpi	0,r0,3
-+	beq	Lfinish			; don`t adjust this - can`t be any floats here...
-+	srdi	r3,r3,48
-+	cmpi	0,r0,2
-+	beq	Lfinish			; .. or here ..
-+	srdi	r3,r3,8
-+	b 	Lfinish			; .. or here.
-+
-+Lfour:
-+	lg	r6,LINKAGE_SIZE(r1)	; get the result type
-+	lg	r6,FFI_TYPE_ELEM(r6)	; elements array pointer
-+	lg	r6,0(r6)		; first element
-+	lhz	r0,FFI_TYPE_TYPE(r6)	; OK go the type
-+	cmpi	0,r0,2			; FFI_TYPE_FLOAT
-+	bne	Lfourint
-+	lfs	f1,0(r5)		; just one float in the struct.
-+	b 	Lfinish
-+
-+Lfourint:
-+	srdi	r3,r3,32		; four bytes.
-+	b 	Lfinish
-+
-+Lstructend:
-+	lg	r3,LINKAGE_SIZE(r1)	; get the result type
-+	bl	STRUCT_RETVALUE_P
-+	cmpi	0,r3,0
-+	beq	Lfinish			; nope.
-+	/* Recover a pointer to the results.  */
-+	addi	r11,r1,(SAVE_SIZE-RESULT_BYTES)
-+	lg	r3,0(r11)		; we need at least this...
-+	lg	r4,8(r11)
-+	cmpi	0,r0,16
-+	beq	Lfinish		; special case 16 bytes we don't consider floats.
-+
-+	/* OK, frustratingly, the process of saving the struct to mem might have
-+	   messed with the FPRs, so we have to re-load them :(.
-+	   We`ll use our FPRs space again - calling: 
-+	   void darwin64_pass_struct_floats (ffi_type *s, char *src, 
-+					     unsigned *nfpr, double **fprs) 
-+	   We`ll temporarily pinch the first two slots of the param area for local
-+	   vars used by the routine.  */
-+	xor	r6,r6,r6
-+	addi	r5,r1,PARENT_PARM_BASE		; some space
-+	sg	r6,0(r5)			; *nfpr zeroed.
-+	addi	r6,r5,8				; **fprs
-+	addi	r3,r1,FP_SAVE_BASE		; pointer to FPRs space
-+	sg	r3,0(r6)
-+	mr	r4,r11				; the struct is here...
-+	lg	r3,LINKAGE_SIZE(r1)		; ffi_type * result_type.
-+	bl	PASS_STR_FLOATS			; get struct floats into FPR save space.
-+	/* See if we used any floats  */
-+	lwz	r0,(SAVE_SIZE-RESULT_BYTES)(r1)	
-+	cmpi	0,r0,0
-+	beq	Lstructints			; nope.
-+	/* OK load `em up... */
-+	lfd	f1, (FP_SAVE_BASE                 )(r1)
-+	lfd	f2, (FP_SAVE_BASE +  FPR_SIZE     )(r1)
-+	lfd	f3, (FP_SAVE_BASE +  FPR_SIZE * 2 )(r1)
-+	lfd	f4, (FP_SAVE_BASE +  FPR_SIZE * 3 )(r1)
-+	lfd	f5, (FP_SAVE_BASE +  FPR_SIZE * 4 )(r1)
-+	lfd	f6, (FP_SAVE_BASE +  FPR_SIZE * 5 )(r1)
-+	lfd	f7, (FP_SAVE_BASE +  FPR_SIZE * 6 )(r1)
-+	lfd	f8, (FP_SAVE_BASE +  FPR_SIZE * 7 )(r1)
-+	lfd	f9, (FP_SAVE_BASE +  FPR_SIZE * 8 )(r1)
-+	lfd	f10,(FP_SAVE_BASE +  FPR_SIZE * 9 )(r1)
-+	lfd	f11,(FP_SAVE_BASE +  FPR_SIZE * 10)(r1)
-+	lfd	f12,(FP_SAVE_BASE +  FPR_SIZE * 11)(r1)
-+	lfd	f13,(FP_SAVE_BASE +  FPR_SIZE * 12)(r1)
-+
-+	/* point back at our saved struct.  */
-+Lstructints:
-+	addi	r11,r1,(SAVE_SIZE-RESULT_BYTES)
-+	lg	r3,0(r11)			; we end up picking the
-+	lg	r4,8(r11)			; first two again.
-+	lg	r5,16(r11)
-+	lg	r6,24(r11)
-+	lg	r7,32(r11)
-+	lg	r8,40(r11)
-+	lg	r9,48(r11)
-+	lg	r10,56(r11)
-+#endif
- 
- /* case done  */
- Lfinish:
--	addi	r1,r1,176	/* Restore stack pointer.  */
--	lwz	r0,8(r1)	/* Get return address.  */
--	mtlr	r0		/* Reset link register.  */
-+	addi	r1,r1,SAVE_SIZE		/* Restore stack pointer.  */
-+	lg	r0,SAVED_LR_OFFSET(r1)	/* Get return address.  */
-+	mtlr	r0			/* Reset link register.  */
- 	blr
--
-+Lendcode:
-+	.align 1
-+	
- /* END(ffi_closure_ASM)  */
- 
--.data
--.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
-+/* EH frame stuff.  */
-+#define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78)
-+/* 176, 400 */
-+#define EH_FRAME_OFFSETA MODE_CHOICE(176,0x90)
-+#define EH_FRAME_OFFSETB MODE_CHOICE(1,3)
-+
-+	.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
- EH_frame1:
- 	.set	L$set$0,LECIE1-LSCIE1
- 	.long	L$set$0	; Length of Common Information Entry
- LSCIE1:
- 	.long	0x0	; CIE Identifier Tag
- 	.byte	0x1	; CIE Version
- 	.ascii	"zR\0"	; CIE Augmentation
- 	.byte	0x1	; uleb128 0x1; CIE Code Alignment Factor
--	.byte	0x7c	; sleb128 -4; CIE Data Alignment Factor
-+	.byte	EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor
- 	.byte	0x41	; CIE RA Column
- 	.byte	0x1	; uleb128 0x1; Augmentation size
--	.byte	0x90	; FDE Encoding (indirect pcrel)
-+	.byte	0x10	; FDE Encoding (pcrel)
- 	.byte	0xc	; DW_CFA_def_cfa
- 	.byte	0x1	; uleb128 0x1
- 	.byte	0x0	; uleb128 0x0
- 	.align	LOG2_GPR_BYTES
- LECIE1:
--.globl _ffi_closure_ASM.eh
-+	.globl _ffi_closure_ASM.eh
- _ffi_closure_ASM.eh:
- LSFDE1:
- 	.set	L$set$1,LEFDE1-LASFDE1
- 	.long	L$set$1	; FDE Length
- 
- LASFDE1:
- 	.long	LASFDE1-EH_frame1	; FDE CIE offset
--	.g_long	LLFB1$non_lazy_ptr-.	; FDE initial location
--	.set	L$set$3,LFE1-LFB1
-+	.g_long	Lstartcode-.	; FDE initial location
-+	.set	L$set$3,LFE1-Lstartcode
- 	.g_long	L$set$3	; FDE address range
- 	.byte   0x0     ; uleb128 0x0; Augmentation size
- 	.byte	0x4	; DW_CFA_advance_loc4
- 	.set	L$set$3,LCFI1-LCFI0
- 	.long	L$set$3
- 	.byte	0xe	; DW_CFA_def_cfa_offset
--	.byte	176,1	; uleb128 176
-+	.byte	EH_FRAME_OFFSETA,EH_FRAME_OFFSETB	; uleb128 176,1/190,3
- 	.byte	0x4	; DW_CFA_advance_loc4
--	.set	L$set$4,LCFI0-LFB1
-+	.set	L$set$4,LCFI0-Lstartcode
- 	.long	L$set$4
- 	.byte   0x11    ; DW_CFA_offset_extended_sf
- 	.byte	0x41	; uleb128 0x41
- 	.byte   0x7e    ; sleb128 -2
- 	.align	LOG2_GPR_BYTES
- LEFDE1:
--.data
--	.align	LOG2_GPR_BYTES
--LDFCM0:
--.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
--	.align	LOG2_GPR_BYTES
--Lffi_closure_helper_DARWIN$stub:
--#if 1
-+	.align 	1
-+
-+#ifdef WANT_STUB
-+	.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
-+	.align 5
-+L_ffi_closure_helper_DARWIN$stub:
- 	.indirect_symbol _ffi_closure_helper_DARWIN
--	mflr	r0
--	bcl	20,31,LO$ffi_closure_helper_DARWIN
--LO$ffi_closure_helper_DARWIN:
--	mflr	r11
--	addis	r11,r11,ha16(L_ffi_closure_helper_DARWIN$lazy_ptr - LO$ffi_closure_helper_DARWIN)
--	mtlr	r0
--	lgu	r12,lo16(L_ffi_closure_helper_DARWIN$lazy_ptr - LO$ffi_closure_helper_DARWIN)(r11)
--	mtctr	r12
-+	mflr r0
-+	bcl 20,31,"L1$spb"
-+"L1$spb":
-+	mflr r11
-+	addis r11,r11,ha16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb")
-+	mtlr r0
-+	lwzu r12,lo16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb")(r11)
-+	mtctr r12
- 	bctr
--.lazy_symbol_pointer
-+	.lazy_symbol_pointer
- L_ffi_closure_helper_DARWIN$lazy_ptr:
- 	.indirect_symbol _ffi_closure_helper_DARWIN
--	.g_long dyld_stub_binding_helper
-+	.g_long	dyld_stub_binding_helper
-+
-+#if defined(__ppc64__)
-+	.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
-+	.align 5
-+L_darwin64_struct_ret_by_value_p$stub:
-+	.indirect_symbol _darwin64_struct_ret_by_value_p
-+	mflr r0
-+	bcl 20,31,"L2$spb"
-+"L2$spb":
-+	mflr r11
-+	addis r11,r11,ha16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb")
-+	mtlr r0
-+	lwzu r12,lo16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb")(r11)
-+	mtctr r12
-+	bctr
-+	.lazy_symbol_pointer
-+L_darwin64_struct_ret_by_value_p$lazy_ptr:
-+	.indirect_symbol _darwin64_struct_ret_by_value_p
-+	.g_long	dyld_stub_binding_helper
-+
-+	.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
-+	.align 5
-+L_darwin64_pass_struct_floats$stub:
-+	.indirect_symbol _darwin64_pass_struct_floats
-+	mflr r0
-+	bcl 20,31,"L3$spb"
-+"L3$spb":
-+	mflr r11
-+	addis r11,r11,ha16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb")
-+	mtlr r0
-+	lwzu r12,lo16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb")(r11)
-+	mtctr r12
-+	bctr
-+	.lazy_symbol_pointer
-+L_darwin64_pass_struct_floats$lazy_ptr:
-+	.indirect_symbol _darwin64_pass_struct_floats
-+	.g_long	dyld_stub_binding_helper
-+#  endif
- #endif
--.data
--	.align LOG2_GPR_BYTES
--LLFB1$non_lazy_ptr:
--	.g_long LFB1
-diff --git a/js/src/ctypes/libffi/src/powerpc/ffi.c b/js/src/ctypes/libffi/src/powerpc/ffi.c
---- a/js/src/ctypes/libffi/src/powerpc/ffi.c
-+++ b/js/src/ctypes/libffi/src/powerpc/ffi.c
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------------
--   ffi.c - Copyright (C) 2011 Anthony Green
-+   ffi.c - Copyright (C) 2013 IBM
-+           Copyright (C) 2011 Anthony Green
-            Copyright (C) 2011 Kyle Moffett
-            Copyright (C) 2008 Red Hat, Inc
-            Copyright (C) 2007, 2008 Free Software Foundation, Inc
- 	   Copyright (c) 1998 Geoffrey Keating
- 
-    PowerPC Foreign Function Interface
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-@@ -22,1784 +23,119 @@
-    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-    IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR
-    OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-    ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-    OTHER DEALINGS IN THE SOFTWARE.
-    ----------------------------------------------------------------------- */
- 
--#include <ffi.h>
--#include <ffi_common.h>
-+#include "ffi.h"
-+#include "ffi_common.h"
-+#include "ffi_powerpc.h"
- 
--#include <stdlib.h>
--#include <stdio.h>
--
--
--extern void ffi_closure_SYSV (void);
--extern void FFI_HIDDEN ffi_closure_LINUX64 (void);
--
--enum {
--  /* The assembly depends on these exact flags.  */
--  FLAG_RETURNS_SMST	= 1 << (31-31), /* Used for FFI_SYSV small structs.  */
--  FLAG_RETURNS_NOTHING  = 1 << (31-30), /* These go in cr7 */
--#ifndef __NO_FPRS__
--  FLAG_RETURNS_FP       = 1 << (31-29),
--#endif
--  FLAG_RETURNS_64BITS   = 1 << (31-28),
--
--  FLAG_RETURNS_128BITS  = 1 << (31-27), /* cr6  */
--
--  FLAG_ARG_NEEDS_COPY   = 1 << (31- 7),
--  FLAG_ARG_NEEDS_PSAVE  = FLAG_ARG_NEEDS_COPY, /* Used by ELFv2 */
--#ifndef __NO_FPRS__
--  FLAG_FP_ARGUMENTS     = 1 << (31- 6), /* cr1.eq; specified by ABI */
--#endif
--  FLAG_4_GPR_ARGUMENTS  = 1 << (31- 5),
--  FLAG_RETVAL_REFERENCE = 1 << (31- 4)
--};
--
--/* About the SYSV ABI.  */
--#define ASM_NEEDS_REGISTERS 4
--#define NUM_GPR_ARG_REGISTERS 8
--#ifndef __NO_FPRS__
--# define NUM_FPR_ARG_REGISTERS 8
--#endif
--
--/* ffi_prep_args_SYSV is called by the assembly routine once stack space
--   has been allocated for the function's arguments.
--
--   The stack layout we want looks like this:
--
--   |   Return address from ffi_call_SYSV 4bytes	|	higher addresses
--   |--------------------------------------------|
--   |   Previous backchain pointer	4	|       stack pointer here
--   |--------------------------------------------|<+ <<<	on entry to
--   |   Saved r28-r31			4*4	| |	ffi_call_SYSV
--   |--------------------------------------------| |
--   |   GPR registers r3-r10		8*4	| |	ffi_call_SYSV
--   |--------------------------------------------| |
--   |   FPR registers f1-f8 (optional)	8*8	| |
--   |--------------------------------------------| |	stack	|
--   |   Space for copied structures		| |	grows	|
--   |--------------------------------------------| |	down    V
--   |   Parameters that didn't fit in registers  | |
--   |--------------------------------------------| |	lower addresses
--   |   Space for callee's LR		4	| |
--   |--------------------------------------------| |	stack pointer here
--   |   Current backchain pointer	4	|-/	during
--   |--------------------------------------------|   <<<	ffi_call_SYSV
--
--*/
--
--void
--ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack)
-+#if HAVE_LONG_DOUBLE_VARIANT
-+/* Adjust ffi_type_longdouble.  */
-+void FFI_HIDDEN
-+ffi_prep_types (ffi_abi abi)
- {
--  const unsigned bytes = ecif->cif->bytes;
--  const unsigned flags = ecif->cif->flags;
--
--  typedef union {
--    char *c;
--    unsigned *u;
--    long long *ll;
--    float *f;
--    double *d;
--  } valp;
--
--  /* 'stacktop' points at the previous backchain pointer.  */
--  valp stacktop;
--
--  /* 'gpr_base' points at the space for gpr3, and grows upwards as
--     we use GPR registers.  */
--  valp gpr_base;
--  int intarg_count;
--
--#ifndef __NO_FPRS__
--  /* 'fpr_base' points at the space for fpr1, and grows upwards as
--     we use FPR registers.  */
--  valp fpr_base;
--  int fparg_count;
--#endif
--
--  /* 'copy_space' grows down as we put structures in it.  It should
--     stay 16-byte aligned.  */
--  valp copy_space;
--
--  /* 'next_arg' grows up as we put parameters in it.  */
--  valp next_arg;
--
--  int i;
--  ffi_type **ptr;
--#ifndef __NO_FPRS__
--  double double_tmp;
--#endif
--  union {
--    void **v;
--    char **c;
--    signed char **sc;
--    unsigned char **uc;
--    signed short **ss;
--    unsigned short **us;
--    unsigned int **ui;
--    long long **ll;
--    float **f;
--    double **d;
--  } p_argv;
--  size_t struct_copy_size;
--  unsigned gprvalue;
--
--  stacktop.c = (char *) stack + bytes;
--  gpr_base.u = stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS;
--  intarg_count = 0;
--#ifndef __NO_FPRS__
--  fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS;
--  fparg_count = 0;
--  copy_space.c = ((flags & FLAG_FP_ARGUMENTS) ? fpr_base.c : gpr_base.c);
--#else
--  copy_space.c = gpr_base.c;
--#endif
--  next_arg.u = stack + 2;
--
--  /* Check that everything starts aligned properly.  */
--  FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0);
--  FFI_ASSERT (((unsigned long) copy_space.c & 0xF) == 0);
--  FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0);
--  FFI_ASSERT ((bytes & 0xF) == 0);
--  FFI_ASSERT (copy_space.c >= next_arg.c);
--
--  /* Deal with return values that are actually pass-by-reference.  */
--  if (flags & FLAG_RETVAL_REFERENCE)
--    {
--      *gpr_base.u++ = (unsigned long) (char *) ecif->rvalue;
--      intarg_count++;
--    }
--
--  /* Now for the arguments.  */
--  p_argv.v = ecif->avalue;
--  for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs;
--       i > 0;
--       i--, ptr++, p_argv.v++)
--    {
--      unsigned short typenum = (*ptr)->type;
--
--      /* We may need to handle some values depending on ABI */
--      if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT) {
--		if (typenum == FFI_TYPE_FLOAT)
--			typenum = FFI_TYPE_UINT32;
--		if (typenum == FFI_TYPE_DOUBLE)
--			typenum = FFI_TYPE_UINT64;
--		if (typenum == FFI_TYPE_LONGDOUBLE)
--			typenum = FFI_TYPE_UINT128;
--      } else if (ecif->cif->abi != FFI_LINUX) {
--#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
--		if (typenum == FFI_TYPE_LONGDOUBLE)
--			typenum = FFI_TYPE_STRUCT;
--#endif
--      }
--
--      /* Now test the translated value */
--      switch (typenum) {
--#ifndef __NO_FPRS__
--	case FFI_TYPE_FLOAT:
--	  /* With FFI_LINUX_SOFT_FLOAT floats are handled like UINT32.  */
--	  double_tmp = **p_argv.f;
--	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
--	    {
--	      *next_arg.f = (float) double_tmp;
--	      next_arg.u += 1;
--	      intarg_count++;
--	    }
--	  else
--	    *fpr_base.d++ = double_tmp;
--	  fparg_count++;
--	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
--	  break;
--
--	case FFI_TYPE_DOUBLE:
--	  /* With FFI_LINUX_SOFT_FLOAT doubles are handled like UINT64.  */
--	  double_tmp = **p_argv.d;
--
--	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
--	    {
--	      if (intarg_count >= NUM_GPR_ARG_REGISTERS
--		  && intarg_count % 2 != 0)
--		{
--		  intarg_count++;
--		  next_arg.u++;
--		}
--	      *next_arg.d = double_tmp;
--	      next_arg.u += 2;
--	    }
--	  else
--	    *fpr_base.d++ = double_tmp;
--	  fparg_count++;
--	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
--	  break;
--
--#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
--	case FFI_TYPE_LONGDOUBLE:
--	      double_tmp = (*p_argv.d)[0];
--
--	      if (fparg_count >= NUM_FPR_ARG_REGISTERS - 1)
--		{
--		  if (intarg_count >= NUM_GPR_ARG_REGISTERS
--		      && intarg_count % 2 != 0)
--		    {
--		      intarg_count++;
--		      next_arg.u++;
--		    }
--		  *next_arg.d = double_tmp;
--		  next_arg.u += 2;
--		  double_tmp = (*p_argv.d)[1];
--		  *next_arg.d = double_tmp;
--		  next_arg.u += 2;
--		}
--	      else
--		{
--		  *fpr_base.d++ = double_tmp;
--		  double_tmp = (*p_argv.d)[1];
--		  *fpr_base.d++ = double_tmp;
--		}
--
--	      fparg_count += 2;
--	      FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
--	  break;
--#endif
--#endif /* have FPRs */
--
--	/*
--	 * The soft float ABI for long doubles works like this, a long double
--	 * is passed in four consecutive GPRs if available.  A maximum of 2
--	 * long doubles can be passed in gprs.  If we do not have 4 GPRs
--	 * left, the long double is passed on the stack, 4-byte aligned.
--	 */
--	case FFI_TYPE_UINT128: {
--		unsigned int int_tmp = (*p_argv.ui)[0];
--		unsigned int ii;
--		if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3) {
--			if (intarg_count < NUM_GPR_ARG_REGISTERS)
--				intarg_count += NUM_GPR_ARG_REGISTERS - intarg_count;
--			*(next_arg.u++) = int_tmp;
--			for (ii = 1; ii < 4; ii++) {
--				int_tmp = (*p_argv.ui)[ii];
--				*(next_arg.u++) = int_tmp;
--			}
--		} else {
--			*(gpr_base.u++) = int_tmp;
--			for (ii = 1; ii < 4; ii++) {
--				int_tmp = (*p_argv.ui)[ii];
--				*(gpr_base.u++) = int_tmp;
--			}
--		}
--		intarg_count += 4;
--		break;
--	}
--
--	case FFI_TYPE_UINT64:
--	case FFI_TYPE_SINT64:
--	  if (intarg_count == NUM_GPR_ARG_REGISTERS-1)
--	    intarg_count++;
--	  if (intarg_count >= NUM_GPR_ARG_REGISTERS)
--	    {
--	      if (intarg_count % 2 != 0)
--		{
--		  intarg_count++;
--		  next_arg.u++;
--		}
--	      *next_arg.ll = **p_argv.ll;
--	      next_arg.u += 2;
--	    }
--	  else
--	    {
--	      /* whoops: abi states only certain register pairs
--	       * can be used for passing long long int
--	       * specifically (r3,r4), (r5,r6), (r7,r8),
--	       * (r9,r10) and if next arg is long long but
--	       * not correct starting register of pair then skip
--	       * until the proper starting register
--	       */
--	      if (intarg_count % 2 != 0)
--		{
--		  intarg_count ++;
--		  gpr_base.u++;
--		}
--	      *gpr_base.ll++ = **p_argv.ll;
--	    }
--	  intarg_count += 2;
--	  break;
--
--	case FFI_TYPE_STRUCT:
--	  struct_copy_size = ((*ptr)->size + 15) & ~0xF;
--	  copy_space.c -= struct_copy_size;
--	  memcpy (copy_space.c, *p_argv.c, (*ptr)->size);
--
--	  gprvalue = (unsigned long) copy_space.c;
--
--	  FFI_ASSERT (copy_space.c > next_arg.c);
--	  FFI_ASSERT (flags & FLAG_ARG_NEEDS_COPY);
--	  goto putgpr;
--
--	case FFI_TYPE_UINT8:
--	  gprvalue = **p_argv.uc;
--	  goto putgpr;
--	case FFI_TYPE_SINT8:
--	  gprvalue = **p_argv.sc;
--	  goto putgpr;
--	case FFI_TYPE_UINT16:
--	  gprvalue = **p_argv.us;
--	  goto putgpr;
--	case FFI_TYPE_SINT16:
--	  gprvalue = **p_argv.ss;
--	  goto putgpr;
--
--	case FFI_TYPE_INT:
--	case FFI_TYPE_UINT32:
--	case FFI_TYPE_SINT32:
--	case FFI_TYPE_POINTER:
--
--	  gprvalue = **p_argv.ui;
--
--	putgpr:
--	  if (intarg_count >= NUM_GPR_ARG_REGISTERS)
--	    *next_arg.u++ = gprvalue;
--	  else
--	    *gpr_base.u++ = gprvalue;
--	  intarg_count++;
--	  break;
--	}
--    }
--
--  /* Check that we didn't overrun the stack...  */
--  FFI_ASSERT (copy_space.c >= next_arg.c);
--  FFI_ASSERT (gpr_base.u <= stacktop.u - ASM_NEEDS_REGISTERS);
--  /* The assert below is testing that the number of integer arguments agrees
--     with the number found in ffi_prep_cif_machdep().  However, intarg_count
--     is incremented whenever we place an FP arg on the stack, so account for
--     that before our assert test.  */
--#ifndef __NO_FPRS__
--  if (fparg_count > NUM_FPR_ARG_REGISTERS)
--    intarg_count -= fparg_count - NUM_FPR_ARG_REGISTERS;
--  FFI_ASSERT (fpr_base.u
--	      <= stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS);
--#endif
--  FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4);
--}
--
--/* About the LINUX64 ABI.  */
--enum {
--  NUM_GPR_ARG_REGISTERS64 = 8,
--  NUM_FPR_ARG_REGISTERS64 = 13
--};
--enum { ASM_NEEDS_REGISTERS64 = 4 };
--
--#if _CALL_ELF == 2
--static unsigned int
--discover_homogeneous_aggregate (const ffi_type *t, unsigned int *elnum)
--{
--  switch (t->type)
--    {
--    case FFI_TYPE_FLOAT:
--    case FFI_TYPE_DOUBLE:
--      *elnum = 1;
--      return (int) t->type;
--
--    case FFI_TYPE_STRUCT:;
--      {
--	unsigned int base_elt = 0, total_elnum = 0;
--	ffi_type **el = t->elements;
--	while (*el)
--	  {
--	    unsigned int el_elt, el_elnum = 0;
--	    el_elt = discover_homogeneous_aggregate (*el, &el_elnum);
--	    if (el_elt == 0
--		|| (base_elt && base_elt != el_elt))
--	      return 0;
--	    base_elt = el_elt;
--	    total_elnum += el_elnum;
--	    if (total_elnum > 8)
--	      return 0;
--	    el++;
--	  }
--	*elnum = total_elnum;
--	return base_elt;
--      }
--
--    default:
--      return 0;
--    }
-+# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+#  ifdef POWERPC64
-+  ffi_prep_types_linux64 (abi);
-+#  else
-+  ffi_prep_types_sysv (abi);
-+#  endif
-+# endif
- }
- #endif
- 
--
--/* ffi_prep_args64 is called by the assembly routine once stack space
--   has been allocated for the function's arguments.
--
--   The stack layout we want looks like this:
--
--   |   Ret addr from ffi_call_LINUX64	8bytes	|	higher addresses
--   |--------------------------------------------|
--   |   CR save area			8bytes	|
--   |--------------------------------------------|
--   |   Previous backchain pointer	8	|	stack pointer here
--   |--------------------------------------------|<+ <<<	on entry to
--   |   Saved r28-r31			4*8	| |	ffi_call_LINUX64
--   |--------------------------------------------| |
--   |   GPR registers r3-r10		8*8	| |
--   |--------------------------------------------| |
--   |   FPR registers f1-f13 (optional)	13*8	| |
--   |--------------------------------------------| |
--   |   Parameter save area		        | |
--   |--------------------------------------------| |
--   |   TOC save area			8	| |
--   |--------------------------------------------| |	stack	|
--   |   Linker doubleword		8	| |	grows	|
--   |--------------------------------------------| |	down	V
--   |   Compiler doubleword		8	| |
--   |--------------------------------------------| |	lower addresses
--   |   Space for callee's LR		8	| |
--   |--------------------------------------------| |
--   |   CR save area			8	| |
--   |--------------------------------------------| |	stack pointer here
--   |   Current backchain pointer	8	|-/	during
--   |--------------------------------------------|   <<<	ffi_call_LINUX64
--
--*/
--
--void FFI_HIDDEN
--ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack)
-+/* Perform machine dependent cif processing */
-+ffi_status FFI_HIDDEN
-+ffi_prep_cif_machdep (ffi_cif *cif)
- {
--  const unsigned long bytes = ecif->cif->bytes;
--  const unsigned long flags = ecif->cif->flags;
--
--  typedef union {
--    char *c;
--    unsigned long *ul;
--    float *f;
--    double *d;
--    size_t p;
--  } valp;
--
--  /* 'stacktop' points at the previous backchain pointer.  */
--  valp stacktop;
--
--  /* 'next_arg' points at the space for gpr3, and grows upwards as
--     we use GPR registers, then continues at rest.  */
--  valp gpr_base;
--  valp gpr_end;
--  valp rest;
--  valp next_arg;
--
--  /* 'fpr_base' points at the space for fpr3, and grows upwards as
--     we use FPR registers.  */
--  valp fpr_base;
--  unsigned int fparg_count;
--
--  unsigned int i, words, nargs, nfixedargs;
--  ffi_type **ptr;
--  double double_tmp;
--  union {
--    void **v;
--    char **c;
--    signed char **sc;
--    unsigned char **uc;
--    signed short **ss;
--    unsigned short **us;
--    signed int **si;
--    unsigned int **ui;
--    unsigned long **ul;
--    float **f;
--    double **d;
--  } p_argv;
--  unsigned long gprvalue;
--#ifdef __STRUCT_PARM_ALIGN__
--  unsigned long align;
-+#ifdef POWERPC64
-+  return ffi_prep_cif_linux64 (cif);
-+#else
-+  return ffi_prep_cif_sysv (cif);
- #endif
--
--  stacktop.c = (char *) stack + bytes;
--  gpr_base.ul = stacktop.ul - ASM_NEEDS_REGISTERS64 - NUM_GPR_ARG_REGISTERS64;
--  gpr_end.ul = gpr_base.ul + NUM_GPR_ARG_REGISTERS64;
--#if _CALL_ELF == 2
--  rest.ul = stack + 4 + NUM_GPR_ARG_REGISTERS64;
--#else
--  rest.ul = stack + 6 + NUM_GPR_ARG_REGISTERS64;
--#endif
--  fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS64;
--  fparg_count = 0;
--  next_arg.ul = gpr_base.ul;
--
--  /* Check that everything starts aligned properly.  */
--  FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0);
--  FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0);
--  FFI_ASSERT ((bytes & 0xF) == 0);
--
--  /* Deal with return values that are actually pass-by-reference.  */
--  if (flags & FLAG_RETVAL_REFERENCE)
--    *next_arg.ul++ = (unsigned long) (char *) ecif->rvalue;
--
--  /* Now for the arguments.  */
--  p_argv.v = ecif->avalue;
--  nargs = ecif->cif->nargs;
--  nfixedargs = ecif->cif->nfixedargs;
--  for (ptr = ecif->cif->arg_types, i = 0;
--       i < nargs;
--       i++, ptr++, p_argv.v++)
--    {
--      unsigned int elt, elnum;
--
--      switch ((*ptr)->type)
--	{
--	case FFI_TYPE_FLOAT:
--	  double_tmp = **p_argv.f;
--	  if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
--	    *fpr_base.d++ = double_tmp;
--	  else
--	    *next_arg.f = (float) double_tmp;
--	  if (++next_arg.ul == gpr_end.ul)
--	    next_arg.ul = rest.ul;
--	  fparg_count++;
--	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
--	  break;
--
--	case FFI_TYPE_DOUBLE:
--	  double_tmp = **p_argv.d;
--	  if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
--	    *fpr_base.d++ = double_tmp;
--	  else
--	    *next_arg.d = double_tmp;
--	  if (++next_arg.ul == gpr_end.ul)
--	    next_arg.ul = rest.ul;
--	  fparg_count++;
--	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
--	  break;
--
--#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
--	case FFI_TYPE_LONGDOUBLE:
--	  double_tmp = (*p_argv.d)[0];
--	  if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
--	    *fpr_base.d++ = double_tmp;
--	  else
--	    *next_arg.d = double_tmp;
--	  if (++next_arg.ul == gpr_end.ul)
--	    next_arg.ul = rest.ul;
--	  fparg_count++;
--	  double_tmp = (*p_argv.d)[1];
--	  if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
--	    *fpr_base.d++ = double_tmp;
--	  else
--	    *next_arg.d = double_tmp;
--	  if (++next_arg.ul == gpr_end.ul)
--	    next_arg.ul = rest.ul;
--	  fparg_count++;
--	  FFI_ASSERT (__LDBL_MANT_DIG__ == 106);
--	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
--	  break;
--#endif
--
--	case FFI_TYPE_STRUCT:
--#ifdef __STRUCT_PARM_ALIGN__
--	  align = (*ptr)->alignment;
--	  if (align > __STRUCT_PARM_ALIGN__)
--	    align = __STRUCT_PARM_ALIGN__;
--	  if (align > 1)
--	    next_arg.p = ALIGN (next_arg.p, align);
--#endif
--	  elt = 0;
--#if _CALL_ELF == 2
--	  elt = discover_homogeneous_aggregate (*ptr, &elnum);
--#endif
--	  if (elt)
--	    {
--	      union {
--		void *v;
--		float *f;
--		double *d;
--	      } arg;
--
--	      arg.v = *p_argv.v;
--	      if (elt == FFI_TYPE_FLOAT)
--		{
--		  do
--		    {
--		      double_tmp = *arg.f++;
--		      if (fparg_count < NUM_FPR_ARG_REGISTERS64
--			  && i < nfixedargs)
--			*fpr_base.d++ = double_tmp;
--		      else
--			*next_arg.f = (float) double_tmp;
--		      if (++next_arg.f == gpr_end.f)
--			next_arg.f = rest.f;
--		      fparg_count++;
--		    }
--		  while (--elnum != 0);
--		  if ((next_arg.p & 3) != 0)
--		    {
--		      if (++next_arg.f == gpr_end.f)
--			next_arg.f = rest.f;
--		    }
--		}
--	      else
--		do
--		  {
--		    double_tmp = *arg.d++;
--		    if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
--		      *fpr_base.d++ = double_tmp;
--		    else
--		      *next_arg.d = double_tmp;
--		    if (++next_arg.d == gpr_end.d)
--		      next_arg.d = rest.d;
--		    fparg_count++;
--		  }
--		while (--elnum != 0);
--	    }
--	  else
--	    {
--	      words = ((*ptr)->size + 7) / 8;
--	      if (next_arg.ul >= gpr_base.ul && next_arg.ul + words > gpr_end.ul)
--		{
--		  size_t first = gpr_end.c - next_arg.c;
--		  memcpy (next_arg.c, *p_argv.c, first);
--		  memcpy (rest.c, *p_argv.c + first, (*ptr)->size - first);
--		  next_arg.c = rest.c + words * 8 - first;
--		}
--	      else
--		{
--		  char *where = next_arg.c;
--
--#ifndef __LITTLE_ENDIAN__
--		  /* Structures with size less than eight bytes are passed
--		     left-padded.  */
--		  if ((*ptr)->size < 8)
--		    where += 8 - (*ptr)->size;
--#endif
--		  memcpy (where, *p_argv.c, (*ptr)->size);
--		  next_arg.ul += words;
--		  if (next_arg.ul == gpr_end.ul)
--		    next_arg.ul = rest.ul;
--		}
--	    }
--	  break;
--
--	case FFI_TYPE_UINT8:
--	  gprvalue = **p_argv.uc;
--	  goto putgpr;
--	case FFI_TYPE_SINT8:
--	  gprvalue = **p_argv.sc;
--	  goto putgpr;
--	case FFI_TYPE_UINT16:
--	  gprvalue = **p_argv.us;
--	  goto putgpr;
--	case FFI_TYPE_SINT16:
--	  gprvalue = **p_argv.ss;
--	  goto putgpr;
--	case FFI_TYPE_UINT32:
--	  gprvalue = **p_argv.ui;
--	  goto putgpr;
--	case FFI_TYPE_INT:
--	case FFI_TYPE_SINT32:
--	  gprvalue = **p_argv.si;
--	  goto putgpr;
--
--	case FFI_TYPE_UINT64:
--	case FFI_TYPE_SINT64:
--	case FFI_TYPE_POINTER:
--	  gprvalue = **p_argv.ul;
--	putgpr:
--	  *next_arg.ul++ = gprvalue;
--	  if (next_arg.ul == gpr_end.ul)
--	    next_arg.ul = rest.ul;
--	  break;
--	}
--    }
--
--  FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS
--	      || (next_arg.ul >= gpr_base.ul
--		  && next_arg.ul <= gpr_base.ul + 4));
- }
- 
--
--
--/* Perform machine dependent cif processing */
--static ffi_status
--ffi_prep_cif_machdep_core (ffi_cif *cif)
--{
--  /* All this is for the SYSV and LINUX64 ABI.  */
--  ffi_type **ptr;
--  unsigned bytes;
--  unsigned i, fparg_count = 0, intarg_count = 0;
--  unsigned flags = cif->flags;
--  unsigned struct_copy_size = 0;
--  unsigned type = cif->rtype->type;
--  unsigned size = cif->rtype->size;
--
--  /* The machine-independent calculation of cif->bytes doesn't work
--     for us.  Redo the calculation.  */
--  if (cif->abi != FFI_LINUX64)
--    {
--      /* Space for the frame pointer, callee's LR, and the asm's temp regs.  */
--      bytes = (2 + ASM_NEEDS_REGISTERS) * sizeof (int);
--
--      /* Space for the GPR registers.  */
--      bytes += NUM_GPR_ARG_REGISTERS * sizeof (int);
--    }
--  else
--    {
--      /* 64-bit ABI.  */
--#if _CALL_ELF == 2
--      /* Space for backchain, CR, LR, TOC and the asm's temp regs.  */
--      bytes = (4 + ASM_NEEDS_REGISTERS64) * sizeof (long);
--
--      /* Space for the general registers.  */
--      bytes += NUM_GPR_ARG_REGISTERS64 * sizeof (long);
--#else
--      /* Space for backchain, CR, LR, cc/ld doubleword, TOC and the asm's temp
--	 regs.  */
--      bytes = (6 + ASM_NEEDS_REGISTERS64) * sizeof (long);
--
--      /* Space for the mandatory parm save area and general registers.  */
--      bytes += 2 * NUM_GPR_ARG_REGISTERS64 * sizeof (long);
--#endif
--    }
--
--  /* Return value handling.  The rules for SYSV are as follows:
--     - 32-bit (or less) integer values are returned in gpr3;
--     - Structures of size <= 4 bytes also returned in gpr3;
--     - 64-bit integer values and structures between 5 and 8 bytes are returned
--     in gpr3 and gpr4;
--     - Single/double FP values are returned in fpr1;
--     - Larger structures are allocated space and a pointer is passed as
--     the first argument.
--     - long doubles (if not equivalent to double) are returned in
--     fpr1,fpr2 for Linux and as for large structs for SysV.
--     For LINUX64:
--     - integer values in gpr3;
--     - Structures/Unions by reference;
--     - Single/double FP values in fpr1, long double in fpr1,fpr2.
--     - soft-float float/doubles are treated as UINT32/UINT64 respectivley.
--     - soft-float long doubles are returned in gpr3-gpr6.  */
--  /* First translate for softfloat/nonlinux */
--  if (cif->abi == FFI_LINUX_SOFT_FLOAT)
--    {
--      if (type == FFI_TYPE_FLOAT)
--	type = FFI_TYPE_UINT32;
--      if (type == FFI_TYPE_DOUBLE)
--	type = FFI_TYPE_UINT64;
--      if (type == FFI_TYPE_LONGDOUBLE)
--	type = FFI_TYPE_UINT128;
--    }
--  else if (cif->abi != FFI_LINUX
--	   && cif->abi != FFI_LINUX64)
--    {
--#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
--      if (type == FFI_TYPE_LONGDOUBLE)
--	type = FFI_TYPE_STRUCT;
--#endif
--    }
--
--  switch (type)
--    {
--#ifndef __NO_FPRS__
--#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
--    case FFI_TYPE_LONGDOUBLE:
--      flags |= FLAG_RETURNS_128BITS;
--      /* Fall through.  */
--#endif
--    case FFI_TYPE_DOUBLE:
--      flags |= FLAG_RETURNS_64BITS;
--      /* Fall through.  */
--    case FFI_TYPE_FLOAT:
--      flags |= FLAG_RETURNS_FP;
--      break;
--#endif
--
--    case FFI_TYPE_UINT128:
--      flags |= FLAG_RETURNS_128BITS;
--      /* Fall through.  */
--    case FFI_TYPE_UINT64:
--    case FFI_TYPE_SINT64:
--      flags |= FLAG_RETURNS_64BITS;
--      break;
--
--    case FFI_TYPE_STRUCT:
--      /*
--       * The final SYSV ABI says that structures smaller or equal 8 bytes
--       * are returned in r3/r4.  The FFI_GCC_SYSV ABI instead returns them
--       * in memory.
--       *
--       * NOTE: The assembly code can safely assume that it just needs to
--       *       store both r3 and r4 into a 8-byte word-aligned buffer, as
--       *       we allocate a temporary buffer in ffi_call() if this flag is
--       *       set.
--       */
--      if (cif->abi == FFI_SYSV && size <= 8)
--	{
--	  flags |= FLAG_RETURNS_SMST;
--	  break;
--	}
--#if _CALL_ELF == 2
--      if (cif->abi == FFI_LINUX64)
--	{
--	  unsigned int elt, elnum;
--	  elt = discover_homogeneous_aggregate (cif->rtype, &elnum);
--	  if (elt)
--	    {
--	      if (elt == FFI_TYPE_DOUBLE)
--		flags |= FLAG_RETURNS_64BITS;
--	      flags |= FLAG_RETURNS_FP | FLAG_RETURNS_SMST;
--	      break;
--	    }
--	  if (size <= 16)
--	    {
--	      flags |= FLAG_RETURNS_SMST;
--	      break;
--	    }
--	}
--#endif
--      intarg_count++;
--      flags |= FLAG_RETVAL_REFERENCE;
--      /* Fall through.  */
--    case FFI_TYPE_VOID:
--      flags |= FLAG_RETURNS_NOTHING;
--      break;
--
--    default:
--      /* Returns 32-bit integer, or similar.  Nothing to do here.  */
--      break;
--    }
--
--  if (cif->abi != FFI_LINUX64)
--    /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the
--       first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest
--       goes on the stack.  Structures and long doubles (if not equivalent
--       to double) are passed as a pointer to a copy of the structure.
--       Stuff on the stack needs to keep proper alignment.  */
--    for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
--      {
--	unsigned short typenum = (*ptr)->type;
--
--	/* We may need to handle some values depending on ABI */
--	if (cif->abi == FFI_LINUX_SOFT_FLOAT) {
--		if (typenum == FFI_TYPE_FLOAT)
--			typenum = FFI_TYPE_UINT32;
--		if (typenum == FFI_TYPE_DOUBLE)
--			typenum = FFI_TYPE_UINT64;
--		if (typenum == FFI_TYPE_LONGDOUBLE)
--			typenum = FFI_TYPE_UINT128;
--	} else if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64) {
--#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
--		if (typenum == FFI_TYPE_LONGDOUBLE)
--			typenum = FFI_TYPE_STRUCT;
--#endif
--	}
--
--	switch (typenum) {
--#ifndef __NO_FPRS__
--	  case FFI_TYPE_FLOAT:
--	    fparg_count++;
--	    /* floating singles are not 8-aligned on stack */
--	    break;
--
--#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
--	  case FFI_TYPE_LONGDOUBLE:
--	    fparg_count++;
--	    /* Fall thru */
--#endif
--	  case FFI_TYPE_DOUBLE:
--	    fparg_count++;
--	    /* If this FP arg is going on the stack, it must be
--	       8-byte-aligned.  */
--	    if (fparg_count > NUM_FPR_ARG_REGISTERS
--		&& intarg_count >= NUM_GPR_ARG_REGISTERS
--		&& intarg_count % 2 != 0)
--	      intarg_count++;
--	    break;
--#endif
--	  case FFI_TYPE_UINT128:
--		/*
--		 * A long double in FFI_LINUX_SOFT_FLOAT can use only a set
--		 * of four consecutive gprs. If we do not have enough, we
--		 * have to adjust the intarg_count value.
--		 */
--		if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3
--				&& intarg_count < NUM_GPR_ARG_REGISTERS)
--			intarg_count = NUM_GPR_ARG_REGISTERS;
--		intarg_count += 4;
--		break;
--
--	  case FFI_TYPE_UINT64:
--	  case FFI_TYPE_SINT64:
--	    /* 'long long' arguments are passed as two words, but
--	       either both words must fit in registers or both go
--	       on the stack.  If they go on the stack, they must
--	       be 8-byte-aligned.
--
--	       Also, only certain register pairs can be used for
--	       passing long long int -- specifically (r3,r4), (r5,r6),
--	       (r7,r8), (r9,r10).
--	    */
--	    if (intarg_count == NUM_GPR_ARG_REGISTERS-1
--		|| intarg_count % 2 != 0)
--	      intarg_count++;
--	    intarg_count += 2;
--	    break;
--
--	  case FFI_TYPE_STRUCT:
--	    /* We must allocate space for a copy of these to enforce
--	       pass-by-value.  Pad the space up to a multiple of 16
--	       bytes (the maximum alignment required for anything under
--	       the SYSV ABI).  */
--	    struct_copy_size += ((*ptr)->size + 15) & ~0xF;
--	    /* Fall through (allocate space for the pointer).  */
--
--	  case FFI_TYPE_POINTER:
--	  case FFI_TYPE_INT:
--	  case FFI_TYPE_UINT32:
--	  case FFI_TYPE_SINT32:
--	  case FFI_TYPE_UINT16:
--	  case FFI_TYPE_SINT16:
--	  case FFI_TYPE_UINT8:
--	  case FFI_TYPE_SINT8:
--	    /* Everything else is passed as a 4-byte word in a GPR, either
--	       the object itself or a pointer to it.  */
--	    intarg_count++;
--	    break;
--	  default:
--		FFI_ASSERT (0);
--	  }
--      }
--  else
--    for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
--      {
--	unsigned int elt, elnum;
--#ifdef __STRUCT_PARM_ALIGN__
--	unsigned int align;
--#endif
--
--	switch ((*ptr)->type)
--	  {
--#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
--	  case FFI_TYPE_LONGDOUBLE:
--	    fparg_count += 2;
--	    intarg_count += 2;
--	    if (fparg_count > NUM_FPR_ARG_REGISTERS64)
--	      flags |= FLAG_ARG_NEEDS_PSAVE;
--	    break;
--#endif
--	  case FFI_TYPE_FLOAT:
--	  case FFI_TYPE_DOUBLE:
--	    fparg_count++;
--	    intarg_count++;
--	    if (fparg_count > NUM_FPR_ARG_REGISTERS64)
--	      flags |= FLAG_ARG_NEEDS_PSAVE;
--	    break;
--
--	  case FFI_TYPE_STRUCT:
--#ifdef __STRUCT_PARM_ALIGN__
--	    align = (*ptr)->alignment;
--	    if (align > __STRUCT_PARM_ALIGN__)
--	      align = __STRUCT_PARM_ALIGN__;
--	    align = align / 8;
--	    if (align > 1)
--	      intarg_count = ALIGN (intarg_count, align);
--#endif
--	    intarg_count += ((*ptr)->size + 7) / 8;
--	    elt = 0;
--#if _CALL_ELF == 2
--	    elt = discover_homogeneous_aggregate (*ptr, &elnum);
--#endif
--	    if (elt)
--	      {
--		fparg_count += elnum;
--		if (fparg_count > NUM_FPR_ARG_REGISTERS64)
--		  flags |= FLAG_ARG_NEEDS_PSAVE;
--	      }
--	    else
--	      {
--		if (intarg_count > NUM_GPR_ARG_REGISTERS64)
--		  flags |= FLAG_ARG_NEEDS_PSAVE;
--	      }
--	    break;
--
--	  case FFI_TYPE_POINTER:
--	  case FFI_TYPE_UINT64:
--	  case FFI_TYPE_SINT64:
--	  case FFI_TYPE_INT:
--	  case FFI_TYPE_UINT32:
--	  case FFI_TYPE_SINT32:
--	  case FFI_TYPE_UINT16:
--	  case FFI_TYPE_SINT16:
--	  case FFI_TYPE_UINT8:
--	  case FFI_TYPE_SINT8:
--	    /* Everything else is passed as a 8-byte word in a GPR, either
--	       the object itself or a pointer to it.  */
--	    intarg_count++;
--	    if (intarg_count > NUM_GPR_ARG_REGISTERS64)
--	      flags |= FLAG_ARG_NEEDS_PSAVE;
--	    break;
--	  default:
--	    FFI_ASSERT (0);
--	  }
--      }
--
--#ifndef __NO_FPRS__
--  if (fparg_count != 0)
--    flags |= FLAG_FP_ARGUMENTS;
--#endif
--  if (intarg_count > 4)
--    flags |= FLAG_4_GPR_ARGUMENTS;
--  if (struct_copy_size != 0)
--    flags |= FLAG_ARG_NEEDS_COPY;
--
--  if (cif->abi != FFI_LINUX64)
--    {
--#ifndef __NO_FPRS__
--      /* Space for the FPR registers, if needed.  */
--      if (fparg_count != 0)
--	bytes += NUM_FPR_ARG_REGISTERS * sizeof (double);
--#endif
--
--      /* Stack space.  */
--      if (intarg_count > NUM_GPR_ARG_REGISTERS)
--	bytes += (intarg_count - NUM_GPR_ARG_REGISTERS) * sizeof (int);
--#ifndef __NO_FPRS__
--      if (fparg_count > NUM_FPR_ARG_REGISTERS)
--	bytes += (fparg_count - NUM_FPR_ARG_REGISTERS) * sizeof (double);
--#endif
--    }
--  else
--    {
--#ifndef __NO_FPRS__
--      /* Space for the FPR registers, if needed.  */
--      if (fparg_count != 0)
--	bytes += NUM_FPR_ARG_REGISTERS64 * sizeof (double);
--#endif
--
--      /* Stack space.  */
--#if _CALL_ELF == 2
--      if ((flags & FLAG_ARG_NEEDS_PSAVE) != 0)
--	bytes += intarg_count * sizeof (long);
--#else
--      if (intarg_count > NUM_GPR_ARG_REGISTERS64)
--	bytes += (intarg_count - NUM_GPR_ARG_REGISTERS64) * sizeof (long);
--#endif
--    }
--
--  /* The stack space allocated needs to be a multiple of 16 bytes.  */
--  bytes = (bytes + 15) & ~0xF;
--
--  /* Add in the space for the copied structures.  */
--  bytes += struct_copy_size;
--
--  cif->flags = flags;
--  cif->bytes = bytes;
--
--  return FFI_OK;
--}
--
--ffi_status
--ffi_prep_cif_machdep (ffi_cif *cif)
--{
--  cif->nfixedargs = cif->nargs;
--  return ffi_prep_cif_machdep_core (cif);
--}
--
--ffi_status
-+ffi_status FFI_HIDDEN
- ffi_prep_cif_machdep_var (ffi_cif *cif,
--			  unsigned int nfixedargs,
-+			  unsigned int nfixedargs MAYBE_UNUSED,
- 			  unsigned int ntotalargs MAYBE_UNUSED)
- {
--  cif->nfixedargs = nfixedargs;
--#if _CALL_ELF == 2
--  if (cif->abi == FFI_LINUX64)
--    cif->flags |= FLAG_ARG_NEEDS_PSAVE;
-+#ifdef POWERPC64
-+  return ffi_prep_cif_linux64_var (cif, nfixedargs, ntotalargs);
-+#else
-+  return ffi_prep_cif_sysv (cif);
- #endif
--  return ffi_prep_cif_machdep_core (cif);
- }
- 
--extern void ffi_call_SYSV(extended_cif *, unsigned, unsigned, unsigned *,
--			  void (*fn)(void));
--extern void FFI_HIDDEN ffi_call_LINUX64(extended_cif *, unsigned long,
--					unsigned long, unsigned long *,
--					void (*fn)(void));
--
- void
- ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
- {
--  /*
--   * The final SYSV ABI says that structures smaller or equal 8 bytes
--   * are returned in r3/r4.  The FFI_GCC_SYSV ABI instead returns them
--   * in memory.
--   *
--   * We bounce-buffer SYSV small struct return values so that sysv.S
--   * can write r3 and r4 to memory without worrying about struct size.
--   *
--   * For ELFv2 ABI, use a bounce buffer for homogeneous structs too,
--   * for similar reasons.
--   */
-+  /* The final SYSV ABI says that structures smaller or equal 8 bytes
-+     are returned in r3/r4.  A draft ABI used by linux instead returns
-+     them in memory.
-+
-+     We bounce-buffer SYSV small struct return values so that sysv.S
-+     can write r3 and r4 to memory without worrying about struct size.
-+   
-+     For ELFv2 ABI, use a bounce buffer for homogeneous structs too,
-+     for similar reasons.  */
-   unsigned long smst_buffer[8];
-   extended_cif ecif;
- 
-   ecif.cif = cif;
-   ecif.avalue = avalue;
- 
-   ecif.rvalue = rvalue;
-   if ((cif->flags & FLAG_RETURNS_SMST) != 0)
-     ecif.rvalue = smst_buffer;
-   /* Ensure that we have a valid struct return value.
-      FIXME: Isn't this just papering over a user problem?  */
-   else if (!rvalue && cif->rtype->type == FFI_TYPE_STRUCT)
-     ecif.rvalue = alloca (cif->rtype->size);
- 
--  switch (cif->abi)
--    {
--#ifndef POWERPC64
--# ifndef __NO_FPRS__
--    case FFI_SYSV:
--    case FFI_GCC_SYSV:
--    case FFI_LINUX:
--# endif
--    case FFI_LINUX_SOFT_FLOAT:
--      ffi_call_SYSV (&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn);
--      break;
-+#ifdef POWERPC64
-+  ffi_call_LINUX64 (&ecif, -(long) cif->bytes, cif->flags, ecif.rvalue, fn);
- #else
--    case FFI_LINUX64:
--      ffi_call_LINUX64 (&ecif, -(long) cif->bytes, cif->flags, ecif.rvalue, fn);
--      break;
-+  ffi_call_SYSV (&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn);
- #endif
--    default:
--      FFI_ASSERT (0);
--      break;
--    }
- 
-   /* Check for a bounce-buffered return value */
-   if (rvalue && ecif.rvalue == smst_buffer)
-     {
-       unsigned int rsize = cif->rtype->size;
- #ifndef __LITTLE_ENDIAN__
-       /* The SYSV ABI returns a structure of up to 4 bytes in size
- 	 left-padded in r3.  */
--      if (cif->abi == FFI_SYSV && rsize <= 4)
-+# ifndef POWERPC64
-+      if (rsize <= 4)
- 	memcpy (rvalue, (char *) smst_buffer + 4 - rsize, rsize);
--      /* The SYSV ABI returns a structure of up to 8 bytes in size
--	 left-padded in r3/r4, and the ELFv2 ABI similarly returns a
--	 structure of up to 8 bytes in size left-padded in r3.  */
--      else if (rsize <= 8)
--	memcpy (rvalue, (char *) smst_buffer + 8 - rsize, rsize);
-       else
-+# endif
-+	/* The SYSV ABI returns a structure of up to 8 bytes in size
-+	   left-padded in r3/r4, and the ELFv2 ABI similarly returns a
-+	   structure of up to 8 bytes in size left-padded in r3.  */
-+	if (rsize <= 8)
-+	  memcpy (rvalue, (char *) smst_buffer + 8 - rsize, rsize);
-+	else
- #endif
--	memcpy (rvalue, smst_buffer, rsize);
-+	  memcpy (rvalue, smst_buffer, rsize);
-     }
- }
- 
- 
--#if !defined POWERPC64 || _CALL_ELF == 2
--#define MIN_CACHE_LINE_SIZE 8
--
--static void
--flush_icache (char *wraddr, char *xaddr, int size)
--{
--  int i;
--  for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE)
--    __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;"
--		      : : "r" (xaddr + i), "r" (wraddr + i) : "memory");
--  __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;"
--		    : : "r"(xaddr + size - 1), "r"(wraddr + size - 1)
--		    : "memory");
--}
--#endif
--
- ffi_status
- ffi_prep_closure_loc (ffi_closure *closure,
- 		      ffi_cif *cif,
- 		      void (*fun) (ffi_cif *, void *, void **, void *),
- 		      void *user_data,
- 		      void *codeloc)
- {
- #ifdef POWERPC64
--# if _CALL_ELF == 2
--  unsigned int *tramp = (unsigned int *) &closure->tramp[0];
--
--  if (cif->abi != FFI_LINUX64)
--    return FFI_BAD_ABI;
--
--  tramp[0] = 0xe96c0018;	/* 0:	ld	11,2f-0b(12)	*/
--  tramp[1] = 0xe98c0010;	/*	ld	12,1f-0b(12)	*/
--  tramp[2] = 0x7d8903a6;	/*	mtctr	12		*/
--  tramp[3] = 0x4e800420;	/*	bctr			*/
--				/* 1:	.quad	function_addr	*/
--				/* 2:	.quad	context		*/
--  *(void **) &tramp[4] = (void *) ffi_closure_LINUX64;
--  *(void **) &tramp[6] = codeloc;
--  flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE);
--# else
--  void **tramp = (void **) &closure->tramp[0];
--
--  if (cif->abi != FFI_LINUX64)
--    return FFI_BAD_ABI;
--  /* Copy function address and TOC from ffi_closure_LINUX64.  */
--  memcpy (tramp, (char *) ffi_closure_LINUX64, 16);
--  tramp[2] = codeloc;
--# endif
-+  return ffi_prep_closure_loc_linux64 (closure, cif, fun, user_data, codeloc);
- #else
--  unsigned int *tramp;
--
--  if (! (cif->abi == FFI_GCC_SYSV 
--	 || cif->abi == FFI_SYSV
--	 || cif->abi == FFI_LINUX
--	 || cif->abi == FFI_LINUX_SOFT_FLOAT))
--    return FFI_BAD_ABI;
--
--  tramp = (unsigned int *) &closure->tramp[0];
--  tramp[0] = 0x7c0802a6;  /*   mflr    r0 */
--  tramp[1] = 0x4800000d;  /*   bl      10 <trampoline_initial+0x10> */
--  tramp[4] = 0x7d6802a6;  /*   mflr    r11 */
--  tramp[5] = 0x7c0803a6;  /*   mtlr    r0 */
--  tramp[6] = 0x800b0000;  /*   lwz     r0,0(r11) */
--  tramp[7] = 0x816b0004;  /*   lwz     r11,4(r11) */
--  tramp[8] = 0x7c0903a6;  /*   mtctr   r0 */
--  tramp[9] = 0x4e800420;  /*   bctr */
--  *(void **) &tramp[2] = (void *) ffi_closure_SYSV; /* function */
--  *(void **) &tramp[3] = codeloc;                   /* context */
--
--  /* Flush the icache.  */
--  flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE);
-+  return ffi_prep_closure_loc_sysv (closure, cif, fun, user_data, codeloc);
- #endif
--
--  closure->cif = cif;
--  closure->fun = fun;
--  closure->user_data = user_data;
--
--  return FFI_OK;
- }
--
--typedef union
--{
--  float f;
--  double d;
--} ffi_dblfl;
--
--int ffi_closure_helper_SYSV (ffi_closure *, void *, unsigned long *,
--			     ffi_dblfl *, unsigned long *);
--
--/* Basically the trampoline invokes ffi_closure_SYSV, and on
-- * entry, r11 holds the address of the closure.
-- * After storing the registers that could possibly contain
-- * parameters to be passed into the stack frame and setting
-- * up space for a return value, ffi_closure_SYSV invokes the
-- * following helper function to do most of the work
-- */
--
--int
--ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue,
--			 unsigned long *pgr, ffi_dblfl *pfr,
--			 unsigned long *pst)
--{
--  /* rvalue is the pointer to space for return value in closure assembly */
--  /* pgr is the pointer to where r3-r10 are stored in ffi_closure_SYSV */
--  /* pfr is the pointer to where f1-f8 are stored in ffi_closure_SYSV  */
--  /* pst is the pointer to outgoing parameter stack in original caller */
--
--  void **          avalue;
--  ffi_type **      arg_types;
--  long             i, avn;
--#ifndef __NO_FPRS__
--  long             nf = 0;   /* number of floating registers already used */
--#endif
--  long             ng = 0;   /* number of general registers already used */
--
--  ffi_cif *cif = closure->cif;
--  unsigned       size     = cif->rtype->size;
--  unsigned short rtypenum = cif->rtype->type;
--
--  avalue = alloca (cif->nargs * sizeof (void *));
--
--  /* First translate for softfloat/nonlinux */
--  if (cif->abi == FFI_LINUX_SOFT_FLOAT) {
--	if (rtypenum == FFI_TYPE_FLOAT)
--		rtypenum = FFI_TYPE_UINT32;
--	if (rtypenum == FFI_TYPE_DOUBLE)
--		rtypenum = FFI_TYPE_UINT64;
--	if (rtypenum == FFI_TYPE_LONGDOUBLE)
--		rtypenum = FFI_TYPE_UINT128;
--  } else if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64) {
--#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
--	if (rtypenum == FFI_TYPE_LONGDOUBLE)
--		rtypenum = FFI_TYPE_STRUCT;
--#endif
--  }
--
--
--  /* Copy the caller's structure return value address so that the closure
--     returns the data directly to the caller.
--     For FFI_SYSV the result is passed in r3/r4 if the struct size is less
--     or equal 8 bytes.  */
--  if (rtypenum == FFI_TYPE_STRUCT && ((cif->abi != FFI_SYSV) || (size > 8))) {
--      rvalue = (void *) *pgr;
--      ng++;
--      pgr++;
--    }
--
--  i = 0;
--  avn = cif->nargs;
--  arg_types = cif->arg_types;
--
--  /* Grab the addresses of the arguments from the stack frame.  */
--  while (i < avn) {
--      unsigned short typenum = arg_types[i]->type;
--
--      /* We may need to handle some values depending on ABI */
--      if (cif->abi == FFI_LINUX_SOFT_FLOAT) {
--		if (typenum == FFI_TYPE_FLOAT)
--			typenum = FFI_TYPE_UINT32;
--		if (typenum == FFI_TYPE_DOUBLE)
--			typenum = FFI_TYPE_UINT64;
--		if (typenum == FFI_TYPE_LONGDOUBLE)
--			typenum = FFI_TYPE_UINT128;
--      } else if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64) {
--#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
--		if (typenum == FFI_TYPE_LONGDOUBLE)
--			typenum = FFI_TYPE_STRUCT;
--#endif
--      }
--
--      switch (typenum) {
--#ifndef __NO_FPRS__
--	case FFI_TYPE_FLOAT:
--	  /* unfortunately float values are stored as doubles
--	   * in the ffi_closure_SYSV code (since we don't check
--	   * the type in that routine).
--	   */
--
--	  /* there are 8 64bit floating point registers */
--
--	  if (nf < 8)
--	    {
--	      double temp = pfr->d;
--	      pfr->f = (float) temp;
--	      avalue[i] = pfr;
--	      nf++;
--	      pfr++;
--	    }
--	  else
--	    {
--	      /* FIXME? here we are really changing the values
--	       * stored in the original calling routines outgoing
--	       * parameter stack.  This is probably a really
--	       * naughty thing to do but...
--	       */
--	      avalue[i] = pst;
--	      pst += 1;
--	    }
--	  break;
--
--	case FFI_TYPE_DOUBLE:
--	  /* On the outgoing stack all values are aligned to 8 */
--	  /* there are 8 64bit floating point registers */
--
--	  if (nf < 8)
--	    {
--	      avalue[i] = pfr;
--	      nf++;
--	      pfr++;
--	    }
--	  else
--	    {
--	      if (((long) pst) & 4)
--		pst++;
--	      avalue[i] = pst;
--	      pst += 2;
--	    }
--	  break;
--
--#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
--	case FFI_TYPE_LONGDOUBLE:
--	  if (nf < 7)
--	    {
--	      avalue[i] = pfr;
--	      pfr += 2;
--	      nf += 2;
--	    }
--	  else
--	    {
--	      if (((long) pst) & 4)
--		pst++;
--	      avalue[i] = pst;
--	      pst += 4;
--	      nf = 8;
--	    }
--	  break;
--#endif
--#endif /* have FPRS */
--
--	case FFI_TYPE_UINT128:
--		/*
--		 * Test if for the whole long double, 4 gprs are available.
--		 * otherwise the stuff ends up on the stack.
--		 */
--		if (ng < 5) {
--			avalue[i] = pgr;
--			pgr += 4;
--			ng += 4;
--		} else {
--			avalue[i] = pst;
--			pst += 4;
--			ng = 8+4;
--		}
--		break;
--
--	case FFI_TYPE_SINT8:
--	case FFI_TYPE_UINT8:
--#ifndef __LITTLE_ENDIAN__
--	  /* there are 8 gpr registers used to pass values */
--	  if (ng < 8)
--	    {
--	      avalue[i] = (char *) pgr + 3;
--	      ng++;
--	      pgr++;
--	    }
--	  else
--	    {
--	      avalue[i] = (char *) pst + 3;
--	      pst++;
--	    }
--	  break;
--#endif
--
--	case FFI_TYPE_SINT16:
--	case FFI_TYPE_UINT16:
--#ifndef __LITTLE_ENDIAN__
--	  /* there are 8 gpr registers used to pass values */
--	  if (ng < 8)
--	    {
--	      avalue[i] = (char *) pgr + 2;
--	      ng++;
--	      pgr++;
--	    }
--	  else
--	    {
--	      avalue[i] = (char *) pst + 2;
--	      pst++;
--	    }
--	  break;
--#endif
--
--	case FFI_TYPE_SINT32:
--	case FFI_TYPE_UINT32:
--	case FFI_TYPE_POINTER:
--	  /* there are 8 gpr registers used to pass values */
--	  if (ng < 8)
--	    {
--	      avalue[i] = pgr;
--	      ng++;
--	      pgr++;
--	    }
--	  else
--	    {
--	      avalue[i] = pst;
--	      pst++;
--	    }
--	  break;
--
--	case FFI_TYPE_STRUCT:
--	  /* Structs are passed by reference. The address will appear in a
--	     gpr if it is one of the first 8 arguments.  */
--	  if (ng < 8)
--	    {
--	      avalue[i] = (void *) *pgr;
--	      ng++;
--	      pgr++;
--	    }
--	  else
--	    {
--	      avalue[i] = (void *) *pst;
--	      pst++;
--	    }
--	  break;
--
--	case FFI_TYPE_SINT64:
--	case FFI_TYPE_UINT64:
--	  /* passing long long ints are complex, they must
--	   * be passed in suitable register pairs such as
--	   * (r3,r4) or (r5,r6) or (r6,r7), or (r7,r8) or (r9,r10)
--	   * and if the entire pair aren't available then the outgoing
--	   * parameter stack is used for both but an alignment of 8
--	   * must will be kept.  So we must either look in pgr
--	   * or pst to find the correct address for this type
--	   * of parameter.
--	   */
--	  if (ng < 7)
--	    {
--	      if (ng & 0x01)
--		{
--		  /* skip r4, r6, r8 as starting points */
--		  ng++;
--		  pgr++;
--		}
--	      avalue[i] = pgr;
--	      ng += 2;
--	      pgr += 2;
--	    }
--	  else
--	    {
--	      if (((long) pst) & 4)
--		pst++;
--	      avalue[i] = pst;
--	      pst += 2;
--	      ng = 8;
--	    }
--	  break;
--
--	default:
--		FFI_ASSERT (0);
--	}
--
--      i++;
--    }
--
--
--  (closure->fun) (cif, rvalue, avalue, closure->user_data);
--
--  /* Tell ffi_closure_SYSV how to perform return type promotions.
--     Because the FFI_SYSV ABI returns the structures <= 8 bytes in r3/r4
--     we have to tell ffi_closure_SYSV how to treat them. We combine the base
--     type FFI_SYSV_TYPE_SMALL_STRUCT - 1  with the size of the struct.
--     So a one byte struct gets the return type 16. Return type 1 to 15 are
--     already used and we never have a struct with size zero. That is the reason
--     for the subtraction of 1. See the comment in ffitarget.h about ordering.
--  */
--  if (cif->abi == FFI_SYSV && rtypenum == FFI_TYPE_STRUCT && size <= 8)
--    return (FFI_SYSV_TYPE_SMALL_STRUCT - 1) + size;
--  return rtypenum;
--}
--
--int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_closure *, void *,
--					   unsigned long *, ffi_dblfl *);
--
--int FFI_HIDDEN
--ffi_closure_helper_LINUX64 (ffi_closure *closure, void *rvalue,
--			    unsigned long *pst, ffi_dblfl *pfr)
--{
--  /* rvalue is the pointer to space for return value in closure assembly */
--  /* pst is the pointer to parameter save area
--     (r3-r10 are stored into its first 8 slots by ffi_closure_LINUX64) */
--  /* pfr is the pointer to where f1-f13 are stored in ffi_closure_LINUX64 */
--
--  void **avalue;
--  ffi_type **arg_types;
--  unsigned long i, avn, nfixedargs;
--  ffi_cif *cif;
--  ffi_dblfl *end_pfr = pfr + NUM_FPR_ARG_REGISTERS64;
--#ifdef __STRUCT_PARM_ALIGN__
--  unsigned long align;
--#endif
--
--  cif = closure->cif;
--  avalue = alloca (cif->nargs * sizeof (void *));
--
--  /* Copy the caller's structure return value address so that the
--     closure returns the data directly to the caller.  */
--  if (cif->rtype->type == FFI_TYPE_STRUCT
--      && (cif->flags & FLAG_RETURNS_SMST) == 0)
--    {
--      rvalue = (void *) *pst;
--      pst++;
--    }
--
--  i = 0;
--  avn = cif->nargs;
--  nfixedargs = cif->nfixedargs;
--  arg_types = cif->arg_types;
--
--  /* Grab the addresses of the arguments from the stack frame.  */
--  while (i < avn)
--    {
--      unsigned int elt, elnum;
--
--      switch (arg_types[i]->type)
--	{
--	case FFI_TYPE_SINT8:
--	case FFI_TYPE_UINT8:
--#ifndef __LITTLE_ENDIAN__
--	  avalue[i] = (char *) pst + 7;
--	  pst++;
--	  break;
--#endif
--
--	case FFI_TYPE_SINT16:
--	case FFI_TYPE_UINT16:
--#ifndef __LITTLE_ENDIAN__
--	  avalue[i] = (char *) pst + 6;
--	  pst++;
--	  break;
--#endif
--
--	case FFI_TYPE_SINT32:
--	case FFI_TYPE_UINT32:
--#ifndef __LITTLE_ENDIAN__
--	  avalue[i] = (char *) pst + 4;
--	  pst++;
--	  break;
--#endif
--
--	case FFI_TYPE_SINT64:
--	case FFI_TYPE_UINT64:
--	case FFI_TYPE_POINTER:
--	  avalue[i] = pst;
--	  pst++;
--	  break;
--
--	case FFI_TYPE_STRUCT:
--#ifdef __STRUCT_PARM_ALIGN__
--	  align = arg_types[i]->alignment;
--	  if (align > __STRUCT_PARM_ALIGN__)
--	    align = __STRUCT_PARM_ALIGN__;
--	  if (align > 1)
--	    pst = (unsigned long *) ALIGN ((size_t) pst, align);
--#endif
--	  elt = 0;
--#if _CALL_ELF == 2
--	  elt = discover_homogeneous_aggregate (arg_types[i], &elnum);
--#endif
--	  if (elt)
--	    {
--	      union {
--		void *v;
--		unsigned long *ul;
--		float *f;
--		double *d;
--		size_t p;
--	      } to, from;
--
--	      /* Repackage the aggregate from its parts.  The
--		 aggregate size is not greater than the space taken by
--		 the registers so store back to the register/parameter
--		 save arrays.  */
--	      if (pfr + elnum <= end_pfr)
--		to.v = pfr;
--	      else
--		to.v = pst;
--
--	      avalue[i] = to.v;
--	      from.ul = pst;
--	      if (elt == FFI_TYPE_FLOAT)
--		{
--		  do
--		    {
--		      if (pfr < end_pfr && i < nfixedargs)
--			{
--			  *to.f = (float) pfr->d;
--			  pfr++;
--			}
--		      else
--			*to.f = *from.f;
--		      to.f++;
--		      from.f++;
--		    }
--		  while (--elnum != 0);
--		}
--	      else
--		{
--		  do
--		    {
--		      if (pfr < end_pfr && i < nfixedargs)
--			{
--			  *to.d = pfr->d;
--			  pfr++;
--			}
--		      else
--			*to.d = *from.d;
--		      to.d++;
--		      from.d++;
--		    }
--		  while (--elnum != 0);
--		}
--	    }
--	  else
--	    {
--#ifndef __LITTLE_ENDIAN__
--	      /* Structures with size less than eight bytes are passed
--		 left-padded.  */
--	      if (arg_types[i]->size < 8)
--		avalue[i] = (char *) pst + 8 - arg_types[i]->size;
--	      else
--#endif
--		avalue[i] = pst;
--	    }
--	  pst += (arg_types[i]->size + 7) / 8;
--	  break;
--
--	case FFI_TYPE_FLOAT:
--	  /* unfortunately float values are stored as doubles
--	   * in the ffi_closure_LINUX64 code (since we don't check
--	   * the type in that routine).
--	   */
--
--	  /* there are 13 64bit floating point registers */
--
--	  if (pfr < end_pfr && i < nfixedargs)
--	    {
--	      double temp = pfr->d;
--	      pfr->f = (float) temp;
--	      avalue[i] = pfr;
--	      pfr++;
--	    }
--	  else
--	    avalue[i] = pst;
--	  pst++;
--	  break;
--
--	case FFI_TYPE_DOUBLE:
--	  /* On the outgoing stack all values are aligned to 8 */
--	  /* there are 13 64bit floating point registers */
--
--	  if (pfr < end_pfr && i < nfixedargs)
--	    {
--	      avalue[i] = pfr;
--	      pfr++;
--	    }
--	  else
--	    avalue[i] = pst;
--	  pst++;
--	  break;
--
--#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
--	case FFI_TYPE_LONGDOUBLE:
--	  if (pfr + 1 < end_pfr && i + 1 < nfixedargs)
--	    {
--	      avalue[i] = pfr;
--	      pfr += 2;
--	    }
--	  else
--	    {
--	      if (pfr < end_pfr && i < nfixedargs)
--		{
--		  /* Passed partly in f13 and partly on the stack.
--		     Move it all to the stack.  */
--		  *pst = *(unsigned long *) pfr;
--		  pfr++;
--		}
--	      avalue[i] = pst;
--	    }
--	  pst += 2;
--	  break;
--#endif
--
--	default:
--	  FFI_ASSERT (0);
--	}
--
--      i++;
--    }
--
--
--  (closure->fun) (cif, rvalue, avalue, closure->user_data);
--
--  /* Tell ffi_closure_LINUX64 how to perform return type promotions.  */
--  if ((cif->flags & FLAG_RETURNS_SMST) != 0)
--    {
--      if ((cif->flags & FLAG_RETURNS_FP) == 0)
--	return FFI_V2_TYPE_SMALL_STRUCT + cif->rtype->size - 1;
--      else if ((cif->flags & FLAG_RETURNS_64BITS) != 0)
--	return FFI_V2_TYPE_DOUBLE_HOMOG;
--      else
--	return FFI_V2_TYPE_FLOAT_HOMOG;
--    }
--  return cif->rtype->type;
--}
-diff --git a/js/src/ctypes/libffi/src/powerpc/ffi_darwin.c b/js/src/ctypes/libffi/src/powerpc/ffi_darwin.c
---- a/js/src/ctypes/libffi/src/powerpc/ffi_darwin.c
-+++ b/js/src/ctypes/libffi/src/powerpc/ffi_darwin.c
-@@ -1,14 +1,14 @@
- /* -----------------------------------------------------------------------
-    ffi_darwin.c
- 
-    Copyright (C) 1998 Geoffrey Keating
-    Copyright (C) 2001 John Hornkvist
--   Copyright (C) 2002, 2006, 2007, 2009 Free Software Foundation, Inc.
-+   Copyright (C) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
- 
-    FFI support for Darwin and AIX.
-    
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -30,87 +30,112 @@
- #include <ffi.h>
- #include <ffi_common.h>
- 
- #include <stdlib.h>
- 
- extern void ffi_closure_ASM (void);
- 
- enum {
--  /* The assembly depends on these exact flags.  */
--  FLAG_RETURNS_NOTHING  = 1 << (31-30), /* These go in cr7  */
--  FLAG_RETURNS_FP       = 1 << (31-29),
--  FLAG_RETURNS_64BITS   = 1 << (31-28),
--  FLAG_RETURNS_128BITS  = 1 << (31-31),
-+  /* The assembly depends on these exact flags.  
-+     For Darwin64 (when FLAG_RETURNS_STRUCT is set):
-+       FLAG_RETURNS_FP indicates that the structure embeds FP data.
-+       FLAG_RETURNS_128BITS signals a special struct size that is not
-+       expanded for float content.  */
-+  FLAG_RETURNS_128BITS	= 1 << (31-31), /* These go in cr7  */
-+  FLAG_RETURNS_NOTHING	= 1 << (31-30),
-+  FLAG_RETURNS_FP	= 1 << (31-29),
-+  FLAG_RETURNS_64BITS	= 1 << (31-28),
-+
-+  FLAG_RETURNS_STRUCT	= 1 << (31-27), /* This goes in cr6  */
- 
-   FLAG_ARG_NEEDS_COPY   = 1 << (31- 7),
-   FLAG_FP_ARGUMENTS     = 1 << (31- 6), /* cr1.eq; specified by ABI  */
-   FLAG_4_GPR_ARGUMENTS  = 1 << (31- 5),
-   FLAG_RETVAL_REFERENCE = 1 << (31- 4)
- };
- 
- /* About the DARWIN ABI.  */
- enum {
-   NUM_GPR_ARG_REGISTERS = 8,
--  NUM_FPR_ARG_REGISTERS = 13
-+  NUM_FPR_ARG_REGISTERS = 13,
-+  LINKAGE_AREA_GPRS = 6
- };
--enum { ASM_NEEDS_REGISTERS = 4 };
-+
-+enum { ASM_NEEDS_REGISTERS = 4 }; /* r28-r31 */
- 
- /* ffi_prep_args is called by the assembly routine once stack space
-    has been allocated for the function's arguments.
-+   
-+   m32/m64
- 
-    The stack layout we want looks like this:
- 
-    |   Return address from ffi_call_DARWIN      |	higher addresses
-    |--------------------------------------------|
--   |   Previous backchain pointer	4	|	stack pointer here
-+   |   Previous backchain pointer	4/8	|	stack pointer here
-    |--------------------------------------------|<+ <<<	on entry to
--   |   Saved r28-r31			4*4	| |	ffi_call_DARWIN
-+   |   ASM_NEEDS_REGISTERS=r28-r31   4*(4/8)	| |	ffi_call_DARWIN
-    |--------------------------------------------| |
--   |   Parameters             (at least 8*4=32) | |
-+   |   When we have any FP activity... the	| |
-+   |   FPRs occupy NUM_FPR_ARG_REGISTERS slots	| |
-+   |   here fp13 .. fp1 from high to low addr.	| |
-+   ~						~ ~
-+   |   Parameters      (at least 8*4/8=32/64)	| | NUM_GPR_ARG_REGISTERS
-    |--------------------------------------------| |
--   |   Space for GPR2                   4       | |
-+   |   TOC=R2 (AIX) Reserved (Darwin)   4/8	| |
-    |--------------------------------------------| |	stack	|
--   |   Reserved                       2*4       | |	grows	|
-+   |   Reserved                       2*4/8	| |	grows	|
-    |--------------------------------------------| |	down	V
--   |   Space for callee's LR		4	| |
-+   |   Space for callee's LR		4/8	| |
-    |--------------------------------------------| |	lower addresses
--   |   Saved CR                         4       | |
-+   |   Saved CR [low word for m64]      4/8	| |
-    |--------------------------------------------| |     stack pointer here
--   |   Current backchain pointer	4	|-/	during
-+   |   Current backchain pointer	4/8	|-/	during
-    |--------------------------------------------|   <<<	ffi_call_DARWIN
- 
-    */
- 
-+#if defined(POWERPC_DARWIN64)
-+static void
-+darwin64_pass_struct_by_value 
-+  (ffi_type *, char *, unsigned, unsigned *, double **, unsigned long **);
-+#endif
-+
-+/* This depends on GPR_SIZE = sizeof (unsigned long) */
-+
- void
- ffi_prep_args (extended_cif *ecif, unsigned long *const stack)
- {
-   const unsigned bytes = ecif->cif->bytes;
-   const unsigned flags = ecif->cif->flags;
-   const unsigned nargs = ecif->cif->nargs;
-+#if !defined(POWERPC_DARWIN64) 
-   const ffi_abi abi = ecif->cif->abi;
-+#endif
- 
-   /* 'stacktop' points at the previous backchain pointer.  */
-   unsigned long *const stacktop = stack + (bytes / sizeof(unsigned long));
- 
-   /* 'fpr_base' points at the space for fpr1, and grows upwards as
-      we use FPR registers.  */
-   double *fpr_base = (double *) (stacktop - ASM_NEEDS_REGISTERS) - NUM_FPR_ARG_REGISTERS;
--  int fparg_count = 0;
--
-+  int gp_count = 0, fparg_count = 0;
- 
-   /* 'next_arg' grows up as we put parameters in it.  */
--  unsigned long *next_arg = stack + 6; /* 6 reserved positions.  */
-+  unsigned long *next_arg = stack + LINKAGE_AREA_GPRS; /* 6 reserved positions.  */
- 
-   int i;
-   double double_tmp;
-   void **p_argv = ecif->avalue;
-   unsigned long gprvalue;
-   ffi_type** ptr = ecif->cif->arg_types;
-+#if !defined(POWERPC_DARWIN64) 
-   char *dest_cpy;
-+#endif
-   unsigned size_al = 0;
- 
-   /* Check that everything starts aligned properly.  */
-   FFI_ASSERT(((unsigned) (char *) stack & 0xF) == 0);
-   FFI_ASSERT(((unsigned) (char *) stacktop & 0xF) == 0);
-   FFI_ASSERT((bytes & 0xF) == 0);
- 
-   /* Deal with return values that are actually pass-by-reference.
-@@ -125,78 +150,95 @@ ffi_prep_args (extended_cif *ecif, unsig
-     {
-       switch ((*ptr)->type)
- 	{
- 	/* If a floating-point parameter appears before all of the general-
- 	   purpose registers are filled, the corresponding GPRs that match
- 	   the size of the floating-point parameter are skipped.  */
- 	case FFI_TYPE_FLOAT:
- 	  double_tmp = *(float *) *p_argv;
--	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
--	    *(double *)next_arg = double_tmp;
--	  else
-+	  if (fparg_count < NUM_FPR_ARG_REGISTERS)
- 	    *fpr_base++ = double_tmp;
-+#if defined(POWERPC_DARWIN)
-+	  *(float *)next_arg = *(float *) *p_argv;
-+#else
-+	  *(double *)next_arg = double_tmp;
-+#endif
- 	  next_arg++;
-+	  gp_count++;
- 	  fparg_count++;
- 	  FFI_ASSERT(flags & FLAG_FP_ARGUMENTS);
- 	  break;
- 
- 	case FFI_TYPE_DOUBLE:
- 	  double_tmp = *(double *) *p_argv;
--	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
--	    *(double *)next_arg = double_tmp;
--	  else
-+	  if (fparg_count < NUM_FPR_ARG_REGISTERS)
- 	    *fpr_base++ = double_tmp;
-+	  *(double *)next_arg = double_tmp;
- #ifdef POWERPC64
- 	  next_arg++;
-+	  gp_count++;
- #else
- 	  next_arg += 2;
-+	  gp_count += 2;
- #endif
- 	  fparg_count++;
- 	  FFI_ASSERT(flags & FLAG_FP_ARGUMENTS);
- 	  break;
- 
- #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
- 
- 	case FFI_TYPE_LONGDOUBLE:
--#ifdef POWERPC64
-+#  if defined(POWERPC64) && !defined(POWERPC_DARWIN64)
-+	  /* ??? This will exceed the regs count when the value starts at fp13
-+	     and it will not put the extra bit on the stack.  */
- 	  if (fparg_count < NUM_FPR_ARG_REGISTERS)
- 	    *(long double *) fpr_base++ = *(long double *) *p_argv;
- 	  else
- 	    *(long double *) next_arg = *(long double *) *p_argv;
- 	  next_arg += 2;
- 	  fparg_count += 2;
--#else
-+#  else
- 	  double_tmp = ((double *) *p_argv)[0];
- 	  if (fparg_count < NUM_FPR_ARG_REGISTERS)
- 	    *fpr_base++ = double_tmp;
--	  else
--	    *(double *) next_arg = double_tmp;
-+	  *(double *) next_arg = double_tmp;
-+#    if defined(POWERPC_DARWIN64)
-+	  next_arg++;
-+	  gp_count++;
-+#    else
- 	  next_arg += 2;
-+	  gp_count += 2;
-+#    endif
- 	  fparg_count++;
--
- 	  double_tmp = ((double *) *p_argv)[1];
- 	  if (fparg_count < NUM_FPR_ARG_REGISTERS)
- 	    *fpr_base++ = double_tmp;
--	  else
--	    *(double *) next_arg = double_tmp;
-+	  *(double *) next_arg = double_tmp;
-+#    if defined(POWERPC_DARWIN64)
-+	  next_arg++;
-+	  gp_count++;
-+#    else
- 	  next_arg += 2;
-+	  gp_count += 2;
-+#    endif
- 	  fparg_count++;
--#endif
-+#  endif
- 	  FFI_ASSERT(flags & FLAG_FP_ARGUMENTS);
- 	  break;
- #endif
- 	case FFI_TYPE_UINT64:
- 	case FFI_TYPE_SINT64:
- #ifdef POWERPC64
- 	  gprvalue = *(long long *) *p_argv;
- 	  goto putgpr;
- #else
- 	  *(long long *) next_arg = *(long long *) *p_argv;
- 	  next_arg += 2;
-+	  gp_count += 2;
- #endif
- 	  break;
- 	case FFI_TYPE_POINTER:
- 	  gprvalue = *(unsigned long *) *p_argv;
- 	  goto putgpr;
- 	case FFI_TYPE_UINT8:
- 	  gprvalue = *(unsigned char *) *p_argv;
- 	  goto putgpr;
-@@ -206,101 +248,373 @@ ffi_prep_args (extended_cif *ecif, unsig
- 	case FFI_TYPE_UINT16:
- 	  gprvalue = *(unsigned short *) *p_argv;
- 	  goto putgpr;
- 	case FFI_TYPE_SINT16:
- 	  gprvalue = *(signed short *) *p_argv;
- 	  goto putgpr;
- 
- 	case FFI_TYPE_STRUCT:
--#ifdef POWERPC64
--	  dest_cpy = (char *) next_arg;
- 	  size_al = (*ptr)->size;
--	  if ((*ptr)->elements[0]->type == 3)
--	    size_al = ALIGN((*ptr)->size, 8);
--	  if (size_al < 3 && abi == FFI_DARWIN)
--	    dest_cpy += 4 - size_al;
--
--	  memcpy ((char *) dest_cpy, (char *) *p_argv, size_al);
--	  next_arg += (size_al + 7) / 8;
-+#if defined(POWERPC_DARWIN64)
-+	  next_arg = (unsigned long *)ALIGN((char *)next_arg, (*ptr)->alignment);
-+	  darwin64_pass_struct_by_value (*ptr, (char *) *p_argv, 
-+					 (unsigned) size_al,
-+					 (unsigned int *) &fparg_count,
-+					 &fpr_base, &next_arg);
- #else
- 	  dest_cpy = (char *) next_arg;
- 
-+	  /* If the first member of the struct is a double, then include enough
-+	     padding in the struct size to align it to double-word.  */
-+	  if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE)
-+	    size_al = ALIGN((*ptr)->size, 8);
-+
-+#  if defined(POWERPC64) 
-+	  FFI_ASSERT (abi != FFI_DARWIN);
-+	  memcpy ((char *) dest_cpy, (char *) *p_argv, size_al);
-+	  next_arg += (size_al + 7) / 8;
-+#  else
- 	  /* Structures that match the basic modes (QI 1 byte, HI 2 bytes,
- 	     SI 4 bytes) are aligned as if they were those modes.
- 	     Structures with 3 byte in size are padded upwards.  */
--	  size_al = (*ptr)->size;
--	  /* If the first member of the struct is a double, then align
--	     the struct to double-word.  */
--	  if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE)
--	    size_al = ALIGN((*ptr)->size, 8);
- 	  if (size_al < 3 && abi == FFI_DARWIN)
- 	    dest_cpy += 4 - size_al;
- 
- 	  memcpy((char *) dest_cpy, (char *) *p_argv, size_al);
- 	  next_arg += (size_al + 3) / 4;
-+#  endif
- #endif
- 	  break;
- 
- 	case FFI_TYPE_INT:
- 	case FFI_TYPE_SINT32:
- 	  gprvalue = *(signed int *) *p_argv;
- 	  goto putgpr;
- 
- 	case FFI_TYPE_UINT32:
- 	  gprvalue = *(unsigned int *) *p_argv;
- 	putgpr:
- 	  *next_arg++ = gprvalue;
-+	  gp_count++;
- 	  break;
- 	default:
- 	  break;
- 	}
-     }
- 
-   /* Check that we didn't overrun the stack...  */
--  //FFI_ASSERT(gpr_base <= stacktop - ASM_NEEDS_REGISTERS);
--  //FFI_ASSERT((unsigned *)fpr_base
--  //	     <= stacktop - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS);
--  //FFI_ASSERT(flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4);
-+  /* FFI_ASSERT(gpr_base <= stacktop - ASM_NEEDS_REGISTERS);
-+     FFI_ASSERT((unsigned *)fpr_base
-+     	     <= stacktop - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS);
-+     FFI_ASSERT(flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4);  */
- }
- 
-+#if defined(POWERPC_DARWIN64)
-+
-+/* See if we can put some of the struct into fprs.
-+   This should not be called for structures of size 16 bytes, since these are not
-+   broken out this way.  */
-+static void
-+darwin64_scan_struct_for_floats (ffi_type *s, unsigned *nfpr)
-+{
-+  int i;
-+
-+  FFI_ASSERT (s->type == FFI_TYPE_STRUCT)
-+
-+  for (i = 0; s->elements[i] != NULL; i++)
-+    {
-+      ffi_type *p = s->elements[i];
-+      switch (p->type)
-+	{
-+	  case FFI_TYPE_STRUCT:
-+	    darwin64_scan_struct_for_floats (p, nfpr);
-+	    break;
-+	  case FFI_TYPE_LONGDOUBLE:
-+	    (*nfpr) += 2;
-+	    break;
-+	  case FFI_TYPE_DOUBLE:
-+	  case FFI_TYPE_FLOAT:
-+	    (*nfpr) += 1;
-+	    break;
-+	  default:
-+	    break;    
-+	}
-+    }
-+}
-+
-+static int
-+darwin64_struct_size_exceeds_gprs_p (ffi_type *s, char *src, unsigned *nfpr)
-+{
-+  unsigned struct_offset=0, i;
-+
-+  for (i = 0; s->elements[i] != NULL; i++)
-+    {
-+      char *item_base;
-+      ffi_type *p = s->elements[i];
-+      /* Find the start of this item (0 for the first one).  */
-+      if (i > 0)
-+        struct_offset = ALIGN(struct_offset, p->alignment);
-+
-+      item_base = src + struct_offset;
-+
-+      switch (p->type)
-+	{
-+	  case FFI_TYPE_STRUCT:
-+	    if (darwin64_struct_size_exceeds_gprs_p (p, item_base, nfpr))
-+	      return 1;
-+	    break;
-+	  case FFI_TYPE_LONGDOUBLE:
-+	    if (*nfpr >= NUM_FPR_ARG_REGISTERS)
-+	      return 1;
-+	    (*nfpr) += 1;
-+	    item_base += 8;
-+	  /* FALL THROUGH */
-+	  case FFI_TYPE_DOUBLE:
-+	    if (*nfpr >= NUM_FPR_ARG_REGISTERS)
-+	      return 1;
-+	    (*nfpr) += 1;
-+	    break;
-+	  case FFI_TYPE_FLOAT:
-+	    if (*nfpr >= NUM_FPR_ARG_REGISTERS)
-+	      return 1;
-+	    (*nfpr) += 1;
-+	    break;
-+	  default:
-+	    /* If we try and place any item, that is non-float, once we've
-+	       exceeded the 8 GPR mark, then we can't fit the struct.  */
-+	    if ((unsigned long)item_base >= 8*8) 
-+	      return 1;
-+	    break;    
-+	}
-+      /* now count the size of what we just used.  */
-+      struct_offset += p->size;
-+    }
-+  return 0;
-+}
-+
-+/* Can this struct be returned by value?  */
-+int 
-+darwin64_struct_ret_by_value_p (ffi_type *s)
-+{
-+  unsigned nfp = 0;
-+
-+  FFI_ASSERT (s && s->type == FFI_TYPE_STRUCT);
-+  
-+  /* The largest structure we can return is 8long + 13 doubles.  */
-+  if (s->size > 168)
-+    return 0;
-+  
-+  /* We can't pass more than 13 floats.  */
-+  darwin64_scan_struct_for_floats (s, &nfp);
-+  if (nfp > 13)
-+    return 0;
-+  
-+  /* If there are not too many floats, and the struct is
-+     small enough to accommodate in the GPRs, then it must be OK.  */
-+  if (s->size <= 64)
-+    return 1;
-+  
-+  /* Well, we have to look harder.  */
-+  nfp = 0;
-+  if (darwin64_struct_size_exceeds_gprs_p (s, NULL, &nfp))
-+    return 0;
-+  
-+  return 1;
-+}
-+
-+void
-+darwin64_pass_struct_floats (ffi_type *s, char *src, 
-+			     unsigned *nfpr, double **fprs)
-+{
-+  int i;
-+  double *fpr_base = *fprs;
-+  unsigned struct_offset = 0;
-+
-+  /* We don't assume anything about the alignment of the source.  */
-+  for (i = 0; s->elements[i] != NULL; i++)
-+    {
-+      char *item_base;
-+      ffi_type *p = s->elements[i];
-+      /* Find the start of this item (0 for the first one).  */
-+      if (i > 0)
-+        struct_offset = ALIGN(struct_offset, p->alignment);
-+      item_base = src + struct_offset;
-+
-+      switch (p->type)
-+	{
-+	  case FFI_TYPE_STRUCT:
-+	    darwin64_pass_struct_floats (p, item_base, nfpr,
-+					   &fpr_base);
-+	    break;
-+	  case FFI_TYPE_LONGDOUBLE:
-+	    if (*nfpr < NUM_FPR_ARG_REGISTERS)
-+	      *fpr_base++ = *(double *)item_base;
-+	    (*nfpr) += 1;
-+	    item_base += 8;
-+	  /* FALL THROUGH */
-+	  case FFI_TYPE_DOUBLE:
-+	    if (*nfpr < NUM_FPR_ARG_REGISTERS)
-+	      *fpr_base++ = *(double *)item_base;
-+	    (*nfpr) += 1;
-+	    break;
-+	  case FFI_TYPE_FLOAT:
-+	    if (*nfpr < NUM_FPR_ARG_REGISTERS)
-+	      *fpr_base++ = (double) *(float *)item_base;
-+	    (*nfpr) += 1;
-+	    break;
-+	  default:
-+	    break;    
-+	}
-+      /* now count the size of what we just used.  */
-+      struct_offset += p->size;
-+    }
-+  /* Update the scores.  */
-+  *fprs = fpr_base;
-+}
-+
-+/* Darwin64 special rules.
-+   Break out a struct into params and float registers.  */
-+static void
-+darwin64_pass_struct_by_value (ffi_type *s, char *src, unsigned size,
-+			       unsigned *nfpr, double **fprs, unsigned long **arg)
-+{
-+  unsigned long *next_arg = *arg;
-+  char *dest_cpy = (char *)next_arg;
-+
-+  FFI_ASSERT (s->type == FFI_TYPE_STRUCT)
-+
-+  if (!size)
-+    return;
-+
-+  /* First... special cases.  */
-+  if (size < 3
-+      || (size == 4 
-+	  && s->elements[0] 
-+	  && s->elements[0]->type != FFI_TYPE_FLOAT))
-+    {
-+      /* Must be at least one GPR, padding is unspecified in value, 
-+	 let's make it zero.  */
-+      *next_arg = 0UL; 
-+      dest_cpy += 8 - size;
-+      memcpy ((char *) dest_cpy, src, size);
-+      next_arg++;
-+    }
-+  else if (size == 16)
-+    {
-+      memcpy ((char *) dest_cpy, src, size);
-+      next_arg += 2;
-+    }
-+  else
-+    {
-+      /* now the general case, we consider embedded floats.  */
-+      memcpy ((char *) dest_cpy, src, size);
-+      darwin64_pass_struct_floats (s, src, nfpr, fprs);
-+      next_arg += (size+7)/8;
-+    }
-+    
-+  *arg = next_arg;
-+}
-+
-+double *
-+darwin64_struct_floats_to_mem (ffi_type *s, char *dest, double *fprs, unsigned *nf)
-+{
-+  int i;
-+  unsigned struct_offset = 0;
-+
-+  /* We don't assume anything about the alignment of the source.  */
-+  for (i = 0; s->elements[i] != NULL; i++)
-+    {
-+      char *item_base;
-+      ffi_type *p = s->elements[i];
-+      /* Find the start of this item (0 for the first one).  */
-+      if (i > 0)
-+        struct_offset = ALIGN(struct_offset, p->alignment);
-+      item_base = dest + struct_offset;
-+
-+      switch (p->type)
-+	{
-+	  case FFI_TYPE_STRUCT:
-+	    fprs = darwin64_struct_floats_to_mem (p, item_base, fprs, nf);
-+	    break;
-+	  case FFI_TYPE_LONGDOUBLE:
-+	    if (*nf < NUM_FPR_ARG_REGISTERS)
-+	      {
-+		*(double *)item_base = *fprs++ ;
-+		(*nf) += 1;
-+	      }
-+	    item_base += 8;
-+	  /* FALL THROUGH */
-+	  case FFI_TYPE_DOUBLE:
-+	    if (*nf < NUM_FPR_ARG_REGISTERS)
-+	      {
-+		*(double *)item_base = *fprs++ ;
-+		(*nf) += 1;
-+	      }
-+	    break;
-+	  case FFI_TYPE_FLOAT:
-+	    if (*nf < NUM_FPR_ARG_REGISTERS)
-+	      {
-+		*(float *)item_base = (float) *fprs++ ;
-+		(*nf) += 1;
-+	      }
-+	    break;
-+	  default:
-+	    break;    
-+	}
-+      /* now count the size of what we just used.  */
-+      struct_offset += p->size;
-+    }
-+  return fprs;
-+}
-+
-+#endif
-+
- /* Adjust the size of S to be correct for Darwin.
--   On Darwin, the first field of a structure has natural alignment.  */
-+   On Darwin m32, the first field of a structure has natural alignment.  
-+   On Darwin m64, all fields have natural alignment.  */
- 
- static void
- darwin_adjust_aggregate_sizes (ffi_type *s)
- {
-   int i;
- 
-   if (s->type != FFI_TYPE_STRUCT)
-     return;
- 
-   s->size = 0;
-   for (i = 0; s->elements[i] != NULL; i++)
-     {
-       ffi_type *p;
-       int align;
-       
-       p = s->elements[i];
--      darwin_adjust_aggregate_sizes (p);
--      if (i == 0
--	  && (p->type == FFI_TYPE_UINT64
--	      || p->type == FFI_TYPE_SINT64
--	      || p->type == FFI_TYPE_DOUBLE
--	      || p->alignment == 8))
--	align = 8;
-+      if (p->type == FFI_TYPE_STRUCT)
-+	darwin_adjust_aggregate_sizes (p);
-+#if defined(POWERPC_DARWIN64)
-+      /* Natural alignment for all items.  */
-+      align = p->alignment;
-+#else
-+      /* Natural alignment for the first item... */
-+      if (i == 0)
-+	align = p->alignment;
-       else if (p->alignment == 16 || p->alignment < 4)
-+	/* .. subsequent items with vector or align < 4 have natural align.  */
- 	align = p->alignment;
-       else
-+	/* .. or align is 4.  */
- 	align = 4;
-+#endif
-+      /* Pad, if necessary, before adding the current item.  */
-       s->size = ALIGN(s->size, align) + p->size;
-     }
-   
-   s->size = ALIGN(s->size, s->alignment);
-   
-+  /* This should not be necessary on m64, but harmless.  */
-   if (s->elements[0]->type == FFI_TYPE_UINT64
-       || s->elements[0]->type == FFI_TYPE_SINT64
-       || s->elements[0]->type == FFI_TYPE_DOUBLE
-       || s->elements[0]->alignment == 8)
-     s->alignment = s->alignment > 8 ? s->alignment : 8;
-   /* Do not add additional tail padding.  */
- }
- 
-@@ -342,17 +656,17 @@ aix_adjust_aggregate_sizes (ffi_type *s)
- /* Perform machine dependent cif processing.  */
- ffi_status
- ffi_prep_cif_machdep (ffi_cif *cif)
- {
-   /* All this is for the DARWIN ABI.  */
-   unsigned i;
-   ffi_type **ptr;
-   unsigned bytes;
--  int fparg_count = 0, intarg_count = 0;
-+  unsigned fparg_count = 0, intarg_count = 0;
-   unsigned flags = 0;
-   unsigned size_al = 0;
- 
-   /* All the machine-independent calculation of cif->bytes will be wrong.
-      All the calculation of structure sizes will also be wrong.
-      Redo the calculation for DARWIN.  */
- 
-   if (cif->abi == FFI_DARWIN)
-@@ -367,26 +681,35 @@ ffi_prep_cif_machdep (ffi_cif *cif)
-       aix_adjust_aggregate_sizes (cif->rtype);
-       for (i = 0; i < cif->nargs; i++)
- 	aix_adjust_aggregate_sizes (cif->arg_types[i]);
-     }
- 
-   /* Space for the frame pointer, callee's LR, CR, etc, and for
-      the asm's temp regs.  */
- 
--  bytes = (6 + ASM_NEEDS_REGISTERS) * sizeof(long);
-+  bytes = (LINKAGE_AREA_GPRS + ASM_NEEDS_REGISTERS) * sizeof(unsigned long);
- 
--  /* Return value handling.  The rules are as follows:
-+  /* Return value handling.  
-+    The rules m32 are as follows:
-      - 32-bit (or less) integer values are returned in gpr3;
--     - Structures of size <= 4 bytes also returned in gpr3;
--     - 64-bit integer values and structures between 5 and 8 bytes are returned
--       in gpr3 and gpr4;
-+     - structures of size <= 4 bytes also returned in gpr3;
-+     - 64-bit integer values [??? and structures between 5 and 8 bytes] are
-+       returned in gpr3 and gpr4;
-      - Single/double FP values are returned in fpr1;
-      - Long double FP (if not equivalent to double) values are returned in
-        fpr1 and fpr2;
-+     m64:
-+     - 64-bit or smaller integral values are returned in GPR3
-+     - Single/double FP values are returned in fpr1;
-+     - Long double FP values are returned in fpr1 and fpr2;
-+     m64 Structures:
-+     - If the structure could be accommodated in registers were it to be the
-+       first argument to a routine, then it is returned in those registers.
-+     m32/m64 structures otherwise:
-      - Larger structures values are allocated space and a pointer is passed
-        as the first argument.  */
-   switch (cif->rtype->type)
-     {
- 
- #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-     case FFI_TYPE_LONGDOUBLE:
-       flags |= FLAG_RETURNS_128BITS;
-@@ -405,124 +728,193 @@ ffi_prep_cif_machdep (ffi_cif *cif)
-     case FFI_TYPE_SINT64:
- #ifdef POWERPC64
-     case FFI_TYPE_POINTER:
- #endif
-       flags |= FLAG_RETURNS_64BITS;
-       break;
- 
-     case FFI_TYPE_STRUCT:
-+#if defined(POWERPC_DARWIN64)
-+      {
-+	/* Can we fit the struct into regs?  */
-+	if (darwin64_struct_ret_by_value_p (cif->rtype))
-+	  {
-+	    unsigned nfpr = 0;
-+	    flags |= FLAG_RETURNS_STRUCT;
-+	    if (cif->rtype->size != 16)
-+	      darwin64_scan_struct_for_floats (cif->rtype, &nfpr) ;
-+	    else
-+	      flags |= FLAG_RETURNS_128BITS;
-+	    /* Will be 0 for 16byte struct.  */
-+	    if (nfpr)
-+	      flags |= FLAG_RETURNS_FP;
-+	  }
-+	else /* By ref. */
-+	  {
-+	    flags |= FLAG_RETVAL_REFERENCE;
-+	    flags |= FLAG_RETURNS_NOTHING;
-+	    intarg_count++;
-+	  }
-+      }
-+#elif defined(DARWIN_PPC)
-+      if (cif->rtype->size <= 4)
-+	flags |= FLAG_RETURNS_STRUCT;
-+      else /* else by reference.  */
-+	{
-+	  flags |= FLAG_RETVAL_REFERENCE;
-+	  flags |= FLAG_RETURNS_NOTHING;
-+	  intarg_count++;
-+	}
-+#else /* assume we pass by ref.  */
-       flags |= FLAG_RETVAL_REFERENCE;
-       flags |= FLAG_RETURNS_NOTHING;
-       intarg_count++;
-+#endif
-       break;
-     case FFI_TYPE_VOID:
-       flags |= FLAG_RETURNS_NOTHING;
-       break;
- 
-     default:
-       /* Returns 32-bit integer, or similar.  Nothing to do here.  */
-       break;
-     }
- 
-   /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the
-      first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest
--     goes on the stack.  Structures are passed as a pointer to a copy of
--     the structure. Stuff on the stack needs to keep proper alignment.  */
-+     goes on the stack.  
-+     ??? Structures are passed as a pointer to a copy of the structure. 
-+     Stuff on the stack needs to keep proper alignment.  
-+     For m64 the count is effectively of half-GPRs.  */
-   for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
-     {
-+      unsigned align_words;
-       switch ((*ptr)->type)
- 	{
- 	case FFI_TYPE_FLOAT:
- 	case FFI_TYPE_DOUBLE:
- 	  fparg_count++;
-+#if !defined(POWERPC_DARWIN64)
- 	  /* If this FP arg is going on the stack, it must be
- 	     8-byte-aligned.  */
- 	  if (fparg_count > NUM_FPR_ARG_REGISTERS
--	      && intarg_count%2 != 0)
-+	      && (intarg_count & 0x01) != 0)
- 	    intarg_count++;
-+#endif
- 	  break;
- 
- #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
--
- 	case FFI_TYPE_LONGDOUBLE:
- 	  fparg_count += 2;
- 	  /* If this FP arg is going on the stack, it must be
--	     8-byte-aligned.  */
--	  if (fparg_count > NUM_FPR_ARG_REGISTERS
--	      && intarg_count%2 != 0)
--	    intarg_count++;
--	  intarg_count +=2;
-+	     16-byte-aligned.  */
-+	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
-+#if defined (POWERPC64)
-+	    intarg_count = ALIGN(intarg_count, 2);
-+#else
-+	    intarg_count = ALIGN(intarg_count, 4);
-+#endif
- 	  break;
- #endif
- 
- 	case FFI_TYPE_UINT64:
- 	case FFI_TYPE_SINT64:
-+#if defined(POWERPC64)
-+	  intarg_count++;
-+#else
- 	  /* 'long long' arguments are passed as two words, but
- 	     either both words must fit in registers or both go
- 	     on the stack.  If they go on the stack, they must
- 	     be 8-byte-aligned.  */
- 	  if (intarg_count == NUM_GPR_ARG_REGISTERS-1
--	      || (intarg_count >= NUM_GPR_ARG_REGISTERS && intarg_count%2 != 0))
-+	      || (intarg_count >= NUM_GPR_ARG_REGISTERS 
-+	          && (intarg_count & 0x01) != 0))
- 	    intarg_count++;
- 	  intarg_count += 2;
-+#endif
- 	  break;
- 
- 	case FFI_TYPE_STRUCT:
- 	  size_al = (*ptr)->size;
-+#if defined(POWERPC_DARWIN64)
-+	  align_words = (*ptr)->alignment >> 3;
-+	  if (align_words)
-+	    intarg_count = ALIGN(intarg_count, align_words);
-+	  /* Base size of the struct.  */
-+	  intarg_count += (size_al + 7) / 8;
-+	  /* If 16 bytes then don't worry about floats.  */
-+	  if (size_al != 16)
-+	    /* Scan through for floats to be placed in regs.  */
-+	    darwin64_scan_struct_for_floats (*ptr, &fparg_count) ;
-+#else
-+	  align_words = (*ptr)->alignment >> 2;
-+	  if (align_words)
-+	    intarg_count = ALIGN(intarg_count, align_words);
- 	  /* If the first member of the struct is a double, then align
--	     the struct to double-word.  */
-+	     the struct to double-word. 
- 	  if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE)
--	    size_al = ALIGN((*ptr)->size, 8);
--#ifdef POWERPC64
-+	    size_al = ALIGN((*ptr)->size, 8); */
-+#  ifdef POWERPC64
- 	  intarg_count += (size_al + 7) / 8;
--#else
-+#  else
- 	  intarg_count += (size_al + 3) / 4;
-+#  endif
- #endif
- 	  break;
- 
- 	default:
- 	  /* Everything else is passed as a 4-byte word in a GPR, either
- 	     the object itself or a pointer to it.  */
- 	  intarg_count++;
- 	  break;
- 	}
-     }
- 
-   if (fparg_count != 0)
-     flags |= FLAG_FP_ARGUMENTS;
- 
-+#if defined(POWERPC_DARWIN64)
-+  /* Space to image the FPR registers, if needed - which includes when they might be
-+     used in a struct return.  */
-+  if (fparg_count != 0 
-+      || ((flags & FLAG_RETURNS_STRUCT)
-+	   && (flags & FLAG_RETURNS_FP)))
-+    bytes += NUM_FPR_ARG_REGISTERS * sizeof(double);
-+#else
-   /* Space for the FPR registers, if needed.  */
-   if (fparg_count != 0)
-     bytes += NUM_FPR_ARG_REGISTERS * sizeof(double);
-+#endif
- 
-   /* Stack space.  */
- #ifdef POWERPC64
-   if ((intarg_count + fparg_count) > NUM_GPR_ARG_REGISTERS)
-     bytes += (intarg_count + fparg_count) * sizeof(long);
- #else
-   if ((intarg_count + 2 * fparg_count) > NUM_GPR_ARG_REGISTERS)
-     bytes += (intarg_count + 2 * fparg_count) * sizeof(long);
- #endif
-   else
-     bytes += NUM_GPR_ARG_REGISTERS * sizeof(long);
- 
-   /* The stack space allocated needs to be a multiple of 16 bytes.  */
--  bytes = (bytes + 15) & ~0xF;
-+  bytes = ALIGN(bytes, 16) ;
- 
-   cif->flags = flags;
-   cif->bytes = bytes;
- 
-   return FFI_OK;
- }
- 
- extern void ffi_call_AIX(extended_cif *, long, unsigned, unsigned *,
- 			 void (*fn)(void), void (*fn2)(void));
-+
- extern void ffi_call_DARWIN(extended_cif *, long, unsigned, unsigned *,
--			    void (*fn)(void), void (*fn2)(void));
-+			    void (*fn)(void), void (*fn2)(void), ffi_type*);
- 
- void
- ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
- {
-   extended_cif ecif;
- 
-   ecif.cif = cif;
-   ecif.avalue = avalue;
-@@ -541,17 +933,17 @@ ffi_call (ffi_cif *cif, void (*fn)(void)
-   switch (cif->abi)
-     {
-     case FFI_AIX:
-       ffi_call_AIX(&ecif, -(long)cif->bytes, cif->flags, ecif.rvalue, fn,
- 		   FFI_FN(ffi_prep_args));
-       break;
-     case FFI_DARWIN:
-       ffi_call_DARWIN(&ecif, -(long)cif->bytes, cif->flags, ecif.rvalue, fn,
--		      FFI_FN(ffi_prep_args));
-+		      FFI_FN(ffi_prep_args), cif->rtype);
-       break;
-     default:
-       FFI_ASSERT(0);
-       break;
-     }
- }
- 
- static void flush_icache(char *);
-@@ -561,123 +953,127 @@ static void flush_range(char *, int);
-    points to one of these.  */
- 
- typedef struct aix_fd_struct {
-   void *code_pointer;
-   void *toc;
- } aix_fd;
- 
- /* here I'd like to add the stack frame layout we use in darwin_closure.S
--   and aix_clsoure.S
-+   and aix_closure.S
- 
--   SP previous -> +---------------------------------------+ <--- child frame
--		  | back chain to caller 4                |
--		  +---------------------------------------+ 4
--		  | saved CR 4                            |
--		  +---------------------------------------+ 8
--		  | saved LR 4                            |
--		  +---------------------------------------+ 12
--		  | reserved for compilers 4              |
--		  +---------------------------------------+ 16
--		  | reserved for binders 4                |
--		  +---------------------------------------+ 20
--		  | saved TOC pointer 4                   |
--		  +---------------------------------------+ 24
--		  | always reserved 8*4=32 (previous GPRs)|
--		  | according to the linkage convention   |
--		  | from AIX                              |
--		  +---------------------------------------+ 56
--		  | our FPR area 13*8=104                 |
--		  | f1                                    |
--		  | .                                     |
--		  | f13                                   |
--		  +---------------------------------------+ 160
--		  | result area 8                         |
--		  +---------------------------------------+ 168
--		  | alignement to the next multiple of 16 |
--SP current -->    +---------------------------------------+ 176 <- parent frame
--		  | back chain to caller 4                |
--		  +---------------------------------------+ 180
--		  | saved CR 4                            |
--		  +---------------------------------------+ 184
--		  | saved LR 4                            |
--		  +---------------------------------------+ 188
--		  | reserved for compilers 4              |
--		  +---------------------------------------+ 192
--		  | reserved for binders 4                |
--		  +---------------------------------------+ 196
--		  | saved TOC pointer 4                   |
--		  +---------------------------------------+ 200
--		  | always reserved 8*4=32  we store our  |
--		  | GPRs here                             |
--		  | r3                                    |
--		  | .                                     |
--		  | r10                                   |
--		  +---------------------------------------+ 232
--		  | overflow part                         |
--		  +---------------------------------------+ xxx
--		  | ????                                  |
--		  +---------------------------------------+ xxx
-+   m32/m64
-+
-+   The stack layout looks like this:
-+
-+   |   Additional params...			| |     Higher address
-+   ~						~ ~
-+   |   Parameters      (at least 8*4/8=32/64)	| | NUM_GPR_ARG_REGISTERS
-+   |--------------------------------------------| |
-+   |   TOC=R2 (AIX) Reserved (Darwin)   4/8	| |
-+   |--------------------------------------------| |
-+   |   Reserved                       2*4/8	| |
-+   |--------------------------------------------| |
-+   |   Space for callee's LR		4/8	| |
-+   |--------------------------------------------| |
-+   |   Saved CR [low word for m64]      4/8	| |
-+   |--------------------------------------------| |
-+   |   Current backchain pointer	4/8	|-/ Parent's frame.
-+   |--------------------------------------------| <+ <<< on entry to ffi_closure_ASM
-+   |   Result Bytes			16	| |
-+   |--------------------------------------------| |
-+   ~   padding to 16-byte alignment		~ ~
-+   |--------------------------------------------| |
-+   |   NUM_FPR_ARG_REGISTERS slots		| |
-+   |   here fp13 .. fp1		       13*8	| |
-+   |--------------------------------------------| |
-+   |   R3..R10			  8*4/8=32/64	| | NUM_GPR_ARG_REGISTERS
-+   |--------------------------------------------| |
-+   |   TOC=R2 (AIX) Reserved (Darwin)   4/8	| |
-+   |--------------------------------------------| |	stack	|
-+   |   Reserved [compiler,binder]     2*4/8	| |	grows	|
-+   |--------------------------------------------| |	down	V
-+   |   Space for callee's LR		4/8	| |
-+   |--------------------------------------------| |	lower addresses
-+   |   Saved CR [low word for m64]      4/8	| |
-+   |--------------------------------------------| |     stack pointer here
-+   |   Current backchain pointer	4/8	|-/	during
-+   |--------------------------------------------|   <<<	ffi_closure_ASM.
- 
- */
-+
- ffi_status
- ffi_prep_closure_loc (ffi_closure* closure,
- 		      ffi_cif* cif,
- 		      void (*fun)(ffi_cif*, void*, void**, void*),
- 		      void *user_data,
- 		      void *codeloc)
- {
-   unsigned int *tramp;
-   struct ffi_aix_trampoline_struct *tramp_aix;
-   aix_fd *fd;
- 
-   switch (cif->abi)
-     {
--    case FFI_DARWIN:
-+      case FFI_DARWIN:
- 
--      FFI_ASSERT (cif->abi == FFI_DARWIN);
-+	FFI_ASSERT (cif->abi == FFI_DARWIN);
- 
--      tramp = (unsigned int *) &closure->tramp[0];
--      tramp[0] = 0x7c0802a6;  /*   mflr    r0  */
--      tramp[1] = 0x429f000d;  /*   bcl-    20,4*cr7+so,0x10  */
--      tramp[4] = 0x7d6802a6;  /*   mflr    r11  */
--      tramp[5] = 0x818b0000;  /*   lwz     r12,0(r11) function address  */
--      tramp[6] = 0x7c0803a6;  /*   mtlr    r0   */
--      tramp[7] = 0x7d8903a6;  /*   mtctr   r12  */
--      tramp[8] = 0x816b0004;  /*   lwz     r11,4(r11) static chain  */
--      tramp[9] = 0x4e800420;  /*   bctr  */
--      tramp[2] = (unsigned long) ffi_closure_ASM; /* function  */
--      tramp[3] = (unsigned long) codeloc; /* context  */
-+	tramp = (unsigned int *) &closure->tramp[0];
-+#if defined(POWERPC_DARWIN64)
-+	tramp[0] = 0x7c0802a6;  /*   mflr    r0  */
-+	tramp[1] = 0x429f0015;  /*   bcl-    20,4*cr7+so,  +0x18 (L1)  */
-+	/* We put the addresses here.  */
-+	tramp[6] = 0x7d6802a6;  /*L1:   mflr    r11  */
-+	tramp[7] = 0xe98b0000;  /*   ld     r12,0(r11) function address  */
-+	tramp[8] = 0x7c0803a6;  /*   mtlr    r0   */
-+	tramp[9] = 0x7d8903a6;  /*   mtctr   r12  */
-+	tramp[10] = 0xe96b0008;  /*   lwz     r11,8(r11) static chain  */
-+	tramp[11] = 0x4e800420;  /*   bctr  */
- 
--      closure->cif = cif;
--      closure->fun = fun;
--      closure->user_data = user_data;
-+	*((unsigned long *)&tramp[2]) = (unsigned long) ffi_closure_ASM; /* function  */
-+	*((unsigned long *)&tramp[4]) = (unsigned long) codeloc; /* context  */
-+#else
-+	tramp[0] = 0x7c0802a6;  /*   mflr    r0  */
-+	tramp[1] = 0x429f000d;  /*   bcl-    20,4*cr7+so,0x10  */
-+	tramp[4] = 0x7d6802a6;  /*   mflr    r11  */
-+	tramp[5] = 0x818b0000;  /*   lwz     r12,0(r11) function address  */
-+	tramp[6] = 0x7c0803a6;  /*   mtlr    r0   */
-+	tramp[7] = 0x7d8903a6;  /*   mtctr   r12  */
-+	tramp[8] = 0x816b0004;  /*   lwz     r11,4(r11) static chain  */
-+	tramp[9] = 0x4e800420;  /*   bctr  */
-+	tramp[2] = (unsigned long) ffi_closure_ASM; /* function  */
-+	tramp[3] = (unsigned long) codeloc; /* context  */
-+#endif
-+	closure->cif = cif;
-+	closure->fun = fun;
-+	closure->user_data = user_data;
- 
--      /* Flush the icache. Only necessary on Darwin.  */
--      flush_range(codeloc, FFI_TRAMPOLINE_SIZE);
-+	/* Flush the icache. Only necessary on Darwin.  */
-+	flush_range(codeloc, FFI_TRAMPOLINE_SIZE);
- 
--      break;
-+	break;
- 
-     case FFI_AIX:
- 
-       tramp_aix = (struct ffi_aix_trampoline_struct *) (closure->tramp);
-       fd = (aix_fd *)(void *)ffi_closure_ASM;
- 
-       FFI_ASSERT (cif->abi == FFI_AIX);
- 
-       tramp_aix->code_pointer = fd->code_pointer;
-       tramp_aix->toc = fd->toc;
-       tramp_aix->static_chain = codeloc;
-       closure->cif = cif;
-       closure->fun = fun;
-       closure->user_data = user_data;
-+      break;
- 
-     default:
--
--      FFI_ASSERT(0);
-+      return FFI_BAD_ABI;
-       break;
-     }
-   return FFI_OK;
- }
- 
- static void
- flush_icache(char *addr)
- {
-@@ -703,28 +1099,28 @@ flush_range(char * addr1, int size)
- }
- 
- typedef union
- {
-   float f;
-   double d;
- } ffi_dblfl;
- 
--int
-+ffi_type *
- ffi_closure_helper_DARWIN (ffi_closure *, void *,
- 			   unsigned long *, ffi_dblfl *);
- 
- /* Basically the trampoline invokes ffi_closure_ASM, and on
-    entry, r11 holds the address of the closure.
-    After storing the registers that could possibly contain
-    parameters to be passed into the stack frame and setting
-    up space for a return value, ffi_closure_ASM invokes the
-    following helper function to do most of the work.  */
- 
--int
-+ffi_type *
- ffi_closure_helper_DARWIN (ffi_closure *closure, void *rvalue,
- 			   unsigned long *pgr, ffi_dblfl *pfr)
- {
-   /* rvalue is the pointer to space for return value in closure assembly
-      pgr is the pointer to where r3-r10 are stored in ffi_closure_ASM
-      pfr is the pointer to where f1-f13 are stored in ffi_closure_ASM.  */
- 
-   typedef double ldbits[2];
-@@ -736,97 +1132,132 @@ ffi_closure_helper_DARWIN (ffi_closure *
-   };
- 
-   void **          avalue;
-   ffi_type **      arg_types;
-   long             i, avn;
-   ffi_cif *        cif;
-   ffi_dblfl *      end_pfr = pfr + NUM_FPR_ARG_REGISTERS;
-   unsigned         size_al;
-+#if defined(POWERPC_DARWIN64)
-+  unsigned 	   fpsused = 0;
-+#endif
- 
-   cif = closure->cif;
-   avalue = alloca (cif->nargs * sizeof(void *));
- 
--  /* Copy the caller's structure return value address so that the closure
--     returns the data directly to the caller.  */
-   if (cif->rtype->type == FFI_TYPE_STRUCT)
-     {
-+#if defined(POWERPC_DARWIN64)
-+      if (!darwin64_struct_ret_by_value_p (cif->rtype))
-+	{
-+    	  /* Won't fit into the regs - return by ref.  */
-+	  rvalue = (void *) *pgr;
-+	  pgr++;
-+	}
-+#elif defined(DARWIN_PPC)
-+      if (cif->rtype->size > 4)
-+	{
-+	  rvalue = (void *) *pgr;
-+	  pgr++;
-+	}
-+#else /* assume we return by ref.  */
-       rvalue = (void *) *pgr;
-       pgr++;
-+#endif
-     }
- 
-   i = 0;
-   avn = cif->nargs;
-   arg_types = cif->arg_types;
- 
-   /* Grab the addresses of the arguments from the stack frame.  */
-   while (i < avn)
-     {
-       switch (arg_types[i]->type)
- 	{
- 	case FFI_TYPE_SINT8:
- 	case FFI_TYPE_UINT8:
--#ifdef POWERPC64
-+#if  defined(POWERPC64)
- 	  avalue[i] = (char *) pgr + 7;
- #else
- 	  avalue[i] = (char *) pgr + 3;
- #endif
- 	  pgr++;
- 	  break;
- 
- 	case FFI_TYPE_SINT16:
- 	case FFI_TYPE_UINT16:
--#ifdef POWERPC64
-+#if  defined(POWERPC64)
- 	  avalue[i] = (char *) pgr + 6;
- #else
- 	  avalue[i] = (char *) pgr + 2;
- #endif
- 	  pgr++;
- 	  break;
- 
- 	case FFI_TYPE_SINT32:
- 	case FFI_TYPE_UINT32:
--#ifdef POWERPC64
-+#if  defined(POWERPC64)
- 	  avalue[i] = (char *) pgr + 4;
- #else
- 	case FFI_TYPE_POINTER:
- 	  avalue[i] = pgr;
- #endif
- 	  pgr++;
- 	  break;
- 
- 	case FFI_TYPE_STRUCT:
--#ifdef POWERPC64
- 	  size_al = arg_types[i]->size;
--	  if (arg_types[i]->elements[0]->type == FFI_TYPE_DOUBLE)
--	    size_al = ALIGN (arg_types[i]->size, 8);
--	  if (size_al < 3 && cif->abi == FFI_DARWIN)
--	    avalue[i] = (char *) pgr + 8 - size_al;
--	  else
--	    avalue[i] = pgr;
-+#if defined(POWERPC_DARWIN64)
-+	  pgr = (unsigned long *)ALIGN((char *)pgr, arg_types[i]->alignment);
-+	  if (size_al < 3 || size_al == 4)
-+	    {
-+	      avalue[i] = ((char *)pgr)+8-size_al;
-+	      if (arg_types[i]->elements[0]->type == FFI_TYPE_FLOAT
-+		  && fpsused < NUM_FPR_ARG_REGISTERS)
-+		{
-+		  *(float *)pgr = (float) *(double *)pfr;
-+		  pfr++;
-+		  fpsused++;
-+		}
-+	    }
-+	  else 
-+	    {
-+	      if (size_al != 16)
-+		pfr = (ffi_dblfl *) 
-+		    darwin64_struct_floats_to_mem (arg_types[i], (char *)pgr,
-+						   (double *)pfr, &fpsused);
-+	      avalue[i] = pgr;
-+	    }
- 	  pgr += (size_al + 7) / 8;
- #else
--	  /* Structures that match the basic modes (QI 1 byte, HI 2 bytes,
--	     SI 4 bytes) are aligned as if they were those modes.  */
--	  size_al = arg_types[i]->size;
- 	  /* If the first member of the struct is a double, then align
- 	     the struct to double-word.  */
- 	  if (arg_types[i]->elements[0]->type == FFI_TYPE_DOUBLE)
- 	    size_al = ALIGN(arg_types[i]->size, 8);
-+#  if defined(POWERPC64)
-+	  FFI_ASSERT (cif->abi != FFI_DARWIN);
-+	  avalue[i] = pgr;
-+	  pgr += (size_al + 7) / 8;
-+#  else
-+	  /* Structures that match the basic modes (QI 1 byte, HI 2 bytes,
-+	     SI 4 bytes) are aligned as if they were those modes.  */
- 	  if (size_al < 3 && cif->abi == FFI_DARWIN)
- 	    avalue[i] = (char*) pgr + 4 - size_al;
- 	  else
- 	    avalue[i] = pgr;
- 	  pgr += (size_al + 3) / 4;
-+#  endif
- #endif
- 	  break;
- 
- 	case FFI_TYPE_SINT64:
- 	case FFI_TYPE_UINT64:
--#ifdef POWERPC64
-+#if  defined(POWERPC64)
- 	case FFI_TYPE_POINTER:
- 	  avalue[i] = pgr;
- 	  pgr++;
- 	  break;
- #else
- 	  /* Long long ints are passed in two gpr's.  */
- 	  avalue[i] = pgr;
- 	  pgr += 2;
-@@ -919,10 +1350,10 @@ ffi_closure_helper_DARWIN (ffi_closure *
- 	  FFI_ASSERT(0);
- 	}
-       i++;
-     }
- 
-   (closure->fun) (cif, rvalue, avalue, closure->user_data);
- 
-   /* Tell ffi_closure_ASM to perform return type promotions.  */
--  return cif->rtype->type;
-+  return cif->rtype;
- }
-diff --git a/js/src/ctypes/libffi/src/powerpc/ffi_linux64.c b/js/src/ctypes/libffi/src/powerpc/ffi_linux64.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/powerpc/ffi_linux64.c
-@@ -0,0 +1,943 @@
-+/* -----------------------------------------------------------------------
-+   ffi_linux64.c - Copyright (C) 2013 IBM
-+                   Copyright (C) 2011 Anthony Green
-+                   Copyright (C) 2011 Kyle Moffett
-+                   Copyright (C) 2008 Red Hat, Inc
-+                   Copyright (C) 2007, 2008 Free Software Foundation, Inc
-+                   Copyright (c) 1998 Geoffrey Keating
-+
-+   PowerPC Foreign Function Interface
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+   IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR
-+   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-+   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+   OTHER DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#include "ffi.h"
-+
-+#ifdef POWERPC64
-+#include "ffi_common.h"
-+#include "ffi_powerpc.h"
-+
-+
-+/* About the LINUX64 ABI.  */
-+enum {
-+  NUM_GPR_ARG_REGISTERS64 = 8,
-+  NUM_FPR_ARG_REGISTERS64 = 13
-+};
-+enum { ASM_NEEDS_REGISTERS64 = 4 };
-+
-+
-+#if HAVE_LONG_DOUBLE_VARIANT && FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+/* Adjust size of ffi_type_longdouble.  */
-+void FFI_HIDDEN
-+ffi_prep_types_linux64 (ffi_abi abi)
-+{
-+  if ((abi & (FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128)) == FFI_LINUX)
-+    {
-+      ffi_type_longdouble.size = 8;
-+      ffi_type_longdouble.alignment = 8;
-+    }
-+  else
-+    {
-+      ffi_type_longdouble.size = 16;
-+      ffi_type_longdouble.alignment = 16;
-+    }
-+}
-+#endif
-+
-+
-+#if _CALL_ELF == 2
-+static unsigned int
-+discover_homogeneous_aggregate (const ffi_type *t, unsigned int *elnum)
-+{
-+  switch (t->type)
-+    {
-+    case FFI_TYPE_FLOAT:
-+    case FFI_TYPE_DOUBLE:
-+      *elnum = 1;
-+      return (int) t->type;
-+
-+    case FFI_TYPE_STRUCT:;
-+      {
-+	unsigned int base_elt = 0, total_elnum = 0;
-+	ffi_type **el = t->elements;
-+	while (*el)
-+	  {
-+	    unsigned int el_elt, el_elnum = 0;
-+	    el_elt = discover_homogeneous_aggregate (*el, &el_elnum);
-+	    if (el_elt == 0
-+		|| (base_elt && base_elt != el_elt))
-+	      return 0;
-+	    base_elt = el_elt;
-+	    total_elnum += el_elnum;
-+	    if (total_elnum > 8)
-+	      return 0;
-+	    el++;
-+	  }
-+	*elnum = total_elnum;
-+	return base_elt;
-+      }
-+
-+    default:
-+      return 0;
-+    }
-+}
-+#endif
-+
-+
-+/* Perform machine dependent cif processing */
-+static ffi_status
-+ffi_prep_cif_linux64_core (ffi_cif *cif)
-+{
-+  ffi_type **ptr;
-+  unsigned bytes;
-+  unsigned i, fparg_count = 0, intarg_count = 0;
-+  unsigned flags = cif->flags;
-+#if _CALL_ELF == 2
-+  unsigned int elt, elnum;
-+#endif
-+
-+#if FFI_TYPE_LONGDOUBLE == FFI_TYPE_DOUBLE
-+  /* If compiled without long double support..  */
-+  if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0)
-+    return FFI_BAD_ABI;
-+#endif
-+
-+  /* The machine-independent calculation of cif->bytes doesn't work
-+     for us.  Redo the calculation.  */
-+#if _CALL_ELF == 2
-+  /* Space for backchain, CR, LR, TOC and the asm's temp regs.  */
-+  bytes = (4 + ASM_NEEDS_REGISTERS64) * sizeof (long);
-+
-+  /* Space for the general registers.  */
-+  bytes += NUM_GPR_ARG_REGISTERS64 * sizeof (long);
-+#else
-+  /* Space for backchain, CR, LR, cc/ld doubleword, TOC and the asm's temp
-+     regs.  */
-+  bytes = (6 + ASM_NEEDS_REGISTERS64) * sizeof (long);
-+
-+  /* Space for the mandatory parm save area and general registers.  */
-+  bytes += 2 * NUM_GPR_ARG_REGISTERS64 * sizeof (long);
-+#endif
-+
-+  /* Return value handling.  */
-+  switch (cif->rtype->type)
-+    {
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+    case FFI_TYPE_LONGDOUBLE:
-+      if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0)
-+	flags |= FLAG_RETURNS_128BITS;
-+      /* Fall through.  */
-+#endif
-+    case FFI_TYPE_DOUBLE:
-+      flags |= FLAG_RETURNS_64BITS;
-+      /* Fall through.  */
-+    case FFI_TYPE_FLOAT:
-+      flags |= FLAG_RETURNS_FP;
-+      break;
-+
-+    case FFI_TYPE_UINT128:
-+      flags |= FLAG_RETURNS_128BITS;
-+      /* Fall through.  */
-+    case FFI_TYPE_UINT64:
-+    case FFI_TYPE_SINT64:
-+      flags |= FLAG_RETURNS_64BITS;
-+      break;
-+
-+    case FFI_TYPE_STRUCT:
-+#if _CALL_ELF == 2
-+      elt = discover_homogeneous_aggregate (cif->rtype, &elnum);
-+      if (elt)
-+	{
-+	  if (elt == FFI_TYPE_DOUBLE)
-+	    flags |= FLAG_RETURNS_64BITS;
-+	  flags |= FLAG_RETURNS_FP | FLAG_RETURNS_SMST;
-+	  break;
-+	}
-+      if (cif->rtype->size <= 16)
-+	{
-+	  flags |= FLAG_RETURNS_SMST;
-+	  break;
-+	}
-+#endif
-+      intarg_count++;
-+      flags |= FLAG_RETVAL_REFERENCE;
-+      /* Fall through.  */
-+    case FFI_TYPE_VOID:
-+      flags |= FLAG_RETURNS_NOTHING;
-+      break;
-+
-+    default:
-+      /* Returns 32-bit integer, or similar.  Nothing to do here.  */
-+      break;
-+    }
-+
-+  for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
-+    {
-+      unsigned int align;
-+
-+      switch ((*ptr)->type)
-+	{
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+	case FFI_TYPE_LONGDOUBLE:
-+	  if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0)
-+	    {
-+	      fparg_count++;
-+	      intarg_count++;
-+	    }
-+	  /* Fall through.  */
-+#endif
-+	case FFI_TYPE_DOUBLE:
-+	case FFI_TYPE_FLOAT:
-+	  fparg_count++;
-+	  intarg_count++;
-+	  if (fparg_count > NUM_FPR_ARG_REGISTERS64)
-+	    flags |= FLAG_ARG_NEEDS_PSAVE;
-+	  break;
-+
-+	case FFI_TYPE_STRUCT:
-+	  if ((cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0)
-+	    {
-+	      align = (*ptr)->alignment;
-+	      if (align > 16)
-+		align = 16;
-+	      align = align / 8;
-+	      if (align > 1)
-+		intarg_count = ALIGN (intarg_count, align);
-+	    }
-+	  intarg_count += ((*ptr)->size + 7) / 8;
-+#if _CALL_ELF == 2
-+	  elt = discover_homogeneous_aggregate (*ptr, &elnum);
-+	  if (elt)
-+	    {
-+	      fparg_count += elnum;
-+	      if (fparg_count > NUM_FPR_ARG_REGISTERS64)
-+		flags |= FLAG_ARG_NEEDS_PSAVE;
-+	    }
-+	  else
-+#endif
-+	    {
-+	      if (intarg_count > NUM_GPR_ARG_REGISTERS64)
-+		flags |= FLAG_ARG_NEEDS_PSAVE;
-+	    }
-+	  break;
-+
-+	case FFI_TYPE_POINTER:
-+	case FFI_TYPE_UINT64:
-+	case FFI_TYPE_SINT64:
-+	case FFI_TYPE_INT:
-+	case FFI_TYPE_UINT32:
-+	case FFI_TYPE_SINT32:
-+	case FFI_TYPE_UINT16:
-+	case FFI_TYPE_SINT16:
-+	case FFI_TYPE_UINT8:
-+	case FFI_TYPE_SINT8:
-+	  /* Everything else is passed as a 8-byte word in a GPR, either
-+	     the object itself or a pointer to it.  */
-+	  intarg_count++;
-+	  if (intarg_count > NUM_GPR_ARG_REGISTERS64)
-+	    flags |= FLAG_ARG_NEEDS_PSAVE;
-+	  break;
-+	default:
-+	  FFI_ASSERT (0);
-+	}
-+    }
-+
-+  if (fparg_count != 0)
-+    flags |= FLAG_FP_ARGUMENTS;
-+  if (intarg_count > 4)
-+    flags |= FLAG_4_GPR_ARGUMENTS;
-+
-+  /* Space for the FPR registers, if needed.  */
-+  if (fparg_count != 0)
-+    bytes += NUM_FPR_ARG_REGISTERS64 * sizeof (double);
-+
-+  /* Stack space.  */
-+#if _CALL_ELF == 2
-+  if ((flags & FLAG_ARG_NEEDS_PSAVE) != 0)
-+    bytes += intarg_count * sizeof (long);
-+#else
-+  if (intarg_count > NUM_GPR_ARG_REGISTERS64)
-+    bytes += (intarg_count - NUM_GPR_ARG_REGISTERS64) * sizeof (long);
-+#endif
-+
-+  /* The stack space allocated needs to be a multiple of 16 bytes.  */
-+  bytes = (bytes + 15) & ~0xF;
-+
-+  cif->flags = flags;
-+  cif->bytes = bytes;
-+
-+  return FFI_OK;
-+}
-+
-+ffi_status FFI_HIDDEN
-+ffi_prep_cif_linux64 (ffi_cif *cif)
-+{
-+  if ((cif->abi & FFI_LINUX) != 0)
-+    cif->nfixedargs = cif->nargs;
-+#if _CALL_ELF != 2
-+  else if (cif->abi == FFI_COMPAT_LINUX64)
-+    {
-+      /* This call is from old code.  Don't touch cif->nfixedargs
-+	 since old code will be using a smaller cif.  */
-+      cif->flags |= FLAG_COMPAT;
-+      /* Translate to new abi value.  */
-+      cif->abi = FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128;
-+    }
-+#endif
-+  else
-+    return FFI_BAD_ABI;
-+  return ffi_prep_cif_linux64_core (cif);
-+}
-+
-+ffi_status FFI_HIDDEN
-+ffi_prep_cif_linux64_var (ffi_cif *cif,
-+			  unsigned int nfixedargs,
-+			  unsigned int ntotalargs MAYBE_UNUSED)
-+{
-+  if ((cif->abi & FFI_LINUX) != 0)
-+    cif->nfixedargs = nfixedargs;
-+#if _CALL_ELF != 2
-+  else if (cif->abi == FFI_COMPAT_LINUX64)
-+    {
-+      /* This call is from old code.  Don't touch cif->nfixedargs
-+	 since old code will be using a smaller cif.  */
-+      cif->flags |= FLAG_COMPAT;
-+      /* Translate to new abi value.  */
-+      cif->abi = FFI_LINUX | FFI_LINUX_LONG_DOUBLE_128;
-+    }
-+#endif
-+  else
-+    return FFI_BAD_ABI;
-+#if _CALL_ELF == 2
-+  cif->flags |= FLAG_ARG_NEEDS_PSAVE;
-+#endif
-+  return ffi_prep_cif_linux64_core (cif);
-+}
-+
-+
-+/* ffi_prep_args64 is called by the assembly routine once stack space
-+   has been allocated for the function's arguments.
-+
-+   The stack layout we want looks like this:
-+
-+   |   Ret addr from ffi_call_LINUX64	8bytes	|	higher addresses
-+   |--------------------------------------------|
-+   |   CR save area			8bytes	|
-+   |--------------------------------------------|
-+   |   Previous backchain pointer	8	|	stack pointer here
-+   |--------------------------------------------|<+ <<<	on entry to
-+   |   Saved r28-r31			4*8	| |	ffi_call_LINUX64
-+   |--------------------------------------------| |
-+   |   GPR registers r3-r10		8*8	| |
-+   |--------------------------------------------| |
-+   |   FPR registers f1-f13 (optional)	13*8	| |
-+   |--------------------------------------------| |
-+   |   Parameter save area		        | |
-+   |--------------------------------------------| |
-+   |   TOC save area			8	| |
-+   |--------------------------------------------| |	stack	|
-+   |   Linker doubleword		8	| |	grows	|
-+   |--------------------------------------------| |	down	V
-+   |   Compiler doubleword		8	| |
-+   |--------------------------------------------| |	lower addresses
-+   |   Space for callee's LR		8	| |
-+   |--------------------------------------------| |
-+   |   CR save area			8	| |
-+   |--------------------------------------------| |	stack pointer here
-+   |   Current backchain pointer	8	|-/	during
-+   |--------------------------------------------|   <<<	ffi_call_LINUX64
-+
-+*/
-+
-+void FFI_HIDDEN
-+ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack)
-+{
-+  const unsigned long bytes = ecif->cif->bytes;
-+  const unsigned long flags = ecif->cif->flags;
-+
-+  typedef union
-+  {
-+    char *c;
-+    unsigned long *ul;
-+    float *f;
-+    double *d;
-+    size_t p;
-+  } valp;
-+
-+  /* 'stacktop' points at the previous backchain pointer.  */
-+  valp stacktop;
-+
-+  /* 'next_arg' points at the space for gpr3, and grows upwards as
-+     we use GPR registers, then continues at rest.  */
-+  valp gpr_base;
-+  valp gpr_end;
-+  valp rest;
-+  valp next_arg;
-+
-+  /* 'fpr_base' points at the space for fpr3, and grows upwards as
-+     we use FPR registers.  */
-+  valp fpr_base;
-+  unsigned int fparg_count;
-+
-+  unsigned int i, words, nargs, nfixedargs;
-+  ffi_type **ptr;
-+  double double_tmp;
-+  union
-+  {
-+    void **v;
-+    char **c;
-+    signed char **sc;
-+    unsigned char **uc;
-+    signed short **ss;
-+    unsigned short **us;
-+    signed int **si;
-+    unsigned int **ui;
-+    unsigned long **ul;
-+    float **f;
-+    double **d;
-+  } p_argv;
-+  unsigned long gprvalue;
-+  unsigned long align;
-+
-+  stacktop.c = (char *) stack + bytes;
-+  gpr_base.ul = stacktop.ul - ASM_NEEDS_REGISTERS64 - NUM_GPR_ARG_REGISTERS64;
-+  gpr_end.ul = gpr_base.ul + NUM_GPR_ARG_REGISTERS64;
-+#if _CALL_ELF == 2
-+  rest.ul = stack + 4 + NUM_GPR_ARG_REGISTERS64;
-+#else
-+  rest.ul = stack + 6 + NUM_GPR_ARG_REGISTERS64;
-+#endif
-+  fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS64;
-+  fparg_count = 0;
-+  next_arg.ul = gpr_base.ul;
-+
-+  /* Check that everything starts aligned properly.  */
-+  FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0);
-+  FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0);
-+  FFI_ASSERT ((bytes & 0xF) == 0);
-+
-+  /* Deal with return values that are actually pass-by-reference.  */
-+  if (flags & FLAG_RETVAL_REFERENCE)
-+    *next_arg.ul++ = (unsigned long) (char *) ecif->rvalue;
-+
-+  /* Now for the arguments.  */
-+  p_argv.v = ecif->avalue;
-+  nargs = ecif->cif->nargs;
-+#if _CALL_ELF != 2
-+  nfixedargs = (unsigned) -1;
-+  if ((flags & FLAG_COMPAT) == 0)
-+#endif
-+    nfixedargs = ecif->cif->nfixedargs;
-+  for (ptr = ecif->cif->arg_types, i = 0;
-+       i < nargs;
-+       i++, ptr++, p_argv.v++)
-+    {
-+#if _CALL_ELF == 2
-+      unsigned int elt, elnum;
-+#endif
-+
-+      switch ((*ptr)->type)
-+	{
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+	case FFI_TYPE_LONGDOUBLE:
-+	  if ((ecif->cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0)
-+	    {
-+	      double_tmp = (*p_argv.d)[0];
-+	      if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
-+		{
-+		  *fpr_base.d++ = double_tmp;
-+# if _CALL_ELF != 2
-+		  if ((flags & FLAG_COMPAT) != 0)
-+		    *next_arg.d = double_tmp;
-+# endif
-+		}
-+	      else
-+		*next_arg.d = double_tmp;
-+	      if (++next_arg.ul == gpr_end.ul)
-+		next_arg.ul = rest.ul;
-+	      fparg_count++;
-+	      double_tmp = (*p_argv.d)[1];
-+	      if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
-+		{
-+		  *fpr_base.d++ = double_tmp;
-+# if _CALL_ELF != 2
-+		  if ((flags & FLAG_COMPAT) != 0)
-+		    *next_arg.d = double_tmp;
-+# endif
-+		}
-+	      else
-+		*next_arg.d = double_tmp;
-+	      if (++next_arg.ul == gpr_end.ul)
-+		next_arg.ul = rest.ul;
-+	      fparg_count++;
-+	      FFI_ASSERT (__LDBL_MANT_DIG__ == 106);
-+	      FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
-+	      break;
-+	    }
-+	  /* Fall through.  */
-+#endif
-+	case FFI_TYPE_DOUBLE:
-+	  double_tmp = **p_argv.d;
-+	  if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
-+	    {
-+	      *fpr_base.d++ = double_tmp;
-+#if _CALL_ELF != 2
-+	      if ((flags & FLAG_COMPAT) != 0)
-+		*next_arg.d = double_tmp;
-+#endif
-+	    }
-+	  else
-+	    *next_arg.d = double_tmp;
-+	  if (++next_arg.ul == gpr_end.ul)
-+	    next_arg.ul = rest.ul;
-+	  fparg_count++;
-+	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
-+	  break;
-+
-+	case FFI_TYPE_FLOAT:
-+	  double_tmp = **p_argv.f;
-+	  if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
-+	    {
-+	      *fpr_base.d++ = double_tmp;
-+#if _CALL_ELF != 2
-+	      if ((flags & FLAG_COMPAT) != 0)
-+		*next_arg.f = (float) double_tmp;
-+#endif
-+	    }
-+	  else
-+	    *next_arg.f = (float) double_tmp;
-+	  if (++next_arg.ul == gpr_end.ul)
-+	    next_arg.ul = rest.ul;
-+	  fparg_count++;
-+	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
-+	  break;
-+
-+	case FFI_TYPE_STRUCT:
-+	  if ((ecif->cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0)
-+	    {
-+	      align = (*ptr)->alignment;
-+	      if (align > 16)
-+		align = 16;
-+	      if (align > 1)
-+		next_arg.p = ALIGN (next_arg.p, align);
-+	    }
-+#if _CALL_ELF == 2
-+	  elt = discover_homogeneous_aggregate (*ptr, &elnum);
-+	  if (elt)
-+	    {
-+	      union {
-+		void *v;
-+		float *f;
-+		double *d;
-+	      } arg;
-+
-+	      arg.v = *p_argv.v;
-+	      if (elt == FFI_TYPE_FLOAT)
-+		{
-+		  do
-+		    {
-+		      double_tmp = *arg.f++;
-+		      if (fparg_count < NUM_FPR_ARG_REGISTERS64
-+			  && i < nfixedargs)
-+			*fpr_base.d++ = double_tmp;
-+		      else
-+			*next_arg.f = (float) double_tmp;
-+		      if (++next_arg.f == gpr_end.f)
-+			next_arg.f = rest.f;
-+		      fparg_count++;
-+		    }
-+		  while (--elnum != 0);
-+		  if ((next_arg.p & 3) != 0)
-+		    {
-+		      if (++next_arg.f == gpr_end.f)
-+			next_arg.f = rest.f;
-+		    }
-+		}
-+	      else
-+		do
-+		  {
-+		    double_tmp = *arg.d++;
-+		    if (fparg_count < NUM_FPR_ARG_REGISTERS64 && i < nfixedargs)
-+		      *fpr_base.d++ = double_tmp;
-+		    else
-+		      *next_arg.d = double_tmp;
-+		    if (++next_arg.d == gpr_end.d)
-+		      next_arg.d = rest.d;
-+		    fparg_count++;
-+		  }
-+		while (--elnum != 0);
-+	    }
-+	  else
-+#endif
-+	    {
-+	      words = ((*ptr)->size + 7) / 8;
-+	      if (next_arg.ul >= gpr_base.ul && next_arg.ul + words > gpr_end.ul)
-+		{
-+		  size_t first = gpr_end.c - next_arg.c;
-+		  memcpy (next_arg.c, *p_argv.c, first);
-+		  memcpy (rest.c, *p_argv.c + first, (*ptr)->size - first);
-+		  next_arg.c = rest.c + words * 8 - first;
-+		}
-+	      else
-+		{
-+		  char *where = next_arg.c;
-+
-+#ifndef __LITTLE_ENDIAN__
-+		  /* Structures with size less than eight bytes are passed
-+		     left-padded.  */
-+		  if ((*ptr)->size < 8)
-+		    where += 8 - (*ptr)->size;
-+#endif
-+		  memcpy (where, *p_argv.c, (*ptr)->size);
-+		  next_arg.ul += words;
-+		  if (next_arg.ul == gpr_end.ul)
-+		    next_arg.ul = rest.ul;
-+		}
-+	    }
-+	  break;
-+
-+	case FFI_TYPE_UINT8:
-+	  gprvalue = **p_argv.uc;
-+	  goto putgpr;
-+	case FFI_TYPE_SINT8:
-+	  gprvalue = **p_argv.sc;
-+	  goto putgpr;
-+	case FFI_TYPE_UINT16:
-+	  gprvalue = **p_argv.us;
-+	  goto putgpr;
-+	case FFI_TYPE_SINT16:
-+	  gprvalue = **p_argv.ss;
-+	  goto putgpr;
-+	case FFI_TYPE_UINT32:
-+	  gprvalue = **p_argv.ui;
-+	  goto putgpr;
-+	case FFI_TYPE_INT:
-+	case FFI_TYPE_SINT32:
-+	  gprvalue = **p_argv.si;
-+	  goto putgpr;
-+
-+	case FFI_TYPE_UINT64:
-+	case FFI_TYPE_SINT64:
-+	case FFI_TYPE_POINTER:
-+	  gprvalue = **p_argv.ul;
-+	putgpr:
-+	  *next_arg.ul++ = gprvalue;
-+	  if (next_arg.ul == gpr_end.ul)
-+	    next_arg.ul = rest.ul;
-+	  break;
-+	}
-+    }
-+
-+  FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS
-+	      || (next_arg.ul >= gpr_base.ul
-+		  && next_arg.ul <= gpr_base.ul + 4));
-+}
-+
-+
-+#if _CALL_ELF == 2
-+#define MIN_CACHE_LINE_SIZE 8
-+
-+static void
-+flush_icache (char *wraddr, char *xaddr, int size)
-+{
-+  int i;
-+  for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE)
-+    __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;"
-+		      : : "r" (xaddr + i), "r" (wraddr + i) : "memory");
-+  __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;"
-+		    : : "r"(xaddr + size - 1), "r"(wraddr + size - 1)
-+		    : "memory");
-+}
-+#endif
-+
-+ffi_status
-+ffi_prep_closure_loc_linux64 (ffi_closure *closure,
-+			      ffi_cif *cif,
-+			      void (*fun) (ffi_cif *, void *, void **, void *),
-+			      void *user_data,
-+			      void *codeloc)
-+{
-+#if _CALL_ELF == 2
-+  unsigned int *tramp = (unsigned int *) &closure->tramp[0];
-+
-+  if (cif->abi < FFI_LINUX || cif->abi >= FFI_LAST_ABI)
-+    return FFI_BAD_ABI;
-+
-+  tramp[0] = 0xe96c0018;	/* 0:	ld	11,2f-0b(12)	*/
-+  tramp[1] = 0xe98c0010;	/*	ld	12,1f-0b(12)	*/
-+  tramp[2] = 0x7d8903a6;	/*	mtctr	12		*/
-+  tramp[3] = 0x4e800420;	/*	bctr			*/
-+				/* 1:	.quad	function_addr	*/
-+				/* 2:	.quad	context		*/
-+  *(void **) &tramp[4] = (void *) ffi_closure_LINUX64;
-+  *(void **) &tramp[6] = codeloc;
-+  flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE);
-+#else
-+  void **tramp = (void **) &closure->tramp[0];
-+
-+  if (cif->abi < FFI_LINUX || cif->abi >= FFI_LAST_ABI)
-+    return FFI_BAD_ABI;
-+
-+  /* Copy function address and TOC from ffi_closure_LINUX64.  */
-+  memcpy (tramp, (char *) ffi_closure_LINUX64, 16);
-+  tramp[2] = tramp[1];
-+  tramp[1] = codeloc;
-+#endif
-+
-+  closure->cif = cif;
-+  closure->fun = fun;
-+  closure->user_data = user_data;
-+
-+  return FFI_OK;
-+}
-+
-+
-+int FFI_HIDDEN
-+ffi_closure_helper_LINUX64 (ffi_closure *closure, void *rvalue,
-+			    unsigned long *pst, ffi_dblfl *pfr)
-+{
-+  /* rvalue is the pointer to space for return value in closure assembly */
-+  /* pst is the pointer to parameter save area
-+     (r3-r10 are stored into its first 8 slots by ffi_closure_LINUX64) */
-+  /* pfr is the pointer to where f1-f13 are stored in ffi_closure_LINUX64 */
-+
-+  void **avalue;
-+  ffi_type **arg_types;
-+  unsigned long i, avn, nfixedargs;
-+  ffi_cif *cif;
-+  ffi_dblfl *end_pfr = pfr + NUM_FPR_ARG_REGISTERS64;
-+  unsigned long align;
-+
-+  cif = closure->cif;
-+  avalue = alloca (cif->nargs * sizeof (void *));
-+
-+  /* Copy the caller's structure return value address so that the
-+     closure returns the data directly to the caller.  */
-+  if (cif->rtype->type == FFI_TYPE_STRUCT
-+      && (cif->flags & FLAG_RETURNS_SMST) == 0)
-+    {
-+      rvalue = (void *) *pst;
-+      pst++;
-+    }
-+
-+  i = 0;
-+  avn = cif->nargs;
-+#if _CALL_ELF != 2
-+  nfixedargs = (unsigned) -1;
-+  if ((cif->flags & FLAG_COMPAT) == 0)
-+#endif
-+    nfixedargs = cif->nfixedargs;
-+  arg_types = cif->arg_types;
-+
-+  /* Grab the addresses of the arguments from the stack frame.  */
-+  while (i < avn)
-+    {
-+      unsigned int elt, elnum;
-+
-+      switch (arg_types[i]->type)
-+	{
-+	case FFI_TYPE_SINT8:
-+	case FFI_TYPE_UINT8:
-+#ifndef __LITTLE_ENDIAN__
-+	  avalue[i] = (char *) pst + 7;
-+	  pst++;
-+	  break;
-+#endif
-+
-+	case FFI_TYPE_SINT16:
-+	case FFI_TYPE_UINT16:
-+#ifndef __LITTLE_ENDIAN__
-+	  avalue[i] = (char *) pst + 6;
-+	  pst++;
-+	  break;
-+#endif
-+
-+	case FFI_TYPE_SINT32:
-+	case FFI_TYPE_UINT32:
-+#ifndef __LITTLE_ENDIAN__
-+	  avalue[i] = (char *) pst + 4;
-+	  pst++;
-+	  break;
-+#endif
-+
-+	case FFI_TYPE_SINT64:
-+	case FFI_TYPE_UINT64:
-+	case FFI_TYPE_POINTER:
-+	  avalue[i] = pst;
-+	  pst++;
-+	  break;
-+
-+	case FFI_TYPE_STRUCT:
-+	  if ((cif->abi & FFI_LINUX_STRUCT_ALIGN) != 0)
-+	    {
-+	      align = arg_types[i]->alignment;
-+	      if (align > 16)
-+		align = 16;
-+	      if (align > 1)
-+		pst = (unsigned long *) ALIGN ((size_t) pst, align);
-+	    }
-+	  elt = 0;
-+#if _CALL_ELF == 2
-+	  elt = discover_homogeneous_aggregate (arg_types[i], &elnum);
-+#endif
-+	  if (elt)
-+	    {
-+	      union {
-+		void *v;
-+		unsigned long *ul;
-+		float *f;
-+		double *d;
-+		size_t p;
-+	      } to, from;
-+
-+	      /* Repackage the aggregate from its parts.  The
-+		 aggregate size is not greater than the space taken by
-+		 the registers so store back to the register/parameter
-+		 save arrays.  */
-+	      if (pfr + elnum <= end_pfr)
-+		to.v = pfr;
-+	      else
-+		to.v = pst;
-+
-+	      avalue[i] = to.v;
-+	      from.ul = pst;
-+	      if (elt == FFI_TYPE_FLOAT)
-+		{
-+		  do
-+		    {
-+		      if (pfr < end_pfr && i < nfixedargs)
-+			{
-+			  *to.f = (float) pfr->d;
-+			  pfr++;
-+			}
-+		      else
-+			*to.f = *from.f;
-+		      to.f++;
-+		      from.f++;
-+		    }
-+		  while (--elnum != 0);
-+		}
-+	      else
-+		{
-+		  do
-+		    {
-+		      if (pfr < end_pfr && i < nfixedargs)
-+			{
-+			  *to.d = pfr->d;
-+			  pfr++;
-+			}
-+		      else
-+			*to.d = *from.d;
-+		      to.d++;
-+		      from.d++;
-+		    }
-+		  while (--elnum != 0);
-+		}
-+	    }
-+	  else
-+	    {
-+#ifndef __LITTLE_ENDIAN__
-+	      /* Structures with size less than eight bytes are passed
-+		 left-padded.  */
-+	      if (arg_types[i]->size < 8)
-+		avalue[i] = (char *) pst + 8 - arg_types[i]->size;
-+	      else
-+#endif
-+		avalue[i] = pst;
-+	    }
-+	  pst += (arg_types[i]->size + 7) / 8;
-+	  break;
-+
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+	case FFI_TYPE_LONGDOUBLE:
-+	  if ((cif->abi & FFI_LINUX_LONG_DOUBLE_128) != 0)
-+	    {
-+	      if (pfr + 1 < end_pfr && i + 1 < nfixedargs)
-+		{
-+		  avalue[i] = pfr;
-+		  pfr += 2;
-+		}
-+	      else
-+		{
-+		  if (pfr < end_pfr && i < nfixedargs)
-+		    {
-+		      /* Passed partly in f13 and partly on the stack.
-+			 Move it all to the stack.  */
-+		      *pst = *(unsigned long *) pfr;
-+		      pfr++;
-+		    }
-+		  avalue[i] = pst;
-+		}
-+	      pst += 2;
-+	      break;
-+	    }
-+	  /* Fall through.  */
-+#endif
-+	case FFI_TYPE_DOUBLE:
-+	  /* On the outgoing stack all values are aligned to 8 */
-+	  /* there are 13 64bit floating point registers */
-+
-+	  if (pfr < end_pfr && i < nfixedargs)
-+	    {
-+	      avalue[i] = pfr;
-+	      pfr++;
-+	    }
-+	  else
-+	    avalue[i] = pst;
-+	  pst++;
-+	  break;
-+
-+	case FFI_TYPE_FLOAT:
-+	  if (pfr < end_pfr && i < nfixedargs)
-+	    {
-+	      /* Float values are stored as doubles in the
-+		 ffi_closure_LINUX64 code.  Fix them here.  */
-+	      pfr->f = (float) pfr->d;
-+	      avalue[i] = pfr;
-+	      pfr++;
-+	    }
-+	  else
-+	    avalue[i] = pst;
-+	  pst++;
-+	  break;
-+
-+	default:
-+	  FFI_ASSERT (0);
-+	}
-+
-+      i++;
-+    }
-+
-+
-+  (closure->fun) (cif, rvalue, avalue, closure->user_data);
-+
-+  /* Tell ffi_closure_LINUX64 how to perform return type promotions.  */
-+  if ((cif->flags & FLAG_RETURNS_SMST) != 0)
-+    {
-+      if ((cif->flags & FLAG_RETURNS_FP) == 0)
-+	return FFI_V2_TYPE_SMALL_STRUCT + cif->rtype->size - 1;
-+      else if ((cif->flags & FLAG_RETURNS_64BITS) != 0)
-+	return FFI_V2_TYPE_DOUBLE_HOMOG;
-+      else
-+	return FFI_V2_TYPE_FLOAT_HOMOG;
-+    }
-+  return cif->rtype->type;
-+}
-+#endif
-diff --git a/js/src/ctypes/libffi/src/powerpc/ffi_powerpc.h b/js/src/ctypes/libffi/src/powerpc/ffi_powerpc.h
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/powerpc/ffi_powerpc.h
-@@ -0,0 +1,77 @@
-+/* -----------------------------------------------------------------------
-+   ffi_powerpc.h - Copyright (C) 2013 IBM
-+                   Copyright (C) 2011 Anthony Green
-+                   Copyright (C) 2011 Kyle Moffett
-+                   Copyright (C) 2008 Red Hat, Inc
-+                   Copyright (C) 2007, 2008 Free Software Foundation, Inc
-+                   Copyright (c) 1998 Geoffrey Keating
-+
-+   PowerPC Foreign Function Interface
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+   IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR
-+   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-+   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+   OTHER DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+enum {
-+  /* The assembly depends on these exact flags.  */
-+  /* These go in cr7 */
-+  FLAG_RETURNS_SMST	= 1 << (31-31), /* Used for FFI_SYSV small structs.  */
-+  FLAG_RETURNS_NOTHING  = 1 << (31-30),
-+  FLAG_RETURNS_FP       = 1 << (31-29),
-+  FLAG_RETURNS_64BITS   = 1 << (31-28),
-+
-+  /* This goes in cr6 */
-+  FLAG_RETURNS_128BITS  = 1 << (31-27),
-+
-+  FLAG_COMPAT		= 1 << (31- 8), /* Not used by assembly */
-+
-+  /* These go in cr1 */
-+  FLAG_ARG_NEEDS_COPY   = 1 << (31- 7), /* Used by sysv code */
-+  FLAG_ARG_NEEDS_PSAVE  = FLAG_ARG_NEEDS_COPY, /* Used by linux64 code */
-+  FLAG_FP_ARGUMENTS     = 1 << (31- 6), /* cr1.eq; specified by ABI */
-+  FLAG_4_GPR_ARGUMENTS  = 1 << (31- 5),
-+  FLAG_RETVAL_REFERENCE = 1 << (31- 4)
-+};
-+
-+typedef union
-+{
-+  float f;
-+  double d;
-+} ffi_dblfl;
-+
-+void FFI_HIDDEN ffi_closure_SYSV (void);
-+void FFI_HIDDEN ffi_call_SYSV(extended_cif *, unsigned, unsigned, unsigned *,
-+			      void (*)(void));
-+
-+void FFI_HIDDEN ffi_prep_types_sysv (ffi_abi);
-+ffi_status FFI_HIDDEN ffi_prep_cif_sysv (ffi_cif *);
-+int FFI_HIDDEN ffi_closure_helper_SYSV (ffi_closure *, void *, unsigned long *,
-+					ffi_dblfl *, unsigned long *);
-+
-+void FFI_HIDDEN ffi_call_LINUX64(extended_cif *, unsigned long, unsigned long,
-+				 unsigned long *, void (*)(void));
-+void FFI_HIDDEN ffi_closure_LINUX64 (void);
-+
-+void FFI_HIDDEN ffi_prep_types_linux64 (ffi_abi);
-+ffi_status FFI_HIDDEN ffi_prep_cif_linux64 (ffi_cif *);
-+ffi_status FFI_HIDDEN ffi_prep_cif_linux64_var (ffi_cif *, unsigned int,
-+						unsigned int);
-+void FFI_HIDDEN ffi_prep_args64 (extended_cif *, unsigned long *const);
-+int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_closure *, void *,
-+					   unsigned long *, ffi_dblfl *);
-diff --git a/js/src/ctypes/libffi/src/powerpc/ffi_sysv.c b/js/src/ctypes/libffi/src/powerpc/ffi_sysv.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/powerpc/ffi_sysv.c
-@@ -0,0 +1,931 @@
-+/* -----------------------------------------------------------------------
-+   ffi_sysv.c - Copyright (C) 2013 IBM
-+                Copyright (C) 2011 Anthony Green
-+                Copyright (C) 2011 Kyle Moffett
-+                Copyright (C) 2008 Red Hat, Inc
-+                Copyright (C) 2007, 2008 Free Software Foundation, Inc
-+                Copyright (c) 1998 Geoffrey Keating
-+
-+   PowerPC Foreign Function Interface
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+   IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR
-+   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-+   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+   OTHER DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#include "ffi.h"
-+
-+#ifndef POWERPC64
-+#include "ffi_common.h"
-+#include "ffi_powerpc.h"
-+
-+
-+/* About the SYSV ABI.  */
-+#define ASM_NEEDS_REGISTERS 4
-+#define NUM_GPR_ARG_REGISTERS 8
-+#define NUM_FPR_ARG_REGISTERS 8
-+
-+
-+#if HAVE_LONG_DOUBLE_VARIANT && FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+/* Adjust size of ffi_type_longdouble.  */
-+void FFI_HIDDEN
-+ffi_prep_types_sysv (ffi_abi abi)
-+{
-+  if ((abi & (FFI_SYSV | FFI_SYSV_LONG_DOUBLE_128)) == FFI_SYSV)
-+    {
-+      ffi_type_longdouble.size = 8;
-+      ffi_type_longdouble.alignment = 8;
-+    }
-+  else
-+    {
-+      ffi_type_longdouble.size = 16;
-+      ffi_type_longdouble.alignment = 16;
-+    }
-+}
-+#endif
-+
-+/* Transform long double, double and float to other types as per abi.  */
-+static int
-+translate_float (int abi, int type)
-+{
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+  if (type == FFI_TYPE_LONGDOUBLE
-+      && (abi & FFI_SYSV_LONG_DOUBLE_128) == 0)
-+    type = FFI_TYPE_DOUBLE;
-+#endif
-+  if ((abi & FFI_SYSV_SOFT_FLOAT) != 0)
-+    {
-+      if (type == FFI_TYPE_FLOAT)
-+	type = FFI_TYPE_UINT32;
-+      else if (type == FFI_TYPE_DOUBLE)
-+	type = FFI_TYPE_UINT64;
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+      else if (type == FFI_TYPE_LONGDOUBLE)
-+	type = FFI_TYPE_UINT128;
-+    }
-+  else if ((abi & FFI_SYSV_IBM_LONG_DOUBLE) == 0)
-+    {
-+      if (type == FFI_TYPE_LONGDOUBLE)
-+	type = FFI_TYPE_STRUCT;
-+#endif
-+    }
-+  return type;
-+}
-+
-+/* Perform machine dependent cif processing */
-+static ffi_status
-+ffi_prep_cif_sysv_core (ffi_cif *cif)
-+{
-+  ffi_type **ptr;
-+  unsigned bytes;
-+  unsigned i, fparg_count = 0, intarg_count = 0;
-+  unsigned flags = cif->flags;
-+  unsigned struct_copy_size = 0;
-+  unsigned type = cif->rtype->type;
-+  unsigned size = cif->rtype->size;
-+
-+  /* The machine-independent calculation of cif->bytes doesn't work
-+     for us.  Redo the calculation.  */
-+
-+  /* Space for the frame pointer, callee's LR, and the asm's temp regs.  */
-+  bytes = (2 + ASM_NEEDS_REGISTERS) * sizeof (int);
-+
-+  /* Space for the GPR registers.  */
-+  bytes += NUM_GPR_ARG_REGISTERS * sizeof (int);
-+
-+  /* Return value handling.  The rules for SYSV are as follows:
-+     - 32-bit (or less) integer values are returned in gpr3;
-+     - Structures of size <= 4 bytes also returned in gpr3;
-+     - 64-bit integer values and structures between 5 and 8 bytes are returned
-+     in gpr3 and gpr4;
-+     - Larger structures are allocated space and a pointer is passed as
-+     the first argument.
-+     - Single/double FP values are returned in fpr1;
-+     - long doubles (if not equivalent to double) are returned in
-+     fpr1,fpr2 for Linux and as for large structs for SysV.  */
-+
-+  type = translate_float (cif->abi, type);
-+
-+  switch (type)
-+    {
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+    case FFI_TYPE_LONGDOUBLE:
-+      flags |= FLAG_RETURNS_128BITS;
-+      /* Fall through.  */
-+#endif
-+    case FFI_TYPE_DOUBLE:
-+      flags |= FLAG_RETURNS_64BITS;
-+      /* Fall through.  */
-+    case FFI_TYPE_FLOAT:
-+      flags |= FLAG_RETURNS_FP;
-+#ifdef __NO_FPRS__
-+      return FFI_BAD_ABI;
-+#endif
-+      break;
-+
-+    case FFI_TYPE_UINT128:
-+      flags |= FLAG_RETURNS_128BITS;
-+      /* Fall through.  */
-+    case FFI_TYPE_UINT64:
-+    case FFI_TYPE_SINT64:
-+      flags |= FLAG_RETURNS_64BITS;
-+      break;
-+
-+    case FFI_TYPE_STRUCT:
-+      /* The final SYSV ABI says that structures smaller or equal 8 bytes
-+	 are returned in r3/r4.  A draft ABI used by linux instead
-+	 returns them in memory.  */
-+      if ((cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8)
-+	{
-+	  flags |= FLAG_RETURNS_SMST;
-+	  break;
-+	}
-+      intarg_count++;
-+      flags |= FLAG_RETVAL_REFERENCE;
-+      /* Fall through.  */
-+    case FFI_TYPE_VOID:
-+      flags |= FLAG_RETURNS_NOTHING;
-+      break;
-+
-+    default:
-+      /* Returns 32-bit integer, or similar.  Nothing to do here.  */
-+      break;
-+    }
-+
-+  /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the
-+     first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest
-+     goes on the stack.  Structures and long doubles (if not equivalent
-+     to double) are passed as a pointer to a copy of the structure.
-+     Stuff on the stack needs to keep proper alignment.  */
-+  for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
-+    {
-+      unsigned short typenum = (*ptr)->type;
-+
-+      typenum = translate_float (cif->abi, typenum);
-+
-+      switch (typenum)
-+	{
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+	case FFI_TYPE_LONGDOUBLE:
-+	  fparg_count++;
-+	  /* Fall thru */
-+#endif
-+	case FFI_TYPE_DOUBLE:
-+	  fparg_count++;
-+	  /* If this FP arg is going on the stack, it must be
-+	     8-byte-aligned.  */
-+	  if (fparg_count > NUM_FPR_ARG_REGISTERS
-+	      && intarg_count >= NUM_GPR_ARG_REGISTERS
-+	      && intarg_count % 2 != 0)
-+	    intarg_count++;
-+#ifdef __NO_FPRS__
-+	  return FFI_BAD_ABI;
-+#endif
-+	  break;
-+
-+	case FFI_TYPE_FLOAT:
-+	  fparg_count++;
-+#ifdef __NO_FPRS__
-+	  return FFI_BAD_ABI;
-+#endif
-+	  break;
-+
-+	case FFI_TYPE_UINT128:
-+	  /* A long double in FFI_LINUX_SOFT_FLOAT can use only a set
-+	     of four consecutive gprs. If we do not have enough, we
-+	     have to adjust the intarg_count value.  */
-+	  if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3
-+	      && intarg_count < NUM_GPR_ARG_REGISTERS)
-+	    intarg_count = NUM_GPR_ARG_REGISTERS;
-+	  intarg_count += 4;
-+	  break;
-+
-+	case FFI_TYPE_UINT64:
-+	case FFI_TYPE_SINT64:
-+	  /* 'long long' arguments are passed as two words, but
-+	     either both words must fit in registers or both go
-+	     on the stack.  If they go on the stack, they must
-+	     be 8-byte-aligned.
-+
-+	     Also, only certain register pairs can be used for
-+	     passing long long int -- specifically (r3,r4), (r5,r6),
-+	     (r7,r8), (r9,r10).  */
-+	  if (intarg_count == NUM_GPR_ARG_REGISTERS-1
-+	      || intarg_count % 2 != 0)
-+	    intarg_count++;
-+	  intarg_count += 2;
-+	  break;
-+
-+	case FFI_TYPE_STRUCT:
-+	  /* We must allocate space for a copy of these to enforce
-+	     pass-by-value.  Pad the space up to a multiple of 16
-+	     bytes (the maximum alignment required for anything under
-+	     the SYSV ABI).  */
-+	  struct_copy_size += ((*ptr)->size + 15) & ~0xF;
-+	  /* Fall through (allocate space for the pointer).  */
-+
-+	case FFI_TYPE_POINTER:
-+	case FFI_TYPE_INT:
-+	case FFI_TYPE_UINT32:
-+	case FFI_TYPE_SINT32:
-+	case FFI_TYPE_UINT16:
-+	case FFI_TYPE_SINT16:
-+	case FFI_TYPE_UINT8:
-+	case FFI_TYPE_SINT8:
-+	  /* Everything else is passed as a 4-byte word in a GPR, either
-+	     the object itself or a pointer to it.  */
-+	  intarg_count++;
-+	  break;
-+
-+	default:
-+	  FFI_ASSERT (0);
-+	}
-+    }
-+
-+  if (fparg_count != 0)
-+    flags |= FLAG_FP_ARGUMENTS;
-+  if (intarg_count > 4)
-+    flags |= FLAG_4_GPR_ARGUMENTS;
-+  if (struct_copy_size != 0)
-+    flags |= FLAG_ARG_NEEDS_COPY;
-+
-+  /* Space for the FPR registers, if needed.  */
-+  if (fparg_count != 0)
-+    bytes += NUM_FPR_ARG_REGISTERS * sizeof (double);
-+
-+  /* Stack space.  */
-+  if (intarg_count > NUM_GPR_ARG_REGISTERS)
-+    bytes += (intarg_count - NUM_GPR_ARG_REGISTERS) * sizeof (int);
-+  if (fparg_count > NUM_FPR_ARG_REGISTERS)
-+    bytes += (fparg_count - NUM_FPR_ARG_REGISTERS) * sizeof (double);
-+
-+  /* The stack space allocated needs to be a multiple of 16 bytes.  */
-+  bytes = (bytes + 15) & ~0xF;
-+
-+  /* Add in the space for the copied structures.  */
-+  bytes += struct_copy_size;
-+
-+  cif->flags = flags;
-+  cif->bytes = bytes;
-+
-+  return FFI_OK;
-+}
-+
-+ffi_status FFI_HIDDEN
-+ffi_prep_cif_sysv (ffi_cif *cif)
-+{
-+  if ((cif->abi & FFI_SYSV) == 0)
-+    {
-+      /* This call is from old code.  Translate to new ABI values.  */
-+      cif->flags |= FLAG_COMPAT;
-+      switch (cif->abi)
-+	{
-+	default:
-+	  return FFI_BAD_ABI;
-+
-+	case FFI_COMPAT_SYSV:
-+	  cif->abi = FFI_SYSV | FFI_SYSV_STRUCT_RET | FFI_SYSV_LONG_DOUBLE_128;
-+	  break;
-+
-+	case FFI_COMPAT_GCC_SYSV:
-+	  cif->abi = FFI_SYSV | FFI_SYSV_LONG_DOUBLE_128;
-+	  break;
-+
-+	case FFI_COMPAT_LINUX:
-+	  cif->abi = (FFI_SYSV | FFI_SYSV_IBM_LONG_DOUBLE
-+		      | FFI_SYSV_LONG_DOUBLE_128);
-+	  break;
-+
-+	case FFI_COMPAT_LINUX_SOFT_FLOAT:
-+	  cif->abi = (FFI_SYSV | FFI_SYSV_SOFT_FLOAT | FFI_SYSV_IBM_LONG_DOUBLE
-+		      | FFI_SYSV_LONG_DOUBLE_128);
-+	  break;
-+	}
-+    }
-+  return ffi_prep_cif_sysv_core (cif);
-+}
-+
-+/* ffi_prep_args_SYSV is called by the assembly routine once stack space
-+   has been allocated for the function's arguments.
-+
-+   The stack layout we want looks like this:
-+
-+   |   Return address from ffi_call_SYSV 4bytes	|	higher addresses
-+   |--------------------------------------------|
-+   |   Previous backchain pointer	4	|       stack pointer here
-+   |--------------------------------------------|<+ <<<	on entry to
-+   |   Saved r28-r31			4*4	| |	ffi_call_SYSV
-+   |--------------------------------------------| |
-+   |   GPR registers r3-r10		8*4	| |	ffi_call_SYSV
-+   |--------------------------------------------| |
-+   |   FPR registers f1-f8 (optional)	8*8	| |
-+   |--------------------------------------------| |	stack	|
-+   |   Space for copied structures		| |	grows	|
-+   |--------------------------------------------| |	down    V
-+   |   Parameters that didn't fit in registers  | |
-+   |--------------------------------------------| |	lower addresses
-+   |   Space for callee's LR		4	| |
-+   |--------------------------------------------| |	stack pointer here
-+   |   Current backchain pointer	4	|-/	during
-+   |--------------------------------------------|   <<<	ffi_call_SYSV
-+
-+*/
-+
-+void FFI_HIDDEN
-+ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack)
-+{
-+  const unsigned bytes = ecif->cif->bytes;
-+  const unsigned flags = ecif->cif->flags;
-+
-+  typedef union
-+  {
-+    char *c;
-+    unsigned *u;
-+    long long *ll;
-+    float *f;
-+    double *d;
-+  } valp;
-+
-+  /* 'stacktop' points at the previous backchain pointer.  */
-+  valp stacktop;
-+
-+  /* 'gpr_base' points at the space for gpr3, and grows upwards as
-+     we use GPR registers.  */
-+  valp gpr_base;
-+  int intarg_count;
-+
-+#ifndef __NO_FPRS__
-+  /* 'fpr_base' points at the space for fpr1, and grows upwards as
-+     we use FPR registers.  */
-+  valp fpr_base;
-+  int fparg_count;
-+#endif
-+
-+  /* 'copy_space' grows down as we put structures in it.  It should
-+     stay 16-byte aligned.  */
-+  valp copy_space;
-+
-+  /* 'next_arg' grows up as we put parameters in it.  */
-+  valp next_arg;
-+
-+  int i;
-+  ffi_type **ptr;
-+#ifndef __NO_FPRS__
-+  double double_tmp;
-+#endif
-+  union
-+  {
-+    void **v;
-+    char **c;
-+    signed char **sc;
-+    unsigned char **uc;
-+    signed short **ss;
-+    unsigned short **us;
-+    unsigned int **ui;
-+    long long **ll;
-+    float **f;
-+    double **d;
-+  } p_argv;
-+  size_t struct_copy_size;
-+  unsigned gprvalue;
-+
-+  stacktop.c = (char *) stack + bytes;
-+  gpr_base.u = stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS;
-+  intarg_count = 0;
-+#ifndef __NO_FPRS__
-+  fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS;
-+  fparg_count = 0;
-+  copy_space.c = ((flags & FLAG_FP_ARGUMENTS) ? fpr_base.c : gpr_base.c);
-+#else
-+  copy_space.c = gpr_base.c;
-+#endif
-+  next_arg.u = stack + 2;
-+
-+  /* Check that everything starts aligned properly.  */
-+  FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0);
-+  FFI_ASSERT (((unsigned long) copy_space.c & 0xF) == 0);
-+  FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0);
-+  FFI_ASSERT ((bytes & 0xF) == 0);
-+  FFI_ASSERT (copy_space.c >= next_arg.c);
-+
-+  /* Deal with return values that are actually pass-by-reference.  */
-+  if (flags & FLAG_RETVAL_REFERENCE)
-+    {
-+      *gpr_base.u++ = (unsigned long) (char *) ecif->rvalue;
-+      intarg_count++;
-+    }
-+
-+  /* Now for the arguments.  */
-+  p_argv.v = ecif->avalue;
-+  for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs;
-+       i > 0;
-+       i--, ptr++, p_argv.v++)
-+    {
-+      unsigned int typenum = (*ptr)->type;
-+
-+      typenum = translate_float (ecif->cif->abi, typenum);
-+
-+      /* Now test the translated value */
-+      switch (typenum)
-+	{
-+#ifndef __NO_FPRS__
-+# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+	case FFI_TYPE_LONGDOUBLE:
-+	  double_tmp = (*p_argv.d)[0];
-+
-+	  if (fparg_count >= NUM_FPR_ARG_REGISTERS - 1)
-+	    {
-+	      if (intarg_count >= NUM_GPR_ARG_REGISTERS
-+		  && intarg_count % 2 != 0)
-+		{
-+		  intarg_count++;
-+		  next_arg.u++;
-+		}
-+	      *next_arg.d = double_tmp;
-+	      next_arg.u += 2;
-+	      double_tmp = (*p_argv.d)[1];
-+	      *next_arg.d = double_tmp;
-+	      next_arg.u += 2;
-+	    }
-+	  else
-+	    {
-+	      *fpr_base.d++ = double_tmp;
-+	      double_tmp = (*p_argv.d)[1];
-+	      *fpr_base.d++ = double_tmp;
-+	    }
-+
-+	  fparg_count += 2;
-+	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
-+	  break;
-+# endif
-+	case FFI_TYPE_DOUBLE:
-+	  double_tmp = **p_argv.d;
-+
-+	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
-+	    {
-+	      if (intarg_count >= NUM_GPR_ARG_REGISTERS
-+		  && intarg_count % 2 != 0)
-+		{
-+		  intarg_count++;
-+		  next_arg.u++;
-+		}
-+	      *next_arg.d = double_tmp;
-+	      next_arg.u += 2;
-+	    }
-+	  else
-+	    *fpr_base.d++ = double_tmp;
-+	  fparg_count++;
-+	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
-+	  break;
-+
-+	case FFI_TYPE_FLOAT:
-+	  double_tmp = **p_argv.f;
-+	  if (fparg_count >= NUM_FPR_ARG_REGISTERS)
-+	    {
-+	      *next_arg.f = (float) double_tmp;
-+	      next_arg.u += 1;
-+	      intarg_count++;
-+	    }
-+	  else
-+	    *fpr_base.d++ = double_tmp;
-+	  fparg_count++;
-+	  FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
-+	  break;
-+#endif /* have FPRs */
-+
-+	case FFI_TYPE_UINT128:
-+	  /* The soft float ABI for long doubles works like this, a long double
-+	     is passed in four consecutive GPRs if available.  A maximum of 2
-+	     long doubles can be passed in gprs.  If we do not have 4 GPRs
-+	     left, the long double is passed on the stack, 4-byte aligned.  */
-+	  {
-+	    unsigned int int_tmp;
-+	    unsigned int ii;
-+	    if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3)
-+	      {
-+		if (intarg_count < NUM_GPR_ARG_REGISTERS)
-+		  intarg_count = NUM_GPR_ARG_REGISTERS;
-+		for (ii = 0; ii < 4; ii++)
-+		  {
-+		    int_tmp = (*p_argv.ui)[ii];
-+		    *next_arg.u++ = int_tmp;
-+		  }
-+	      }
-+	    else
-+	      {
-+		for (ii = 0; ii < 4; ii++)
-+		  {
-+		    int_tmp = (*p_argv.ui)[ii];
-+		    *gpr_base.u++ = int_tmp;
-+		  }
-+	      }
-+	    intarg_count += 4;
-+	    break;
-+	  }
-+
-+	case FFI_TYPE_UINT64:
-+	case FFI_TYPE_SINT64:
-+	  if (intarg_count == NUM_GPR_ARG_REGISTERS-1)
-+	    intarg_count++;
-+	  if (intarg_count >= NUM_GPR_ARG_REGISTERS)
-+	    {
-+	      if (intarg_count % 2 != 0)
-+		{
-+		  intarg_count++;
-+		  next_arg.u++;
-+		}
-+	      *next_arg.ll = **p_argv.ll;
-+	      next_arg.u += 2;
-+	    }
-+	  else
-+	    {
-+	      /* The abi states only certain register pairs can be
-+		 used for passing long long int specifically (r3,r4),
-+		 (r5,r6), (r7,r8), (r9,r10).  If next arg is long long
-+		 but not correct starting register of pair then skip
-+		 until the proper starting register.  */
-+	      if (intarg_count % 2 != 0)
-+		{
-+		  intarg_count ++;
-+		  gpr_base.u++;
-+		}
-+	      *gpr_base.ll++ = **p_argv.ll;
-+	    }
-+	  intarg_count += 2;
-+	  break;
-+
-+	case FFI_TYPE_STRUCT:
-+	  struct_copy_size = ((*ptr)->size + 15) & ~0xF;
-+	  copy_space.c -= struct_copy_size;
-+	  memcpy (copy_space.c, *p_argv.c, (*ptr)->size);
-+
-+	  gprvalue = (unsigned long) copy_space.c;
-+
-+	  FFI_ASSERT (copy_space.c > next_arg.c);
-+	  FFI_ASSERT (flags & FLAG_ARG_NEEDS_COPY);
-+	  goto putgpr;
-+
-+	case FFI_TYPE_UINT8:
-+	  gprvalue = **p_argv.uc;
-+	  goto putgpr;
-+	case FFI_TYPE_SINT8:
-+	  gprvalue = **p_argv.sc;
-+	  goto putgpr;
-+	case FFI_TYPE_UINT16:
-+	  gprvalue = **p_argv.us;
-+	  goto putgpr;
-+	case FFI_TYPE_SINT16:
-+	  gprvalue = **p_argv.ss;
-+	  goto putgpr;
-+
-+	case FFI_TYPE_INT:
-+	case FFI_TYPE_UINT32:
-+	case FFI_TYPE_SINT32:
-+	case FFI_TYPE_POINTER:
-+
-+	  gprvalue = **p_argv.ui;
-+
-+	putgpr:
-+	  if (intarg_count >= NUM_GPR_ARG_REGISTERS)
-+	    *next_arg.u++ = gprvalue;
-+	  else
-+	    *gpr_base.u++ = gprvalue;
-+	  intarg_count++;
-+	  break;
-+	}
-+    }
-+
-+  /* Check that we didn't overrun the stack...  */
-+  FFI_ASSERT (copy_space.c >= next_arg.c);
-+  FFI_ASSERT (gpr_base.u <= stacktop.u - ASM_NEEDS_REGISTERS);
-+  /* The assert below is testing that the number of integer arguments agrees
-+     with the number found in ffi_prep_cif_machdep().  However, intarg_count
-+     is incremented whenever we place an FP arg on the stack, so account for
-+     that before our assert test.  */
-+#ifndef __NO_FPRS__
-+  if (fparg_count > NUM_FPR_ARG_REGISTERS)
-+    intarg_count -= fparg_count - NUM_FPR_ARG_REGISTERS;
-+  FFI_ASSERT (fpr_base.u
-+	      <= stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS);
-+#endif
-+  FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4);
-+}
-+
-+#define MIN_CACHE_LINE_SIZE 8
-+
-+static void
-+flush_icache (char *wraddr, char *xaddr, int size)
-+{
-+  int i;
-+  for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE)
-+    __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;"
-+		      : : "r" (xaddr + i), "r" (wraddr + i) : "memory");
-+  __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;"
-+		    : : "r"(xaddr + size - 1), "r"(wraddr + size - 1)
-+		    : "memory");
-+}
-+
-+ffi_status FFI_HIDDEN
-+ffi_prep_closure_loc_sysv (ffi_closure *closure,
-+			   ffi_cif *cif,
-+			   void (*fun) (ffi_cif *, void *, void **, void *),
-+			   void *user_data,
-+			   void *codeloc)
-+{
-+  unsigned int *tramp;
-+
-+  if (cif->abi < FFI_SYSV || cif->abi >= FFI_LAST_ABI)
-+    return FFI_BAD_ABI;
-+
-+  tramp = (unsigned int *) &closure->tramp[0];
-+  tramp[0] = 0x7c0802a6;  /*   mflr    r0 */
-+  tramp[1] = 0x4800000d;  /*   bl      10 <trampoline_initial+0x10> */
-+  tramp[4] = 0x7d6802a6;  /*   mflr    r11 */
-+  tramp[5] = 0x7c0803a6;  /*   mtlr    r0 */
-+  tramp[6] = 0x800b0000;  /*   lwz     r0,0(r11) */
-+  tramp[7] = 0x816b0004;  /*   lwz     r11,4(r11) */
-+  tramp[8] = 0x7c0903a6;  /*   mtctr   r0 */
-+  tramp[9] = 0x4e800420;  /*   bctr */
-+  *(void **) &tramp[2] = (void *) ffi_closure_SYSV; /* function */
-+  *(void **) &tramp[3] = codeloc;                   /* context */
-+
-+  /* Flush the icache.  */
-+  flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE);
-+
-+  closure->cif = cif;
-+  closure->fun = fun;
-+  closure->user_data = user_data;
-+
-+  return FFI_OK;
-+}
-+
-+/* Basically the trampoline invokes ffi_closure_SYSV, and on
-+   entry, r11 holds the address of the closure.
-+   After storing the registers that could possibly contain
-+   parameters to be passed into the stack frame and setting
-+   up space for a return value, ffi_closure_SYSV invokes the
-+   following helper function to do most of the work.  */
-+
-+int
-+ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue,
-+			 unsigned long *pgr, ffi_dblfl *pfr,
-+			 unsigned long *pst)
-+{
-+  /* rvalue is the pointer to space for return value in closure assembly */
-+  /* pgr is the pointer to where r3-r10 are stored in ffi_closure_SYSV */
-+  /* pfr is the pointer to where f1-f8 are stored in ffi_closure_SYSV  */
-+  /* pst is the pointer to outgoing parameter stack in original caller */
-+
-+  void **          avalue;
-+  ffi_type **      arg_types;
-+  long             i, avn;
-+#ifndef __NO_FPRS__
-+  long             nf = 0;   /* number of floating registers already used */
-+#endif
-+  long             ng = 0;   /* number of general registers already used */
-+
-+  ffi_cif *cif = closure->cif;
-+  unsigned       size     = cif->rtype->size;
-+  unsigned short rtypenum = cif->rtype->type;
-+
-+  avalue = alloca (cif->nargs * sizeof (void *));
-+
-+  /* First translate for softfloat/nonlinux */
-+  rtypenum = translate_float (cif->abi, rtypenum);
-+
-+  /* Copy the caller's structure return value address so that the closure
-+     returns the data directly to the caller.
-+     For FFI_SYSV the result is passed in r3/r4 if the struct size is less
-+     or equal 8 bytes.  */
-+  if (rtypenum == FFI_TYPE_STRUCT
-+      && !((cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8))
-+    {
-+      rvalue = (void *) *pgr;
-+      ng++;
-+      pgr++;
-+    }
-+
-+  i = 0;
-+  avn = cif->nargs;
-+  arg_types = cif->arg_types;
-+
-+  /* Grab the addresses of the arguments from the stack frame.  */
-+  while (i < avn) {
-+    unsigned short typenum = arg_types[i]->type;
-+
-+    /* We may need to handle some values depending on ABI.  */
-+    typenum = translate_float (cif->abi, typenum);
-+
-+    switch (typenum)
-+      {
-+#ifndef __NO_FPRS__
-+      case FFI_TYPE_FLOAT:
-+	/* Unfortunately float values are stored as doubles
-+	   in the ffi_closure_SYSV code (since we don't check
-+	   the type in that routine).  */
-+	if (nf < NUM_FPR_ARG_REGISTERS)
-+	  {
-+	    /* FIXME? here we are really changing the values
-+	       stored in the original calling routines outgoing
-+	       parameter stack.  This is probably a really
-+	       naughty thing to do but...  */
-+	    double temp = pfr->d;
-+	    pfr->f = (float) temp;
-+	    avalue[i] = pfr;
-+	    nf++;
-+	    pfr++;
-+	  }
-+	else
-+	  {
-+	    avalue[i] = pst;
-+	    pst += 1;
-+	  }
-+	break;
-+
-+      case FFI_TYPE_DOUBLE:
-+	if (nf < NUM_FPR_ARG_REGISTERS)
-+	  {
-+	    avalue[i] = pfr;
-+	    nf++;
-+	    pfr++;
-+	  }
-+	else
-+	  {
-+	    if (((long) pst) & 4)
-+	      pst++;
-+	    avalue[i] = pst;
-+	    pst += 2;
-+	  }
-+	break;
-+
-+# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+      case FFI_TYPE_LONGDOUBLE:
-+	if (nf < NUM_FPR_ARG_REGISTERS - 1)
-+	  {
-+	    avalue[i] = pfr;
-+	    pfr += 2;
-+	    nf += 2;
-+	  }
-+	else
-+	  {
-+	    if (((long) pst) & 4)
-+	      pst++;
-+	    avalue[i] = pst;
-+	    pst += 4;
-+	    nf = 8;
-+	  }
-+	break;
-+# endif
-+#endif
-+
-+      case FFI_TYPE_UINT128:
-+	/* Test if for the whole long double, 4 gprs are available.
-+	   otherwise the stuff ends up on the stack.  */
-+	if (ng < NUM_GPR_ARG_REGISTERS - 3)
-+	  {
-+	    avalue[i] = pgr;
-+	    pgr += 4;
-+	    ng += 4;
-+	  }
-+	else
-+	  {
-+	    avalue[i] = pst;
-+	    pst += 4;
-+	    ng = 8+4;
-+	  }
-+	break;
-+
-+      case FFI_TYPE_SINT8:
-+      case FFI_TYPE_UINT8:
-+#ifndef __LITTLE_ENDIAN__
-+	if (ng < NUM_GPR_ARG_REGISTERS)
-+	  {
-+	    avalue[i] = (char *) pgr + 3;
-+	    ng++;
-+	    pgr++;
-+	  }
-+	else
-+	  {
-+	    avalue[i] = (char *) pst + 3;
-+	    pst++;
-+	  }
-+	break;
-+#endif
-+
-+      case FFI_TYPE_SINT16:
-+      case FFI_TYPE_UINT16:
-+#ifndef __LITTLE_ENDIAN__
-+	if (ng < NUM_GPR_ARG_REGISTERS)
-+	  {
-+	    avalue[i] = (char *) pgr + 2;
-+	    ng++;
-+	    pgr++;
-+	  }
-+	else
-+	  {
-+	    avalue[i] = (char *) pst + 2;
-+	    pst++;
-+	  }
-+	break;
-+#endif
-+
-+      case FFI_TYPE_SINT32:
-+      case FFI_TYPE_UINT32:
-+      case FFI_TYPE_POINTER:
-+	if (ng < NUM_GPR_ARG_REGISTERS)
-+	  {
-+	    avalue[i] = pgr;
-+	    ng++;
-+	    pgr++;
-+	  }
-+	else
-+	  {
-+	    avalue[i] = pst;
-+	    pst++;
-+	  }
-+	break;
-+
-+      case FFI_TYPE_STRUCT:
-+	/* Structs are passed by reference. The address will appear in a
-+	   gpr if it is one of the first 8 arguments.  */
-+	if (ng < NUM_GPR_ARG_REGISTERS)
-+	  {
-+	    avalue[i] = (void *) *pgr;
-+	    ng++;
-+	    pgr++;
-+	  }
-+	else
-+	  {
-+	    avalue[i] = (void *) *pst;
-+	    pst++;
-+	  }
-+	break;
-+
-+      case FFI_TYPE_SINT64:
-+      case FFI_TYPE_UINT64:
-+	/* Passing long long ints are complex, they must
-+	   be passed in suitable register pairs such as
-+	   (r3,r4) or (r5,r6) or (r6,r7), or (r7,r8) or (r9,r10)
-+	   and if the entire pair aren't available then the outgoing
-+	   parameter stack is used for both but an alignment of 8
-+	   must will be kept.  So we must either look in pgr
-+	   or pst to find the correct address for this type
-+	   of parameter.  */
-+	if (ng < NUM_GPR_ARG_REGISTERS - 1)
-+	  {
-+	    if (ng & 1)
-+	      {
-+		/* skip r4, r6, r8 as starting points */
-+		ng++;
-+		pgr++;
-+	      }
-+	    avalue[i] = pgr;
-+	    ng += 2;
-+	    pgr += 2;
-+	  }
-+	else
-+	  {
-+	    if (((long) pst) & 4)
-+	      pst++;
-+	    avalue[i] = pst;
-+	    pst += 2;
-+	    ng = NUM_GPR_ARG_REGISTERS;
-+	  }
-+	break;
-+
-+      default:
-+	FFI_ASSERT (0);
-+      }
-+
-+    i++;
-+  }
-+
-+  (closure->fun) (cif, rvalue, avalue, closure->user_data);
-+
-+  /* Tell ffi_closure_SYSV how to perform return type promotions.
-+     Because the FFI_SYSV ABI returns the structures <= 8 bytes in
-+     r3/r4 we have to tell ffi_closure_SYSV how to treat them.  We
-+     combine the base type FFI_SYSV_TYPE_SMALL_STRUCT with the size of
-+     the struct less one.  We never have a struct with size zero.
-+     See the comment in ffitarget.h about ordering.  */
-+  if (rtypenum == FFI_TYPE_STRUCT
-+      && (cif->abi & FFI_SYSV_STRUCT_RET) != 0 && size <= 8)
-+    return FFI_SYSV_TYPE_SMALL_STRUCT - 1 + size;
-+  return rtypenum;
-+}
-+#endif
-diff --git a/js/src/ctypes/libffi/src/powerpc/ffitarget.h b/js/src/ctypes/libffi/src/powerpc/ffitarget.h
---- a/js/src/ctypes/libffi/src/powerpc/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/powerpc/ffitarget.h
-@@ -35,72 +35,106 @@
- #endif
- 
- /* ---- System specific configurations ----------------------------------- */
- 
- #if defined (POWERPC) && defined (__powerpc64__)	/* linux64 */
- #ifndef POWERPC64
- #define POWERPC64
- #endif
--#elif defined (POWERPC_DARWIN) && defined (__ppc64__)	/* Darwin */
-+#elif defined (POWERPC_DARWIN) && defined (__ppc64__)	/* Darwin64 */
- #ifndef POWERPC64
- #define POWERPC64
- #endif
-+#ifndef POWERPC_DARWIN64
-+#define POWERPC_DARWIN64
-+#endif
- #elif defined (POWERPC_AIX) && defined (__64BIT__)	/* AIX64 */
- #ifndef POWERPC64
- #define POWERPC64
- #endif
- #endif
- 
- #ifndef LIBFFI_ASM
- typedef unsigned long          ffi_arg;
- typedef signed long            ffi_sarg;
- 
- typedef enum ffi_abi {
-   FFI_FIRST_ABI = 0,
- 
--#ifdef POWERPC
--  FFI_SYSV,
--  FFI_GCC_SYSV,
--  FFI_LINUX64,
--  FFI_LINUX,
--  FFI_LINUX_SOFT_FLOAT,
--# if defined(POWERPC64)
--  FFI_DEFAULT_ABI = FFI_LINUX64,
--# elif defined(__NO_FPRS__)
--  FFI_DEFAULT_ABI = FFI_LINUX_SOFT_FLOAT,
--# elif (__LDBL_MANT_DIG__ == 106)
--  FFI_DEFAULT_ABI = FFI_LINUX,
-+#if defined (POWERPC_AIX)
-+  FFI_AIX,
-+  FFI_DARWIN,
-+  FFI_DEFAULT_ABI = FFI_AIX,
-+  FFI_LAST_ABI
-+
-+#elif defined (POWERPC_DARWIN)
-+  FFI_AIX,
-+  FFI_DARWIN,
-+  FFI_DEFAULT_ABI = FFI_DARWIN,
-+  FFI_LAST_ABI
-+
-+#else
-+  /* The FFI_COMPAT values are used by old code.  Since libffi may be
-+     a shared library we have to support old values for backwards
-+     compatibility.  */
-+  FFI_COMPAT_SYSV,
-+  FFI_COMPAT_GCC_SYSV,
-+  FFI_COMPAT_LINUX64,
-+  FFI_COMPAT_LINUX,
-+  FFI_COMPAT_LINUX_SOFT_FLOAT,
-+
-+# if defined (POWERPC64)
-+  /* This bit, always set in new code, must not be set in any of the
-+     old FFI_COMPAT values that might be used for 64-bit linux.  We
-+     only need worry about FFI_COMPAT_LINUX64, but to be safe avoid
-+     all old values.  */
-+  FFI_LINUX = 8,
-+  /* This and following bits can reuse FFI_COMPAT values.  */
-+  FFI_LINUX_STRUCT_ALIGN = 1,
-+  FFI_LINUX_LONG_DOUBLE_128 = 2,
-+  FFI_DEFAULT_ABI = (FFI_LINUX
-+#  ifdef __STRUCT_PARM_ALIGN__
-+		     | FFI_LINUX_STRUCT_ALIGN
-+#  endif
-+#  ifdef __LONG_DOUBLE_128__
-+		     | FFI_LINUX_LONG_DOUBLE_128
-+#  endif
-+		     ),
-+  FFI_LAST_ABI = 12
-+
- # else
--  FFI_DEFAULT_ABI = FFI_GCC_SYSV,
-+  /* This bit, always set in new code, must not be set in any of the
-+     old FFI_COMPAT values that might be used for 32-bit linux/sysv/bsd.  */
-+  FFI_SYSV = 8,
-+  /* This and following bits can reuse FFI_COMPAT values.  */
-+  FFI_SYSV_SOFT_FLOAT = 1,
-+  FFI_SYSV_STRUCT_RET = 2,
-+  FFI_SYSV_IBM_LONG_DOUBLE = 4,
-+  FFI_SYSV_LONG_DOUBLE_128 = 16,
-+
-+  FFI_DEFAULT_ABI = (FFI_SYSV
-+#  ifdef __NO_FPRS__
-+		     | FFI_SYSV_SOFT_FLOAT
-+#  endif
-+#  if (defined (__SVR4_STRUCT_RETURN)					\
-+       || defined (POWERPC_FREEBSD) && !defined (__AIX_STRUCT_RETURN))
-+		     | FFI_SYSV_STRUCT_RET
-+#  endif
-+#  if __LDBL_MANT_DIG__ == 106
-+		     | FFI_SYSV_IBM_LONG_DOUBLE
-+#  endif
-+#  ifdef __LONG_DOUBLE_128__
-+		     | FFI_SYSV_LONG_DOUBLE_128
-+#  endif
-+		     ),
-+  FFI_LAST_ABI = 32
- # endif
- #endif
- 
--#ifdef POWERPC_AIX
--  FFI_AIX,
--  FFI_DARWIN,
--  FFI_DEFAULT_ABI = FFI_AIX,
--#endif
--
--#ifdef POWERPC_DARWIN
--  FFI_AIX,
--  FFI_DARWIN,
--  FFI_DEFAULT_ABI = FFI_DARWIN,
--#endif
--
--#ifdef POWERPC_FREEBSD
--  FFI_SYSV,
--  FFI_GCC_SYSV,
--  FFI_LINUX64,
--  FFI_LINUX,
--  FFI_LINUX_SOFT_FLOAT,
--  FFI_DEFAULT_ABI = FFI_SYSV,
--#endif
--
--  FFI_LAST_ABI
- } ffi_abi;
- #endif
- 
- /* ---- Definitions for closures ----------------------------------------- */
- 
- #define FFI_CLOSURES 1
- #define FFI_NATIVE_RAW_API 0
- #if defined (POWERPC) || defined (POWERPC_FREEBSD)
-@@ -109,31 +143,33 @@ typedef enum ffi_abi {
- #endif
- 
- /* For additional types like the below, take care about the order in
-    ppc_closures.S. They must follow after the FFI_TYPE_LAST.  */
- 
- /* Needed for soft-float long-double-128 support.  */
- #define FFI_TYPE_UINT128 (FFI_TYPE_LAST + 1)
- 
--/* Needed for FFI_SYSV small structure returns.
--   We use two flag bits, (FLAG_SYSV_SMST_R3, FLAG_SYSV_SMST_R4) which are
--   defined in ffi.c, to determine the exact return type and its size.  */
-+/* Needed for FFI_SYSV small structure returns.  */
- #define FFI_SYSV_TYPE_SMALL_STRUCT (FFI_TYPE_LAST + 2)
- 
- /* Used by ELFv2 for homogenous structure returns.  */
- #define FFI_V2_TYPE_FLOAT_HOMOG		(FFI_TYPE_LAST + 1)
- #define FFI_V2_TYPE_DOUBLE_HOMOG	(FFI_TYPE_LAST + 2)
- #define FFI_V2_TYPE_SMALL_STRUCT	(FFI_TYPE_LAST + 3)
- 
- #if _CALL_ELF == 2
- # define FFI_TRAMPOLINE_SIZE 32
- #else
- # if defined(POWERPC64) || defined(POWERPC_AIX)
--#  define FFI_TRAMPOLINE_SIZE 24
-+#  if defined(POWERPC_DARWIN64)
-+#    define FFI_TRAMPOLINE_SIZE 48
-+#  else
-+#    define FFI_TRAMPOLINE_SIZE 24
-+#  endif
- # else /* POWERPC || POWERPC_AIX */
- #  define FFI_TRAMPOLINE_SIZE 40
- # endif
- #endif
- 
- #ifndef LIBFFI_ASM
- #if defined(POWERPC_DARWIN) || defined(POWERPC_AIX)
- struct ffi_aix_trampoline_struct {
-diff --git a/js/src/ctypes/libffi/src/powerpc/linux64.S b/js/src/ctypes/libffi/src/powerpc/linux64.S
---- a/js/src/ctypes/libffi/src/powerpc/linux64.S
-+++ b/js/src/ctypes/libffi/src/powerpc/linux64.S
-@@ -24,17 +24,17 @@
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
-    ----------------------------------------------------------------------- */
- 
- #define LIBFFI_ASM
- #include <fficonfig.h>
- #include <ffi.h>
- 
--#ifdef __powerpc64__
-+#ifdef POWERPC64
- 	.hidden	ffi_call_LINUX64
- 	.globl	ffi_call_LINUX64
- # if _CALL_ELF == 2
- 	.text
- ffi_call_LINUX64:
- 	addis	%r2, %r12, .TOC.-ffi_call_LINUX64@ha
- 	addi	%r2, %r2, .TOC.-ffi_call_LINUX64@l
- 	.localentry ffi_call_LINUX64, . - ffi_call_LINUX64
-diff --git a/js/src/ctypes/libffi/src/powerpc/linux64_closure.S b/js/src/ctypes/libffi/src/powerpc/linux64_closure.S
---- a/js/src/ctypes/libffi/src/powerpc/linux64_closure.S
-+++ b/js/src/ctypes/libffi/src/powerpc/linux64_closure.S
-@@ -25,17 +25,17 @@
-    DEALINGS IN THE SOFTWARE.
-    ----------------------------------------------------------------------- */
- #define LIBFFI_ASM
- #include <fficonfig.h>
- #include <ffi.h>
- 
- 	.file	"linux64_closure.S"
- 
--#ifdef __powerpc64__
-+#ifdef POWERPC64
- 	FFI_HIDDEN (ffi_closure_LINUX64)
- 	.globl  ffi_closure_LINUX64
- # if _CALL_ELF == 2
- 	.text
- ffi_closure_LINUX64:
- 	addis	%r2, %r12, .TOC.-ffi_closure_LINUX64@ha
- 	addi	%r2, %r2, .TOC.-ffi_closure_LINUX64@l
- 	.localentry ffi_closure_LINUX64, . - ffi_closure_LINUX64
-@@ -95,16 +95,20 @@ ffi_closure_LINUX64:
- 	std	%r7, 32(%r12)
- 	std	%r8, 40(%r12)
- 	std	%r9, 48(%r12)
- 	std	%r10, 56(%r12)
- 
- 	# load up the pointer to the parm save area
- 	mr	%r5, %r12
- # else
-+	# copy r2 to r11 and load TOC into r2
-+	mr	%r11, %r2
-+	ld	%r2, 16(%r11)
-+
- 	mflr	%r0
- 	# Save general regs into parm save area
- 	# This is the parameter save area set up by our caller.
- 	std	%r3, PARMSAVE+0(%r1)
- 	std	%r4, PARMSAVE+8(%r1)
- 	std	%r5, PARMSAVE+16(%r1)
- 	std	%r6, PARMSAVE+24(%r1)
- 	std	%r7, PARMSAVE+32(%r1)
-diff --git a/js/src/ctypes/libffi/src/powerpc/ppc_closure.S b/js/src/ctypes/libffi/src/powerpc/ppc_closure.S
---- a/js/src/ctypes/libffi/src/powerpc/ppc_closure.S
-+++ b/js/src/ctypes/libffi/src/powerpc/ppc_closure.S
-@@ -26,17 +26,17 @@
-    ----------------------------------------------------------------------- */
- #define LIBFFI_ASM
- #include <fficonfig.h>
- #include <ffi.h>
- #include <powerpc/asm.h>
- 
- 	.file   "ppc_closure.S"
- 
--#ifndef __powerpc64__
-+#ifndef POWERPC64
- 
- ENTRY(ffi_closure_SYSV)
- .LFB1:
- 	stwu %r1,-144(%r1)
- .LCFI0:
- 	mflr %r0
- .LCFI1:
- 	stw %r0,148(%r1)
-@@ -322,17 +322,17 @@ ENTRY(ffi_closure_SYSV)
- 	blr
- #endif
- 
- .Luint128:
- 	lwz %r6,112+12(%r1)
- 	mtlr %r0
- 	addi %r1,%r1,144
- 	blr
--
-+	
- END(ffi_closure_SYSV)
- 
- 	.section	".eh_frame",EH_FRAME_FLAGS,@progbits
- .Lframe1:
- 	.4byte	.LECIE1-.LSCIE1	 # Length of Common Information Entry
- .LSCIE1:
- 	.4byte	0x0	 # CIE Identifier Tag
- 	.byte	0x1	 # CIE Version
-@@ -373,13 +373,12 @@ END(ffi_closure_SYSV)
- 	.byte	0x4	 # DW_CFA_advance_loc4
- 	.4byte	.LCFI1-.LCFI0
- 	.byte	0x11	 # DW_CFA_offset_extended_sf
- 	.uleb128 0x41
- 	.sleb128 -1
- 	.align 2
- .LEFDE1:
- 
--#endif
--
- #if defined __ELF__ && defined __linux__
- 	.section	.note.GNU-stack,"",@progbits
- #endif
-+#endif
-diff --git a/js/src/ctypes/libffi/src/powerpc/sysv.S b/js/src/ctypes/libffi/src/powerpc/sysv.S
---- a/js/src/ctypes/libffi/src/powerpc/sysv.S
-+++ b/js/src/ctypes/libffi/src/powerpc/sysv.S
-@@ -25,17 +25,17 @@
-    DEALINGS IN THE SOFTWARE.
-    ----------------------------------------------------------------------- */
- 
- #define LIBFFI_ASM
- #include <fficonfig.h>
- #include <ffi.h>
- #include <powerpc/asm.h>
- 
--#ifndef __powerpc64__
-+#ifndef POWERPC64
- 	.globl ffi_prep_args_SYSV
- ENTRY(ffi_call_SYSV)
- .LFB1:
- 	/* Save the old stack pointer as AP.  */
- 	mr	%r8,%r1
- 
- .LCFI0:
- 	/* Allocate the stack space we need.  */
-@@ -208,13 +208,13 @@ END(ffi_call_SYSV)
-       .byte     0x9c     /*  DW_CFA_offset, column 0x1c */
-       .uleb128  0x4
-       .byte     0x4      /*  DW_CFA_advance_loc4 */
-       .4byte    .LCFI6-.LCFI5
-       .byte     0xd      /*  DW_CFA_def_cfa_register */
-       .uleb128  0x1c
-       .align 2
- .LEFDE1:
--#endif
- 
- #if defined __ELF__ && defined __linux__
- 	.section	.note.GNU-stack,"",@progbits
- #endif
-+#endif
-diff --git a/js/src/ctypes/libffi/src/prep_cif.c b/js/src/ctypes/libffi/src/prep_cif.c
---- a/js/src/ctypes/libffi/src/prep_cif.c
-+++ b/js/src/ctypes/libffi/src/prep_cif.c
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------------
--   prep_cif.c - Copyright (c) 1996, 1998, 2007  Red Hat, Inc.
-+   prep_cif.c - Copyright (c) 2011, 2012  Anthony Green
-+                Copyright (c) 1996, 1998, 2007  Red Hat, Inc.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-    the following conditions:
-@@ -32,27 +33,31 @@
- 
- /* Perform machine independent initialization of aggregate type
-    specifications. */
- 
- static ffi_status initialize_aggregate(ffi_type *arg)
- {
-   ffi_type **ptr;
- 
--  FFI_ASSERT(arg != NULL);
-+  if (UNLIKELY(arg == NULL || arg->elements == NULL))
-+    return FFI_BAD_TYPEDEF;
- 
--  FFI_ASSERT(arg->elements != NULL);
--  FFI_ASSERT(arg->size == 0);
--  FFI_ASSERT(arg->alignment == 0);
-+  arg->size = 0;
-+  arg->alignment = 0;
- 
-   ptr = &(arg->elements[0]);
- 
-+  if (UNLIKELY(ptr == 0))
-+    return FFI_BAD_TYPEDEF;
-+
-   while ((*ptr) != NULL)
-     {
--      if (((*ptr)->size == 0) && (initialize_aggregate((*ptr)) != FFI_OK))
-+      if (UNLIKELY(((*ptr)->size == 0)
-+		    && (initialize_aggregate((*ptr)) != FFI_OK)))
- 	return FFI_BAD_TYPEDEF;
- 
-       /* Perform a sanity check on the argument type */
-       FFI_ASSERT_VALID_TYPE(*ptr);
- 
-       arg->size = ALIGN(arg->size, (*ptr)->alignment);
-       arg->size += (*ptr)->size;
- 
-@@ -66,61 +71,95 @@ static ffi_status initialize_aggregate(f
-      structures that fit in one register on ABIs like the PowerPC64
-      Linux ABI that right justify small structs in a register.
-      It's also needed for nested structure layout, for example
-      struct A { long a; char b; }; struct B { struct A x; char y; };
-      should find y at an offset of 2*sizeof(long) and result in a
-      total size of 3*sizeof(long).  */
-   arg->size = ALIGN (arg->size, arg->alignment);
- 
-+  /* On some targets, the ABI defines that structures have an additional
-+     alignment beyond the "natural" one based on their elements.  */
-+#ifdef FFI_AGGREGATE_ALIGNMENT
-+  if (FFI_AGGREGATE_ALIGNMENT > arg->alignment)
-+    arg->alignment = FFI_AGGREGATE_ALIGNMENT;
-+#endif
-+
-   if (arg->size == 0)
-     return FFI_BAD_TYPEDEF;
-   else
-     return FFI_OK;
- }
- 
- #ifndef __CRIS__
- /* The CRIS ABI specifies structure elements to have byte
-    alignment only, so it completely overrides this functions,
-    which assumes "natural" alignment and padding.  */
- 
- /* Perform machine independent ffi_cif preparation, then call
-    machine dependent routine. */
- 
--ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs,
--			ffi_type *rtype, ffi_type **atypes)
-+/* For non variadic functions isvariadic should be 0 and
-+   nfixedargs==ntotalargs.
-+
-+   For variadic calls, isvariadic should be 1 and nfixedargs
-+   and ntotalargs set as appropriate. nfixedargs must always be >=1 */
-+
-+
-+ffi_status FFI_HIDDEN ffi_prep_cif_core(ffi_cif *cif, ffi_abi abi,
-+			     unsigned int isvariadic,
-+                             unsigned int nfixedargs,
-+                             unsigned int ntotalargs,
-+			     ffi_type *rtype, ffi_type **atypes)
- {
-   unsigned bytes = 0;
-   unsigned int i;
-   ffi_type **ptr;
- 
-   FFI_ASSERT(cif != NULL);
--  FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI);
-+  FFI_ASSERT((!isvariadic) || (nfixedargs >= 1));
-+  FFI_ASSERT(nfixedargs <= ntotalargs);
-+
-+  if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))
-+    return FFI_BAD_ABI;
- 
-   cif->abi = abi;
-   cif->arg_types = atypes;
--  cif->nargs = nargs;
-+  cif->nargs = ntotalargs;
-   cif->rtype = rtype;
- 
-   cif->flags = 0;
- 
-+#if HAVE_LONG_DOUBLE_VARIANT
-+  ffi_prep_types (abi);
-+#endif
-+
-   /* Initialize the return type if necessary */
-   if ((cif->rtype->size == 0) && (initialize_aggregate(cif->rtype) != FFI_OK))
-     return FFI_BAD_TYPEDEF;
- 
-   /* Perform a sanity check on the return type */
-   FFI_ASSERT_VALID_TYPE(cif->rtype);
- 
-   /* x86, x86-64 and s390 stack space allocation is handled in prep_machdep. */
- #if !defined M68K && !defined X86_ANY && !defined S390 && !defined PA
-   /* Make space for the return structure pointer */
-   if (cif->rtype->type == FFI_TYPE_STRUCT
- #ifdef SPARC
-       && (cif->abi != FFI_V9 || cif->rtype->size > 32)
- #endif
-+#ifdef TILE
-+      && (cif->rtype->size > 10 * FFI_SIZEOF_ARG)
-+#endif
-+#ifdef XTENSA
-+      && (cif->rtype->size > 16)
-+#endif
-+#ifdef NIOS2
-+      && (cif->rtype->size > 8)
-+#endif
-      )
-     bytes = STACK_ARG_SIZE(sizeof(void*));
- #endif
- 
-   for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
-     {
- 
-       /* Initialize any uninitialized aggregate type definitions */
-@@ -138,30 +177,65 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
- 	  || ((*ptr)->type == FFI_TYPE_LONGDOUBLE
- 	      && cif->abi != FFI_V9))
- 	bytes += sizeof(void*);
-       else
- #endif
- 	{
- 	  /* Add any padding if necessary */
- 	  if (((*ptr)->alignment - 1) & bytes)
--	    bytes = ALIGN(bytes, (*ptr)->alignment);
-+	    bytes = (unsigned)ALIGN(bytes, (*ptr)->alignment);
-+
-+#ifdef TILE
-+	  if (bytes < 10 * FFI_SIZEOF_ARG &&
-+	      bytes + STACK_ARG_SIZE((*ptr)->size) > 10 * FFI_SIZEOF_ARG)
-+	    {
-+	      /* An argument is never split between the 10 parameter
-+		 registers and the stack.  */
-+	      bytes = 10 * FFI_SIZEOF_ARG;
-+	    }
-+#endif
-+#ifdef XTENSA
-+	  if (bytes <= 6*4 && bytes + STACK_ARG_SIZE((*ptr)->size) > 6*4)
-+	    bytes = 6*4;
-+#endif
- 
- 	  bytes += STACK_ARG_SIZE((*ptr)->size);
- 	}
- #endif
-     }
- 
-   cif->bytes = bytes;
- 
-   /* Perform machine dependent cif processing */
-+#ifdef FFI_TARGET_SPECIFIC_VARIADIC
-+  if (isvariadic)
-+	return ffi_prep_cif_machdep_var(cif, nfixedargs, ntotalargs);
-+#endif
-+
-   return ffi_prep_cif_machdep(cif);
- }
- #endif /* not __CRIS__ */
- 
-+ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs,
-+			     ffi_type *rtype, ffi_type **atypes)
-+{
-+  return ffi_prep_cif_core(cif, abi, 0, nargs, nargs, rtype, atypes);
-+}
-+
-+ffi_status ffi_prep_cif_var(ffi_cif *cif,
-+                            ffi_abi abi,
-+                            unsigned int nfixedargs,
-+                            unsigned int ntotalargs,
-+                            ffi_type *rtype,
-+                            ffi_type **atypes)
-+{
-+  return ffi_prep_cif_core(cif, abi, 1, nfixedargs, ntotalargs, rtype, atypes);
-+}
-+
- #if FFI_CLOSURES
- 
- ffi_status
- ffi_prep_closure (ffi_closure* closure,
- 		  ffi_cif* cif,
- 		  void (*fun)(ffi_cif*,void*,void**,void*),
- 		  void *user_data)
- {
-diff --git a/js/src/ctypes/libffi/src/s390/ffi.c b/js/src/ctypes/libffi/src/s390/ffi.c
---- a/js/src/ctypes/libffi/src/s390/ffi.c
-+++ b/js/src/ctypes/libffi/src/s390/ffi.c
-@@ -745,17 +745,18 @@ ffi_closure_helper_SYSV (ffi_closure *cl
-  
- ffi_status
- ffi_prep_closure_loc (ffi_closure *closure,
- 		      ffi_cif *cif,
- 		      void (*fun) (ffi_cif *, void *, void **, void *),
- 		      void *user_data,
- 		      void *codeloc)
- {
--  FFI_ASSERT (cif->abi == FFI_SYSV);
-+  if (cif->abi != FFI_SYSV)
-+    return FFI_BAD_ABI;
- 
- #ifndef __s390x__
-   *(short *)&closure->tramp [0] = 0x0d10;   /* basr %r1,0 */
-   *(short *)&closure->tramp [2] = 0x9801;   /* lm %r0,%r1,6(%r1) */
-   *(short *)&closure->tramp [4] = 0x1006;
-   *(short *)&closure->tramp [6] = 0x07f1;   /* br %r1 */
-   *(long  *)&closure->tramp [8] = (long)codeloc;
-   *(long  *)&closure->tramp[12] = (long)&ffi_closure_SYSV;
-diff --git a/js/src/ctypes/libffi/src/s390/ffitarget.h b/js/src/ctypes/libffi/src/s390/ffitarget.h
---- a/js/src/ctypes/libffi/src/s390/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/s390/ffitarget.h
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
-+   ffitarget.h - Copyright (c) 2012  Anthony Green
-+                 Copyright (c) 1996-2003  Red Hat, Inc.
-    Target configuration macros for S390.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-@@ -22,16 +23,20 @@
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
- 
-    ----------------------------------------------------------------------- */
- 
- #ifndef LIBFFI_TARGET_H
- #define LIBFFI_TARGET_H
- 
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
- #if defined (__s390x__)
- #ifndef S390X
- #define S390X
- #endif
- #endif
- 
- /* ---- System specific configurations ----------------------------------- */
- 
-diff --git a/js/src/ctypes/libffi/src/sh/ffi.c b/js/src/ctypes/libffi/src/sh/ffi.c
---- a/js/src/ctypes/libffi/src/sh/ffi.c
-+++ b/js/src/ctypes/libffi/src/sh/ffi.c
-@@ -1,10 +1,10 @@
- /* -----------------------------------------------------------------------
--   ffi.c - Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Kaz Kojima
-+   ffi.c - Copyright (c) 2002-2008, 2012 Kaz Kojima
-            Copyright (c) 2008 Red Hat, Inc.
-    
-    SuperH Foreign Function Interface 
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-@@ -36,17 +36,17 @@
- #endif
- 
- #if defined(__HITACHI__)
- #define STRUCT_VALUE_ADDRESS_WITH_ARG 1
- #else
- #define STRUCT_VALUE_ADDRESS_WITH_ARG 0
- #endif
- 
--/* If the structure has essentialy an unique element, return its type.  */
-+/* If the structure has essentially an unique element, return its type.  */
- static int
- simple_type (ffi_type *arg)
- {
-   if (arg->type != FFI_TYPE_STRUCT)
-     return arg->type;
-   else if (arg->elements[1])
-     return FFI_TYPE_STRUCT;
- 
-@@ -458,17 +458,18 @@ ffi_prep_closure_loc (ffi_closure* closu
- 		      ffi_cif* cif,
- 		      void (*fun)(ffi_cif*, void*, void**, void*),
- 		      void *user_data,
- 		      void *codeloc)
- {
-   unsigned int *tramp;
-   unsigned int insn;
- 
--  FFI_ASSERT (cif->abi == FFI_GCC_SYSV);
-+  if (cif->abi != FFI_SYSV)
-+    return FFI_BAD_ABI;
- 
-   tramp = (unsigned int *) &closure->tramp[0];
-   /* Set T bit if the function returns a struct pointed with R2.  */
-   insn = (return_type (cif->rtype) == FFI_TYPE_STRUCT
- 	  ? 0x0018 /* sett */
- 	  : 0x0008 /* clrt */);
- 
- #ifdef __LITTLE_ENDIAN__
-diff --git a/js/src/ctypes/libffi/src/sh/ffitarget.h b/js/src/ctypes/libffi/src/sh/ffitarget.h
---- a/js/src/ctypes/libffi/src/sh/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/sh/ffitarget.h
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
-+   ffitarget.h - Copyright (c) 2012 Anthony Green
-+                 Copyright (c) 1996-2003  Red Hat, Inc.
-    Target configuration macros for SuperH.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-@@ -22,16 +23,20 @@
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
- 
-    ----------------------------------------------------------------------- */
- 
- #ifndef LIBFFI_TARGET_H
- #define LIBFFI_TARGET_H
- 
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
- /* ---- Generic type definitions ----------------------------------------- */
- 
- #ifndef LIBFFI_ASM
- typedef unsigned long          ffi_arg;
- typedef signed long            ffi_sarg;
- 
- typedef enum ffi_abi {
-   FFI_FIRST_ABI = 0,
-diff --git a/js/src/ctypes/libffi/src/sh64/ffi.c b/js/src/ctypes/libffi/src/sh64/ffi.c
---- a/js/src/ctypes/libffi/src/sh64/ffi.c
-+++ b/js/src/ctypes/libffi/src/sh64/ffi.c
-@@ -1,10 +1,10 @@
- /* -----------------------------------------------------------------------
--   ffi.c - Copyright (c) 2003, 2004, 2006, 2007 Kaz Kojima
-+   ffi.c - Copyright (c) 2003, 2004, 2006, 2007, 2012 Kaz Kojima
-            Copyright (c) 2008 Anthony Green
-    
-    SuperH SHmedia Foreign Function Interface 
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-@@ -297,17 +297,18 @@ ffi_status
- ffi_prep_closure_loc (ffi_closure *closure,
- 		      ffi_cif *cif,
- 		      void (*fun)(ffi_cif*, void*, void**, void*),
- 		      void *user_data,
- 		      void *codeloc)
- {
-   unsigned int *tramp;
- 
--  FFI_ASSERT (cif->abi == FFI_GCC_SYSV);
-+  if (cif->abi != FFI_SYSV)
-+    return FFI_BAD_ABI;
- 
-   tramp = (unsigned int *) &closure->tramp[0];
-   /* Since ffi_closure is an aligned object, the ffi trampoline is
-      called as an SHcompact code.  Sigh.
-      SHcompact part:
-      mova @(1,pc),r0; add #1,r0; jmp @r0; nop;
-      SHmedia part:
-      movi fnaddr >> 16,r1; shori fnaddr,r1; ptabs/l r1,tr0
-diff --git a/js/src/ctypes/libffi/src/sh64/ffitarget.h b/js/src/ctypes/libffi/src/sh64/ffitarget.h
---- a/js/src/ctypes/libffi/src/sh64/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/sh64/ffitarget.h
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
-+   ffitarget.h - Copyright (c) 2012  Anthony Green
-+                 Copyright (c) 1996-2003  Red Hat, Inc.
-    Target configuration macros for SuperH - SHmedia.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-@@ -22,16 +23,20 @@
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
- 
-    ----------------------------------------------------------------------- */
- 
- #ifndef LIBFFI_TARGET_H
- #define LIBFFI_TARGET_H
- 
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
- /* ---- Generic type definitions ----------------------------------------- */
- 
- #ifndef LIBFFI_ASM
- typedef unsigned long          ffi_arg;
- typedef signed long            ffi_sarg;
- 
- typedef enum ffi_abi {
-   FFI_FIRST_ABI = 0,
-diff --git a/js/src/ctypes/libffi/src/sparc/ffi.c b/js/src/ctypes/libffi/src/sparc/ffi.c
---- a/js/src/ctypes/libffi/src/sparc/ffi.c
-+++ b/js/src/ctypes/libffi/src/sparc/ffi.c
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------------
--   ffi.c - Copyright (c) 1996, 2003, 2004, 2007, 2008 Red Hat, Inc.
-+   ffi.c - Copyright (c) 2011, 2013 Anthony Green
-+           Copyright (c) 1996, 2003-2004, 2007-2008 Red Hat, Inc.
-    
-    SPARC Foreign Function Interface 
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -370,16 +371,20 @@ int ffi_v9_layout_struct(ffi_type *arg, 
- #ifdef SPARC64
- extern int ffi_call_v9(void *, extended_cif *, unsigned, 
- 		       unsigned, unsigned *, void (*fn)(void));
- #else
- extern int ffi_call_v8(void *, extended_cif *, unsigned, 
- 		       unsigned, unsigned *, void (*fn)(void));
- #endif
- 
-+#ifndef __GNUC__
-+void ffi_flush_icache (void *, size_t);
-+#endif
-+
- void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
- {
-   extended_cif ecif;
-   void *rval = rvalue;
- 
-   ecif.cif = cif;
-   ecif.avalue = avalue;
- 
-@@ -401,18 +406,64 @@ void ffi_call(ffi_cif *cif, void (*fn)(v
- 
-   switch (cif->abi) 
-     {
-     case FFI_V8:
- #ifdef SPARC64
-       /* We don't yet support calling 32bit code from 64bit */
-       FFI_ASSERT(0);
- #else
--      ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, 
--		  cif->flags, rvalue, fn);
-+      if (rvalue && (cif->rtype->type == FFI_TYPE_STRUCT
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+	  || cif->flags == FFI_TYPE_LONGDOUBLE
-+#endif
-+	  ))
-+	{
-+	  /* For v8, we need an "unimp" with size of returning struct */
-+	  /* behind "call", so we alloc some executable space for it. */
-+	  /* l7 is used, we need to make sure v8.S doesn't use %l7.   */
-+	  unsigned int *call_struct = NULL;
-+	  ffi_closure_alloc(32, (void **)&call_struct);
-+	  if (call_struct)
-+	    {
-+	      unsigned long f = (unsigned long)fn;
-+	      call_struct[0] = 0xae10001f;		 /* mov   %i7, %l7	 */
-+	      call_struct[1] = 0xbe10000f;		 /* mov   %o7, %i7	 */
-+	      call_struct[2] = 0x03000000 | f >> 10;     /* sethi %hi(fn), %g1	 */
-+	      call_struct[3] = 0x9fc06000 | (f & 0x3ff); /* jmp %g1+%lo(fn), %o7 */
-+	      call_struct[4] = 0x01000000;		 /* nop			 */
-+	      if (cif->rtype->size < 0x7f)
-+		call_struct[5] = cif->rtype->size;	 /* unimp		 */
-+	      else
-+		call_struct[5] = 0x01000000;	     	 /* nop			 */
-+	      call_struct[6] = 0x81c7e008;		 /* ret			 */
-+	      call_struct[7] = 0xbe100017;		 /* mov   %l7, %i7	 */
-+#ifdef __GNUC__
-+	      asm volatile ("iflush %0; iflush %0+8; iflush %0+16; iflush %0+24" : :
-+			    "r" (call_struct) : "memory");
-+	      /* SPARC v8 requires 5 instructions for flush to be visible */
-+	      asm volatile ("nop; nop; nop; nop; nop");
-+#else
-+	      ffi_flush_icache (call_struct, 32);
-+#endif
-+	      ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes,
-+			  cif->flags, rvalue, call_struct);
-+	      ffi_closure_free(call_struct);
-+	    }
-+	  else
-+	    {
-+	      ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes,
-+			  cif->flags, rvalue, fn);
-+	    }
-+	}
-+      else
-+	{
-+	  ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes,
-+		      cif->flags, rvalue, fn);
-+	}
- #endif
-       break;
-     case FFI_V9:
- #ifdef SPARC64
-       ffi_call_v9(ffi_prep_args_v9, &ecif, cif->bytes,
- 		  cif->flags, rval, fn);
-       if (rvalue && rval && cif->rtype->type == FFI_TYPE_STRUCT)
- 	ffi_v9_layout_struct(cif->rtype, 0, (char *)rvalue, (char *)rval, ((char *)rval)+32);
-@@ -420,17 +471,16 @@ void ffi_call(ffi_cif *cif, void (*fn)(v
-       /* And vice versa */
-       FFI_ASSERT(0);
- #endif
-       break;
-     default:
-       FFI_ASSERT(0);
-       break;
-     }
--
- }
- 
- 
- #ifdef SPARC64
- extern void ffi_closure_v9(void);
- #else
- extern void ffi_closure_v8(void);
- #endif
-@@ -442,44 +492,50 @@ ffi_prep_closure_loc (ffi_closure* closu
- 		      void *user_data,
- 		      void *codeloc)
- {
-   unsigned int *tramp = (unsigned int *) &closure->tramp[0];
-   unsigned long fn;
- #ifdef SPARC64
-   /* Trampoline address is equal to the closure address.  We take advantage
-      of that to reduce the trampoline size by 8 bytes. */
--  FFI_ASSERT (cif->abi == FFI_V9);
-+  if (cif->abi != FFI_V9)
-+    return FFI_BAD_ABI;
-   fn = (unsigned long) ffi_closure_v9;
-   tramp[0] = 0x83414000;	/* rd	%pc, %g1	*/
-   tramp[1] = 0xca586010;	/* ldx	[%g1+16], %g5	*/
-   tramp[2] = 0x81c14000;	/* jmp	%g5		*/
-   tramp[3] = 0x01000000;	/* nop			*/
-   *((unsigned long *) &tramp[4]) = fn;
- #else
-   unsigned long ctx = (unsigned long) codeloc;
--  FFI_ASSERT (cif->abi == FFI_V8);
-+  if (cif->abi != FFI_V8)
-+    return FFI_BAD_ABI;
-   fn = (unsigned long) ffi_closure_v8;
-   tramp[0] = 0x03000000 | fn >> 10;	/* sethi %hi(fn), %g1	*/
-   tramp[1] = 0x05000000 | ctx >> 10;	/* sethi %hi(ctx), %g2	*/
-   tramp[2] = 0x81c06000 | (fn & 0x3ff);	/* jmp   %g1+%lo(fn)	*/
-   tramp[3] = 0x8410a000 | (ctx & 0x3ff);/* or    %g2, %lo(ctx)	*/
- #endif
- 
-   closure->cif = cif;
-   closure->fun = fun;
-   closure->user_data = user_data;
- 
--  /* Flush the Icache.  FIXME: alignment isn't certain, assume 8 bytes */
-+  /* Flush the Icache.  closure is 8 bytes aligned.  */
-+#ifdef __GNUC__
- #ifdef SPARC64
--  asm volatile ("flush	%0" : : "r" (closure) : "memory");
--  asm volatile ("flush	%0" : : "r" (((char *) closure) + 8) : "memory");
-+  asm volatile ("flush	%0; flush %0+8" : : "r" (closure) : "memory");
- #else
--  asm volatile ("iflush	%0" : : "r" (closure) : "memory");
--  asm volatile ("iflush	%0" : : "r" (((char *) closure) + 8) : "memory");
-+  asm volatile ("iflush	%0; iflush %0+8" : : "r" (closure) : "memory");
-+  /* SPARC v8 requires 5 instructions for flush to be visible */
-+  asm volatile ("nop; nop; nop; nop; nop");
-+#endif
-+#else
-+  ffi_flush_icache (closure, 16);
- #endif
- 
-   return FFI_OK;
- }
- 
- int
- ffi_closure_sparc_inner_v8(ffi_closure *closure,
-   void *rvalue, unsigned long *gpr, unsigned long *scratch)
-diff --git a/js/src/ctypes/libffi/src/sparc/ffitarget.h b/js/src/ctypes/libffi/src/sparc/ffitarget.h
---- a/js/src/ctypes/libffi/src/sparc/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/sparc/ffitarget.h
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
-+   ffitarget.h - Copyright (c) 2012  Anthony Green
-+                 Copyright (c) 1996-2003  Red Hat, Inc.
-    Target configuration macros for SPARC.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-@@ -22,16 +23,20 @@
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
- 
-    ----------------------------------------------------------------------- */
- 
- #ifndef LIBFFI_TARGET_H
- #define LIBFFI_TARGET_H
- 
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
- /* ---- System specific configurations ----------------------------------- */
- 
- #if defined(__arch64__) || defined(__sparcv9)
- #ifndef SPARC64
- #define SPARC64
- #endif
- #endif
- 
-diff --git a/js/src/ctypes/libffi/src/sparc/v8.S b/js/src/ctypes/libffi/src/sparc/v8.S
---- a/js/src/ctypes/libffi/src/sparc/v8.S
-+++ b/js/src/ctypes/libffi/src/sparc/v8.S
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------------
--   v8.S - Copyright (c) 1996, 1997, 2003, 2004, 2008 Red Hat, Inc.
-+   v8.S - Copyright (c) 2013  The Written Word, Inc.
-+	  Copyright (c) 1996, 1997, 2003, 2004, 2008  Red Hat, Inc.
-    
-    SPARC Foreign Function Interface 
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -26,21 +27,49 @@
- 
- #define LIBFFI_ASM	
- #include <fficonfig.h>
- #include <ffi.h>
- 
- #define STACKFRAME 96		/* Minimum stack framesize for SPARC */
- #define ARGS (64+4)		/* Offset of register area in frame */
- 
--.text
-+#ifndef __GNUC__	
-+	.text
-+        .align 8
-+.globl ffi_flush_icache
-+.globl _ffi_flush_icache
-+
-+ffi_flush_icache:
-+_ffi_flush_icache:	
-+        add %o0, %o1, %o2
-+#ifdef SPARC64	
-+1:	flush %o0
-+#else	
-+1:	iflush %o0
-+#endif
-+	add %o0, 8, %o0
-+	cmp %o0, %o2
-+	blt 1b
-+	nop
-+	nop
-+	nop
-+	nop
-+	nop
-+	retl
-+	nop
-+.ffi_flush_icache_end:
-+	.size	ffi_flush_icache,.ffi_flush_icache_end-ffi_flush_icache
-+#endif
-+
-+	.text
-         .align 8
- .globl ffi_call_v8
- .globl _ffi_call_v8
--
-+	
- ffi_call_v8:
- _ffi_call_v8:
- .LLFB1:
- 	save	%sp, -STACKFRAME, %sp
- .LLCFI0:
- 	
- 	sub	%sp, %i2, %sp	! alloca() space in stack for frame to set up
- 	add	%sp, STACKFRAME, %l0	! %l0 has start of 
-@@ -208,16 +237,20 @@ ffi_closure_v8:
- 
- 	cmp	%o0, FFI_TYPE_STRUCT
- 	be	done2
- 
- 	cmp	%o0, FFI_TYPE_SINT64
- 	be,a	done1
- 	 ldd	[%fp-8], %i0
- 
-+	cmp	%o0, FFI_TYPE_UINT64
-+	be,a	done1
-+	 ldd	[%fp-8], %i0
-+
- 	ld	[%fp-8], %i0
- done1:
- 	jmp	%i7+8
- 	 restore
- done2:
- 	! Skip 'unimp'.
- 	jmp	%i7+12
- 	 restore
-diff --git a/js/src/ctypes/libffi/src/sparc/v9.S b/js/src/ctypes/libffi/src/sparc/v9.S
---- a/js/src/ctypes/libffi/src/sparc/v9.S
-+++ b/js/src/ctypes/libffi/src/sparc/v9.S
-@@ -27,17 +27,17 @@
- #define LIBFFI_ASM	
- #include <fficonfig.h>
- #include <ffi.h>
- 
- #ifdef SPARC64
- /* Only compile this in for 64bit builds, because otherwise the object file
-    will have inproper architecture due to used instructions.  */
- 
--#define STACKFRAME 128		/* Minimum stack framesize for SPARC */
-+#define STACKFRAME 176		/* Minimum stack framesize for SPARC 64-bit */
- #define STACK_BIAS 2047
- #define ARGS (128)		/* Offset of register area in frame */
- 
- .text
-         .align 8
- .globl ffi_call_v9
- .globl _ffi_call_v9
- 
-diff --git a/js/src/ctypes/libffi/src/tile/ffi.c b/js/src/ctypes/libffi/src/tile/ffi.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/tile/ffi.c
-@@ -0,0 +1,355 @@
-+/* -----------------------------------------------------------------------
-+   ffi.c - Copyright (c) 2012 Tilera Corp.
-+
-+   TILE Foreign Function Interface
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+   DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#include <ffi.h>
-+#include <ffi_common.h>
-+#include <stdlib.h>
-+#include <stdint.h>
-+#include <unistd.h>
-+#include <arch/abi.h>
-+#include <arch/icache.h>
-+#include <arch/opcode.h>
-+
-+
-+/* The first 10 registers are used to pass arguments and return values. */
-+#define NUM_ARG_REGS 10
-+
-+/* Performs a raw function call with the given NUM_ARG_REGS register arguments
-+   and the specified additional stack arguments (if any). */
-+extern void ffi_call_tile(ffi_sarg reg_args[NUM_ARG_REGS],
-+                          const ffi_sarg *stack_args,
-+                          size_t stack_args_bytes,
-+                          void (*fnaddr)(void))
-+  FFI_HIDDEN;
-+
-+/* This handles the raw call from the closure stub, cleaning up the
-+   parameters and delegating to ffi_closure_tile_inner. */
-+extern void ffi_closure_tile(void) FFI_HIDDEN;
-+
-+
-+ffi_status
-+ffi_prep_cif_machdep(ffi_cif *cif)
-+{
-+  /* We always allocate room for all registers. Even if we don't
-+     use them as parameters, they get returned in the same array
-+     as struct return values so we need to make room. */
-+  if (cif->bytes < NUM_ARG_REGS * FFI_SIZEOF_ARG)
-+    cif->bytes = NUM_ARG_REGS * FFI_SIZEOF_ARG;
-+
-+  if (cif->rtype->size > NUM_ARG_REGS * FFI_SIZEOF_ARG)
-+    cif->flags = FFI_TYPE_STRUCT;
-+  else
-+    cif->flags = FFI_TYPE_INT;
-+
-+  /* Nothing to do. */
-+  return FFI_OK;
-+}
-+
-+
-+static long
-+assign_to_ffi_arg(ffi_sarg *out, void *in, const ffi_type *type,
-+                  int write_to_reg)
-+{
-+  switch (type->type)
-+    {
-+    case FFI_TYPE_SINT8:
-+      *out = *(SINT8 *)in;
-+      return 1;
-+
-+    case FFI_TYPE_UINT8:
-+      *out = *(UINT8 *)in;
-+      return 1;
-+
-+    case FFI_TYPE_SINT16:
-+      *out = *(SINT16 *)in;
-+      return 1;
-+
-+    case FFI_TYPE_UINT16:
-+      *out = *(UINT16 *)in;
-+      return 1;
-+
-+    case FFI_TYPE_SINT32:
-+    case FFI_TYPE_UINT32:
-+#ifndef __LP64__
-+    case FFI_TYPE_POINTER:
-+#endif
-+      /* Note that even unsigned 32-bit quantities are sign extended
-+         on tilegx when stored in a register.  */
-+      *out = *(SINT32 *)in;
-+      return 1;
-+
-+    case FFI_TYPE_FLOAT:
-+#ifdef __tilegx__
-+      if (write_to_reg)
-+        {
-+          /* Properly sign extend the value.  */
-+          union { float f; SINT32 s32; } val;
-+          val.f = *(float *)in;
-+          *out = val.s32;
-+        }
-+      else
-+#endif
-+        {
-+          *(float *)out = *(float *)in;
-+        }
-+      return 1;
-+
-+    case FFI_TYPE_SINT64:
-+    case FFI_TYPE_UINT64:
-+    case FFI_TYPE_DOUBLE:
-+#ifdef __LP64__
-+    case FFI_TYPE_POINTER:
-+#endif
-+      *(UINT64 *)out = *(UINT64 *)in;
-+      return sizeof(UINT64) / FFI_SIZEOF_ARG;
-+
-+    case FFI_TYPE_STRUCT:
-+      memcpy(out, in, type->size);
-+      return (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG;
-+
-+    case FFI_TYPE_VOID:
-+      /* Must be a return type. Nothing to do. */
-+      return 0;
-+
-+    default:
-+      FFI_ASSERT(0);
-+      return -1;
-+    }
-+}
-+
-+
-+void
-+ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
-+{
-+  ffi_sarg * const arg_mem = alloca(cif->bytes);
-+  ffi_sarg * const reg_args = arg_mem;
-+  ffi_sarg * const stack_args = &reg_args[NUM_ARG_REGS];
-+  ffi_sarg *argp = arg_mem;
-+  ffi_type ** const arg_types = cif->arg_types;
-+  const long num_args = cif->nargs;
-+  long i;
-+
-+  if (cif->flags == FFI_TYPE_STRUCT)
-+    {
-+      /* Pass a hidden pointer to the return value. We make sure there
-+         is scratch space for the callee to store the return value even if
-+         our caller doesn't care about it. */
-+      *argp++ = (intptr_t)(rvalue ? rvalue : alloca(cif->rtype->size));
-+
-+      /* No more work needed to return anything. */
-+      rvalue = NULL;
-+    }
-+
-+  for (i = 0; i < num_args; i++)
-+    {
-+      ffi_type *type = arg_types[i];
-+      void * const arg_in = avalue[i];
-+      ptrdiff_t arg_word = argp - arg_mem;
-+
-+#ifndef __tilegx__
-+      /* Doubleword-aligned values are always in an even-number register
-+         pair, or doubleword-aligned stack slot if out of registers. */
-+      long align = arg_word & (type->alignment > FFI_SIZEOF_ARG);
-+      argp += align;
-+      arg_word += align;
-+#endif
-+
-+      if (type->type == FFI_TYPE_STRUCT)
-+        {
-+          const size_t arg_size_in_words =
-+            (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG;
-+
-+          if (arg_word < NUM_ARG_REGS &&
-+              arg_word + arg_size_in_words > NUM_ARG_REGS)
-+            {
-+              /* Args are not allowed to span registers and the stack. */
-+              argp = stack_args;
-+            }
-+
-+          memcpy(argp, arg_in, type->size);
-+          argp += arg_size_in_words;
-+        }
-+      else
-+        {
-+          argp += assign_to_ffi_arg(argp, arg_in, arg_types[i], 1);
-+        }
-+    }
-+
-+  /* Actually do the call. */
-+  ffi_call_tile(reg_args, stack_args,
-+                cif->bytes - (NUM_ARG_REGS * FFI_SIZEOF_ARG), fn);
-+
-+  if (rvalue != NULL)
-+    assign_to_ffi_arg(rvalue, reg_args, cif->rtype, 0);
-+}
-+
-+
-+/* Template code for closure. */
-+extern const UINT64 ffi_template_tramp_tile[] FFI_HIDDEN;
-+
-+
-+ffi_status
-+ffi_prep_closure_loc (ffi_closure *closure,
-+                      ffi_cif *cif,
-+                      void (*fun)(ffi_cif*, void*, void**, void*),
-+                      void *user_data,
-+                      void *codeloc)
-+{
-+#ifdef __tilegx__
-+  /* TILE-Gx */
-+  SINT64 c;
-+  SINT64 h;
-+  int s;
-+  UINT64 *out;
-+
-+  if (cif->abi != FFI_UNIX)
-+    return FFI_BAD_ABI;
-+
-+  out = (UINT64 *)closure->tramp;
-+
-+  c = (intptr_t)closure;
-+  h = (intptr_t)ffi_closure_tile;
-+  s = 0;
-+
-+  /* Find the smallest shift count that doesn't lose information
-+     (i.e. no need to explicitly insert high bits of the address that
-+     are just the sign extension of the low bits). */
-+  while ((c >> s) != (SINT16)(c >> s) || (h >> s) != (SINT16)(h >> s))
-+    s += 16;
-+
-+#define OPS(a, b, shift) \
-+  (create_Imm16_X0((a) >> (shift)) | create_Imm16_X1((b) >> (shift)))
-+
-+  /* Emit the moveli. */
-+  *out++ = ffi_template_tramp_tile[0] | OPS(c, h, s);
-+  for (s -= 16; s >= 0; s -= 16)
-+    *out++ = ffi_template_tramp_tile[1] | OPS(c, h, s);
-+
-+#undef OPS
-+
-+  *out++ = ffi_template_tramp_tile[2];
-+
-+#else
-+  /* TILEPro */
-+  UINT64 *out;
-+  intptr_t delta;
-+
-+  if (cif->abi != FFI_UNIX)
-+    return FFI_BAD_ABI;
-+
-+  out = (UINT64 *)closure->tramp;
-+  delta = (intptr_t)ffi_closure_tile - (intptr_t)codeloc;
-+
-+  *out++ = ffi_template_tramp_tile[0] | create_JOffLong_X1(delta >> 3);
-+#endif
-+
-+  closure->cif = cif;
-+  closure->fun = fun;
-+  closure->user_data = user_data;
-+
-+  invalidate_icache(closure->tramp, (char *)out - closure->tramp,
-+                    getpagesize());
-+
-+  return FFI_OK;
-+}
-+
-+
-+/* This is called by the assembly wrapper for closures. This does
-+   all of the work. On entry reg_args[0] holds the values the registers
-+   had when the closure was invoked. On return reg_args[1] holds the register
-+   values to be returned to the caller (many of which may be garbage). */
-+void FFI_HIDDEN
-+ffi_closure_tile_inner(ffi_closure *closure,
-+                       ffi_sarg reg_args[2][NUM_ARG_REGS],
-+                       ffi_sarg *stack_args)
-+{
-+  ffi_cif * const cif = closure->cif;
-+  void ** const avalue = alloca(cif->nargs * sizeof(void *));
-+  void *rvalue;
-+  ffi_type ** const arg_types = cif->arg_types;
-+  ffi_sarg * const reg_args_in = reg_args[0];
-+  ffi_sarg * const reg_args_out = reg_args[1];
-+  ffi_sarg * argp;
-+  long i, arg_word, nargs = cif->nargs;
-+  /* Use a union to guarantee proper alignment for double. */
-+  union { ffi_sarg arg[NUM_ARG_REGS]; double d; UINT64 u64; } closure_ret;
-+
-+  /* Start out reading register arguments. */
-+  argp = reg_args_in;
-+
-+  /* Copy the caller's structure return address to that the closure
-+     returns the data directly to the caller.  */
-+  if (cif->flags == FFI_TYPE_STRUCT)
-+    {
-+      /* Return by reference via hidden pointer. */
-+      rvalue = (void *)(intptr_t)*argp++;
-+      arg_word = 1;
-+    }
-+  else
-+    {
-+      /* Return the value in registers. */
-+      rvalue = &closure_ret;
-+      arg_word = 0;
-+    }
-+
-+  /* Grab the addresses of the arguments. */
-+  for (i = 0; i < nargs; i++)
-+    {
-+      ffi_type * const type = arg_types[i];
-+      const size_t arg_size_in_words =
-+        (type->size + FFI_SIZEOF_ARG - 1) / FFI_SIZEOF_ARG;
-+
-+#ifndef __tilegx__
-+      /* Doubleword-aligned values are always in an even-number register
-+         pair, or doubleword-aligned stack slot if out of registers. */
-+      long align = arg_word & (type->alignment > FFI_SIZEOF_ARG);
-+      argp += align;
-+      arg_word += align;
-+#endif
-+
-+      if (arg_word == NUM_ARG_REGS ||
-+          (arg_word < NUM_ARG_REGS &&
-+           arg_word + arg_size_in_words > NUM_ARG_REGS))
-+        {
-+          /* Switch to reading arguments from the stack. */
-+          argp = stack_args;
-+          arg_word = NUM_ARG_REGS;
-+        }
-+
-+      avalue[i] = argp;
-+      argp += arg_size_in_words;
-+      arg_word += arg_size_in_words;
-+    }
-+
-+  /* Invoke the closure.  */
-+  closure->fun(cif, rvalue, avalue, closure->user_data);
-+
-+  if (cif->flags != FFI_TYPE_STRUCT)
-+    {
-+      /* Canonicalize for register representation. */
-+      assign_to_ffi_arg(reg_args_out, &closure_ret, cif->rtype, 1);
-+    }
-+}
-diff --git a/js/src/ctypes/libffi/src/tile/ffitarget.h b/js/src/ctypes/libffi/src/tile/ffitarget.h
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/tile/ffitarget.h
-@@ -0,0 +1,65 @@
-+/* -----------------------------------------------------------------*-C-*-
-+   ffitarget.h - Copyright (c) 2012 Tilera Corp.
-+   Target configuration macros for TILE.
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+   DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#ifndef LIBFFI_TARGET_H
-+#define LIBFFI_TARGET_H
-+
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
-+#ifndef LIBFFI_ASM
-+
-+#include <arch/abi.h>
-+
-+typedef uint_reg_t ffi_arg;
-+typedef int_reg_t  ffi_sarg;
-+
-+typedef enum ffi_abi {
-+  FFI_FIRST_ABI = 0,
-+  FFI_UNIX,
-+  FFI_LAST_ABI,
-+  FFI_DEFAULT_ABI = FFI_UNIX
-+} ffi_abi;
-+#endif
-+
-+/* ---- Definitions for closures ----------------------------------------- */
-+#define FFI_CLOSURES 1
-+
-+#ifdef __tilegx__
-+/* We always pass 8-byte values, even in -m32 mode. */
-+# define FFI_SIZEOF_ARG 8
-+# ifdef __LP64__
-+#  define FFI_TRAMPOLINE_SIZE (8 * 5)  /* 5 bundles */
-+# else
-+#  define FFI_TRAMPOLINE_SIZE (8 * 3)  /* 3 bundles */
-+# endif
-+#else
-+# define FFI_SIZEOF_ARG 4
-+# define FFI_TRAMPOLINE_SIZE 8 /* 1 bundle */
-+#endif
-+#define FFI_NATIVE_RAW_API 0
-+
-+#endif
-diff --git a/js/src/ctypes/libffi/src/tile/tile.S b/js/src/ctypes/libffi/src/tile/tile.S
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/tile/tile.S
-@@ -0,0 +1,360 @@
-+/* -----------------------------------------------------------------------
-+   tile.S - Copyright (c) 2011 Tilera Corp.
-+
-+   Tilera TILEPro and TILE-Gx Foreign Function Interface
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+   DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#define LIBFFI_ASM
-+#include <fficonfig.h>
-+#include <ffi.h>
-+
-+/* Number of bytes in a register. */
-+#define REG_SIZE FFI_SIZEOF_ARG
-+
-+/* Number of bytes in stack linkage area for backtracing.
-+
-+   A note about the ABI: on entry to a procedure, sp points to a stack
-+   slot where it must spill the return address if it's not a leaf.
-+   REG_SIZE bytes beyond that is a slot owned by the caller which
-+   contains the sp value that the caller had when it was originally
-+   entered (i.e. the caller's frame pointer). */
-+#define LINKAGE_SIZE (2 * REG_SIZE)
-+
-+/* The first 10 registers are used to pass arguments and return values. */
-+#define NUM_ARG_REGS 10
-+
-+#ifdef __tilegx__
-+#define SW st
-+#define LW ld
-+#define BGZT bgtzt
-+#else
-+#define SW sw
-+#define LW lw
-+#define BGZT bgzt
-+#endif
-+
-+
-+/* void ffi_call_tile (int_reg_t reg_args[NUM_ARG_REGS],
-+                       const int_reg_t *stack_args,
-+                       unsigned long stack_args_bytes,
-+                       void (*fnaddr)(void));
-+
-+        On entry, REG_ARGS contain the outgoing register values,
-+        and STACK_ARGS contains STACK_ARG_BYTES of additional values
-+        to be passed on the stack. If STACK_ARG_BYTES is zero, then
-+        STACK_ARGS is ignored.
-+
-+        When the invoked function returns, the values of r0-r9 are
-+        blindly stored back into REG_ARGS for the caller to examine. */
-+
-+        .section .text.ffi_call_tile, "ax", @progbits
-+        .align  8
-+        .globl  ffi_call_tile
-+        FFI_HIDDEN(ffi_call_tile)
-+ffi_call_tile:
-+
-+/* Incoming arguments. */
-+#define REG_ARGS                r0
-+#define INCOMING_STACK_ARGS     r1
-+#define STACK_ARG_BYTES         r2
-+#define ORIG_FNADDR             r3
-+
-+/* Temporary values. */
-+#define FRAME_SIZE              r10
-+#define TMP                     r11
-+#define TMP2                    r12
-+#define OUTGOING_STACK_ARGS     r13
-+#define REG_ADDR_PTR            r14
-+#define RETURN_REG_ADDR         r15
-+#define FNADDR                  r16
-+
-+        .cfi_startproc
-+        {
-+         /* Save return address. */
-+         SW     sp, lr
-+         .cfi_offset lr, 0
-+         /* Prepare to spill incoming r52. */
-+         addi   TMP, sp, -REG_SIZE
-+         /* Increase frame size to have room to spill r52 and REG_ARGS.
-+            The +7 is to round up mod 8. */
-+         addi   FRAME_SIZE, STACK_ARG_BYTES, \
-+                REG_SIZE + REG_SIZE + LINKAGE_SIZE + 7
-+        }
-+        {
-+         /* Round stack frame size to a multiple of 8 to satisfy ABI. */
-+         andi   FRAME_SIZE, FRAME_SIZE, -8
-+         /* Compute where to spill REG_ARGS value. */
-+         addi   TMP2, sp, -(REG_SIZE * 2)
-+        }
-+        {
-+         /* Spill incoming r52. */
-+         SW     TMP, r52
-+         .cfi_offset r52, -REG_SIZE
-+         /* Set up our frame pointer. */
-+         move   r52, sp
-+         .cfi_def_cfa_register r52
-+         /* Push stack frame. */
-+         sub    sp, sp, FRAME_SIZE
-+        }
-+        {
-+         /* Prepare to set up stack linkage. */
-+         addi   TMP, sp, REG_SIZE
-+         /* Prepare to memcpy stack args. */
-+         addi   OUTGOING_STACK_ARGS, sp, LINKAGE_SIZE
-+         /* Save REG_ARGS which we will need after we call the subroutine. */
-+         SW     TMP2, REG_ARGS
-+        }
-+        {
-+         /* Set up linkage info to hold incoming stack pointer. */
-+         SW     TMP, r52
-+        }
-+        {
-+         /* Skip stack args memcpy if we don't have any stack args (common). */
-+         blezt  STACK_ARG_BYTES, .Ldone_stack_args_memcpy
-+        }
-+
-+.Lmemcpy_stack_args:
-+        {
-+         /* Load incoming argument from stack_args. */
-+         LW     TMP, INCOMING_STACK_ARGS
-+         addi   INCOMING_STACK_ARGS, INCOMING_STACK_ARGS, REG_SIZE
-+        }
-+        {
-+         /* Store stack argument into outgoing stack argument area. */
-+         SW     OUTGOING_STACK_ARGS, TMP
-+         addi   OUTGOING_STACK_ARGS, OUTGOING_STACK_ARGS, REG_SIZE
-+         addi   STACK_ARG_BYTES, STACK_ARG_BYTES, -REG_SIZE
-+        }
-+        {
-+         BGZT   STACK_ARG_BYTES, .Lmemcpy_stack_args
-+        }
-+.Ldone_stack_args_memcpy:
-+
-+        {
-+         /* Copy aside ORIG_FNADDR so we can overwrite its register. */
-+         move   FNADDR, ORIG_FNADDR
-+         /* Prepare to load argument registers. */
-+         addi   REG_ADDR_PTR, r0, REG_SIZE
-+         /* Load outgoing r0. */
-+         LW     r0, r0
-+        }
-+
-+        /* Load up argument registers from the REG_ARGS array. */
-+#define LOAD_REG(REG, PTR) \
-+        { \
-+         LW     REG, PTR ; \
-+         addi   PTR, PTR, REG_SIZE \
-+        }
-+
-+        LOAD_REG(r1, REG_ADDR_PTR)
-+        LOAD_REG(r2, REG_ADDR_PTR)
-+        LOAD_REG(r3, REG_ADDR_PTR)
-+        LOAD_REG(r4, REG_ADDR_PTR)
-+        LOAD_REG(r5, REG_ADDR_PTR)
-+        LOAD_REG(r6, REG_ADDR_PTR)
-+        LOAD_REG(r7, REG_ADDR_PTR)
-+        LOAD_REG(r8, REG_ADDR_PTR)
-+        LOAD_REG(r9, REG_ADDR_PTR)
-+
-+        {
-+         /* Call the subroutine. */
-+         jalr   FNADDR
-+        }
-+
-+        {
-+         /* Restore original lr. */
-+         LW     lr, r52
-+         /* Prepare to recover ARGS, which we spilled earlier. */
-+         addi   TMP, r52, -(2 * REG_SIZE)
-+        }
-+        {
-+         /* Restore ARGS, so we can fill it in with the return regs r0-r9. */
-+         LW     RETURN_REG_ADDR, TMP
-+         /* Prepare to restore original r52. */
-+         addi   TMP, r52, -REG_SIZE
-+        }
-+
-+        {
-+         /* Pop stack frame. */
-+         move   sp, r52
-+         /* Restore original r52. */
-+         LW     r52, TMP
-+        }
-+
-+#define STORE_REG(REG, PTR) \
-+        { \
-+         SW     PTR, REG ; \
-+         addi   PTR, PTR, REG_SIZE \
-+        }
-+
-+        /* Return all register values by reference. */
-+        STORE_REG(r0, RETURN_REG_ADDR)
-+        STORE_REG(r1, RETURN_REG_ADDR)
-+        STORE_REG(r2, RETURN_REG_ADDR)
-+        STORE_REG(r3, RETURN_REG_ADDR)
-+        STORE_REG(r4, RETURN_REG_ADDR)
-+        STORE_REG(r5, RETURN_REG_ADDR)
-+        STORE_REG(r6, RETURN_REG_ADDR)
-+        STORE_REG(r7, RETURN_REG_ADDR)
-+        STORE_REG(r8, RETURN_REG_ADDR)
-+        STORE_REG(r9, RETURN_REG_ADDR)
-+
-+        {
-+         jrp    lr
-+        }
-+
-+        .cfi_endproc
-+        .size ffi_call_tile, .-ffi_call_tile
-+
-+/* ffi_closure_tile(...)
-+
-+   On entry, lr points to the closure plus 8 bytes, and r10
-+   contains the actual return address.
-+
-+   This function simply dumps all register parameters into a stack array
-+   and passes the closure, the registers array, and the stack arguments
-+   to C code that does all of the actual closure processing. */
-+
-+        .section .text.ffi_closure_tile, "ax", @progbits
-+        .align  8
-+        .globl  ffi_closure_tile
-+        FFI_HIDDEN(ffi_closure_tile)
-+
-+        .cfi_startproc
-+/* Room to spill all NUM_ARG_REGS incoming registers, plus frame linkage. */
-+#define CLOSURE_FRAME_SIZE (((NUM_ARG_REGS * REG_SIZE * 2 + LINKAGE_SIZE) + 7) & -8)
-+ffi_closure_tile:
-+        {
-+#ifdef __tilegx__
-+         st     sp, lr
-+         .cfi_offset lr, 0
-+#else
-+         /* Save return address (in r10 due to closure stub wrapper). */
-+         SW     sp, r10
-+         .cfi_return_column r10
-+         .cfi_offset r10, 0
-+#endif
-+         /* Compute address for stack frame linkage. */
-+         addli   r10, sp, -(CLOSURE_FRAME_SIZE - REG_SIZE)
-+        }
-+        {
-+         /* Save incoming stack pointer in linkage area. */
-+         SW     r10, sp
-+         .cfi_offset sp, -(CLOSURE_FRAME_SIZE - REG_SIZE)
-+         /* Push a new stack frame. */
-+         addli   sp, sp, -CLOSURE_FRAME_SIZE
-+         .cfi_adjust_cfa_offset CLOSURE_FRAME_SIZE
-+        }
-+
-+        {
-+         /* Create pointer to where to start spilling registers. */
-+         addi   r10, sp, LINKAGE_SIZE
-+        }
-+
-+        /* Spill all the incoming registers. */
-+        STORE_REG(r0, r10)
-+        STORE_REG(r1, r10)
-+        STORE_REG(r2, r10)
-+        STORE_REG(r3, r10)
-+        STORE_REG(r4, r10)
-+        STORE_REG(r5, r10)
-+        STORE_REG(r6, r10)
-+        STORE_REG(r7, r10)
-+        STORE_REG(r8, r10)
-+        {
-+         /* Save r9. */
-+         SW     r10, r9
-+#ifdef __tilegx__
-+         /* Pointer to closure is passed in r11. */
-+         move  r0, r11
-+#else
-+         /* Compute pointer to the closure object. Because the closure
-+            starts with a "jal ffi_closure_tile", we can just take the
-+            value of lr (a phony return address pointing into the closure)
-+            and subtract 8. */
-+         addi   r0, lr, -8
-+#endif
-+         /* Compute a pointer to the register arguments we just spilled. */
-+         addi   r1, sp, LINKAGE_SIZE
-+        }
-+        {
-+         /* Compute a pointer to the extra stack arguments (if any). */
-+         addli   r2, sp, CLOSURE_FRAME_SIZE + LINKAGE_SIZE
-+         /* Call C code to deal with all of the grotty details. */
-+         jal    ffi_closure_tile_inner
-+        }
-+        {
-+         addli   r10, sp, CLOSURE_FRAME_SIZE
-+        }
-+        {
-+         /* Restore the return address. */
-+         LW     lr, r10
-+         /* Compute pointer to registers array. */
-+         addli   r10, sp, LINKAGE_SIZE + (NUM_ARG_REGS * REG_SIZE)
-+        }
-+        /* Return all the register values, which C code may have set. */
-+        LOAD_REG(r0, r10)
-+        LOAD_REG(r1, r10)
-+        LOAD_REG(r2, r10)
-+        LOAD_REG(r3, r10)
-+        LOAD_REG(r4, r10)
-+        LOAD_REG(r5, r10)
-+        LOAD_REG(r6, r10)
-+        LOAD_REG(r7, r10)
-+        LOAD_REG(r8, r10)
-+        LOAD_REG(r9, r10)
-+        {
-+         /* Pop the frame. */
-+         addli   sp, sp, CLOSURE_FRAME_SIZE
-+         jrp    lr
-+        }
-+
-+        .cfi_endproc
-+        .size   ffi_closure_tile, . - ffi_closure_tile
-+
-+
-+/* What follows are code template instructions that get copied to the
-+   closure trampoline by ffi_prep_closure_loc.  The zeroed operands
-+   get replaced by their proper values at runtime. */
-+
-+        .section .text.ffi_template_tramp_tile, "ax", @progbits
-+        .align  8
-+        .globl  ffi_template_tramp_tile
-+        FFI_HIDDEN(ffi_template_tramp_tile)
-+ffi_template_tramp_tile:
-+#ifdef __tilegx__
-+        {
-+          moveli r11, 0 /* backpatched to address of containing closure. */
-+          moveli r10, 0 /* backpatched to ffi_closure_tile. */
-+        }
-+        /* Note: the following bundle gets generated multiple times
-+           depending on the pointer value (esp. useful for -m32 mode). */
-+        { shl16insli r11, r11, 0 ; shl16insli r10, r10, 0 }
-+        { info 2+8 /* for backtracer: -> pc in lr, frame size 0 */ ; jr r10 }
-+#else
-+        /* 'jal .' yields a PC-relative offset of zero so we can OR in the
-+           right offset at runtime. */
-+        { move r10, lr ; jal . /* ffi_closure_tile */ }
-+#endif
-+
-+        .size   ffi_template_tramp_tile, . - ffi_template_tramp_tile
-diff --git a/js/src/ctypes/libffi/src/types.c b/js/src/ctypes/libffi/src/types.c
---- a/js/src/ctypes/libffi/src/types.c
-+++ b/js/src/ctypes/libffi/src/types.c
-@@ -39,16 +39,27 @@ struct struct_align_##name {			\
-   type x;					\
- };						\
- const ffi_type ffi_type_##name = {		\
-   sizeof(type),					\
-   offsetof(struct struct_align_##name, x),	\
-   id, NULL					\
- }
- 
-+#define FFI_NONCONST_TYPEDEF(name, type, id)	\
-+struct struct_align_##name {			\
-+  char c;					\
-+  type x;					\
-+};						\
-+ffi_type ffi_type_##name = {			\
-+  sizeof(type),					\
-+  offsetof(struct struct_align_##name, x),	\
-+  id, NULL					\
-+}
-+
- /* Size and alignment are fake here. They must not be 0. */
- const ffi_type ffi_type_void = {
-   1, 1, FFI_TYPE_VOID, NULL
- };
- 
- FFI_TYPEDEF(uint8, UINT8, FFI_TYPE_UINT8);
- FFI_TYPEDEF(sint8, SINT8, FFI_TYPE_SINT8);
- FFI_TYPEDEF(uint16, UINT16, FFI_TYPE_UINT16);
-@@ -68,10 +79,14 @@ FFI_TYPEDEF(double, double, FFI_TYPE_DOU
-    maintain binary compatibility, as -mlong-double-128 can be used
-    at any time.  */
- /* Validate the hard-coded number below.  */
- # if defined(__LONG_DOUBLE_128__) && FFI_TYPE_LONGDOUBLE != 4
- #  error FFI_TYPE_LONGDOUBLE out of date
- # endif
- const ffi_type ffi_type_longdouble = { 16, 16, 4, NULL };
- #elif FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+# if HAVE_LONG_DOUBLE_VARIANT
-+FFI_NONCONST_TYPEDEF(longdouble, long double, FFI_TYPE_LONGDOUBLE);
-+# else
- FFI_TYPEDEF(longdouble, long double, FFI_TYPE_LONGDOUBLE);
-+# endif
- #endif
-diff --git a/js/src/ctypes/libffi/src/vax/elfbsd.S b/js/src/ctypes/libffi/src/vax/elfbsd.S
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/vax/elfbsd.S
-@@ -0,0 +1,195 @@
-+/*
-+ * Copyright (c) 2013 Miodrag Vallat.  <miod@openbsd.org>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * ``Software''), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ * 
-+ * The above copyright notice and this permission notice shall be included
-+ * in all copies or substantial portions of the Software.
-+ * 
-+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/*
-+ * vax Foreign Function Interface
-+ */
-+
-+#define LIBFFI_ASM	
-+#include <fficonfig.h>
-+#include <ffi.h>
-+
-+	.text
-+
-+/*
-+ * void *					%r0
-+ * ffi_call_elfbsd(extended_cif *ecif,		4(%ap)
-+ *		   unsigned bytes,		8(%ap)
-+ *		   unsigned flags,		12(%ap)
-+ *		   void *rvalue,		16(%ap)
-+ *		   void (*fn)());		20(%ap)
-+ */
-+	.globl	ffi_call_elfbsd
-+	.type	ffi_call_elfbsd,@function
-+	.align	2
-+ffi_call_elfbsd:
-+	.word	0x00c		# save R2 and R3
-+
-+	# Allocate stack space for the args
-+	subl2	8(%ap), %sp
-+
-+	# Call ffi_prep_args
-+	pushl	%sp
-+	pushl	4(%ap)
-+	calls	$2, ffi_prep_args
-+
-+	# Get function pointer
-+	movl	20(%ap), %r1
-+
-+	# Build a CALLS frame
-+	ashl	$-2, 8(%ap), %r0
-+	pushl	%r0		# argument stack usage
-+	movl	%sp, %r0	# future %ap
-+	# saved registers
-+	bbc	$11, 0(%r1), 1f
-+	pushl	%r11
-+1:	bbc	$10, 0(%r1), 1f
-+	pushl	%r10
-+1:	bbc	$9, 0(%r1), 1f
-+	pushl	%r9
-+1:	bbc	$8, 0(%r1), 1f
-+	pushl	%r8
-+1:	bbc	$7, 0(%r1), 1f
-+	pushl	%r7
-+1:	bbc	$6, 0(%r1), 1f
-+	pushl	%r6
-+1:	bbc	$5, 0(%r1), 1f
-+	pushl	%r5
-+1:	bbc	$4, 0(%r1), 1f
-+	pushl	%r4
-+1:	bbc	$3, 0(%r1), 1f
-+	pushl	%r3
-+1:	bbc	$2, 0(%r1), 1f
-+	pushl	%r2
-+1:	
-+	pushal	9f
-+	pushl	%fp
-+	pushl	%ap
-+	movl	16(%ap), %r3	# struct return address, if needed
-+	movl	%r0, %ap
-+	movzwl	4(%fp), %r0	# previous PSW, without the saved registers mask
-+	bisl2	$0x20000000, %r0 # calls frame
-+	movzwl	0(%r1), %r2
-+	bicw2	$0xf003, %r2	# only keep R11-R2
-+	ashl	$16, %r2, %r2
-+	bisl2	%r2, %r0	# saved register mask of the called function
-+	pushl	%r0	
-+	pushl	$0
-+	movl	%sp, %fp
-+
-+	# Invoke the function
-+	pushal	2(%r1)		# skip procedure entry mask
-+	movl	%r3, %r1
-+	bicpsw	$0x000f
-+	rsb
-+
-+9:
-+	# Copy return value if necessary
-+	tstl	16(%ap)
-+	jeql	9f
-+	movl	16(%ap), %r2
-+
-+	bbc	$0, 12(%ap), 1f	# CIF_FLAGS_CHAR
-+	movb	%r0, 0(%r2)
-+	brb	9f
-+1:
-+	bbc	$1, 12(%ap), 1f	# CIF_FLAGS_SHORT
-+	movw	%r0, 0(%r2)
-+	brb	9f
-+1:
-+	bbc	$2, 12(%ap), 1f	# CIF_FLAGS_INT
-+	movl	%r0, 0(%r2)
-+	brb	9f
-+1:
-+	bbc	$3, 12(%ap), 1f	# CIF_FLAGS_DINT
-+	movq	%r0, 0(%r2)
-+	brb	9f
-+1:
-+	movl	%r1, %r0	# might have been a struct
-+	#brb	9f
-+
-+9:
-+	ret
-+
-+/*
-+ * ffi_closure_elfbsd(void);
-+ * invoked with	%r0: ffi_closure *closure
-+ */
-+	.globl	ffi_closure_elfbsd
-+	.type	ffi_closure_elfbsd, @function
-+	.align	2
-+ffi_closure_elfbsd:
-+	.word	0
-+
-+	# Allocate room on stack for return value
-+	subl2	$8, %sp
-+
-+	# Invoke the closure function
-+	pushal	4(%ap)		# calling stack
-+	pushal	4(%sp)		# return value
-+	pushl	%r0		# closure
-+	calls	$3, ffi_closure_elfbsd_inner
-+
-+	# Copy return value if necessary
-+	bitb	$1, %r0		# CIF_FLAGS_CHAR
-+	beql	1f
-+	movb	0(%sp), %r0
-+	brb	9f
-+1:
-+	bitb	$2, %r0		# CIF_FLAGS_SHORT
-+	beql	1f
-+	movw	0(%sp), %r0
-+	brb	9f
-+1:
-+	bitb	$4, %r0		# CIF_FLAGS_INT
-+	beql	1f
-+	movl	0(%sp), %r0
-+	brb	9f
-+1:
-+	bitb	$8, %r0		# CIF_FLAGS_DINT
-+	beql	1f
-+	movq	0(%sp), %r0
-+	#brb	9f
-+1:
-+
-+9:
-+	ret
-+
-+/*
-+ * ffi_closure_struct_elfbsd(void);
-+ * invoked with	%r0: ffi_closure *closure
-+ *		%r1: struct return address
-+ */
-+	.globl	ffi_closure_struct_elfbsd
-+	.type	ffi_closure_struct_elfbsd, @function
-+	.align	2
-+ffi_closure_struct_elfbsd:
-+	.word	0
-+
-+	# Invoke the closure function
-+	pushal	4(%ap)		# calling stack
-+	pushl	%r1		# return value
-+	pushl	%r0		# closure
-+	calls	$3, ffi_closure_elfbsd_inner
-+
-+	ret
-diff --git a/js/src/ctypes/libffi/src/vax/ffi.c b/js/src/ctypes/libffi/src/vax/ffi.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/vax/ffi.c
-@@ -0,0 +1,276 @@
-+/*
-+ * Copyright (c) 2013 Miodrag Vallat.  <miod@openbsd.org>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * ``Software''), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ * 
-+ * The above copyright notice and this permission notice shall be included
-+ * in all copies or substantial portions of the Software.
-+ * 
-+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/*
-+ * vax Foreign Function Interface
-+ *
-+ * This file attempts to provide all the FFI entry points which can reliably
-+ * be implemented in C.
-+ */
-+
-+#include <ffi.h>
-+#include <ffi_common.h>
-+
-+#include <stdlib.h>
-+#include <unistd.h>
-+
-+#define CIF_FLAGS_CHAR		1	/* for struct only */
-+#define CIF_FLAGS_SHORT		2	/* for struct only */
-+#define CIF_FLAGS_INT		4
-+#define CIF_FLAGS_DINT		8
-+
-+/*
-+ * Foreign Function Interface API
-+ */
-+
-+void ffi_call_elfbsd (extended_cif *, unsigned, unsigned, void *,
-+		       void (*) ());
-+void *ffi_prep_args (extended_cif *ecif, void *stack);
-+
-+void *
-+ffi_prep_args (extended_cif *ecif, void *stack)
-+{
-+  unsigned int i;
-+  void **p_argv;
-+  char *argp;
-+  ffi_type **p_arg;
-+  void *struct_value_ptr;
-+
-+  argp = stack;
-+
-+  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT
-+      && !ecif->cif->flags)
-+    struct_value_ptr = ecif->rvalue;
-+  else
-+    struct_value_ptr = NULL;
-+
-+  p_argv = ecif->avalue;
-+
-+  for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
-+       i != 0;
-+       i--, p_arg++)
-+    {
-+      size_t z;
-+
-+      z = (*p_arg)->size;
-+      if (z < sizeof (int))
-+	{
-+	  switch ((*p_arg)->type)
-+	    {
-+	    case FFI_TYPE_SINT8:
-+	      *(signed int *) argp = (signed int) *(SINT8 *) *p_argv;
-+	      break;
-+
-+	    case FFI_TYPE_UINT8:
-+	      *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv;
-+	      break;
-+
-+	    case FFI_TYPE_SINT16:
-+	      *(signed int *) argp = (signed int) *(SINT16 *) *p_argv;
-+	      break;
-+
-+	    case FFI_TYPE_UINT16:
-+	      *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv;
-+	      break;
-+
-+	    case FFI_TYPE_STRUCT:
-+	      memcpy (argp, *p_argv, z);
-+	      break;
-+
-+	    default:
-+	      FFI_ASSERT (0);
-+	    }
-+	  z = sizeof (int);
-+	}
-+      else
-+	{
-+	  memcpy (argp, *p_argv, z);
-+
-+	  /* Align if necessary.  */
-+	  if ((sizeof(int) - 1) & z)
-+	    z = ALIGN(z, sizeof(int));
-+	}
-+
-+      p_argv++;
-+      argp += z;
-+    }
-+
-+  return struct_value_ptr;
-+}
-+
-+ffi_status
-+ffi_prep_cif_machdep (ffi_cif *cif)
-+{
-+  /* Set the return type flag */
-+  switch (cif->rtype->type)
-+    {
-+    case FFI_TYPE_VOID:
-+      cif->flags = 0;
-+      break;
-+
-+    case FFI_TYPE_STRUCT:
-+      if (cif->rtype->elements[0]->type == FFI_TYPE_STRUCT &&
-+	  cif->rtype->elements[1])
-+	{
-+	  cif->flags = 0;
-+	  break;
-+	}
-+
-+      if (cif->rtype->size == sizeof (char))
-+	cif->flags = CIF_FLAGS_CHAR;
-+      else if (cif->rtype->size == sizeof (short))
-+	cif->flags = CIF_FLAGS_SHORT;
-+      else if (cif->rtype->size == sizeof (int))
-+	cif->flags = CIF_FLAGS_INT;
-+      else if (cif->rtype->size == 2 * sizeof (int))
-+	cif->flags = CIF_FLAGS_DINT;
-+      else
-+	cif->flags = 0;
-+      break;
-+
-+    default:
-+      if (cif->rtype->size <= sizeof (int))
-+	cif->flags = CIF_FLAGS_INT;
-+      else
-+	cif->flags = CIF_FLAGS_DINT;
-+      break;
-+    }
-+
-+  return FFI_OK;
-+}
-+
-+void
-+ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue)
-+{
-+  extended_cif ecif;
-+
-+  ecif.cif = cif;
-+  ecif.avalue = avalue;
-+
-+  /* If the return value is a struct and we don't have a return value
-+     address then we need to make one.  */
-+
-+  if (rvalue == NULL
-+      && cif->rtype->type == FFI_TYPE_STRUCT
-+      && cif->flags == 0)
-+    ecif.rvalue = alloca (cif->rtype->size);
-+  else
-+    ecif.rvalue = rvalue;
-+
-+  switch (cif->abi)
-+    {
-+    case FFI_ELFBSD:
-+      ffi_call_elfbsd (&ecif, cif->bytes, cif->flags, ecif.rvalue, fn);
-+      break;
-+
-+    default:
-+      FFI_ASSERT (0);
-+      break;
-+    }
-+}
-+
-+/*
-+ * Closure API
-+ */
-+
-+void ffi_closure_elfbsd (void);
-+void ffi_closure_struct_elfbsd (void);
-+unsigned int ffi_closure_elfbsd_inner (ffi_closure *, void *, char *);
-+
-+static void
-+ffi_prep_closure_elfbsd (ffi_cif *cif, void **avalue, char *stackp)
-+{
-+  unsigned int i;
-+  void **p_argv;
-+  ffi_type **p_arg;
-+
-+  p_argv = avalue;
-+
-+  for (i = cif->nargs, p_arg = cif->arg_types; i != 0; i--, p_arg++)
-+    {
-+      size_t z;
-+
-+      z = (*p_arg)->size;
-+      *p_argv = stackp;
-+
-+      /* Align if necessary */
-+      if ((sizeof (int) - 1) & z)
-+	z = ALIGN(z, sizeof (int));
-+
-+      p_argv++;
-+      stackp += z;
-+    }
-+}
-+
-+unsigned int
-+ffi_closure_elfbsd_inner (ffi_closure *closure, void *resp, char *stack)
-+{
-+  ffi_cif *cif;
-+  void **arg_area;
-+
-+  cif = closure->cif;
-+  arg_area = (void **) alloca (cif->nargs * sizeof (void *));
-+
-+  ffi_prep_closure_elfbsd (cif, arg_area, stack);
-+
-+  (closure->fun) (cif, resp, arg_area, closure->user_data);
-+
-+  return cif->flags;
-+}
-+
-+ffi_status
-+ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif,
-+		      void (*fun)(ffi_cif *, void *, void **, void *),
-+		      void *user_data, void *codeloc)
-+{
-+  char *tramp = (char *) codeloc;
-+  void *fn;
-+
-+  FFI_ASSERT (cif->abi == FFI_ELFBSD);
-+
-+  /* entry mask */
-+  *(unsigned short *)(tramp + 0) = 0x0000;
-+  /* movl #closure, r0 */
-+  tramp[2] = 0xd0;
-+  tramp[3] = 0x8f;
-+  *(unsigned int *)(tramp + 4) = (unsigned int) closure;
-+  tramp[8] = 0x50;
-+
-+  if (cif->rtype->type == FFI_TYPE_STRUCT
-+      && !cif->flags)
-+    fn = &ffi_closure_struct_elfbsd;
-+  else
-+    fn = &ffi_closure_elfbsd;
-+
-+  /* jmpl #fn */
-+  tramp[9] = 0x17;
-+  tramp[10] = 0xef;
-+  *(unsigned int *)(tramp + 11) = (unsigned int)fn + 2 -
-+				  (unsigned int)tramp - 9 - 6;
-+
-+  closure->cif = cif;
-+  closure->user_data = user_data;
-+  closure->fun = fun;
-+
-+  return FFI_OK;
-+}
-diff --git a/js/src/ctypes/libffi/src/vax/ffitarget.h b/js/src/ctypes/libffi/src/vax/ffitarget.h
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/vax/ffitarget.h
-@@ -0,0 +1,49 @@
-+/*
-+ * Copyright (c) 2013 Miodrag Vallat.  <miod@openbsd.org>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * ``Software''), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ * 
-+ * The above copyright notice and this permission notice shall be included
-+ * in all copies or substantial portions of the Software.
-+ * 
-+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/*
-+ * vax Foreign Function Interface
-+ */
-+
-+#ifndef LIBFFI_TARGET_H
-+#define LIBFFI_TARGET_H
-+
-+#ifndef LIBFFI_ASM
-+typedef unsigned long ffi_arg;
-+typedef signed long ffi_sarg;
-+
-+typedef enum ffi_abi {
-+  FFI_FIRST_ABI = 0,
-+  FFI_ELFBSD,
-+  FFI_DEFAULT_ABI = FFI_ELFBSD,
-+  FFI_LAST_ABI = FFI_DEFAULT_ABI + 1
-+} ffi_abi;
-+#endif
-+
-+/* ---- Definitions for closures ----------------------------------------- */
-+
-+#define FFI_CLOSURES 1
-+#define FFI_TRAMPOLINE_SIZE 15
-+#define FFI_NATIVE_RAW_API 0
-+
-+#endif
-diff --git a/js/src/ctypes/libffi/src/x86/ffi.c b/js/src/ctypes/libffi/src/x86/ffi.c
---- a/js/src/ctypes/libffi/src/x86/ffi.c
-+++ b/js/src/ctypes/libffi/src/x86/ffi.c
-@@ -1,14 +1,14 @@
- /* -----------------------------------------------------------------------
-    ffi.c - Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008  Red Hat, Inc.
-            Copyright (c) 2002  Ranjit Mathew
-            Copyright (c) 2002  Bo Thorsen
-            Copyright (c) 2002  Roger Sayle
--           Copyright (C) 2008  Free Software Foundation, Inc.
-+           Copyright (C) 2008, 2010  Free Software Foundation, Inc.
- 
-    x86 Foreign Function Interface
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -34,36 +34,56 @@
- #include <windows.h>
- #endif
- 
- #include <ffi.h>
- #include <ffi_common.h>
- 
- #include <stdlib.h>
- 
-+
- /* ffi_prep_args is called by the assembly routine once stack space
-    has been allocated for the function's arguments */
- 
-+void ffi_prep_args(char *stack, extended_cif *ecif);
- void ffi_prep_args(char *stack, extended_cif *ecif)
- {
-   register unsigned int i;
-   register void **p_argv;
-   register char *argp;
-   register ffi_type **p_arg;
-+#ifndef X86_WIN64
-+  size_t p_stack_args[2];
-+  void *p_stack_data[2];
-+  char *argp2 = stack;
-+  int stack_args_count = 0;
-+  int cabi = ecif->cif->abi;
-+#endif
- 
-   argp = stack;
- 
--  if (ecif->cif->flags == FFI_TYPE_STRUCT
-+  if ((ecif->cif->flags == FFI_TYPE_STRUCT
-+       || ecif->cif->flags == FFI_TYPE_MS_STRUCT)
- #ifdef X86_WIN64
-       && (ecif->cif->rtype->size != 1 && ecif->cif->rtype->size != 2
-           && ecif->cif->rtype->size != 4 && ecif->cif->rtype->size != 8)
- #endif
-       )
-     {
-       *(void **) argp = ecif->rvalue;
-+#ifndef X86_WIN64
-+      /* For fastcall/thiscall this is first register-passed
-+         argument.  */
-+      if (cabi == FFI_THISCALL || cabi == FFI_FASTCALL)
-+	{
-+	  p_stack_args[stack_args_count] = sizeof (void*);
-+	  p_stack_data[stack_args_count] = argp;
-+	  ++stack_args_count;
-+	}
-+#endif
-       argp += sizeof(void*);
-     }
- 
-   p_argv = ecif->avalue;
- 
-   for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
-        i != 0;
-        i--, p_arg++)
-@@ -129,24 +149,80 @@ void ffi_prep_args(char *stack, extended
-             default:
-               FFI_ASSERT(0);
-             }
-         }
-       else
-         {
-           memcpy(argp, *p_argv, z);
-         }
-+
-+#ifndef X86_WIN64
-+    /* For thiscall/fastcall convention register-passed arguments
-+       are the first two none-floating-point arguments with a size
-+       smaller or equal to sizeof (void*).  */
-+    if ((cabi == FFI_THISCALL && stack_args_count < 1)
-+        || (cabi == FFI_FASTCALL && stack_args_count < 2))
-+      {
-+	if (z <= 4
-+	    && ((*p_arg)->type != FFI_TYPE_FLOAT
-+	        && (*p_arg)->type != FFI_TYPE_STRUCT))
-+	  {
-+	    p_stack_args[stack_args_count] = z;
-+	    p_stack_data[stack_args_count] = argp;
-+	    ++stack_args_count;
-+	  }
-+      }
-+#endif
-       p_argv++;
- #ifdef X86_WIN64
-       argp += (z + sizeof(void*) - 1) & ~(sizeof(void*) - 1);
- #else
-       argp += z;
- #endif
-     }
--  
-+
-+#ifndef X86_WIN64
-+  /* We need to move the register-passed arguments for thiscall/fastcall
-+     on top of stack, so that those can be moved to registers ecx/edx by
-+     call-handler.  */
-+  if (stack_args_count > 0)
-+    {
-+      size_t zz = (p_stack_args[0] + 3) & ~3;
-+      char *h;
-+
-+      /* Move first argument to top-stack position.  */
-+      if (p_stack_data[0] != argp2)
-+	{
-+	  h = alloca (zz + 1);
-+	  memcpy (h, p_stack_data[0], zz);
-+	  memmove (argp2 + zz, argp2,
-+	           (size_t) ((char *) p_stack_data[0] - (char*)argp2));
-+	  memcpy (argp2, h, zz);
-+	}
-+
-+      argp2 += zz;
-+      --stack_args_count;
-+      if (zz > 4)
-+	stack_args_count = 0;
-+
-+      /* If we have a second argument, then move it on top
-+         after the first one.  */
-+      if (stack_args_count > 0 && p_stack_data[1] != argp2)
-+	{
-+	  zz = p_stack_args[1];
-+	  zz = (zz + 3) & ~3;
-+	  h = alloca (zz + 1);
-+	  h = alloca (zz + 1);
-+	  memcpy (h, p_stack_data[1], zz);
-+	  memmove (argp2 + zz, argp2, (size_t) ((char*) p_stack_data[1] - (char*)argp2));
-+	  memcpy (argp2, h, zz);
-+	}
-+    }
-+#endif
-   return;
- }
- 
- /* Perform machine dependent cif processing */
- ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
- {
-   unsigned int i;
-   ffi_type **ptr;
-@@ -201,17 +277,22 @@ ffi_status ffi_prep_cif_machdep(ffi_cif 
-         }
-       else if (cif->rtype->size == 8)
-         {
-           cif->flags = FFI_TYPE_SINT64; /* same as int64 type */
-         }
-       else
- #endif
-         {
--          cif->flags = FFI_TYPE_STRUCT;
-+#ifdef X86_WIN32
-+          if (cif->abi == FFI_MS_CDECL)
-+            cif->flags = FFI_TYPE_MS_STRUCT;
-+          else
-+#endif
-+            cif->flags = FFI_TYPE_STRUCT;
-           /* allocate space for return value pointer */
-           cif->bytes += ALIGN(sizeof(void*), FFI_SIZEOF_ARG);
-         }
-       break;
- 
-     default:
- #ifdef X86_WIN64
-       cif->flags = FFI_TYPE_SINT64;
-@@ -223,40 +304,42 @@ ffi_status ffi_prep_cif_machdep(ffi_cif 
- #endif
-       break;
-     }
- 
-   for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
-     {
-       if (((*ptr)->alignment - 1) & cif->bytes)
-         cif->bytes = ALIGN(cif->bytes, (*ptr)->alignment);
--      cif->bytes += ALIGN((*ptr)->size, FFI_SIZEOF_ARG);
-+      cif->bytes += (unsigned)ALIGN((*ptr)->size, FFI_SIZEOF_ARG);
-     }
- 
- #ifdef X86_WIN64
-   /* ensure space for storing four registers */
-   cif->bytes += 4 * sizeof(ffi_arg);
- #endif
- 
--#ifdef X86_DARWIN
--  cif->bytes = (cif->bytes + 15) & ~0xF;
-+#ifndef X86_WIN32
-+#ifndef X86_WIN64
-+  if (cif->abi != FFI_STDCALL && cif->abi != FFI_THISCALL && cif->abi != FFI_FASTCALL)
-+#endif
-+    cif->bytes = (cif->bytes + 15) & ~0xF;
- #endif
- 
-   return FFI_OK;
- }
- 
- #ifdef X86_WIN64
- extern int
- ffi_call_win64(void (*)(char *, extended_cif *), extended_cif *,
-                unsigned, unsigned, unsigned *, void (*fn)(void));
--#elif defined(X86_WIN32)
-+#else
- extern void
- ffi_call_win32(void (*)(char *, extended_cif *), extended_cif *,
--               unsigned, unsigned, unsigned *, void (*fn)(void));
--#else
-+               unsigned, unsigned, unsigned, unsigned *, void (*fn)(void));
- extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *,
-                           unsigned, unsigned, unsigned *, void (*fn)(void));
- #endif
- 
- void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
- {
-   extended_cif ecif;
- 
-@@ -271,68 +354,104 @@ void ffi_call(ffi_cif *cif, void (*fn)(v
-       && cif->flags == FFI_TYPE_STRUCT
-       && cif->rtype->size != 1 && cif->rtype->size != 2
-       && cif->rtype->size != 4 && cif->rtype->size != 8)
-     {
-       ecif.rvalue = alloca((cif->rtype->size + 0xF) & ~0xF);
-     }
- #else
-   if (rvalue == NULL
--      && cif->flags == FFI_TYPE_STRUCT)
-+      && (cif->flags == FFI_TYPE_STRUCT
-+          || cif->flags == FFI_TYPE_MS_STRUCT))
-     {
-       ecif.rvalue = alloca(cif->rtype->size);
-     }
- #endif
-   else
-     ecif.rvalue = rvalue;
-     
-   
-   switch (cif->abi) 
-     {
- #ifdef X86_WIN64
-     case FFI_WIN64:
-       ffi_call_win64(ffi_prep_args, &ecif, cif->bytes,
-                      cif->flags, ecif.rvalue, fn);
-       break;
--#elif defined(X86_WIN32)
-+#else
-+#ifndef X86_WIN32
-     case FFI_SYSV:
--    case FFI_STDCALL:
--      ffi_call_win32(ffi_prep_args, &ecif, cif->bytes, cif->flags,
--                     ecif.rvalue, fn);
-+      ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue,
-+                    fn);
-       break;
- #else
-     case FFI_SYSV:
--      ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue,
--                    fn);
-+    case FFI_MS_CDECL:
-+#endif
-+    case FFI_STDCALL:
-+      ffi_call_win32(ffi_prep_args, &ecif, cif->abi, cif->bytes, cif->flags,
-+		     ecif.rvalue, fn);
-+      break;
-+    case FFI_THISCALL:
-+    case FFI_FASTCALL:
-+      {
-+	unsigned int abi = cif->abi;
-+	unsigned int i, passed_regs = 0;
-+
-+	if (cif->flags == FFI_TYPE_STRUCT)
-+	  ++passed_regs;
-+
-+	for (i=0; i < cif->nargs && passed_regs < 2;i++)
-+	  {
-+	    size_t sz;
-+
-+	    if (cif->arg_types[i]->type == FFI_TYPE_FLOAT
-+	        || cif->arg_types[i]->type == FFI_TYPE_STRUCT)
-+	      continue;
-+	    sz = (cif->arg_types[i]->size + 3) & ~3;
-+	    if (sz == 0 || sz > 4)
-+	      continue;
-+	    ++passed_regs;
-+	  }
-+	if (passed_regs < 2 && abi == FFI_FASTCALL)
-+	  abi = FFI_THISCALL;
-+	if (passed_regs < 1 && abi == FFI_THISCALL)
-+	  abi = FFI_STDCALL;
-+        ffi_call_win32(ffi_prep_args, &ecif, abi, cif->bytes, cif->flags,
-+                       ecif.rvalue, fn);
-+      }
-       break;
- #endif
-     default:
-       FFI_ASSERT(0);
-       break;
-     }
- }
- 
- 
- /** private members **/
- 
- /* The following __attribute__((regparm(1))) decorations will have no effect
--   on MSVC - standard cdecl convention applies. */
-+   on MSVC or SUNPRO_C -- standard conventions apply. */
- static void ffi_prep_incoming_args_SYSV (char *stack, void **ret,
-                                          void** args, ffi_cif* cif);
- void FFI_HIDDEN ffi_closure_SYSV (ffi_closure *)
-      __attribute__ ((regparm(1)));
- unsigned int FFI_HIDDEN ffi_closure_SYSV_inner (ffi_closure *, void **, void *)
-      __attribute__ ((regparm(1)));
- void FFI_HIDDEN ffi_closure_raw_SYSV (ffi_raw_closure *)
-      __attribute__ ((regparm(1)));
--#ifdef X86_WIN32
-+#ifndef X86_WIN64
-+void FFI_HIDDEN ffi_closure_raw_THISCALL (ffi_raw_closure *)
-+     __attribute__ ((regparm(1)));
- void FFI_HIDDEN ffi_closure_STDCALL (ffi_closure *)
-      __attribute__ ((regparm(1)));
--#endif
--#ifdef X86_WIN64
-+void FFI_HIDDEN ffi_closure_THISCALL (ffi_closure *)
-+     __attribute__ ((regparm(1)));
-+#else
- void FFI_HIDDEN ffi_closure_win64 (ffi_closure *);
- #endif
- 
- /* This function is jumped to by the trampoline */
- 
- #ifdef X86_WIN64
- void * FFI_HIDDEN
- ffi_closure_win64_inner (ffi_closure *closure, void *args) {
-@@ -402,17 +521,18 @@ ffi_prep_incoming_args_SYSV(char *stack,
-   if (cif->rtype->size > sizeof(ffi_arg)
-       || (cif->flags == FFI_TYPE_STRUCT
-           && (cif->rtype->size != 1 && cif->rtype->size != 2
-               && cif->rtype->size != 4 && cif->rtype->size != 8))) {
-     *rvalue = *(void **) argp;
-     argp += sizeof(void *);
-   }
- #else
--  if ( cif->flags == FFI_TYPE_STRUCT ) {
-+  if ( cif->flags == FFI_TYPE_STRUCT
-+       || cif->flags == FFI_TYPE_MS_STRUCT ) {
-     *rvalue = *(void **) argp;
-     argp += sizeof(void *);
-   }
- #endif
- 
-   p_argv = avalue;
- 
-   for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++)
-@@ -480,16 +600,43 @@ ffi_prep_incoming_args_SYSV(char *stack,
-    unsigned int  __ctx = (unsigned int)(CTX); \
-    unsigned int  __dis = __fun - (__ctx + 10);  \
-    *(unsigned char*) &__tramp[0] = 0xb8; \
-    *(unsigned int*)  &__tramp[1] = __ctx; /* movl __ctx, %eax */ \
-    *(unsigned char *)  &__tramp[5] = 0xe9; \
-    *(unsigned int*)  &__tramp[6] = __dis; /* jmp __fun  */ \
-  }
- 
-+#define FFI_INIT_TRAMPOLINE_THISCALL(TRAMP,FUN,CTX,SIZE) \
-+{ unsigned char *__tramp = (unsigned char*)(TRAMP); \
-+   unsigned int  __fun = (unsigned int)(FUN); \
-+   unsigned int  __ctx = (unsigned int)(CTX); \
-+   unsigned int  __dis = __fun - (__ctx + 49);  \
-+   unsigned short __size = (unsigned short)(SIZE); \
-+   *(unsigned int *) &__tramp[0] = 0x8324048b;	/* mov (%esp), %eax */ \
-+   *(unsigned int *) &__tramp[4] = 0x4c890cec;	/* sub $12, %esp */ \
-+   *(unsigned int *) &__tramp[8] = 0x04890424;	/* mov %ecx, 4(%esp) */ \
-+   *(unsigned char*) &__tramp[12] = 0x24;	/* mov %eax, (%esp) */ \
-+   *(unsigned char*) &__tramp[13] = 0xb8; \
-+   *(unsigned int *) &__tramp[14] = __size;	/* mov __size, %eax */ \
-+   *(unsigned int *) &__tramp[18] = 0x08244c8d;	/* lea 8(%esp), %ecx */ \
-+   *(unsigned int *) &__tramp[22] = 0x4802e8c1; /* shr $2, %eax ; dec %eax */ \
-+   *(unsigned short*) &__tramp[26] = 0x0b74;	/* jz 1f */ \
-+   *(unsigned int *) &__tramp[28] = 0x8908518b;	/* 2b: mov 8(%ecx), %edx */ \
-+   *(unsigned int *) &__tramp[32] = 0x04c18311; /* mov %edx, (%ecx) ; add $4, %ecx */ \
-+   *(unsigned char*) &__tramp[36] = 0x48;	/* dec %eax */ \
-+   *(unsigned short*) &__tramp[37] = 0xf575;	/* jnz 2b ; 1f: */ \
-+   *(unsigned char*) &__tramp[39] = 0xb8; \
-+   *(unsigned int*)  &__tramp[40] = __ctx; /* movl __ctx, %eax */ \
-+   *(unsigned char *)  &__tramp[44] = 0xe8; \
-+   *(unsigned int*)  &__tramp[45] = __dis; /* call __fun  */ \
-+   *(unsigned char*)  &__tramp[49] = 0xc2; /* ret  */ \
-+   *(unsigned short*)  &__tramp[50] = (__size + 8); /* ret (__size + 8)  */ \
-+ }
-+
- #define FFI_INIT_TRAMPOLINE_STDCALL(TRAMP,FUN,CTX,SIZE)  \
- { unsigned char *__tramp = (unsigned char*)(TRAMP); \
-    unsigned int  __fun = (unsigned int)(FUN); \
-    unsigned int  __ctx = (unsigned int)(CTX); \
-    unsigned int  __dis = __fun - (__ctx + 10); \
-    unsigned short __size = (unsigned short)(SIZE); \
-    *(unsigned char*) &__tramp[0] = 0xb8; \
-    *(unsigned int*)  &__tramp[1] = __ctx; /* movl __ctx, %eax */ \
-@@ -521,23 +668,36 @@ ffi_prep_closure_loc (ffi_closure* closu
-     }
- #else
-   if (cif->abi == FFI_SYSV)
-     {
-       FFI_INIT_TRAMPOLINE (&closure->tramp[0],
-                            &ffi_closure_SYSV,
-                            (void*)codeloc);
-     }
--#ifdef X86_WIN32
-+  else if (cif->abi == FFI_THISCALL)
-+    {
-+      FFI_INIT_TRAMPOLINE_THISCALL (&closure->tramp[0],
-+				    &ffi_closure_THISCALL,
-+				    (void*)codeloc,
-+				    cif->bytes);
-+    }
-   else if (cif->abi == FFI_STDCALL)
-     {
-       FFI_INIT_TRAMPOLINE_STDCALL (&closure->tramp[0],
-                                    &ffi_closure_STDCALL,
-                                    (void*)codeloc, cif->bytes);
-     }
-+#ifdef X86_WIN32
-+  else if (cif->abi == FFI_MS_CDECL)
-+    {
-+      FFI_INIT_TRAMPOLINE (&closure->tramp[0],
-+                           &ffi_closure_SYSV,
-+                           (void*)codeloc);
-+    }
- #endif /* X86_WIN32 */
- #endif /* !X86_WIN64 */
-   else
-     {
-       return FFI_BAD_ABI;
-     }
-     
-   closure->cif  = cif;
-@@ -555,35 +715,48 @@ ffi_status
- ffi_prep_raw_closure_loc (ffi_raw_closure* closure,
-                           ffi_cif* cif,
-                           void (*fun)(ffi_cif*,void*,ffi_raw*,void*),
-                           void *user_data,
-                           void *codeloc)
- {
-   int i;
- 
--  if (cif->abi != FFI_SYSV) {
-+  if (cif->abi != FFI_SYSV
-+#ifndef X86_WIN64
-+      && cif->abi != FFI_THISCALL
-+#endif
-+     )
-     return FFI_BAD_ABI;
--  }
- 
-   /* we currently don't support certain kinds of arguments for raw
-      closures.  This should be implemented by a separate assembly
-      language routine, since it would require argument processing,
-      something we don't do now for performance.  */
- 
-   for (i = cif->nargs-1; i >= 0; i--)
-     {
-       FFI_ASSERT (cif->arg_types[i]->type != FFI_TYPE_STRUCT);
-       FFI_ASSERT (cif->arg_types[i]->type != FFI_TYPE_LONGDOUBLE);
-     }
-   
--
-+#ifndef X86_WIN64
-+  if (cif->abi == FFI_SYSV)
-+    {
-+#endif
-   FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_raw_SYSV,
-                        codeloc);
--    
-+#ifndef X86_WIN64
-+    }
-+  else if (cif->abi == FFI_THISCALL)
-+    {
-+      FFI_INIT_TRAMPOLINE_THISCALL (&closure->tramp[0], &ffi_closure_raw_THISCALL,
-+				    codeloc, cif->bytes);
-+    }
-+#endif
-   closure->cif  = cif;
-   closure->user_data = user_data;
-   closure->fun  = fun;
- 
-   return FFI_OK;
- }
- 
- static void 
-@@ -604,37 +777,70 @@ ffi_raw_call(ffi_cif *cif, void (*fn)(vo
-   void **avalue = (void **)fake_avalue;
- 
-   ecif.cif = cif;
-   ecif.avalue = avalue;
-   
-   /* If the return value is a struct and we don't have a return */
-   /* value address then we need to make one                     */
- 
--  if ((rvalue == NULL) && 
--      (cif->rtype->type == FFI_TYPE_STRUCT))
-+  if (rvalue == NULL
-+      && (cif->flags == FFI_TYPE_STRUCT
-+          || cif->flags == FFI_TYPE_MS_STRUCT))
-     {
-       ecif.rvalue = alloca(cif->rtype->size);
-     }
-   else
-     ecif.rvalue = rvalue;
-     
-   
-   switch (cif->abi) 
-     {
--#ifdef X86_WIN32
-+#ifndef X86_WIN32
-     case FFI_SYSV:
--    case FFI_STDCALL:
--      ffi_call_win32(ffi_prep_args_raw, &ecif, cif->bytes, cif->flags,
--                     ecif.rvalue, fn);
-+      ffi_call_SYSV(ffi_prep_args_raw, &ecif, cif->bytes, cif->flags,
-+                    ecif.rvalue, fn);
-       break;
- #else
-     case FFI_SYSV:
--      ffi_call_SYSV(ffi_prep_args_raw, &ecif, cif->bytes, cif->flags,
--                    ecif.rvalue, fn);
-+    case FFI_MS_CDECL:
-+#endif
-+#ifndef X86_WIN64
-+    case FFI_STDCALL:
-+      ffi_call_win32(ffi_prep_args_raw, &ecif, cif->abi, cif->bytes, cif->flags,
-+		     ecif.rvalue, fn);
-+      break;
-+    case FFI_THISCALL:
-+    case FFI_FASTCALL:
-+      {
-+	unsigned int abi = cif->abi;
-+	unsigned int i, passed_regs = 0;
-+
-+	if (cif->flags == FFI_TYPE_STRUCT)
-+	  ++passed_regs;
-+
-+	for (i=0; i < cif->nargs && passed_regs < 2;i++)
-+	  {
-+	    size_t sz;
-+
-+	    if (cif->arg_types[i]->type == FFI_TYPE_FLOAT
-+	        || cif->arg_types[i]->type == FFI_TYPE_STRUCT)
-+	      continue;
-+	    sz = (cif->arg_types[i]->size + 3) & ~3;
-+	    if (sz == 0 || sz > 4)
-+	      continue;
-+	    ++passed_regs;
-+	  }
-+	if (passed_regs < 2 && abi == FFI_FASTCALL)
-+	  cif->abi = abi = FFI_THISCALL;
-+	if (passed_regs < 1 && abi == FFI_THISCALL)
-+	  cif->abi = abi = FFI_STDCALL;
-+        ffi_call_win32(ffi_prep_args_raw, &ecif, abi, cif->bytes, cif->flags,
-+                       ecif.rvalue, fn);
-+      }
-       break;
- #endif
-     default:
-       FFI_ASSERT(0);
-       break;
-     }
- }
- 
-diff --git a/js/src/ctypes/libffi/src/x86/ffi64.c b/js/src/ctypes/libffi/src/x86/ffi64.c
---- a/js/src/ctypes/libffi/src/x86/ffi64.c
-+++ b/js/src/ctypes/libffi/src/x86/ffi64.c
-@@ -1,13 +1,15 @@
- /* -----------------------------------------------------------------------
--   ffi64.c - Copyright (c) 2002, 2007  Bo Thorsen <bo@suse.de>
--             Copyright (c) 2008  Red Hat, Inc.
--   
--   x86-64 Foreign Function Interface 
-+   ffi64.c - Copyright (c) 2013  The Written Word, Inc.
-+             Copyright (c) 2011  Anthony Green
-+             Copyright (c) 2008, 2010  Red Hat, Inc.
-+             Copyright (c) 2002, 2007  Bo Thorsen <bo@suse.de>
-+
-+   x86-64 Foreign Function Interface
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-    permit persons to whom the Software is furnished to do so, subject to
-    the following conditions:
-@@ -31,21 +33,40 @@
- #include <stdlib.h>
- #include <stdarg.h>
- 
- #ifdef __x86_64__
- 
- #define MAX_GPR_REGS 6
- #define MAX_SSE_REGS 8
- 
-+#if defined(__INTEL_COMPILER)
-+#include "xmmintrin.h"
-+#define UINT128 __m128
-+#else
-+#if defined(__SUNPRO_C)
-+#include <sunmedia_types.h>
-+#define UINT128 __m128i
-+#else
-+#define UINT128 __int128_t
-+#endif
-+#endif
-+
-+union big_int_union
-+{
-+  UINT32 i32;
-+  UINT64 i64;
-+  UINT128 i128;
-+};
-+
- struct register_args
- {
-   /* Registers for argument passing.  */
-   UINT64 gpr[MAX_GPR_REGS];
--  __int128_t sse[MAX_SSE_REGS];
-+  union big_int_union sse[MAX_SSE_REGS];
- };
- 
- extern void ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags,
- 			     void *raddr, void (*fnaddr)(void), unsigned ssecount);
- 
- /* All reference to register classes here is identical to the code in
-    gcc/config/i386/i386.c. Do *not* change one without the other.  */
- 
-@@ -126,33 +147,33 @@ merge_classes (enum x86_64_reg_class cla
- /* Classify the argument of type TYPE and mode MODE.
-    CLASSES will be filled by the register class used to pass each word
-    of the operand.  The number of words is returned.  In case the parameter
-    should be passed in memory, 0 is returned. As a special case for zero
-    sized containers, classes[0] will be NO_CLASS and 1 is returned.
- 
-    See the x86-64 PS ABI for details.
- */
--static int
-+static size_t
- classify_argument (ffi_type *type, enum x86_64_reg_class classes[],
- 		   size_t byte_offset)
- {
-   switch (type->type)
-     {
-     case FFI_TYPE_UINT8:
-     case FFI_TYPE_SINT8:
-     case FFI_TYPE_UINT16:
-     case FFI_TYPE_SINT16:
-     case FFI_TYPE_UINT32:
-     case FFI_TYPE_SINT32:
-     case FFI_TYPE_UINT64:
-     case FFI_TYPE_SINT64:
-     case FFI_TYPE_POINTER:
-       {
--	int size = byte_offset + type->size;
-+	size_t size = byte_offset + type->size;
- 
- 	if (size <= 4)
- 	  {
- 	    classes[0] = X86_64_INTEGERSI_CLASS;
- 	    return 1;
- 	  }
- 	else if (size <= 8)
- 	  {
-@@ -177,25 +198,27 @@ classify_argument (ffi_type *type, enum 
-       if (!(byte_offset % 8))
- 	classes[0] = X86_64_SSESF_CLASS;
-       else
- 	classes[0] = X86_64_SSE_CLASS;
-       return 1;
-     case FFI_TYPE_DOUBLE:
-       classes[0] = X86_64_SSEDF_CLASS;
-       return 1;
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-     case FFI_TYPE_LONGDOUBLE:
-       classes[0] = X86_64_X87_CLASS;
-       classes[1] = X86_64_X87UP_CLASS;
-       return 2;
-+#endif
-     case FFI_TYPE_STRUCT:
-       {
--	const int UNITS_PER_WORD = 8;
--	int words = (type->size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
--	ffi_type **ptr; 
-+	const size_t UNITS_PER_WORD = 8;
-+	size_t words = (type->size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
-+	ffi_type **ptr;
- 	int i;
- 	enum x86_64_reg_class subclasses[MAX_CLASSES];
- 
- 	/* If the struct is larger than 32 bytes, pass it on the stack.  */
- 	if (type->size > 32)
- 	  return 0;
- 
- 	for (i = 0; i < words; i++)
-@@ -207,26 +230,26 @@ classify_argument (ffi_type *type, enum 
- 	  {
- 	    classes[0] = X86_64_NO_CLASS;
- 	    return 1;
- 	  }
- 
- 	/* Merge the fields of structure.  */
- 	for (ptr = type->elements; *ptr != NULL; ptr++)
- 	  {
--	    int num;
-+	    size_t num;
- 
- 	    byte_offset = ALIGN (byte_offset, (*ptr)->alignment);
- 
- 	    num = classify_argument (*ptr, subclasses, byte_offset % 8);
- 	    if (num == 0)
- 	      return 0;
- 	    for (i = 0; i < num; i++)
- 	      {
--		int pos = byte_offset / 8;
-+		size_t pos = byte_offset / 8;
- 		classes[i + pos] =
- 		  merge_classes (subclasses[i], classes[i + pos]);
- 	      }
- 
- 	    byte_offset += (*ptr)->size;
- 	  }
- 
- 	if (words > 2)
-@@ -280,21 +303,22 @@ classify_argument (ffi_type *type, enum 
-     }
-   return 0; /* Never reached.  */
- }
- 
- /* Examine the argument and return set number of register required in each
-    class.  Return zero iff parameter should be passed in memory, otherwise
-    the number of registers.  */
- 
--static int
-+static size_t
- examine_argument (ffi_type *type, enum x86_64_reg_class classes[MAX_CLASSES],
- 		  _Bool in_return, int *pngpr, int *pnsse)
- {
--  int i, n, ngpr, nsse;
-+  size_t n;
-+  int i, ngpr, nsse;
- 
-   n = classify_argument (type, classes, 0);
-   if (n == 0)
-     return 0;
- 
-   ngpr = nsse = 0;
-   for (i = 0; i < n; ++i)
-     switch (classes[i])
-@@ -325,19 +349,19 @@ examine_argument (ffi_type *type, enum x
-   return n;
- }
- 
- /* Perform machine dependent cif processing.  */
- 
- ffi_status
- ffi_prep_cif_machdep (ffi_cif *cif)
- {
--  int gprcount, ssecount, i, avn, n, ngpr, nsse, flags;
-+  int gprcount, ssecount, i, avn, ngpr, nsse, flags;
-   enum x86_64_reg_class classes[MAX_CLASSES];
--  size_t bytes;
-+  size_t bytes, n;
- 
-   gprcount = ssecount = 0;
- 
-   flags = cif->rtype->type;
-   if (flags != FFI_TYPE_VOID)
-     {
-       n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse);
-       if (n == 0)
-@@ -385,17 +409,17 @@ ffi_prep_cif_machdep (ffi_cif *cif)
- 	{
- 	  gprcount += ngpr;
- 	  ssecount += nsse;
- 	}
-     }
-   if (ssecount)
-     flags |= 1 << 11;
-   cif->flags = flags;
--  cif->bytes = ALIGN (bytes, 8);
-+  cif->bytes = (unsigned)ALIGN (bytes, 8);
- 
-   return FFI_OK;
- }
- 
- void
- ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
- {
-   enum x86_64_reg_class classes[MAX_CLASSES];
-@@ -421,25 +445,24 @@ ffi_call (ffi_cif *cif, void (*fn)(void)
-   reg_args = (struct register_args *) stack;
-   argp = stack + sizeof (struct register_args);
- 
-   gprcount = ssecount = 0;
- 
-   /* If the return value is passed in memory, add the pointer as the
-      first integer argument.  */
-   if (ret_in_memory)
--    reg_args->gpr[gprcount++] = (long) rvalue;
-+    reg_args->gpr[gprcount++] = (unsigned long) rvalue;
- 
-   avn = cif->nargs;
-   arg_types = cif->arg_types;
- 
-   for (i = 0; i < avn; ++i)
-     {
--      size_t size = arg_types[i]->size;
--      int n;
-+      size_t n, size = arg_types[i]->size;
- 
-       n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse);
-       if (n == 0
- 	  || gprcount + ngpr > MAX_GPR_REGS
- 	  || ssecount + nsse > MAX_SSE_REGS)
- 	{
- 	  long align = arg_types[i]->alignment;
- 
-@@ -459,26 +482,43 @@ ffi_call (ffi_cif *cif, void (*fn)(void)
- 	  int j;
- 
- 	  for (j = 0; j < n; j++, a += 8, size -= 8)
- 	    {
- 	      switch (classes[j])
- 		{
- 		case X86_64_INTEGER_CLASS:
- 		case X86_64_INTEGERSI_CLASS:
--		  reg_args->gpr[gprcount] = 0;
--		  memcpy (&reg_args->gpr[gprcount], a, size < 8 ? size : 8);
-+		  /* Sign-extend integer arguments passed in general
-+		     purpose registers, to cope with the fact that
-+		     LLVM incorrectly assumes that this will be done
-+		     (the x86-64 PS ABI does not specify this). */
-+		  switch (arg_types[i]->type)
-+		    {
-+		    case FFI_TYPE_SINT8:
-+		      *(SINT64 *)&reg_args->gpr[gprcount] = (SINT64) *((SINT8 *) a);
-+		      break;
-+		    case FFI_TYPE_SINT16:
-+		      *(SINT64 *)&reg_args->gpr[gprcount] = (SINT64) *((SINT16 *) a);
-+		      break;
-+		    case FFI_TYPE_SINT32:
-+		      *(SINT64 *)&reg_args->gpr[gprcount] = (SINT64) *((SINT32 *) a);
-+		      break;
-+		    default:
-+		      reg_args->gpr[gprcount] = 0;
-+		      memcpy (&reg_args->gpr[gprcount], a, size < 8 ? size : 8);
-+		    }
- 		  gprcount++;
- 		  break;
- 		case X86_64_SSE_CLASS:
- 		case X86_64_SSEDF_CLASS:
--		  reg_args->sse[ssecount++] = *(UINT64 *) a;
-+		  reg_args->sse[ssecount++].i64 = *(UINT64 *) a;
- 		  break;
- 		case X86_64_SSESF_CLASS:
--		  reg_args->sse[ssecount++] = *(UINT32 *) a;
-+		  reg_args->sse[ssecount++].i32 = *(UINT32 *) a;
- 		  break;
- 		default:
- 		  abort();
- 		}
- 	    }
- 	}
-     }
- 
-@@ -493,22 +533,31 @@ ffi_status
- ffi_prep_closure_loc (ffi_closure* closure,
- 		      ffi_cif* cif,
- 		      void (*fun)(ffi_cif*, void*, void**, void*),
- 		      void *user_data,
- 		      void *codeloc)
- {
-   volatile unsigned short *tramp;
- 
-+  /* Sanity check on the cif ABI.  */
-+  {
-+    int abi = cif->abi;
-+    if (UNLIKELY (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI)))
-+      return FFI_BAD_ABI;
-+  }
-+
-   tramp = (volatile unsigned short *) &closure->tramp[0];
- 
-   tramp[0] = 0xbb49;		/* mov <code>, %r11	*/
--  *(void * volatile *) &tramp[1] = ffi_closure_unix64;
-+  *((unsigned long long * volatile) &tramp[1])
-+    = (unsigned long) ffi_closure_unix64;
-   tramp[5] = 0xba49;		/* mov <data>, %r10	*/
--  *(void * volatile *) &tramp[6] = codeloc;
-+  *((unsigned long long * volatile) &tramp[6])
-+    = (unsigned long) codeloc;
- 
-   /* Set the carry bit iff the function uses any sse registers.
-      This is clc or stc, together with the first byte of the jmp.  */
-   tramp[10] = cif->flags & (1 << 11) ? 0x49f9 : 0x49f8;
- 
-   tramp[11] = 0xe3ff;			/* jmp *%r11    */
- 
-   closure->cif = cif;
-@@ -532,22 +581,22 @@ ffi_closure_unix64_inner(ffi_closure *cl
-   cif = closure->cif;
-   avalue = alloca(cif->nargs * sizeof(void *));
-   gprcount = ssecount = 0;
- 
-   ret = cif->rtype->type;
-   if (ret != FFI_TYPE_VOID)
-     {
-       enum x86_64_reg_class classes[MAX_CLASSES];
--      int n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse);
-+      size_t n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse);
-       if (n == 0)
- 	{
- 	  /* The return value goes in memory.  Arrange for the closure
- 	     return value to go directly back to the original caller.  */
--	  rvalue = (void *) reg_args->gpr[gprcount++];
-+	  rvalue = (void *) (unsigned long) reg_args->gpr[gprcount++];
- 	  /* We don't have to do anything in asm for the return.  */
- 	  ret = FFI_TYPE_VOID;
- 	}
-       else if (ret == FFI_TYPE_STRUCT && n == 2)
- 	{
- 	  /* Mark which register the second word of the structure goes in.  */
- 	  _Bool sse0 = SSE_CLASS_P (classes[0]);
- 	  _Bool sse1 = SSE_CLASS_P (classes[1]);
-@@ -555,21 +604,21 @@ ffi_closure_unix64_inner(ffi_closure *cl
- 	    ret |= 1 << 8;
- 	  else if (sse0 && !sse1)
- 	    ret |= 1 << 9;
- 	}
-     }
- 
-   avn = cif->nargs;
-   arg_types = cif->arg_types;
--  
-+
-   for (i = 0; i < avn; ++i)
-     {
-       enum x86_64_reg_class classes[MAX_CLASSES];
--      int n;
-+      size_t n;
- 
-       n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse);
-       if (n == 0
- 	  || gprcount + ngpr > MAX_GPR_REGS
- 	  || ssecount + nsse > MAX_SSE_REGS)
- 	{
- 	  long align = arg_types[i]->alignment;
- 
-diff --git a/js/src/ctypes/libffi/src/x86/ffitarget.h b/js/src/ctypes/libffi/src/x86/ffitarget.h
---- a/js/src/ctypes/libffi/src/x86/ffitarget.h
-+++ b/js/src/ctypes/libffi/src/x86/ffitarget.h
-@@ -1,11 +1,12 @@
- /* -----------------------------------------------------------------*-C-*-
--   ffitarget.h - Copyright (c) 1996-2003, 2010  Red Hat, Inc.
--   Copyright (C) 2008  Free Software Foundation, Inc.
-+   ffitarget.h - Copyright (c) 2012  Anthony Green
-+                 Copyright (c) 1996-2003, 2010  Red Hat, Inc.
-+                 Copyright (C) 2008  Free Software Foundation, Inc.
- 
-    Target configuration macros for x86 and x86-64.
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -24,16 +25,20 @@
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
- 
-    ----------------------------------------------------------------------- */
- 
- #ifndef LIBFFI_TARGET_H
- #define LIBFFI_TARGET_H
- 
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
- /* ---- System specific configurations ----------------------------------- */
- 
- /* For code common to all platforms on x86 and x86_64. */
- #define X86_ANY
- 
- #if defined (X86_64) && defined (__i386__)
- #undef X86_64
- #define X86
-@@ -51,71 +56,80 @@
- #ifdef _MSC_VER
- typedef unsigned __int64       ffi_arg;
- typedef __int64                ffi_sarg;
- #else
- typedef unsigned long long     ffi_arg;
- typedef long long              ffi_sarg;
- #endif
- #else
-+#if defined __x86_64__ && defined __ILP32__
-+#define FFI_SIZEOF_ARG 8
-+#define FFI_SIZEOF_JAVA_RAW  4
-+typedef unsigned long long     ffi_arg;
-+typedef long long              ffi_sarg;
-+#else
- typedef unsigned long          ffi_arg;
- typedef signed long            ffi_sarg;
- #endif
-+#endif
- 
- typedef enum ffi_abi {
-   FFI_FIRST_ABI = 0,
- 
-   /* ---- Intel x86 Win32 ---------- */
- #ifdef X86_WIN32
-   FFI_SYSV,
-   FFI_STDCALL,
-+  FFI_THISCALL,
-+  FFI_FASTCALL,
-+  FFI_MS_CDECL,
-   FFI_LAST_ABI,
--  /* TODO: Add fastcall support for the sake of completeness */
-+#ifdef _MSC_VER
-+  FFI_DEFAULT_ABI = FFI_MS_CDECL
-+#else
-   FFI_DEFAULT_ABI = FFI_SYSV
-+#endif
- 
- #elif defined(X86_WIN64)
-   FFI_WIN64,
-   FFI_LAST_ABI,
-   FFI_DEFAULT_ABI = FFI_WIN64
- 
- #else
-   /* ---- Intel x86 and AMD x86-64 - */
-   FFI_SYSV,
-   FFI_UNIX64,   /* Unix variants all use the same ABI for x86-64  */
-+  FFI_THISCALL,
-+  FFI_FASTCALL,
-+  FFI_STDCALL,
-   FFI_LAST_ABI,
- #if defined(__i386__) || defined(__i386)
-   FFI_DEFAULT_ABI = FFI_SYSV
- #else
-   FFI_DEFAULT_ABI = FFI_UNIX64
- #endif
- #endif
- } ffi_abi;
- #endif
- 
- /* ---- Definitions for closures ----------------------------------------- */
- 
- #define FFI_CLOSURES 1
- #define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
- #define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
- #define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
-+#define FFI_TYPE_MS_STRUCT       (FFI_TYPE_LAST + 4)
- 
- #if defined (X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
- #define FFI_TRAMPOLINE_SIZE 24
- #define FFI_NATIVE_RAW_API 0
--#else
--#ifdef X86_WIN32
--#define FFI_TRAMPOLINE_SIZE 13
--#else
--#ifdef X86_WIN64
-+#elif defined(X86_WIN64)
- #define FFI_TRAMPOLINE_SIZE 29
- #define FFI_NATIVE_RAW_API 0
- #define FFI_NO_RAW_API 1
- #else
--#define FFI_TRAMPOLINE_SIZE 10
--#endif
--#endif
--#ifndef X86_WIN64
-+#define FFI_TRAMPOLINE_SIZE 52
- #define FFI_NATIVE_RAW_API 1	/* x86 has native raw api support */
- #endif
--#endif
- 
- #endif
- 
-diff --git a/js/src/ctypes/libffi/src/x86/freebsd.S b/js/src/ctypes/libffi/src/x86/freebsd.S
---- a/js/src/ctypes/libffi/src/x86/freebsd.S
-+++ b/js/src/ctypes/libffi/src/x86/freebsd.S
-@@ -454,8 +454,10 @@ 0:
- 	.byte	0x86	/* DW_CFA_offset, column 0x6 */
- 	.byte	0x3	/* .uleb128 0x3 */
- 	.align 4
- .LEFDE3:
- 
- #endif
- 
- #endif /* ifndef __x86_64__ */
-+
-+	.section .note.GNU-stack,"",%progbits
-diff --git a/js/src/ctypes/libffi/src/x86/sysv.S b/js/src/ctypes/libffi/src/x86/sysv.S
---- a/js/src/ctypes/libffi/src/x86/sysv.S
-+++ b/js/src/ctypes/libffi/src/x86/sysv.S
-@@ -1,10 +1,11 @@
- /* -----------------------------------------------------------------------
--   sysv.S - Copyright (c) 1996, 1998, 2001-2003, 2005, 2008, 2010  Red Hat, Inc.
-+   sysv.S - Copyright (c) 2013  The Written Word, Inc.
-+	  - Copyright (c) 1996,1998,2001-2003,2005,2008,2010  Red Hat, Inc.
-    
-    X86 Foreign Function Interface 
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -176,19 +177,29 @@ ffi_closure_SYSV:
- 	pushl	%ebp
- .LCFI2:
- 	movl	%esp, %ebp
- .LCFI3:
- 	subl	$40, %esp
- 	leal	-24(%ebp), %edx
- 	movl	%edx, -12(%ebp)	/* resp */
- 	leal	8(%ebp), %edx
-+#ifdef __SUNPRO_C
-+	/* The SUNPRO compiler doesn't support GCC's regparm function
-+  	   attribute, so we have to pass all three arguments to
-+	   ffi_closure_SYSV_inner on the stack.  */
-+	movl	%edx, 8(%esp)	/* args = __builtin_dwarf_cfa () */
-+	leal	-12(%ebp), %edx
-+	movl	%edx, 4(%esp)	/* &resp */
-+	movl    %eax, (%esp)    /* closure */
-+#else
- 	movl	%edx, 4(%esp)	/* args = __builtin_dwarf_cfa () */
- 	leal	-12(%ebp), %edx
- 	movl	%edx, (%esp)	/* &resp */
-+#endif
- #if defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE || !defined __PIC__
- 	call	ffi_closure_SYSV_inner
- #else
- 	movl	%ebx, 8(%esp)
- .LCFI7:
- 	call	1f
- 1:	popl	%ebx
- 	addl	$_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
-@@ -323,16 +334,38 @@ 0:
- .Lrcls_retllong:
- 	movl	-24(%ebp), %eax
- 	movl	-20(%ebp), %edx
- 	jmp	.Lrcls_epilogue
- .LFE3:
- 	.size	ffi_closure_raw_SYSV, .-ffi_closure_raw_SYSV
- #endif
- 
-+#if defined __GNUC__
-+/* Only emit dwarf unwind info when building with GNU toolchain.  */
-+
-+#if defined __PIC__
-+# if defined __sun__ && defined __svr4__
-+/* 32-bit Solaris 2/x86 uses datarel encoding for PIC.  GNU ld before 2.22
-+   doesn't correctly sort .eh_frame_hdr with mixed encodings, so match this.  */
-+#  define FDE_ENCODING		0x30	/* datarel */
-+#  define FDE_ENCODE(X)		X@GOTOFF
-+# else
-+#  define FDE_ENCODING		0x1b	/* pcrel sdata4 */
-+#  if defined HAVE_AS_X86_PCREL
-+#   define FDE_ENCODE(X)	X-.
-+#  else
-+#   define FDE_ENCODE(X)	X@rel
-+#  endif
-+# endif
-+#else
-+# define FDE_ENCODING		0	/* absolute */
-+# define FDE_ENCODE(X)		X
-+#endif
-+
- 	.section	.eh_frame,EH_FRAME_FLAGS,@progbits
- .Lframe1:
- 	.long	.LECIE1-.LSCIE1	/* Length of Common Information Entry */
- .LSCIE1:
- 	.long	0x0	/* CIE Identifier Tag */
- 	.byte	0x1	/* CIE Version */
- #ifdef HAVE_AS_ASCII_PSEUDO_OP
- #ifdef __PIC__
-@@ -349,37 +382,31 @@ 0:
- #else
- #error missing .ascii/.string
- #endif
- 	.byte	0x1	/* .uleb128 0x1; CIE Code Alignment Factor */
- 	.byte	0x7c	/* .sleb128 -4; CIE Data Alignment Factor */
- 	.byte	0x8	/* CIE RA Column */
- #ifdef __PIC__
- 	.byte	0x1	/* .uleb128 0x1; Augmentation size */
--	.byte	0x1b	/* FDE Encoding (pcrel sdata4) */
-+	.byte	FDE_ENCODING
- #endif
- 	.byte	0xc	/* DW_CFA_def_cfa */
- 	.byte	0x4	/* .uleb128 0x4 */
- 	.byte	0x4	/* .uleb128 0x4 */
- 	.byte	0x88	/* DW_CFA_offset, column 0x8 */
- 	.byte	0x1	/* .uleb128 0x1 */
- 	.align 4
- .LECIE1:
- .LSFDE1:
- 	.long	.LEFDE1-.LASFDE1	/* FDE Length */
- .LASFDE1:
- 	.long	.LASFDE1-.Lframe1	/* FDE CIE offset */
--#if defined __PIC__ && defined HAVE_AS_X86_PCREL
--	.long	.LFB1-.	/* FDE initial location */
--#elif defined __PIC__
--	.long	.LFB1@rel
--#else
--	.long	.LFB1
--#endif
--	.long	.LFE1-.LFB1	/* FDE address range */
-+	.long	FDE_ENCODE(.LFB1)	/* FDE initial location */
-+	.long	.LFE1-.LFB1		/* FDE address range */
- #ifdef __PIC__
- 	.byte	0x0	/* .uleb128 0x0; Augmentation size */
- #endif
- 	.byte	0x4	/* DW_CFA_advance_loc4 */
- 	.long	.LCFI0-.LFB1
- 	.byte	0xe	/* DW_CFA_def_cfa_offset */
- 	.byte	0x8	/* .uleb128 0x8 */
- 	.byte	0x85	/* DW_CFA_offset, column 0x5 */
-@@ -389,24 +416,18 @@ 0:
- 	.byte	0xd	/* DW_CFA_def_cfa_register */
- 	.byte	0x5	/* .uleb128 0x5 */
- 	.align 4
- .LEFDE1:
- .LSFDE2:
- 	.long	.LEFDE2-.LASFDE2	/* FDE Length */
- .LASFDE2:
- 	.long	.LASFDE2-.Lframe1	/* FDE CIE offset */
--#if defined __PIC__ && defined HAVE_AS_X86_PCREL
--	.long	.LFB2-.	/* FDE initial location */
--#elif defined __PIC__
--	.long	.LFB2@rel
--#else
--	.long	.LFB2
--#endif
--	.long	.LFE2-.LFB2	/* FDE address range */
-+	.long	FDE_ENCODE(.LFB2)	/* FDE initial location */
-+	.long	.LFE2-.LFB2		/* FDE address range */
- #ifdef __PIC__
- 	.byte	0x0	/* .uleb128 0x0; Augmentation size */
- #endif
- 	.byte	0x4	/* DW_CFA_advance_loc4 */
- 	.long	.LCFI2-.LFB2
- 	.byte	0xe	/* DW_CFA_def_cfa_offset */
- 	.byte	0x8	/* .uleb128 0x8 */
- 	.byte	0x85	/* DW_CFA_offset, column 0x5 */
-@@ -425,24 +446,18 @@ 0:
- .LEFDE2:
- 
- #if !FFI_NO_RAW_API
- 
- .LSFDE3:
- 	.long	.LEFDE3-.LASFDE3	/* FDE Length */
- .LASFDE3:
- 	.long	.LASFDE3-.Lframe1	/* FDE CIE offset */
--#if defined __PIC__ && defined HAVE_AS_X86_PCREL
--	.long	.LFB3-.	/* FDE initial location */
--#elif defined __PIC__
--	.long	.LFB3@rel
--#else
--	.long	.LFB3
--#endif
--	.long	.LFE3-.LFB3	/* FDE address range */
-+	.long	FDE_ENCODE(.LFB3)	/* FDE initial location */
-+	.long	.LFE3-.LFB3		/* FDE address range */
- #ifdef __PIC__
- 	.byte	0x0	/* .uleb128 0x0; Augmentation size */
- #endif
- 	.byte	0x4	/* DW_CFA_advance_loc4 */
- 	.long	.LCFI4-.LFB3
- 	.byte	0xe	/* DW_CFA_def_cfa_offset */
- 	.byte	0x8	/* .uleb128 0x8 */
- 	.byte	0x85	/* DW_CFA_offset, column 0x5 */
-@@ -454,14 +469,15 @@ 0:
- 	.byte	0x4	/* DW_CFA_advance_loc4 */
- 	.long	.LCFI6-.LCFI5
- 	.byte	0x86	/* DW_CFA_offset, column 0x6 */
- 	.byte	0x3	/* .uleb128 0x3 */
- 	.align 4
- .LEFDE3:
- 
- #endif
-+#endif
- 
- #endif /* ifndef __x86_64__ */
- 
- #if defined __ELF__ && defined __linux__
- 	.section	.note.GNU-stack,"",@progbits
- #endif
-diff --git a/js/src/ctypes/libffi/src/x86/unix64.S b/js/src/ctypes/libffi/src/x86/unix64.S
---- a/js/src/ctypes/libffi/src/x86/unix64.S
-+++ b/js/src/ctypes/libffi/src/x86/unix64.S
-@@ -1,11 +1,12 @@
- /* -----------------------------------------------------------------------
--   unix64.S - Copyright (c) 2002  Bo Thorsen <bo@suse.de>
--	      Copyright (c) 2008  Red Hat, Inc
-+   unix64.S - Copyright (c) 2013  The Written Word, Inc.
-+	    - Copyright (c) 2008  Red Hat, Inc
-+	    - Copyright (c) 2002  Bo Thorsen <bo@suse.de>
- 
-    x86-64 Foreign Function Interface 
- 
-    Permission is hereby granted, free of charge, to any person obtaining
-    a copy of this software and associated documentation files (the
-    ``Software''), to deal in the Software without restriction, including
-    without limitation the rights to use, copy, modify, merge, publish,
-    distribute, sublicense, and/or sell copies of the Software, and to
-@@ -319,16 +320,19 @@ ffi_closure_unix64:
- 	movdqa	%xmm5, 128(%rsp)
- 	movdqa	%xmm6, 144(%rsp)
- 	movdqa	%xmm7, 160(%rsp)
- 	jmp	.Lret_from_save_sse
- 
- .LUW9:
- 	.size	ffi_closure_unix64,.-ffi_closure_unix64
- 
-+#ifdef __GNUC__
-+/* Only emit DWARF unwind info when building with the GNU toolchain.  */
-+
- #ifdef HAVE_AS_X86_64_UNWIND_SECTION_TYPE
- 	.section	.eh_frame,"a",@unwind
- #else
- 	.section	.eh_frame,"a",@progbits
- #endif
- .Lframe1:
- 	.long	.LECIE1-.LSCIE1		/* CIE Length */
- .LSCIE1:
-@@ -414,13 +418,15 @@ ffi_closure_unix64:
- 
- 	.byte	0x4			/* DW_CFA_advance_loc4 */
- 	.long	.LUW8-.LUW7
- 	.byte	0xb			/* DW_CFA_restore_state */
- 
- 	.align 8
- .LEFDE3:
- 
-+#endif /* __GNUC__ */
-+	
- #endif /* __x86_64__ */
- 
- #if defined __ELF__ && defined __linux__
- 	.section	.note.GNU-stack,"",@progbits
- #endif
-diff --git a/js/src/ctypes/libffi/src/x86/win32.S b/js/src/ctypes/libffi/src/x86/win32.S
---- a/js/src/ctypes/libffi/src/x86/win32.S
-+++ b/js/src/ctypes/libffi/src/x86/win32.S
-@@ -40,16 +40,17 @@
- 
- EXTRN ffi_closure_SYSV_inner:NEAR
- 
- _TEXT SEGMENT
- 
- ffi_call_win32 PROC NEAR,
-     ffi_prep_args : NEAR PTR DWORD,
-     ecif          : NEAR PTR DWORD,
-+    cif_abi       : DWORD,
-     cif_bytes     : DWORD,
-     cif_flags     : DWORD,
-     rvalue        : NEAR PTR DWORD,
-     fn            : NEAR PTR DWORD
- 
-         ;; Make room for all of the new args.
-         mov  ecx, cif_bytes
-         sub  esp, ecx
-@@ -59,16 +60,29 @@ ffi_call_win32 PROC NEAR,
-         ;; Place all of the ffi_prep_args in position
-         push ecif
-         push eax
-         call ffi_prep_args
- 
-         ;; Return stack to previous state and call the function
-         add  esp, 8
- 
-+	;; Handle thiscall and fastcall
-+	cmp cif_abi, 3 ;; FFI_THISCALL
-+	jz do_thiscall
-+	cmp cif_abi, 4 ;; FFI_FASTCALL
-+	jnz do_stdcall
-+	mov ecx, DWORD PTR [esp]
-+	mov edx, DWORD PTR [esp+4]
-+	add esp, 8
-+	jmp do_stdcall
-+do_thiscall:
-+	mov ecx, DWORD PTR [esp]
-+	add esp, 4
-+do_stdcall:
-         call fn
- 
-         ;; cdecl:   we restore esp in the epilogue, so there's no need to
-         ;;          remove the space we pushed for the args.
-         ;; stdcall: the callee has already cleaned the stack.
- 
-         ;; Load ecx with the return type code
-         mov  ecx, cif_flags
-@@ -89,41 +103,47 @@ ca_jumptable:
-         jmp  [ca_jumpdata + 4 * ecx]
- ca_jumpdata:
-         ;; Do not insert anything here between label and jump table.
-         dd offset ca_epilogue       ;; FFI_TYPE_VOID
-         dd offset ca_retint         ;; FFI_TYPE_INT
-         dd offset ca_retfloat       ;; FFI_TYPE_FLOAT
-         dd offset ca_retdouble      ;; FFI_TYPE_DOUBLE
-         dd offset ca_retlongdouble  ;; FFI_TYPE_LONGDOUBLE
--        dd offset ca_retint8        ;; FFI_TYPE_UINT8
--        dd offset ca_retint8        ;; FFI_TYPE_SINT8
--        dd offset ca_retint16       ;; FFI_TYPE_UINT16
--        dd offset ca_retint16       ;; FFI_TYPE_SINT16
-+        dd offset ca_retuint8       ;; FFI_TYPE_UINT8
-+        dd offset ca_retsint8       ;; FFI_TYPE_SINT8
-+        dd offset ca_retuint16      ;; FFI_TYPE_UINT16
-+        dd offset ca_retsint16      ;; FFI_TYPE_SINT16
-         dd offset ca_retint         ;; FFI_TYPE_UINT32
-         dd offset ca_retint         ;; FFI_TYPE_SINT32
-         dd offset ca_retint64       ;; FFI_TYPE_UINT64
-         dd offset ca_retint64       ;; FFI_TYPE_SINT64
-         dd offset ca_epilogue       ;; FFI_TYPE_STRUCT
-         dd offset ca_retint         ;; FFI_TYPE_POINTER
--        dd offset ca_retint8        ;; FFI_TYPE_SMALL_STRUCT_1B
--        dd offset ca_retint16       ;; FFI_TYPE_SMALL_STRUCT_2B
-+        dd offset ca_retstruct1b    ;; FFI_TYPE_SMALL_STRUCT_1B
-+        dd offset ca_retstruct2b    ;; FFI_TYPE_SMALL_STRUCT_2B
-         dd offset ca_retint         ;; FFI_TYPE_SMALL_STRUCT_4B
-+        dd offset ca_epilogue       ;; FFI_TYPE_MS_STRUCT
- 
--ca_retint8:
--        ;; Load %ecx with the pointer to storage for the return value
--        mov   ecx, rvalue
--        mov   [ecx + 0], al
--        jmp   ca_epilogue
-+        /* Sign/zero extend as appropriate.  */
-+ca_retuint8:
-+        movzx eax, al
-+        jmp   ca_retint
- 
--ca_retint16:
--        ;; Load %ecx with the pointer to storage for the return value
--        mov   ecx, rvalue
--        mov   [ecx + 0], ax
--        jmp   ca_epilogue
-+ca_retsint8:
-+        movsx eax, al
-+        jmp   ca_retint
-+
-+ca_retuint16:
-+        movzx eax, ax
-+        jmp   ca_retint
-+
-+ca_retsint16:
-+        movsx eax, ax
-+        jmp   ca_retint
- 
- ca_retint:
-         ;; Load %ecx with the pointer to storage for the return value
-         mov   ecx, rvalue
-         mov   [ecx + 0], eax
-         jmp   ca_epilogue
- 
- ca_retint64:
-@@ -146,64 +166,94 @@ ca_retdouble:
-         jmp   ca_epilogue
- 
- ca_retlongdouble:
-         ;; Load %ecx with the pointer to storage for the return value
-         mov   ecx, rvalue
-         fstp  TBYTE PTR [ecx]
-         jmp   ca_epilogue
- 
-+ca_retstruct1b:
-+        ;; Load %ecx with the pointer to storage for the return value
-+        mov   ecx, rvalue
-+        mov   [ecx + 0], al
-+        jmp   ca_epilogue
-+
-+ca_retstruct2b:
-+        ;; Load %ecx with the pointer to storage for the return value
-+        mov   ecx, rvalue
-+        mov   [ecx + 0], ax
-+        jmp   ca_epilogue
-+
- ca_epilogue:
-         ;; Epilogue code is autogenerated.
-         ret
- ffi_call_win32 ENDP
- 
-+ffi_closure_THISCALL PROC NEAR FORCEFRAME
-+	sub	esp, 40
-+	lea	edx, [ebp -24]
-+	mov	[ebp - 12], edx	/* resp */
-+	lea	edx, [ebp + 12]  /* account for stub return address on stack */
-+	jmp	stub
-+ffi_closure_THISCALL ENDP
-+
- ffi_closure_SYSV PROC NEAR FORCEFRAME
-     ;; the ffi_closure ctx is passed in eax by the trampoline.
- 
-         sub  esp, 40
-         lea  edx, [ebp - 24]
-         mov  [ebp - 12], edx         ;; resp
-         lea  edx, [ebp + 8]
-+stub::
-         mov  [esp + 8], edx          ;; args
-         lea  edx, [ebp - 12]
-         mov  [esp + 4], edx          ;; &resp
-         mov  [esp], eax              ;; closure
-         call ffi_closure_SYSV_inner
-         mov  ecx, [ebp - 12]
- 
- cs_jumptable:
-         jmp  [cs_jumpdata + 4 * eax]
- cs_jumpdata:
-         ;; Do not insert anything here between the label and jump table.
-         dd offset cs_epilogue       ;; FFI_TYPE_VOID
-         dd offset cs_retint         ;; FFI_TYPE_INT
-         dd offset cs_retfloat       ;; FFI_TYPE_FLOAT
-         dd offset cs_retdouble      ;; FFI_TYPE_DOUBLE
-         dd offset cs_retlongdouble  ;; FFI_TYPE_LONGDOUBLE
--        dd offset cs_retint8        ;; FFI_TYPE_UINT8
--        dd offset cs_retint8        ;; FFI_TYPE_SINT8
--        dd offset cs_retint16       ;; FFI_TYPE_UINT16
--        dd offset cs_retint16       ;; FFI_TYPE_SINT16
-+        dd offset cs_retuint8       ;; FFI_TYPE_UINT8
-+        dd offset cs_retsint8       ;; FFI_TYPE_SINT8
-+        dd offset cs_retuint16      ;; FFI_TYPE_UINT16
-+        dd offset cs_retsint16      ;; FFI_TYPE_SINT16
-         dd offset cs_retint         ;; FFI_TYPE_UINT32
-         dd offset cs_retint         ;; FFI_TYPE_SINT32
-         dd offset cs_retint64       ;; FFI_TYPE_UINT64
-         dd offset cs_retint64       ;; FFI_TYPE_SINT64
-         dd offset cs_retstruct      ;; FFI_TYPE_STRUCT
-         dd offset cs_retint         ;; FFI_TYPE_POINTER
--        dd offset cs_retint8        ;; FFI_TYPE_SMALL_STRUCT_1B
--        dd offset cs_retint16       ;; FFI_TYPE_SMALL_STRUCT_2B
-+        dd offset cs_retsint8       ;; FFI_TYPE_SMALL_STRUCT_1B
-+        dd offset cs_retsint16      ;; FFI_TYPE_SMALL_STRUCT_2B
-         dd offset cs_retint         ;; FFI_TYPE_SMALL_STRUCT_4B
-+        dd offset cs_retmsstruct    ;; FFI_TYPE_MS_STRUCT
- 
--cs_retint8:
--        mov   al, [ecx]
-+cs_retuint8:
-+        movzx eax, BYTE PTR [ecx]
-         jmp   cs_epilogue
- 
--cs_retint16:
--        mov   ax, [ecx]
-+cs_retsint8:
-+        movsx eax, BYTE PTR [ecx]
-+        jmp   cs_epilogue
-+
-+cs_retuint16:
-+        movzx eax, WORD PTR [ecx]
-+        jmp   cs_epilogue
-+
-+cs_retsint16:
-+        movsx eax, WORD PTR [ecx]
-         jmp   cs_epilogue
- 
- cs_retint:
-         mov   eax, [ecx]
-         jmp   cs_epilogue
- 
- cs_retint64:
-         mov   eax, [ecx + 0]
-@@ -222,36 +272,52 @@ cs_retlongdouble:
-         fld   TBYTE PTR [ecx]
-         jmp   cs_epilogue
- 
- cs_retstruct:
-         ;; Caller expects us to pop struct return value pointer hidden arg.
-         ;; Epilogue code is autogenerated.
-         ret	4
- 
-+cs_retmsstruct:
-+        ;; Caller expects us to return a pointer to the real return value.
-+        mov   eax, ecx
-+        ;; Caller doesn't expects us to pop struct return value pointer hidden arg.
-+        jmp   cs_epilogue
-+
- cs_epilogue:
-         ;; Epilogue code is autogenerated.
-         ret
- ffi_closure_SYSV ENDP
- 
- #if !FFI_NO_RAW_API
- 
- #define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) AND NOT 3)
- #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4)
- #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4)
- #define CIF_FLAGS_OFFSET 20
- 
--ffi_closure_raw_SYSV PROC NEAR USES esi
-+ffi_closure_raw_THISCALL PROC NEAR USES esi FORCEFRAME
-+	sub esp, 36
-+	mov  esi, [eax + RAW_CLOSURE_CIF_OFFSET]        ;; closure->cif
-+	mov  edx, [eax + RAW_CLOSURE_USER_DATA_OFFSET]  ;; closure->user_data
-+	mov [esp + 12], edx
-+	lea edx, [ebp + 12]
-+	jmp stubraw
-+ffi_closure_raw_THISCALL ENDP
-+
-+ffi_closure_raw_SYSV PROC NEAR USES esi FORCEFRAME
-     ;; the ffi_closure ctx is passed in eax by the trampoline.
- 
-         sub  esp, 40
-         mov  esi, [eax + RAW_CLOSURE_CIF_OFFSET]        ;; closure->cif
-         mov  edx, [eax + RAW_CLOSURE_USER_DATA_OFFSET]  ;; closure->user_data
-         mov  [esp + 12], edx                            ;; user_data
-         lea  edx, [ebp + 8]
-+stubraw::
-         mov  [esp + 8], edx                             ;; raw_args
-         lea  edx, [ebp - 24]
-         mov  [esp + 4], edx                             ;; &res
-         mov  [esp], esi                                 ;; cif
-         call DWORD PTR [eax + RAW_CLOSURE_FUN_OFFSET]   ;; closure->fun
-         mov  eax, [esi + CIF_FLAGS_OFFSET]              ;; cif->flags
-         lea  ecx, [ebp - 24]
- 
-@@ -259,36 +325,45 @@ cr_jumptable:
-         jmp  [cr_jumpdata + 4 * eax]
- cr_jumpdata:
-         ;; Do not insert anything here between the label and jump table.
-         dd offset cr_epilogue       ;; FFI_TYPE_VOID
-         dd offset cr_retint         ;; FFI_TYPE_INT
-         dd offset cr_retfloat       ;; FFI_TYPE_FLOAT
-         dd offset cr_retdouble      ;; FFI_TYPE_DOUBLE
-         dd offset cr_retlongdouble  ;; FFI_TYPE_LONGDOUBLE
--        dd offset cr_retint8        ;; FFI_TYPE_UINT8
--        dd offset cr_retint8        ;; FFI_TYPE_SINT8
--        dd offset cr_retint16       ;; FFI_TYPE_UINT16
--        dd offset cr_retint16       ;; FFI_TYPE_SINT16
-+        dd offset cr_retuint8       ;; FFI_TYPE_UINT8
-+        dd offset cr_retsint8       ;; FFI_TYPE_SINT8
-+        dd offset cr_retuint16      ;; FFI_TYPE_UINT16
-+        dd offset cr_retsint16      ;; FFI_TYPE_SINT16
-         dd offset cr_retint         ;; FFI_TYPE_UINT32
-         dd offset cr_retint         ;; FFI_TYPE_SINT32
-         dd offset cr_retint64       ;; FFI_TYPE_UINT64
-         dd offset cr_retint64       ;; FFI_TYPE_SINT64
-         dd offset cr_epilogue       ;; FFI_TYPE_STRUCT
-         dd offset cr_retint         ;; FFI_TYPE_POINTER
--        dd offset cr_retint8        ;; FFI_TYPE_SMALL_STRUCT_1B
--        dd offset cr_retint16       ;; FFI_TYPE_SMALL_STRUCT_2B
-+        dd offset cr_retsint8       ;; FFI_TYPE_SMALL_STRUCT_1B
-+        dd offset cr_retsint16      ;; FFI_TYPE_SMALL_STRUCT_2B
-         dd offset cr_retint         ;; FFI_TYPE_SMALL_STRUCT_4B
-+        dd offset cr_epilogue       ;; FFI_TYPE_MS_STRUCT
- 
--cr_retint8:
--        mov   al, [ecx]
-+cr_retuint8:
-+        movzx eax, BYTE PTR [ecx]
-         jmp   cr_epilogue
- 
--cr_retint16:
--        mov   ax, [ecx]
-+cr_retsint8:
-+        movsx eax, BYTE PTR [ecx]
-+        jmp   cr_epilogue
-+
-+cr_retuint16:
-+        movzx eax, WORD PTR [ecx]
-+        jmp   cr_epilogue
-+
-+cr_retsint16:
-+        movsx eax, WORD PTR [ecx]
-         jmp   cr_epilogue
- 
- cr_retint:
-         mov   eax, [ecx]
-         jmp   cr_epilogue
- 
- cr_retint64:
-         mov   eax, [ecx + 0]
-@@ -332,36 +407,44 @@ cd_jumptable:
-         jmp  [cd_jumpdata + 4 * eax]
- cd_jumpdata:
-         ;; Do not insert anything here between the label and jump table.
-         dd offset cd_epilogue       ;; FFI_TYPE_VOID
-         dd offset cd_retint         ;; FFI_TYPE_INT
-         dd offset cd_retfloat       ;; FFI_TYPE_FLOAT
-         dd offset cd_retdouble      ;; FFI_TYPE_DOUBLE
-         dd offset cd_retlongdouble  ;; FFI_TYPE_LONGDOUBLE
--        dd offset cd_retint8        ;; FFI_TYPE_UINT8
--        dd offset cd_retint8        ;; FFI_TYPE_SINT8
--        dd offset cd_retint16       ;; FFI_TYPE_UINT16
--        dd offset cd_retint16       ;; FFI_TYPE_SINT16
-+        dd offset cd_retuint8       ;; FFI_TYPE_UINT8
-+        dd offset cd_retsint8       ;; FFI_TYPE_SINT8
-+        dd offset cd_retuint16      ;; FFI_TYPE_UINT16
-+        dd offset cd_retsint16      ;; FFI_TYPE_SINT16
-         dd offset cd_retint         ;; FFI_TYPE_UINT32
-         dd offset cd_retint         ;; FFI_TYPE_SINT32
-         dd offset cd_retint64       ;; FFI_TYPE_UINT64
-         dd offset cd_retint64       ;; FFI_TYPE_SINT64
-         dd offset cd_epilogue       ;; FFI_TYPE_STRUCT
-         dd offset cd_retint         ;; FFI_TYPE_POINTER
--        dd offset cd_retint8        ;; FFI_TYPE_SMALL_STRUCT_1B
--        dd offset cd_retint16       ;; FFI_TYPE_SMALL_STRUCT_2B
-+        dd offset cd_retsint8       ;; FFI_TYPE_SMALL_STRUCT_1B
-+        dd offset cd_retsint16      ;; FFI_TYPE_SMALL_STRUCT_2B
-         dd offset cd_retint         ;; FFI_TYPE_SMALL_STRUCT_4B
- 
--cd_retint8:
--        mov   al, [ecx]
-+cd_retuint8:
-+        movzx eax, BYTE PTR [ecx]
-         jmp   cd_epilogue
- 
--cd_retint16:
--        mov   ax, [ecx]
-+cd_retsint8:
-+        movsx eax, BYTE PTR [ecx]
-+        jmp   cd_epilogue
-+
-+cd_retuint16:
-+        movzx eax, WORD PTR [ecx]
-+        jmp   cd_epilogue
-+
-+cd_retsint16:
-+        movsx eax, WORD PTR [ecx]
-         jmp   cd_epilogue
- 
- cd_retint:
-         mov   eax, [ecx]
-         jmp   cd_epilogue
- 
- cd_retint64:
-         mov   eax, [ecx + 0]
-@@ -385,94 +468,117 @@ cd_epilogue:
-         ret
- ffi_closure_STDCALL ENDP
- 
- _TEXT ENDS
- END
- 
- #else
- 
-+#if defined(SYMBOL_UNDERSCORE)
-+#define USCORE_SYMBOL(x) _##x
-+#else
-+#define USCORE_SYMBOL(x) x
-+#endif
- 	.text
-  
-         # This assumes we are using gas.
-         .balign 16
--	.globl	_ffi_call_win32
--#ifndef __OS2__
-+FFI_HIDDEN(ffi_call_win32)
-+	.globl	USCORE_SYMBOL(ffi_call_win32)
-+#if defined(X86_WIN32) && !defined(__OS2__)
- 	.def	_ffi_call_win32;	.scl	2;	.type	32;	.endef
- #endif
--_ffi_call_win32:
-+USCORE_SYMBOL(ffi_call_win32):
- .LFB1:
-         pushl %ebp
- .LCFI0:
-         movl  %esp,%ebp
- .LCFI1:
-         # Make room for all of the new args.
--        movl  16(%ebp),%ecx                                                     
-+        movl  20(%ebp),%ecx                                                     
-         subl  %ecx,%esp
-  
-         movl  %esp,%eax
-  
-         # Place all of the ffi_prep_args in position
-         pushl 12(%ebp)
-         pushl %eax
-         call  *8(%ebp)
-  
-         # Return stack to previous state and call the function
-         addl  $8,%esp
-- 
-+
-+	# Handle fastcall and thiscall
-+	cmpl $3, 16(%ebp)  # FFI_THISCALL
-+	jz .do_thiscall
-+	cmpl $4, 16(%ebp) # FFI_FASTCALL
-+	jnz .do_fncall
-+	movl (%esp), %ecx
-+	movl 4(%esp), %edx
-+	addl $8, %esp
-+	jmp .do_fncall
-+.do_thiscall:
-+	movl (%esp), %ecx
-+	addl $4, %esp
-+
-+.do_fncall:
-+	 
-         # FIXME: Align the stack to a 128-bit boundary to avoid
-         # potential performance hits.
- 
--        call  *28(%ebp)
-+        call  *32(%ebp)
-  
-         # stdcall functions pop arguments off the stack themselves
- 
-         # Load %ecx with the return type code
--        movl  20(%ebp),%ecx
-+        movl  24(%ebp),%ecx
-  
-         # If the return value pointer is NULL, assume no return value.
--        cmpl  $0,24(%ebp)
-+        cmpl  $0,28(%ebp)
-         jne   0f
-  
-         # Even if there is no space for the return value, we are
-         # obliged to handle floating-point values.
-         cmpl  $FFI_TYPE_FLOAT,%ecx
-         jne   .Lnoretval
-         fstp  %st(0)
-  
-         jmp   .Lepilogue
- 
- 0:
- 	call	1f
- 	# Do not insert anything here between the call and the jump table.
- .Lstore_table:
--	.long	.Lnoretval		/* FFI_TYPE_VOID */
--	.long	.Lretint		/* FFI_TYPE_INT */
--	.long	.Lretfloat		/* FFI_TYPE_FLOAT */
--	.long	.Lretdouble		/* FFI_TYPE_DOUBLE */
--	.long	.Lretlongdouble		/* FFI_TYPE_LONGDOUBLE */
--	.long	.Lretuint8		/* FFI_TYPE_UINT8 */
--	.long	.Lretsint8		/* FFI_TYPE_SINT8 */
--	.long	.Lretuint16		/* FFI_TYPE_UINT16 */
--	.long	.Lretsint16		/* FFI_TYPE_SINT16 */
--	.long	.Lretint		/* FFI_TYPE_UINT32 */
--	.long	.Lretint		/* FFI_TYPE_SINT32 */
--	.long	.Lretint64		/* FFI_TYPE_UINT64 */
--	.long	.Lretint64		/* FFI_TYPE_SINT64 */
--	.long	.Lretstruct		/* FFI_TYPE_STRUCT */
--	.long	.Lretint		/* FFI_TYPE_POINTER */
--	.long	.Lretstruct1b		/* FFI_TYPE_SMALL_STRUCT_1B */
--	.long	.Lretstruct2b		/* FFI_TYPE_SMALL_STRUCT_2B */
--	.long	.Lretstruct4b		/* FFI_TYPE_SMALL_STRUCT_4B */
-+	.long	.Lnoretval-.Lstore_table	/* FFI_TYPE_VOID */
-+	.long	.Lretint-.Lstore_table		/* FFI_TYPE_INT */
-+	.long	.Lretfloat-.Lstore_table	/* FFI_TYPE_FLOAT */
-+	.long	.Lretdouble-.Lstore_table	/* FFI_TYPE_DOUBLE */
-+	.long	.Lretlongdouble-.Lstore_table	/* FFI_TYPE_LONGDOUBLE */
-+	.long	.Lretuint8-.Lstore_table	/* FFI_TYPE_UINT8 */
-+	.long	.Lretsint8-.Lstore_table	/* FFI_TYPE_SINT8 */
-+	.long	.Lretuint16-.Lstore_table	/* FFI_TYPE_UINT16 */
-+	.long	.Lretsint16-.Lstore_table	/* FFI_TYPE_SINT16 */
-+	.long	.Lretint-.Lstore_table		/* FFI_TYPE_UINT32 */
-+	.long	.Lretint-.Lstore_table		/* FFI_TYPE_SINT32 */
-+	.long	.Lretint64-.Lstore_table	/* FFI_TYPE_UINT64 */
-+	.long	.Lretint64-.Lstore_table	/* FFI_TYPE_SINT64 */
-+	.long	.Lretstruct-.Lstore_table	/* FFI_TYPE_STRUCT */
-+	.long	.Lretint-.Lstore_table		/* FFI_TYPE_POINTER */
-+	.long	.Lretstruct1b-.Lstore_table	/* FFI_TYPE_SMALL_STRUCT_1B */
-+	.long	.Lretstruct2b-.Lstore_table	/* FFI_TYPE_SMALL_STRUCT_2B */
-+	.long	.Lretstruct4b-.Lstore_table	/* FFI_TYPE_SMALL_STRUCT_4B */
-+	.long	.Lretstruct-.Lstore_table	/* FFI_TYPE_MS_STRUCT */
- 1:
--	add	%ecx, %ecx
--	add	%ecx, %ecx
-+	shl	$2, %ecx
-+	add	(%esp),%ecx
-+	mov	(%ecx),%ecx
- 	add	(%esp),%ecx
- 	add	$4, %esp
--	jmp	*(%ecx)
-+	jmp	*%ecx
- 
- 	/* Sign/zero extend as appropriate.  */
- .Lretsint8:
- 	movsbl	%al, %eax
- 	jmp	.Lretint
- 
- .Lretsint16:
- 	movswl	%ax, %eax
-@@ -483,125 +589,156 @@ 1:
- 	jmp	.Lretint
- 
- .Lretuint16:
- 	movzwl	%ax, %eax
- 	jmp	.Lretint
- 
- .Lretint:
-         # Load %ecx with the pointer to storage for the return value
--        movl  24(%ebp),%ecx
-+        movl  28(%ebp),%ecx
-         movl  %eax,0(%ecx)
-         jmp   .Lepilogue
-  
- .Lretfloat:
-          # Load %ecx with the pointer to storage for the return value
--        movl  24(%ebp),%ecx
-+        movl  28(%ebp),%ecx
-         fstps (%ecx)
-         jmp   .Lepilogue
-  
- .Lretdouble:
-         # Load %ecx with the pointer to storage for the return value
--        movl  24(%ebp),%ecx
-+        movl  28(%ebp),%ecx
-         fstpl (%ecx)
-         jmp   .Lepilogue
-  
- .Lretlongdouble:
-         # Load %ecx with the pointer to storage for the return value
--        movl  24(%ebp),%ecx
-+        movl  28(%ebp),%ecx
-         fstpt (%ecx)
-         jmp   .Lepilogue
-  
- .Lretint64:
-         # Load %ecx with the pointer to storage for the return value
--        movl  24(%ebp),%ecx
-+        movl  28(%ebp),%ecx
-         movl  %eax,0(%ecx)
-         movl  %edx,4(%ecx)
- 	jmp   .Lepilogue
- 
- .Lretstruct1b:
-         # Load %ecx with the pointer to storage for the return value
--        movl  24(%ebp),%ecx
-+        movl  28(%ebp),%ecx
-         movb  %al,0(%ecx)
-         jmp   .Lepilogue
-  
- .Lretstruct2b:
-         # Load %ecx with the pointer to storage for the return value
--        movl  24(%ebp),%ecx
-+        movl  28(%ebp),%ecx
-         movw  %ax,0(%ecx)
-         jmp   .Lepilogue
- 
- .Lretstruct4b:
-         # Load %ecx with the pointer to storage for the return value
--        movl  24(%ebp),%ecx
-+        movl  28(%ebp),%ecx
-         movl  %eax,0(%ecx)
-         jmp   .Lepilogue
- 
- .Lretstruct:
-         # Nothing to do!
-  
- .Lnoretval:
- .Lepilogue:
-         movl %ebp,%esp
-         popl %ebp
-         ret
- .ffi_call_win32_end:
-+        .balign 16
-+FFI_HIDDEN(ffi_closure_THISCALL)
-+	.globl	USCORE_SYMBOL(ffi_closure_THISCALL)
-+#if defined(X86_WIN32) && !defined(__OS2__)
-+	.def	_ffi_closure_THISCALL;	.scl	2;	.type	32;	.endef
-+#endif
-+USCORE_SYMBOL(ffi_closure_THISCALL):
-+	pushl	%ebp
-+	movl	%esp, %ebp
-+	subl	$40, %esp
-+	leal	-24(%ebp), %edx
-+	movl	%edx, -12(%ebp)	/* resp */
-+	leal	12(%ebp), %edx  /* account for stub return address on stack */
-+	jmp	.stub
- .LFE1:
- 
-         # This assumes we are using gas.
-         .balign 16
--	.globl	_ffi_closure_SYSV
--#ifndef __OS2__
-+FFI_HIDDEN(ffi_closure_SYSV)
-+#if defined(X86_WIN32)
-+	.globl	USCORE_SYMBOL(ffi_closure_SYSV)
-+#if defined(X86_WIN32) && !defined(__OS2__)
- 	.def	_ffi_closure_SYSV;	.scl	2;	.type	32;	.endef
- #endif
--_ffi_closure_SYSV:
-+USCORE_SYMBOL(ffi_closure_SYSV):
-+#endif
- .LFB3:
- 	pushl	%ebp
- .LCFI4:
- 	movl	%esp, %ebp
- .LCFI5:
- 	subl	$40, %esp
- 	leal	-24(%ebp), %edx
- 	movl	%edx, -12(%ebp)	/* resp */
- 	leal	8(%ebp), %edx
-+.stub:
- 	movl	%edx, 4(%esp)	/* args = __builtin_dwarf_cfa () */
- 	leal	-12(%ebp), %edx
- 	movl	%edx, (%esp)	/* &resp */
--	call	_ffi_closure_SYSV_inner
-+#if defined(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE) || !defined(__PIC__)
-+	call	USCORE_SYMBOL(ffi_closure_SYSV_inner)
-+#elif defined(X86_DARWIN)
-+	calll	L_ffi_closure_SYSV_inner$stub
-+#else
-+	movl	%ebx, 8(%esp)
-+	call	1f
-+1:	popl	%ebx
-+	addl	$_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
-+	call	ffi_closure_SYSV_inner@PLT
-+	movl	8(%esp), %ebx
-+#endif
- 	movl	-12(%ebp), %ecx
- 
- 0:
- 	call	1f
- 	# Do not insert anything here between the call and the jump table.
- .Lcls_store_table:
--	.long	.Lcls_noretval		/* FFI_TYPE_VOID */
--	.long	.Lcls_retint		/* FFI_TYPE_INT */
--	.long	.Lcls_retfloat		/* FFI_TYPE_FLOAT */
--	.long	.Lcls_retdouble		/* FFI_TYPE_DOUBLE */
--	.long	.Lcls_retldouble	/* FFI_TYPE_LONGDOUBLE */
--	.long	.Lcls_retuint8		/* FFI_TYPE_UINT8 */
--	.long	.Lcls_retsint8		/* FFI_TYPE_SINT8 */
--	.long	.Lcls_retuint16		/* FFI_TYPE_UINT16 */
--	.long	.Lcls_retsint16		/* FFI_TYPE_SINT16 */
--	.long	.Lcls_retint		/* FFI_TYPE_UINT32 */
--	.long	.Lcls_retint		/* FFI_TYPE_SINT32 */
--	.long	.Lcls_retllong		/* FFI_TYPE_UINT64 */
--	.long	.Lcls_retllong		/* FFI_TYPE_SINT64 */
--	.long	.Lcls_retstruct		/* FFI_TYPE_STRUCT */
--	.long	.Lcls_retint		/* FFI_TYPE_POINTER */
--	.long	.Lcls_retstruct1	/* FFI_TYPE_SMALL_STRUCT_1B */
--	.long	.Lcls_retstruct2	/* FFI_TYPE_SMALL_STRUCT_2B */
--	.long	.Lcls_retstruct4	/* FFI_TYPE_SMALL_STRUCT_4B */
-+	.long	.Lcls_noretval-.Lcls_store_table	/* FFI_TYPE_VOID */
-+	.long	.Lcls_retint-.Lcls_store_table		/* FFI_TYPE_INT */
-+	.long	.Lcls_retfloat-.Lcls_store_table	/* FFI_TYPE_FLOAT */
-+	.long	.Lcls_retdouble-.Lcls_store_table	/* FFI_TYPE_DOUBLE */
-+	.long	.Lcls_retldouble-.Lcls_store_table	/* FFI_TYPE_LONGDOUBLE */
-+	.long	.Lcls_retuint8-.Lcls_store_table	/* FFI_TYPE_UINT8 */
-+	.long	.Lcls_retsint8-.Lcls_store_table	/* FFI_TYPE_SINT8 */
-+	.long	.Lcls_retuint16-.Lcls_store_table	/* FFI_TYPE_UINT16 */
-+	.long	.Lcls_retsint16-.Lcls_store_table	/* FFI_TYPE_SINT16 */
-+	.long	.Lcls_retint-.Lcls_store_table		/* FFI_TYPE_UINT32 */
-+	.long	.Lcls_retint-.Lcls_store_table		/* FFI_TYPE_SINT32 */
-+	.long	.Lcls_retllong-.Lcls_store_table	/* FFI_TYPE_UINT64 */
-+	.long	.Lcls_retllong-.Lcls_store_table	/* FFI_TYPE_SINT64 */
-+	.long	.Lcls_retstruct-.Lcls_store_table	/* FFI_TYPE_STRUCT */
-+	.long	.Lcls_retint-.Lcls_store_table		/* FFI_TYPE_POINTER */
-+	.long	.Lcls_retstruct1-.Lcls_store_table	/* FFI_TYPE_SMALL_STRUCT_1B */
-+	.long	.Lcls_retstruct2-.Lcls_store_table	/* FFI_TYPE_SMALL_STRUCT_2B */
-+	.long	.Lcls_retstruct4-.Lcls_store_table	/* FFI_TYPE_SMALL_STRUCT_4B */
-+	.long	.Lcls_retmsstruct-.Lcls_store_table	/* FFI_TYPE_MS_STRUCT */
- 
- 1:
--	add	%eax, %eax
--	add	%eax, %eax
-+	shl	$2, %eax
-+	add	(%esp),%eax
-+	mov	(%eax),%eax
- 	add	(%esp),%eax
- 	add	$4, %esp
--	jmp	*(%eax)
-+	jmp	*%eax
- 
- 	/* Sign/zero extend as appropriate.  */
- .Lcls_retsint8:
- 	movsbl	(%ecx), %eax
- 	jmp	.Lcls_epilogue
- 
- .Lcls_retsint16:
- 	movswl	(%ecx), %eax
-@@ -649,84 +786,110 @@ 1:
- 	jmp	.Lcls_epilogue
- 
- .Lcls_retstruct:
-         # Caller expects us to pop struct return value pointer hidden arg.
- 	movl	%ebp, %esp
- 	popl	%ebp
- 	ret	$0x4
- 
-+.Lcls_retmsstruct:
-+	# Caller expects us to return a pointer to the real return value.
-+	mov	%ecx, %eax
-+	# Caller doesn't expects us to pop struct return value pointer hidden arg.
-+	jmp	.Lcls_epilogue
-+
- .Lcls_noretval:
- .Lcls_epilogue:
- 	movl	%ebp, %esp
- 	popl	%ebp
- 	ret
- .ffi_closure_SYSV_end:
- .LFE3:
- 
- #if !FFI_NO_RAW_API
- 
- #define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) & ~3)
- #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4)
- #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4)
- #define CIF_FLAGS_OFFSET 20
--
-+        .balign 16
-+FFI_HIDDEN(ffi_closure_raw_THISCALL)
-+	.globl	USCORE_SYMBOL(ffi_closure_raw_THISCALL)
-+#if defined(X86_WIN32) && !defined(__OS2__)
-+	.def	_ffi_closure_raw_THISCALL;	.scl	2;	.type	32;	.endef
-+#endif
-+USCORE_SYMBOL(ffi_closure_raw_THISCALL):
-+	pushl	%ebp
-+	movl	%esp, %ebp
-+	pushl	%esi
-+	subl	$36, %esp
-+	movl	RAW_CLOSURE_CIF_OFFSET(%eax), %esi	 /* closure->cif */
-+	movl	RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */
-+	movl	%edx, 12(%esp)	/* user_data */
-+	leal	12(%ebp), %edx	/* __builtin_dwarf_cfa () */
-+	jmp	.stubraw
-         # This assumes we are using gas.
-         .balign 16
--	.globl	_ffi_closure_raw_SYSV
--#ifndef __OS2__
-+#if defined(X86_WIN32)
-+	.globl	USCORE_SYMBOL(ffi_closure_raw_SYSV)
-+#if defined(X86_WIN32) && !defined(__OS2__)
- 	.def	_ffi_closure_raw_SYSV;	.scl	2;	.type	32;	.endef
- #endif
--_ffi_closure_raw_SYSV:
-+USCORE_SYMBOL(ffi_closure_raw_SYSV):
-+#endif /* defined(X86_WIN32) */
- .LFB4:
- 	pushl	%ebp
- .LCFI6:
- 	movl	%esp, %ebp
- .LCFI7:
- 	pushl	%esi
- .LCFI8:
- 	subl	$36, %esp
- 	movl	RAW_CLOSURE_CIF_OFFSET(%eax), %esi	 /* closure->cif */
- 	movl	RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */
- 	movl	%edx, 12(%esp)	/* user_data */
- 	leal	8(%ebp), %edx	/* __builtin_dwarf_cfa () */
-+.stubraw:
- 	movl	%edx, 8(%esp)	/* raw_args */
- 	leal	-24(%ebp), %edx
- 	movl	%edx, 4(%esp)	/* &res */
- 	movl	%esi, (%esp)	/* cif */
- 	call	*RAW_CLOSURE_FUN_OFFSET(%eax)		 /* closure->fun */
- 	movl	CIF_FLAGS_OFFSET(%esi), %eax		 /* rtype */
- 0:
- 	call	1f
- 	# Do not insert anything here between the call and the jump table.
- .Lrcls_store_table:
--	.long	.Lrcls_noretval		/* FFI_TYPE_VOID */
--	.long	.Lrcls_retint		/* FFI_TYPE_INT */
--	.long	.Lrcls_retfloat		/* FFI_TYPE_FLOAT */
--	.long	.Lrcls_retdouble	/* FFI_TYPE_DOUBLE */
--	.long	.Lrcls_retldouble	/* FFI_TYPE_LONGDOUBLE */
--	.long	.Lrcls_retuint8		/* FFI_TYPE_UINT8 */
--	.long	.Lrcls_retsint8		/* FFI_TYPE_SINT8 */
--	.long	.Lrcls_retuint16	/* FFI_TYPE_UINT16 */
--	.long	.Lrcls_retsint16	/* FFI_TYPE_SINT16 */
--	.long	.Lrcls_retint		/* FFI_TYPE_UINT32 */
--	.long	.Lrcls_retint		/* FFI_TYPE_SINT32 */
--	.long	.Lrcls_retllong		/* FFI_TYPE_UINT64 */
--	.long	.Lrcls_retllong		/* FFI_TYPE_SINT64 */
--	.long	.Lrcls_retstruct	/* FFI_TYPE_STRUCT */
--	.long	.Lrcls_retint		/* FFI_TYPE_POINTER */
--	.long	.Lrcls_retstruct1	/* FFI_TYPE_SMALL_STRUCT_1B */
--	.long	.Lrcls_retstruct2	/* FFI_TYPE_SMALL_STRUCT_2B */
--	.long	.Lrcls_retstruct4	/* FFI_TYPE_SMALL_STRUCT_4B */
-+	.long	.Lrcls_noretval-.Lrcls_store_table	/* FFI_TYPE_VOID */
-+	.long	.Lrcls_retint-.Lrcls_store_table	/* FFI_TYPE_INT */
-+	.long	.Lrcls_retfloat-.Lrcls_store_table	/* FFI_TYPE_FLOAT */
-+	.long	.Lrcls_retdouble-.Lrcls_store_table	/* FFI_TYPE_DOUBLE */
-+	.long	.Lrcls_retldouble-.Lrcls_store_table	/* FFI_TYPE_LONGDOUBLE */
-+	.long	.Lrcls_retuint8-.Lrcls_store_table	/* FFI_TYPE_UINT8 */
-+	.long	.Lrcls_retsint8-.Lrcls_store_table	/* FFI_TYPE_SINT8 */
-+	.long	.Lrcls_retuint16-.Lrcls_store_table	/* FFI_TYPE_UINT16 */
-+	.long	.Lrcls_retsint16-.Lrcls_store_table	/* FFI_TYPE_SINT16 */
-+	.long	.Lrcls_retint-.Lrcls_store_table	/* FFI_TYPE_UINT32 */
-+	.long	.Lrcls_retint-.Lrcls_store_table	/* FFI_TYPE_SINT32 */
-+	.long	.Lrcls_retllong-.Lrcls_store_table	/* FFI_TYPE_UINT64 */
-+	.long	.Lrcls_retllong-.Lrcls_store_table	/* FFI_TYPE_SINT64 */
-+	.long	.Lrcls_retstruct-.Lrcls_store_table	/* FFI_TYPE_STRUCT */
-+	.long	.Lrcls_retint-.Lrcls_store_table	/* FFI_TYPE_POINTER */
-+	.long	.Lrcls_retstruct1-.Lrcls_store_table	/* FFI_TYPE_SMALL_STRUCT_1B */
-+	.long	.Lrcls_retstruct2-.Lrcls_store_table	/* FFI_TYPE_SMALL_STRUCT_2B */
-+	.long	.Lrcls_retstruct4-.Lrcls_store_table	/* FFI_TYPE_SMALL_STRUCT_4B */
-+	.long	.Lrcls_retstruct-.Lrcls_store_table	/* FFI_TYPE_MS_STRUCT */
- 1:
--	add	%eax, %eax
--	add	%eax, %eax
-+	shl	$2, %eax
-+	add	(%esp),%eax
-+	mov	(%eax),%eax
- 	add	(%esp),%eax
- 	add	$4, %esp
--	jmp	*(%eax)
-+	jmp	*%eax
- 
- 	/* Sign/zero extend as appropriate.  */
- .Lrcls_retsint8:
- 	movsbl	-24(%ebp), %eax
- 	jmp	.Lrcls_epilogue
- 
- .Lrcls_retsint16:
- 	movswl	-24(%ebp), %eax
-@@ -784,63 +947,76 @@ 1:
- 	ret
- .ffi_closure_raw_SYSV_end:
- .LFE4:
- 
- #endif /* !FFI_NO_RAW_API */
- 
-         # This assumes we are using gas.
- 	.balign	16
--	.globl	_ffi_closure_STDCALL
--#ifndef __OS2__
-+FFI_HIDDEN(ffi_closure_STDCALL)
-+	.globl	USCORE_SYMBOL(ffi_closure_STDCALL)
-+#if defined(X86_WIN32) && !defined(__OS2__)
- 	.def	_ffi_closure_STDCALL;	.scl	2;	.type	32;	.endef
- #endif
--_ffi_closure_STDCALL:
-+USCORE_SYMBOL(ffi_closure_STDCALL):
- .LFB5:
- 	pushl	%ebp
- .LCFI9:
- 	movl	%esp, %ebp
- .LCFI10:
- 	subl	$40, %esp
- 	leal	-24(%ebp), %edx
- 	movl	%edx, -12(%ebp)	/* resp */
- 	leal	12(%ebp), %edx  /* account for stub return address on stack */
- 	movl	%edx, 4(%esp)	/* args */
- 	leal	-12(%ebp), %edx
- 	movl	%edx, (%esp)	/* &resp */
--	call	_ffi_closure_SYSV_inner
-+#if defined(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE) || !defined(__PIC__)
-+	call	USCORE_SYMBOL(ffi_closure_SYSV_inner)
-+#elif defined(X86_DARWIN)
-+	calll	L_ffi_closure_SYSV_inner$stub
-+#else
-+	movl	%ebx, 8(%esp)
-+	call	1f
-+1:	popl	%ebx
-+	addl	$_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
-+	call	ffi_closure_SYSV_inner@PLT
-+	movl	8(%esp), %ebx
-+#endif
- 	movl	-12(%ebp), %ecx
- 0:
- 	call	1f
- 	# Do not insert anything here between the call and the jump table.
- .Lscls_store_table:
--	.long	.Lscls_noretval		/* FFI_TYPE_VOID */
--	.long	.Lscls_retint		/* FFI_TYPE_INT */
--	.long	.Lscls_retfloat		/* FFI_TYPE_FLOAT */
--	.long	.Lscls_retdouble	/* FFI_TYPE_DOUBLE */
--	.long	.Lscls_retldouble	/* FFI_TYPE_LONGDOUBLE */
--	.long	.Lscls_retuint8		/* FFI_TYPE_UINT8 */
--	.long	.Lscls_retsint8		/* FFI_TYPE_SINT8 */
--	.long	.Lscls_retuint16	/* FFI_TYPE_UINT16 */
--	.long	.Lscls_retsint16	/* FFI_TYPE_SINT16 */
--	.long	.Lscls_retint		/* FFI_TYPE_UINT32 */
--	.long	.Lscls_retint		/* FFI_TYPE_SINT32 */
--	.long	.Lscls_retllong		/* FFI_TYPE_UINT64 */
--	.long	.Lscls_retllong		/* FFI_TYPE_SINT64 */
--	.long	.Lscls_retstruct	/* FFI_TYPE_STRUCT */
--	.long	.Lscls_retint		/* FFI_TYPE_POINTER */
--	.long	.Lscls_retstruct1	/* FFI_TYPE_SMALL_STRUCT_1B */
--	.long	.Lscls_retstruct2	/* FFI_TYPE_SMALL_STRUCT_2B */
--	.long	.Lscls_retstruct4	/* FFI_TYPE_SMALL_STRUCT_4B */
-+	.long	.Lscls_noretval-.Lscls_store_table	/* FFI_TYPE_VOID */
-+	.long	.Lscls_retint-.Lscls_store_table	/* FFI_TYPE_INT */
-+	.long	.Lscls_retfloat-.Lscls_store_table	/* FFI_TYPE_FLOAT */
-+	.long	.Lscls_retdouble-.Lscls_store_table	/* FFI_TYPE_DOUBLE */
-+	.long	.Lscls_retldouble-.Lscls_store_table	/* FFI_TYPE_LONGDOUBLE */
-+	.long	.Lscls_retuint8-.Lscls_store_table	/* FFI_TYPE_UINT8 */
-+	.long	.Lscls_retsint8-.Lscls_store_table	/* FFI_TYPE_SINT8 */
-+	.long	.Lscls_retuint16-.Lscls_store_table	/* FFI_TYPE_UINT16 */
-+	.long	.Lscls_retsint16-.Lscls_store_table	/* FFI_TYPE_SINT16 */
-+	.long	.Lscls_retint-.Lscls_store_table	/* FFI_TYPE_UINT32 */
-+	.long	.Lscls_retint-.Lscls_store_table	/* FFI_TYPE_SINT32 */
-+	.long	.Lscls_retllong-.Lscls_store_table	/* FFI_TYPE_UINT64 */
-+	.long	.Lscls_retllong-.Lscls_store_table	/* FFI_TYPE_SINT64 */
-+	.long	.Lscls_retstruct-.Lscls_store_table	/* FFI_TYPE_STRUCT */
-+	.long	.Lscls_retint-.Lscls_store_table	/* FFI_TYPE_POINTER */
-+	.long	.Lscls_retstruct1-.Lscls_store_table	/* FFI_TYPE_SMALL_STRUCT_1B */
-+	.long	.Lscls_retstruct2-.Lscls_store_table	/* FFI_TYPE_SMALL_STRUCT_2B */
-+	.long	.Lscls_retstruct4-.Lscls_store_table	/* FFI_TYPE_SMALL_STRUCT_4B */
- 1:
--	add	%eax, %eax
--	add	%eax, %eax
-+	shl	$2, %eax
-+	add	(%esp),%eax
-+	mov	(%eax),%eax
- 	add	(%esp),%eax
- 	add	$4, %esp
--	jmp	*(%eax)
-+	jmp	*%eax
- 
- 	/* Sign/zero extend as appropriate.  */
- .Lscls_retsint8:
- 	movsbl	(%ecx), %eax
- 	jmp	.Lscls_epilogue
- 
- .Lscls_retsint16:
- 	movswl	(%ecx), %eax
-@@ -893,17 +1069,24 @@ 1:
- .Lscls_noretval:
- .Lscls_epilogue:
- 	movl	%ebp, %esp
- 	popl	%ebp
- 	ret
- .ffi_closure_STDCALL_end:
- .LFE5:
- 
--#ifndef __OS2__
-+#if defined(X86_DARWIN)
-+.section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5
-+L_ffi_closure_SYSV_inner$stub:
-+	.indirect_symbol _ffi_closure_SYSV_inner
-+	hlt ; hlt ; hlt ; hlt ; hlt
-+#endif
-+
-+#if defined(X86_WIN32) && !defined(__OS2__)
- 	.section	.eh_frame,"w"
- #endif
- .Lframe1:
- .LSCIE1:
- 	.long	.LECIE1-.LASCIE1  /* Length of Common Information Entry */
- .LASCIE1:
- 	.long	0x0	/* CIE Identifier Tag */
- 	.byte	0x1	/* CIE Version */
-@@ -953,17 +1136,16 @@ 1:
- 	.long	.LCFI1-.LCFI0
- 	.byte	0xd	/* DW_CFA_def_cfa_register CFA = r5 = %ebp */
- 	.byte	0x5	/* .uleb128 0x5 */
- 
- 	/* End of DW_CFA_xxx CFI instructions.  */
- 	.align 4
- .LEFDE1:
- 
--
- .LSFDE3:
- 	.long	.LEFDE3-.LASFDE3	/* FDE Length */
- .LASFDE3:
- 	.long	.LASFDE3-.Lframe1	/* FDE CIE offset */
- #if defined __PIC__ && defined HAVE_AS_X86_PCREL
- 	.long	.LFB3-.	/* FDE initial location */
- #else
- 	.long	.LFB3
-diff --git a/js/src/ctypes/libffi/src/xtensa/ffi.c b/js/src/ctypes/libffi/src/xtensa/ffi.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/xtensa/ffi.c
-@@ -0,0 +1,298 @@
-+/* -----------------------------------------------------------------------
-+   ffi.c - Copyright (c) 2013 Tensilica, Inc.
-+
-+   XTENSA Foreign Function Interface
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+   DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#include <ffi.h>
-+#include <ffi_common.h>
-+
-+/*
-+                                 |----------------------------------------|
-+                                 |                                        |
-+    on entry to ffi_call ---->   |----------------------------------------|
-+                                 | caller stack frame for registers a0-a3 |
-+                                 |----------------------------------------|
-+                                 |                                        |
-+                                 |         additional arguments           |
-+    entry of the function --->   |----------------------------------------|
-+                                 |    copy of function arguments a2-a7    |
-+                                 | -  -  -  -  -  -  -  -  -  -  -  -  -  |
-+                                 |                                        |
-+
-+    The area below the entry line becomes the new stack frame for the function.
-+
-+*/
-+
-+
-+#define FFI_TYPE_STRUCT_REGS FFI_TYPE_LAST
-+
-+
-+extern void ffi_call_SYSV(void *rvalue, unsigned rsize, unsigned flags,
-+			  void(*fn)(void), unsigned nbytes, extended_cif*);
-+extern void ffi_closure_SYSV(void) FFI_HIDDEN;
-+
-+ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
-+{
-+  switch(cif->rtype->type) {
-+    case FFI_TYPE_SINT8:
-+    case FFI_TYPE_UINT8:
-+    case FFI_TYPE_SINT16:
-+    case FFI_TYPE_UINT16:
-+      cif->flags = cif->rtype->type;
-+      break;
-+    case FFI_TYPE_VOID:
-+    case FFI_TYPE_FLOAT:
-+      cif->flags = FFI_TYPE_UINT32;
-+      break;
-+    case FFI_TYPE_DOUBLE:
-+    case FFI_TYPE_UINT64:
-+    case FFI_TYPE_SINT64:
-+      cif->flags = FFI_TYPE_UINT64; // cif->rtype->type;
-+      break;
-+    case FFI_TYPE_STRUCT:
-+      cif->flags = FFI_TYPE_STRUCT; //_REGS;
-+      /* Up to 16 bytes are returned in registers */
-+      if (cif->rtype->size > 4 * 4) {
-+        /* returned structure is referenced by a register; use 8 bytes
-+           (including 4 bytes for potential additional alignment) */
-+        cif->flags = FFI_TYPE_STRUCT;	
-+        cif->bytes += 8;
-+      }
-+      break;
-+
-+    default:
-+      cif->flags = FFI_TYPE_UINT32;
-+      break;
-+  }
-+
-+  /* Round the stack up to a full 4 register frame, just in case
-+     (we use this size in movsp). This way, it's also a  multiple of
-+     8 bytes for 64-bit arguments.  */
-+  cif->bytes = ALIGN(cif->bytes, 16);
-+
-+  return FFI_OK;
-+}
-+
-+void ffi_prep_args(extended_cif *ecif, unsigned char* stack)
-+{
-+  unsigned int i;
-+  unsigned long *addr;
-+  ffi_type **ptr;
-+
-+  union {
-+    void **v;
-+    char **c;
-+    signed char **sc;
-+    unsigned char **uc;
-+    signed short **ss;
-+    unsigned short **us;
-+    unsigned int **i;
-+    long long **ll;
-+    float **f;
-+    double **d;
-+  } p_argv;
-+
-+  /* Verify that everything is aligned up properly */
-+  FFI_ASSERT (((unsigned long) stack & 0x7) == 0);
-+
-+  p_argv.v = ecif->avalue;
-+  addr = (unsigned long*)stack;
-+
-+  /* structures with a size greater than 16 bytes are passed in memory */
-+  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT && ecif->cif->rtype->size > 16)
-+  {
-+    *addr++ = (unsigned long)ecif->rvalue;
-+  }
-+
-+  for (i = ecif->cif->nargs, ptr = ecif->cif->arg_types;
-+       i > 0;
-+       i--, ptr++, p_argv.v++)
-+  {
-+    switch ((*ptr)->type)
-+    {
-+      case FFI_TYPE_SINT8:
-+        *addr++ = **p_argv.sc;
-+        break;
-+      case FFI_TYPE_UINT8:
-+        *addr++ = **p_argv.uc;
-+        break;
-+      case FFI_TYPE_SINT16:
-+        *addr++ = **p_argv.ss;
-+        break;
-+      case FFI_TYPE_UINT16:
-+        *addr++ = **p_argv.us;
-+        break;
-+      case FFI_TYPE_FLOAT:
-+      case FFI_TYPE_INT:
-+      case FFI_TYPE_UINT32:
-+      case FFI_TYPE_SINT32:
-+      case FFI_TYPE_POINTER:
-+        *addr++ = **p_argv.i;
-+        break;
-+      case FFI_TYPE_DOUBLE:
-+      case FFI_TYPE_UINT64:
-+      case FFI_TYPE_SINT64:
-+        if (((unsigned long)addr & 4) != 0)
-+          addr++;
-+        *(unsigned long long*)addr = **p_argv.ll;
-+	addr += sizeof(unsigned long long) / sizeof (addr);
-+        break;
-+
-+      case FFI_TYPE_STRUCT:
-+      {
-+        unsigned long offs;
-+        unsigned long size;
-+
-+        if (((unsigned long)addr & 4) != 0 && (*ptr)->alignment > 4)
-+          addr++;
-+
-+        offs = (unsigned long) addr - (unsigned long) stack;
-+        size = (*ptr)->size;
-+
-+        /* Entire structure must fit the argument registers or referenced */
-+        if (offs < FFI_REGISTER_NARGS * 4
-+            && offs + size > FFI_REGISTER_NARGS * 4)
-+          addr = (unsigned long*) (stack + FFI_REGISTER_NARGS * 4);
-+
-+        memcpy((char*) addr, *p_argv.c, size);
-+        addr += (size + 3) / 4;
-+        break;
-+      }
-+
-+      default:
-+        FFI_ASSERT(0);
-+    }
-+  }
-+}
-+
-+
-+void ffi_call(ffi_cif* cif, void(*fn)(void), void *rvalue, void **avalue)
-+{
-+  extended_cif ecif;
-+  unsigned long rsize = cif->rtype->size;
-+  int flags = cif->flags;
-+  void *alloc = NULL;
-+
-+  ecif.cif = cif;
-+  ecif.avalue = avalue;
-+
-+  /* Note that for structures that are returned in registers (size <= 16 bytes)
-+     we allocate a temporary buffer and use memcpy to copy it to the final 
-+     destination. The reason is that the target address might be misaligned or
-+     the length not a multiple of 4 bytes. Handling all those cases would be
-+     very complex.  */
-+
-+  if (flags == FFI_TYPE_STRUCT && (rsize <= 16 || rvalue == NULL))
-+  {
-+    alloc = alloca(ALIGN(rsize, 4));
-+    ecif.rvalue = alloc;
-+  }
-+  else
-+  {
-+    ecif.rvalue = rvalue;
-+  }
-+
-+  if (cif->abi != FFI_SYSV)
-+    FFI_ASSERT(0);
-+
-+  ffi_call_SYSV (ecif.rvalue, rsize, cif->flags, fn, cif->bytes, &ecif);
-+
-+  if (alloc != NULL && rvalue != NULL)
-+    memcpy(rvalue, alloc, rsize);
-+}
-+
-+extern void ffi_trampoline();
-+extern void ffi_cacheflush(void* start, void* end);
-+
-+ffi_status
-+ffi_prep_closure_loc (ffi_closure* closure,
-+                      ffi_cif* cif,
-+                      void (*fun)(ffi_cif*, void*, void**, void*),
-+                      void *user_data,
-+                      void *codeloc)
-+{
-+  /* copye trampoline to stack and patch 'ffi_closure_SYSV' pointer */
-+  memcpy(closure->tramp, ffi_trampoline, FFI_TRAMPOLINE_SIZE);
-+  *(unsigned int*)(&closure->tramp[8]) = (unsigned int)ffi_closure_SYSV;
-+
-+  // Do we have this function?
-+  // __builtin___clear_cache(closer->tramp, closer->tramp + FFI_TRAMPOLINE_SIZE)
-+  ffi_cacheflush(closure->tramp, closure->tramp + FFI_TRAMPOLINE_SIZE);
-+
-+  closure->cif = cif;
-+  closure->fun = fun;
-+  closure->user_data = user_data;
-+  return FFI_OK; 
-+}
-+
-+
-+long FFI_HIDDEN
-+ffi_closure_SYSV_inner(ffi_closure *closure, void **values, void *rvalue)
-+{
-+  ffi_cif *cif;
-+  ffi_type **arg_types;
-+  void **avalue;
-+  int i, areg;
-+
-+  cif = closure->cif;
-+  if (cif->abi != FFI_SYSV)
-+    return FFI_BAD_ABI;
-+
-+  areg = 0;
-+
-+  int rtype = cif->rtype->type;
-+  if (rtype == FFI_TYPE_STRUCT && cif->rtype->size > 4 * 4)
-+  {
-+    rvalue = *values;
-+    areg++;
-+  }
-+
-+  cif = closure->cif; 
-+  arg_types = cif->arg_types;
-+  avalue = alloca(cif->nargs * sizeof(void *));
-+
-+  for (i = 0; i < cif->nargs; i++)
-+  {
-+    if (arg_types[i]->alignment == 8 && (areg & 1) != 0)
-+      areg++;
-+
-+    // skip the entry 16,a1 framework, add 16 bytes (4 registers)
-+    if (areg == FFI_REGISTER_NARGS)
-+      areg += 4;
-+
-+    if (arg_types[i]->type == FFI_TYPE_STRUCT)
-+    {
-+      int numregs = ((arg_types[i]->size + 3) & ~3) / 4;
-+      if (areg < FFI_REGISTER_NARGS && areg + numregs > FFI_REGISTER_NARGS)
-+        areg = FFI_REGISTER_NARGS + 4;
-+    }
-+
-+    avalue[i] = &values[areg];
-+    areg += (arg_types[i]->size + 3) / 4;
-+  }
-+
-+  (closure->fun)(cif, rvalue, avalue, closure->user_data);
-+
-+  return rtype;
-+}
-diff --git a/js/src/ctypes/libffi/src/xtensa/ffitarget.h b/js/src/ctypes/libffi/src/xtensa/ffitarget.h
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/xtensa/ffitarget.h
-@@ -0,0 +1,53 @@
-+/* -----------------------------------------------------------------*-C-*-
-+   ffitarget.h - Copyright (c) 2013 Tensilica, Inc.
-+   Target configuration macros for XTENSA.
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+   DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#ifndef LIBFFI_TARGET_H
-+#define LIBFFI_TARGET_H
-+
-+#ifndef LIBFFI_H
-+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
-+#endif
-+
-+#ifndef LIBFFI_ASM
-+typedef unsigned long	ffi_arg;
-+typedef signed long	ffi_sarg;
-+
-+typedef enum ffi_abi {
-+  FFI_FIRST_ABI = 0,
-+  FFI_SYSV,
-+  FFI_LAST_ABI,
-+  FFI_DEFAULT_ABI = FFI_SYSV
-+} ffi_abi;
-+#endif
-+
-+#define FFI_REGISTER_NARGS	6
-+
-+/* ---- Definitions for closures ----------------------------------------- */
-+
-+#define FFI_CLOSURES 1
-+#define FFI_NATIVE_RAW_API 0
-+#define FFI_TRAMPOLINE_SIZE 24
-+
-+#endif
-diff --git a/js/src/ctypes/libffi/src/xtensa/sysv.S b/js/src/ctypes/libffi/src/xtensa/sysv.S
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/src/xtensa/sysv.S
-@@ -0,0 +1,253 @@
-+/* -----------------------------------------------------------------------
-+   sysv.S - Copyright (c) 2013 Tensilica, Inc.
-+   
-+   XTENSA Foreign Function Interface 
-+
-+   Permission is hereby granted, free of charge, to any person obtaining
-+   a copy of this software and associated documentation files (the
-+   ``Software''), to deal in the Software without restriction, including
-+   without limitation the rights to use, copy, modify, merge, publish,
-+   distribute, sublicense, and/or sell copies of the Software, and to
-+   permit persons to whom the Software is furnished to do so, subject to
-+   the following conditions:
-+
-+   The above copyright notice and this permission notice shall be included
-+   in all copies or substantial portions of the Software.
-+
-+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+   DEALINGS IN THE SOFTWARE.
-+   ----------------------------------------------------------------------- */
-+
-+#define LIBFFI_ASM
-+#include <fficonfig.h>
-+#include <ffi.h>
-+
-+#define ENTRY(name) .text; .globl name; .type  name,@function; .align 4; name:
-+#define END(name) .size name , . - name
-+
-+/* Assert that the table below is in sync with ffi.h.  */
-+
-+#if	   FFI_TYPE_UINT8 != 5          \
-+        || FFI_TYPE_SINT8 != 6          \
-+        || FFI_TYPE_UINT16 != 7         \
-+        || FFI_TYPE_SINT16 != 8         \
-+        || FFI_TYPE_UINT32 != 9         \
-+        || FFI_TYPE_SINT32 != 10        \
-+        || FFI_TYPE_UINT64 != 11
-+#error "xtensa/sysv.S out of sync with ffi.h"
-+#endif
-+
-+
-+/* ffi_call_SYSV (rvalue, rbytes, flags, (*fnaddr)(), bytes, ecif)
-+      void *rvalue;            a2
-+      unsigned long rbytes;    a3
-+      unsigned flags;          a4
-+      void (*fnaddr)();        a5
-+      unsigned long bytes;     a6
-+      extended_cif* ecif)      a7
-+*/
-+
-+ENTRY(ffi_call_SYSV)
-+
-+	entry	a1, 32              # 32 byte frame for using call8 below
-+
-+	mov	a10, a7             # a10(->arg0): ecif
-+	sub	a11, a1, a6         # a11(->arg1): stack pointer
-+	mov	a7, a1              # fp
-+	movsp	a1, a11             # set new sp = old_sp - bytes
-+
-+	movi	a8, ffi_prep_args
-+	callx8	a8                  # ffi_prep_args(ecif, stack)
-+
-+	# prepare to move stack pointer back up to 6 arguments
-+	# note that 'bytes' is already aligned
-+
-+	movi	a10, 6*4 
-+	sub	a11, a6, a10
-+	movgez	a6, a10, a11
-+	add	a6, a1, a6
-+
-+	
-+	# we can pass up to 6 arguments in registers
-+	# for simplicity, just load 6 arguments
-+	# (the stack size is at least 32 bytes, so no risk to cross boundaries)
-+
-+	l32i	a10, a1, 0
-+	l32i	a11, a1, 4
-+	l32i	a12, a1, 8
-+	l32i	a13, a1, 12
-+	l32i	a14, a1, 16
-+	l32i	a15, a1, 20
-+
-+	# move stack pointer
-+
-+	movsp	a1, a6
-+
-+	callx8	a5                  # (*fn)(args...)
-+
-+	# Handle return value(s)
-+
-+	beqz	a2, .Lexit
-+
-+	movi	a5, FFI_TYPE_STRUCT
-+	bne	a4, a5, .Lstore
-+	movi	a5, 16
-+	blt	a5, a3, .Lexit
-+
-+	s32i	a10, a2, 0
-+	blti	a3, 5, .Lexit
-+	addi	a3, a3, -1
-+	s32i	a11, a2, 4
-+	blti	a3, 8, .Lexit
-+	s32i	a12, a2, 8
-+	blti	a3, 12, .Lexit
-+	s32i	a13, a2, 12
-+
-+.Lexit:	retw
-+
-+.Lstore:
-+	addi	a4, a4, -FFI_TYPE_UINT8
-+	bgei	a4, 7, .Lexit	# should never happen
-+	movi	a6, store_calls
-+	add	a4, a4, a4
-+	addx4	a6, a4, a6	# store_table + idx * 8
-+	jx	a6
-+
-+	.align	8
-+store_calls:
-+	# UINT8
-+	s8i	a10, a2, 0
-+	retw
-+
-+	# SINT8
-+	.align	8
-+	s8i	a10, a2, 0
-+	retw
-+
-+	# UINT16
-+	.align	8
-+	s16i	a10, a2, 0
-+	retw
-+
-+	# SINT16
-+	.align	8
-+	s16i	a10, a2, 0
-+	retw
-+
-+	# UINT32
-+	.align	8
-+	s32i	a10, a2, 0
-+	retw
-+
-+	# SINT32
-+	.align	8
-+	s32i	a10, a2, 0
-+	retw
-+
-+	# UINT64
-+	.align	8
-+	s32i	a10, a2, 0
-+	s32i	a11, a2, 4
-+	retw
-+
-+END(ffi_call_SYSV)
-+
-+
-+/*
-+ * void ffi_cacheflush (unsigned long start, unsigned long end)
-+ */
-+
-+#define EXTRA_ARGS_SIZE	24
-+
-+ENTRY(ffi_cacheflush)
-+
-+	entry	a1, 16
-+
-+1:	dhwbi	a2, 0
-+	ihi	a2, 0
-+	addi	a2, a2, 4
-+	blt	a2, a3, 1b
-+
-+	retw
-+
-+END(ffi_cacheflush)
-+
-+/* ffi_trampoline is copied to the stack */
-+
-+ENTRY(ffi_trampoline)
-+
-+	entry	a1, 16 + (FFI_REGISTER_NARGS * 4) + (4 * 4)   # [ 0]
-+	j	2f                                # [ 3]
-+	.align	4                                 # [ 6]
-+1:	.long	0                                 # [ 8]
-+2:	l32r	a15, 1b                           # [12]
-+	_mov 	a14, a0                           # [15]
-+	callx0	a15                               # [18]
-+                                                  # [21]
-+END(ffi_trampoline)
-+
-+/*
-+ * ffi_closure()
-+ *
-+ * a0:  closure + 21
-+ * a14: return address (a0)
-+ */
-+
-+ENTRY(ffi_closure_SYSV)
-+
-+	/* intentionally omitting entry here */
-+
-+	# restore return address (a0) and move pointer to closure to a10
-+	addi	a10, a0, -21
-+	mov	a0, a14
-+
-+	# allow up to 4 arguments as return values
-+	addi	a11, a1, 4 * 4
-+
-+	# save up to 6 arguments to stack (allocated by entry below)
-+	s32i	a2, a11,  0
-+	s32i	a3, a11,  4
-+	s32i	a4, a11,  8
-+	s32i	a5, a11, 12
-+	s32i	a6, a11, 16
-+	s32i	a7, a11, 20
-+
-+	movi	a8, ffi_closure_SYSV_inner
-+	mov	a12, a1
-+	callx8	a8			# .._inner(*closure, **avalue, *rvalue)
-+
-+	# load up to four return arguments
-+	l32i	a2, a1,  0
-+	l32i	a3, a1,  4
-+	l32i	a4, a1,  8
-+	l32i	a5, a1, 12
-+
-+	# (sign-)extend return value
-+	movi	a11, FFI_TYPE_UINT8
-+	bne	a10, a11, 1f
-+	extui	a2, a2, 0, 8
-+	retw
-+
-+1:	movi	a11, FFI_TYPE_SINT8
-+	bne	a10, a11, 1f
-+	sext	a2, a2, 7
-+	retw
-+
-+1:	movi	a11, FFI_TYPE_UINT16
-+	bne	a10, a11, 1f
-+	extui	a2, a2, 0, 16
-+	retw
-+
-+1:	movi	a11, FFI_TYPE_SINT16
-+	bne	a10, a11, 1f
-+	sext	a2, a2, 15
-+
-+1:	retw
-+
-+END(ffi_closure_SYSV)
-diff --git a/js/src/ctypes/libffi/stamp-h.in b/js/src/ctypes/libffi/stamp-h.in
-deleted file mode 100644
---- a/js/src/ctypes/libffi/stamp-h.in
-+++ /dev/null
-@@ -1,1 +0,0 @@
--timestamp
-diff --git a/js/src/ctypes/libffi/testsuite/Makefile.am b/js/src/ctypes/libffi/testsuite/Makefile.am
---- a/js/src/ctypes/libffi/testsuite/Makefile.am
-+++ b/js/src/ctypes/libffi/testsuite/Makefile.am
-@@ -8,73 +8,89 @@ EXPECT = `if [ -f $(top_builddir)/../exp
-           else echo expect ; fi`
- 
- RUNTEST = `if [ -f $(top_srcdir)/../dejagnu/runtest ] ; then \
- 	       echo $(top_srcdir)/../dejagnu/runtest ; \
- 	    else echo runtest; fi`
- 
- AM_RUNTESTFLAGS =
- 
-+EXTRA_DEJAGNU_SITE_CONFIG=../local.exp
-+
- CLEANFILES = *.exe core* *.log *.sum
- 
--EXTRA_DIST = libffi.special/special.exp	\
--libffi.special/unwindtest_ffi_call.cc libffi.special/unwindtest.cc \
--libffi.special/ffitestcxx.h config/default.exp lib/target-libpath.exp \
--lib/libffi-dg.exp lib/wrapper.exp libffi.call/float.c \
--libffi.call/cls_multi_schar.c libffi.call/float3.c \
--libffi.call/cls_3_1byte.c libffi.call/stret_large2.c \
--libffi.call/cls_5_1_byte.c libffi.call/stret_medium.c \
--libffi.call/promotion.c libffi.call/cls_dbls_struct.c \
--libffi.call/nested_struct.c libffi.call/closure_fn1.c \
--libffi.call/cls_4_1byte.c libffi.call/cls_float.c \
--libffi.call/cls_2byte.c libffi.call/closure_fn4.c \
--libffi.call/return_fl2.c libffi.call/nested_struct7.c \
--libffi.call/cls_uint.c libffi.call/cls_align_sint64.c \
--libffi.call/float1.c libffi.call/cls_19byte.c \
--libffi.call/nested_struct1.c libffi.call/cls_4byte.c \
--libffi.call/return_fl1.c libffi.call/cls_align_pointer.c \
--libffi.call/nested_struct4.c libffi.call/nested_struct3.c \
--libffi.call/struct7.c libffi.call/nested_struct9.c \
--libffi.call/cls_sshort.c libffi.call/cls_ulonglong.c \
--libffi.call/cls_pointer_stack.c libffi.call/cls_multi_uchar.c \
--libffi.call/testclosure.c libffi.call/cls_3byte1.c \
--libffi.call/struct6.c libffi.call/return_uc.c libffi.call/return_ll1.c \
--libffi.call/cls_ushort.c libffi.call/stret_medium2.c \
--libffi.call/cls_multi_ushortchar.c libffi.call/return_dbl2.c \
--libffi.call/closure_loc_fn0.c libffi.call/return_sc.c \
--libffi.call/nested_struct8.c libffi.call/cls_7_1_byte.c	\
--libffi.call/return_ll.c libffi.call/cls_pointer.c \
--libffi.call/err_bad_abi.c libffi.call/return_dbl1.c \
--libffi.call/call.exp libffi.call/ffitest.h libffi.call/strlen.c	\
--libffi.call/return_sl.c libffi.call/cls_1_1byte.c \
--libffi.call/struct1.c libffi.call/cls_64byte.c libffi.call/return_ul.c \
--libffi.call/cls_double.c libffi.call/many_win32.c \
--libffi.call/cls_16byte.c libffi.call/cls_align_double.c	\
--libffi.call/cls_align_uint16.c libffi.call/cls_9byte1.c	\
--libffi.call/cls_multi_sshortchar.c libffi.call/cls_multi_ushort.c \
--libffi.call/closure_stdcall.c libffi.call/return_fl.c \
--libffi.call/strlen_win32.c libffi.call/return_ldl.c \
--libffi.call/cls_align_float.c libffi.call/struct3.c \
--libffi.call/cls_uchar.c libffi.call/cls_sint.c libffi.call/float2.c \
--libffi.call/cls_align_longdouble_split.c \
--libffi.call/cls_longdouble_va.c libffi.call/cls_multi_sshort.c \
--libffi.call/stret_large.c libffi.call/cls_align_sint16.c \
--libffi.call/nested_struct6.c libffi.call/cls_5byte.c \
--libffi.call/return_dbl.c libffi.call/cls_20byte.c \
--libffi.call/cls_8byte.c libffi.call/pyobjc-tc.c	\
--libffi.call/cls_24byte.c libffi.call/cls_align_longdouble_split2.c \
--libffi.call/cls_6_1_byte.c libffi.call/cls_schar.c \
--libffi.call/cls_18byte.c libffi.call/closure_fn3.c \
--libffi.call/err_bad_typedef.c libffi.call/closure_fn2.c	\
--libffi.call/struct2.c libffi.call/cls_3byte2.c \
--libffi.call/cls_align_longdouble.c libffi.call/cls_20byte1.c \
--libffi.call/return_fl3.c libffi.call/cls_align_uint32.c	\
--libffi.call/problem1.c libffi.call/float4.c \
--libffi.call/cls_align_uint64.c libffi.call/struct9.c \
--libffi.call/closure_fn5.c libffi.call/cls_align_sint32.c \
--libffi.call/closure_fn0.c libffi.call/closure_fn6.c \
--libffi.call/struct4.c libffi.call/nested_struct2.c \
--libffi.call/cls_6byte.c libffi.call/cls_7byte.c libffi.call/many.c \
--libffi.call/struct8.c libffi.call/negint.c libffi.call/struct5.c \
--libffi.call/cls_12byte.c libffi.call/cls_double_va.c \
--libffi.call/cls_longdouble.c libffi.call/cls_9byte2.c \
--libffi.call/nested_struct10.c libffi.call/nested_struct5.c \
--libffi.call/huge_struct.c
-+EXTRA_DIST = config/default.exp libffi.call/cls_19byte.c		\
-+libffi.call/cls_align_longdouble_split.c				\
-+libffi.call/closure_loc_fn0.c libffi.call/cls_schar.c			\
-+libffi.call/closure_fn1.c \
-+libffi.call/return_ul.c libffi.call/cls_align_double.c			\
-+libffi.call/return_fl2.c libffi.call/cls_1_1byte.c			\
-+libffi.call/cls_64byte.c libffi.call/nested_struct7.c			\
-+libffi.call/cls_align_sint32.c libffi.call/nested_struct2.c		\
-+libffi.call/ffitest.h libffi.call/nested_struct4.c			\
-+libffi.call/cls_multi_ushort.c libffi.call/struct3.c			\
-+libffi.call/cls_3byte1.c libffi.call/cls_16byte.c			\
-+libffi.call/struct8.c libffi.call/nested_struct8.c			\
-+libffi.call/cls_multi_sshort.c libffi.call/cls_3byte2.c			\
-+libffi.call/cls_pointer.c			\
-+libffi.call/err_bad_typedef.c libffi.call/cls_4_1byte.c			\
-+libffi.call/cls_9byte2.c libffi.call/cls_multi_schar.c			\
-+libffi.call/stret_medium2.c libffi.call/cls_5_1_byte.c			\
-+libffi.call/call.exp libffi.call/cls_double.c				\
-+libffi.call/cls_align_sint16.c libffi.call/cls_uint.c			\
-+libffi.call/return_ll1.c libffi.call/nested_struct3.c			\
-+libffi.call/cls_20byte1.c libffi.call/closure_fn4.c			\
-+libffi.call/cls_uchar.c libffi.call/struct2.c libffi.call/cls_7byte.c	\
-+libffi.call/strlen.c libffi.call/many.c libffi.call/testclosure.c	\
-+libffi.call/return_fl.c libffi.call/struct5.c				\
-+libffi.call/cls_12byte.c libffi.call/cls_multi_sshortchar.c		\
-+libffi.call/cls_align_longdouble_split2.c libffi.call/return_dbl2.c	\
-+libffi.call/return_fl3.c libffi.call/stret_medium.c			\
-+libffi.call/nested_struct6.c libffi.call/closure_fn3.c			\
-+libffi.call/float3.c libffi.call/many2.c				\
-+libffi.call/closure_stdcall.c libffi.call/cls_align_uint16.c		\
-+libffi.call/cls_9byte1.c libffi.call/closure_fn6.c			\
-+libffi.call/cls_double_va.c libffi.call/cls_align_pointer.c		\
-+libffi.call/cls_align_longdouble.c libffi.call/closure_fn2.c		\
-+libffi.call/cls_sshort.c \
-+libffi.call/nested_struct.c libffi.call/cls_20byte.c			\
-+libffi.call/cls_longdouble.c libffi.call/cls_multi_uchar.c		\
-+libffi.call/return_uc.c libffi.call/closure_thiscall.c			\
-+libffi.call/cls_18byte.c libffi.call/cls_8byte.c			\
-+libffi.call/promotion.c \
-+libffi.call/return_dbl.c libffi.call/cls_24byte.c			\
-+libffi.call/struct4.c libffi.call/cls_6byte.c				\
-+libffi.call/cls_align_uint32.c libffi.call/float.c			\
-+libffi.call/float1.c libffi.call/float_va.c libffi.call/negint.c	\
-+libffi.call/return_dbl1.c libffi.call/cls_3_1byte.c			\
-+libffi.call/cls_align_float.c libffi.call/return_fl1.c			\
-+libffi.call/nested_struct10.c libffi.call/nested_struct5.c		\
-+libffi.call/cls_align_sint64.c		\
-+libffi.call/stret_large2.c libffi.call/return_sl.c			\
-+libffi.call/closure_fn0.c libffi.call/cls_5byte.c			\
-+libffi.call/cls_2byte.c libffi.call/float2.c				\
-+libffi.call/cls_dbls_struct.c libffi.call/cls_sint.c			\
-+libffi.call/stret_large.c libffi.call/cls_ulonglong.c			\
-+libffi.call/cls_ushort.c libffi.call/nested_struct1.c			\
-+libffi.call/err_bad_abi.c libffi.call/cls_longdouble_va.c		\
-+libffi.call/cls_float.c libffi.call/cls_pointer_stack.c		\
-+libffi.call/pyobjc-tc.c libffi.call/cls_multi_ushortchar.c		\
-+libffi.call/struct1.c libffi.call/nested_struct9.c			\
-+libffi.call/huge_struct.c libffi.call/problem1.c			\
-+libffi.call/float4.c \
-+libffi.call/return_ldl.c \
-+libffi.call/closure_fn5.c \
-+libffi.call/struct6.c libffi.call/return_ll.c libffi.call/struct9.c	\
-+libffi.call/return_sc.c libffi.call/struct7.c				\
-+libffi.call/cls_align_uint64.c libffi.call/cls_4byte.c			\
-+libffi.call/cls_6_1_byte.c			\
-+libffi.call/cls_7_1_byte.c libffi.call/unwindtest.cc			\
-+libffi.call/unwindtest_ffi_call.cc	\
-+lib/wrapper.exp lib/target-libpath.exp	\
-+lib/libffi.exp libffi.call/cls_struct_va1.c				\
-+libffi.call/cls_uchar_va.c libffi.call/cls_uint_va.c			\
-+libffi.call/cls_ulong_va.c libffi.call/cls_ushort_va.c			\
-+libffi.call/nested_struct11.c libffi.call/uninitialized.c		\
-+libffi.call/va_1.c libffi.call/va_struct1.c libffi.call/va_struct2.c	\
-+libffi.call/va_struct3.c \
-+libffi.call/strlen2.c \
-+libffi.call/strlen3.c \
-+libffi.call/strlen4.c
-diff --git a/js/src/ctypes/libffi/testsuite/Makefile.in b/js/src/ctypes/libffi/testsuite/Makefile.in
---- a/js/src/ctypes/libffi/testsuite/Makefile.in
-+++ b/js/src/ctypes/libffi/testsuite/Makefile.in
-@@ -1,25 +1,69 @@
--# Makefile.in generated by automake 1.11.1 from Makefile.am.
-+# Makefile.in generated by automake 1.13.4 from Makefile.am.
- # @configure_input@
- 
--# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
--# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
--# Inc.
-+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-+
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
- 
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- # PARTICULAR PURPOSE.
- 
- @SET_MAKE@
- VPATH = @srcdir@
-+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-+am__make_running_with_option = \
-+  case $${target_option-} in \
-+      ?) ;; \
-+      *) echo "am__make_running_with_option: internal error: invalid" \
-+              "target option '$${target_option-}' specified" >&2; \
-+         exit 1;; \
-+  esac; \
-+  has_opt=no; \
-+  sane_makeflags=$$MAKEFLAGS; \
-+  if $(am__is_gnu_make); then \
-+    sane_makeflags=$$MFLAGS; \
-+  else \
-+    case $$MAKEFLAGS in \
-+      *\\[\ \	]*) \
-+        bs=\\; \
-+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-+    esac; \
-+  fi; \
-+  skip_next=no; \
-+  strip_trailopt () \
-+  { \
-+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-+  }; \
-+  for flg in $$sane_makeflags; do \
-+    test $$skip_next = yes && { skip_next=no; continue; }; \
-+    case $$flg in \
-+      *=*|--*) continue;; \
-+        -*I) strip_trailopt 'I'; skip_next=yes;; \
-+      -*I?*) strip_trailopt 'I';; \
-+        -*O) strip_trailopt 'O'; skip_next=yes;; \
-+      -*O?*) strip_trailopt 'O';; \
-+        -*l) strip_trailopt 'l'; skip_next=yes;; \
-+      -*l?*) strip_trailopt 'l';; \
-+      -[dEDm]) skip_next=yes;; \
-+      -[JT]) skip_next=yes;; \
-+    esac; \
-+    case $$flg in \
-+      *$$target_option*) has_opt=yes; break;; \
-+    esac; \
-+  done; \
-+  test $$has_opt = yes
-+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
- pkgdatadir = $(datadir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
- pkglibdir = $(libdir)/@PACKAGE@
- pkglibexecdir = $(libexecdir)/@PACKAGE@
- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- install_sh_DATA = $(install_sh) -c -m 644
- install_sh_PROGRAM = $(install_sh) -c
- install_sh_SCRIPT = $(install_sh) -c
-@@ -30,34 +74,65 @@ PRE_INSTALL = :
- POST_INSTALL = :
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
- build_triplet = @build@
- host_triplet = @host@
- target_triplet = @target@
- subdir = testsuite
--DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
- ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
--am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-+am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \
-+	$(top_srcdir)/m4/ax_append_flag.m4 \
-+	$(top_srcdir)/m4/ax_cc_maxopt.m4 \
-+	$(top_srcdir)/m4/ax_cflags_warn_all.m4 \
-+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
-+	$(top_srcdir)/m4/ax_compiler_vendor.m4 \
-+	$(top_srcdir)/m4/ax_configure_args.m4 \
-+	$(top_srcdir)/m4/ax_enable_builddir.m4 \
-+	$(top_srcdir)/m4/ax_gcc_archflag.m4 \
-+	$(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
-+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
- 	$(top_srcdir)/configure.ac
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- 	$(ACLOCAL_M4)
- mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/fficonfig.h
- CONFIG_CLEAN_FILES =
- CONFIG_CLEAN_VPATH_FILES =
-+AM_V_P = $(am__v_P_@AM_V@)
-+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-+am__v_P_0 = false
-+am__v_P_1 = :
-+AM_V_GEN = $(am__v_GEN_@AM_V@)
-+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-+am__v_GEN_0 = @echo "  GEN     " $@;
-+am__v_GEN_1 = 
-+AM_V_at = $(am__v_at_@AM_V@)
-+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-+am__v_at_0 = @
-+am__v_at_1 = 
- SOURCES =
- DIST_SOURCES =
-+am__can_run_installinfo = \
-+  case $$AM_UPDATE_INFO_DIR in \
-+    n|no|NO) false;; \
-+    *) (install-info --version) >/dev/null 2>&1;; \
-+  esac
-+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
- DEJATOOL = $(PACKAGE)
- RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
- ACLOCAL = @ACLOCAL@
- ALLOCA = @ALLOCA@
- AMTAR = @AMTAR@
-+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
- AM_LTLDFLAGS = @AM_LTLDFLAGS@
- AM_RUNTESTFLAGS = 
- AR = @AR@
- AUTOCONF = @AUTOCONF@
- AUTOHEADER = @AUTOHEADER@
- AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
- CC = @CC@
-@@ -66,75 +141,82 @@ CCASDEPMODE = @CCASDEPMODE@
- CCASFLAGS = @CCASFLAGS@
- CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
- CPP = @CPP@
- CPPFLAGS = @CPPFLAGS@
- CYGPATH_W = @CYGPATH_W@
- DEFS = @DEFS@
- DEPDIR = @DEPDIR@
-+DLLTOOL = @DLLTOOL@
- DSYMUTIL = @DSYMUTIL@
- DUMPBIN = @DUMPBIN@
- ECHO_C = @ECHO_C@
- ECHO_N = @ECHO_N@
- ECHO_T = @ECHO_T@
- EGREP = @EGREP@
- EXEEXT = @EXEEXT@
-+FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@
- FGREP = @FGREP@
- GREP = @GREP@
- HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
-+HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@
- INSTALL = @INSTALL@
- INSTALL_DATA = @INSTALL_DATA@
- INSTALL_PROGRAM = @INSTALL_PROGRAM@
- INSTALL_SCRIPT = @INSTALL_SCRIPT@
- INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
- LD = @LD@
- LDFLAGS = @LDFLAGS@
- LIBOBJS = @LIBOBJS@
- LIBS = @LIBS@
- LIBTOOL = @LIBTOOL@
- LIPO = @LIPO@
- LN_S = @LN_S@
- LTLIBOBJS = @LTLIBOBJS@
- MAINT = @MAINT@
- MAKEINFO = @MAKEINFO@
-+MANIFEST_TOOL = @MANIFEST_TOOL@
- MKDIR_P = @MKDIR_P@
- NM = @NM@
- NMEDIT = @NMEDIT@
- OBJDUMP = @OBJDUMP@
- OBJEXT = @OBJEXT@
- OTOOL = @OTOOL@
- OTOOL64 = @OTOOL64@
- PACKAGE = @PACKAGE@
- PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
- PACKAGE_NAME = @PACKAGE_NAME@
- PACKAGE_STRING = @PACKAGE_STRING@
- PACKAGE_TARNAME = @PACKAGE_TARNAME@
- PACKAGE_URL = @PACKAGE_URL@
- PACKAGE_VERSION = @PACKAGE_VERSION@
- PATH_SEPARATOR = @PATH_SEPARATOR@
-+PRTDIAG = @PRTDIAG@
- RANLIB = @RANLIB@
- SED = @SED@
- SET_MAKE = @SET_MAKE@
- SHELL = @SHELL@
- STRIP = @STRIP@
- TARGET = @TARGET@
- TARGETDIR = @TARGETDIR@
- VERSION = @VERSION@
- abs_builddir = @abs_builddir@
- abs_srcdir = @abs_srcdir@
- abs_top_builddir = @abs_top_builddir@
- abs_top_srcdir = @abs_top_srcdir@
-+ac_ct_AR = @ac_ct_AR@
- ac_ct_CC = @ac_ct_CC@
- ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
- am__include = @am__include@
- am__leading_dot = @am__leading_dot@
- am__quote = @am__quote@
- am__tar = @am__tar@
- am__untar = @am__untar@
-+ax_enable_builddir_sed = @ax_enable_builddir_sed@
- bindir = @bindir@
- build = @build@
- build_alias = @build_alias@
- build_cpu = @build_cpu@
- build_os = @build_os@
- build_vendor = @build_vendor@
- builddir = @builddir@
- datadir = @datadir@
-@@ -150,27 +232,27 @@ host_vendor = @host_vendor@
- htmldir = @htmldir@
- includedir = @includedir@
- infodir = @infodir@
- install_sh = @install_sh@
- libdir = @libdir@
- libexecdir = @libexecdir@
- localedir = @localedir@
- localstatedir = @localstatedir@
--lt_ECHO = @lt_ECHO@
- mandir = @mandir@
- mkdir_p = @mkdir_p@
- oldincludedir = @oldincludedir@
- pdfdir = @pdfdir@
- prefix = @prefix@
- program_transform_name = @program_transform_name@
- psdir = @psdir@
- sbindir = @sbindir@
- sharedstatedir = @sharedstatedir@
- srcdir = @srcdir@
-+sys_symbol_underscore = @sys_symbol_underscore@
- sysconfdir = @sysconfdir@
- target = @target@
- target_alias = @target_alias@
- target_cpu = @target_cpu@
- target_os = @target_os@
- target_vendor = @target_vendor@
- toolexecdir = @toolexecdir@
- toolexeclibdir = @toolexeclibdir@
-@@ -183,80 +265,95 @@ AUTOMAKE_OPTIONS = foreign dejagnu
- EXPECT = `if [ -f $(top_builddir)/../expect/expect ] ; then \
-             echo $(top_builddir)/../expect/expect ; \
-           else echo expect ; fi`
- 
- RUNTEST = `if [ -f $(top_srcdir)/../dejagnu/runtest ] ; then \
- 	       echo $(top_srcdir)/../dejagnu/runtest ; \
- 	    else echo runtest; fi`
- 
-+EXTRA_DEJAGNU_SITE_CONFIG = ../local.exp
- CLEANFILES = *.exe core* *.log *.sum
--EXTRA_DIST = libffi.special/special.exp	\
--libffi.special/unwindtest_ffi_call.cc libffi.special/unwindtest.cc \
--libffi.special/ffitestcxx.h config/default.exp lib/target-libpath.exp \
--lib/libffi-dg.exp lib/wrapper.exp libffi.call/float.c \
--libffi.call/cls_multi_schar.c libffi.call/float3.c \
--libffi.call/cls_3_1byte.c libffi.call/stret_large2.c \
--libffi.call/cls_5_1_byte.c libffi.call/stret_medium.c \
--libffi.call/promotion.c libffi.call/cls_dbls_struct.c \
--libffi.call/nested_struct.c libffi.call/closure_fn1.c \
--libffi.call/cls_4_1byte.c libffi.call/cls_float.c \
--libffi.call/cls_2byte.c libffi.call/closure_fn4.c \
--libffi.call/return_fl2.c libffi.call/nested_struct7.c \
--libffi.call/cls_uint.c libffi.call/cls_align_sint64.c \
--libffi.call/float1.c libffi.call/cls_19byte.c \
--libffi.call/nested_struct1.c libffi.call/cls_4byte.c \
--libffi.call/return_fl1.c libffi.call/cls_align_pointer.c \
--libffi.call/nested_struct4.c libffi.call/nested_struct3.c \
--libffi.call/struct7.c libffi.call/nested_struct9.c \
--libffi.call/cls_sshort.c libffi.call/cls_ulonglong.c \
--libffi.call/cls_pointer_stack.c libffi.call/cls_multi_uchar.c \
--libffi.call/testclosure.c libffi.call/cls_3byte1.c \
--libffi.call/struct6.c libffi.call/return_uc.c libffi.call/return_ll1.c \
--libffi.call/cls_ushort.c libffi.call/stret_medium2.c \
--libffi.call/cls_multi_ushortchar.c libffi.call/return_dbl2.c \
--libffi.call/closure_loc_fn0.c libffi.call/return_sc.c \
--libffi.call/nested_struct8.c libffi.call/cls_7_1_byte.c	\
--libffi.call/return_ll.c libffi.call/cls_pointer.c \
--libffi.call/err_bad_abi.c libffi.call/return_dbl1.c \
--libffi.call/call.exp libffi.call/ffitest.h libffi.call/strlen.c	\
--libffi.call/return_sl.c libffi.call/cls_1_1byte.c \
--libffi.call/struct1.c libffi.call/cls_64byte.c libffi.call/return_ul.c \
--libffi.call/cls_double.c libffi.call/many_win32.c \
--libffi.call/cls_16byte.c libffi.call/cls_align_double.c	\
--libffi.call/cls_align_uint16.c libffi.call/cls_9byte1.c	\
--libffi.call/cls_multi_sshortchar.c libffi.call/cls_multi_ushort.c \
--libffi.call/closure_stdcall.c libffi.call/return_fl.c \
--libffi.call/strlen_win32.c libffi.call/return_ldl.c \
--libffi.call/cls_align_float.c libffi.call/struct3.c \
--libffi.call/cls_uchar.c libffi.call/cls_sint.c libffi.call/float2.c \
--libffi.call/cls_align_longdouble_split.c \
--libffi.call/cls_longdouble_va.c libffi.call/cls_multi_sshort.c \
--libffi.call/stret_large.c libffi.call/cls_align_sint16.c \
--libffi.call/nested_struct6.c libffi.call/cls_5byte.c \
--libffi.call/return_dbl.c libffi.call/cls_20byte.c \
--libffi.call/cls_8byte.c libffi.call/pyobjc-tc.c	\
--libffi.call/cls_24byte.c libffi.call/cls_align_longdouble_split2.c \
--libffi.call/cls_6_1_byte.c libffi.call/cls_schar.c \
--libffi.call/cls_18byte.c libffi.call/closure_fn3.c \
--libffi.call/err_bad_typedef.c libffi.call/closure_fn2.c	\
--libffi.call/struct2.c libffi.call/cls_3byte2.c \
--libffi.call/cls_align_longdouble.c libffi.call/cls_20byte1.c \
--libffi.call/return_fl3.c libffi.call/cls_align_uint32.c	\
--libffi.call/problem1.c libffi.call/float4.c \
--libffi.call/cls_align_uint64.c libffi.call/struct9.c \
--libffi.call/closure_fn5.c libffi.call/cls_align_sint32.c \
--libffi.call/closure_fn0.c libffi.call/closure_fn6.c \
--libffi.call/struct4.c libffi.call/nested_struct2.c \
--libffi.call/cls_6byte.c libffi.call/cls_7byte.c libffi.call/many.c \
--libffi.call/struct8.c libffi.call/negint.c libffi.call/struct5.c \
--libffi.call/cls_12byte.c libffi.call/cls_double_va.c \
--libffi.call/cls_longdouble.c libffi.call/cls_9byte2.c \
--libffi.call/nested_struct10.c libffi.call/nested_struct5.c \
--libffi.call/huge_struct.c
-+EXTRA_DIST = config/default.exp libffi.call/cls_19byte.c		\
-+libffi.call/cls_align_longdouble_split.c				\
-+libffi.call/closure_loc_fn0.c libffi.call/cls_schar.c			\
-+libffi.call/closure_fn1.c \
-+libffi.call/return_ul.c libffi.call/cls_align_double.c			\
-+libffi.call/return_fl2.c libffi.call/cls_1_1byte.c			\
-+libffi.call/cls_64byte.c libffi.call/nested_struct7.c			\
-+libffi.call/cls_align_sint32.c libffi.call/nested_struct2.c		\
-+libffi.call/ffitest.h libffi.call/nested_struct4.c			\
-+libffi.call/cls_multi_ushort.c libffi.call/struct3.c			\
-+libffi.call/cls_3byte1.c libffi.call/cls_16byte.c			\
-+libffi.call/struct8.c libffi.call/nested_struct8.c			\
-+libffi.call/cls_multi_sshort.c libffi.call/cls_3byte2.c			\
-+libffi.call/cls_pointer.c			\
-+libffi.call/err_bad_typedef.c libffi.call/cls_4_1byte.c			\
-+libffi.call/cls_9byte2.c libffi.call/cls_multi_schar.c			\
-+libffi.call/stret_medium2.c libffi.call/cls_5_1_byte.c			\
-+libffi.call/call.exp libffi.call/cls_double.c				\
-+libffi.call/cls_align_sint16.c libffi.call/cls_uint.c			\
-+libffi.call/return_ll1.c libffi.call/nested_struct3.c			\
-+libffi.call/cls_20byte1.c libffi.call/closure_fn4.c			\
-+libffi.call/cls_uchar.c libffi.call/struct2.c libffi.call/cls_7byte.c	\
-+libffi.call/strlen.c libffi.call/many.c libffi.call/testclosure.c	\
-+libffi.call/return_fl.c libffi.call/struct5.c				\
-+libffi.call/cls_12byte.c libffi.call/cls_multi_sshortchar.c		\
-+libffi.call/cls_align_longdouble_split2.c libffi.call/return_dbl2.c	\
-+libffi.call/return_fl3.c libffi.call/stret_medium.c			\
-+libffi.call/nested_struct6.c libffi.call/closure_fn3.c			\
-+libffi.call/float3.c libffi.call/many2.c				\
-+libffi.call/closure_stdcall.c libffi.call/cls_align_uint16.c		\
-+libffi.call/cls_9byte1.c libffi.call/closure_fn6.c			\
-+libffi.call/cls_double_va.c libffi.call/cls_align_pointer.c		\
-+libffi.call/cls_align_longdouble.c libffi.call/closure_fn2.c		\
-+libffi.call/cls_sshort.c \
-+libffi.call/nested_struct.c libffi.call/cls_20byte.c			\
-+libffi.call/cls_longdouble.c libffi.call/cls_multi_uchar.c		\
-+libffi.call/return_uc.c libffi.call/closure_thiscall.c			\
-+libffi.call/cls_18byte.c libffi.call/cls_8byte.c			\
-+libffi.call/promotion.c \
-+libffi.call/return_dbl.c libffi.call/cls_24byte.c			\
-+libffi.call/struct4.c libffi.call/cls_6byte.c				\
-+libffi.call/cls_align_uint32.c libffi.call/float.c			\
-+libffi.call/float1.c libffi.call/float_va.c libffi.call/negint.c	\
-+libffi.call/return_dbl1.c libffi.call/cls_3_1byte.c			\
-+libffi.call/cls_align_float.c libffi.call/return_fl1.c			\
-+libffi.call/nested_struct10.c libffi.call/nested_struct5.c		\
-+libffi.call/cls_align_sint64.c		\
-+libffi.call/stret_large2.c libffi.call/return_sl.c			\
-+libffi.call/closure_fn0.c libffi.call/cls_5byte.c			\
-+libffi.call/cls_2byte.c libffi.call/float2.c				\
-+libffi.call/cls_dbls_struct.c libffi.call/cls_sint.c			\
-+libffi.call/stret_large.c libffi.call/cls_ulonglong.c			\
-+libffi.call/cls_ushort.c libffi.call/nested_struct1.c			\
-+libffi.call/err_bad_abi.c libffi.call/cls_longdouble_va.c		\
-+libffi.call/cls_float.c libffi.call/cls_pointer_stack.c		\
-+libffi.call/pyobjc-tc.c libffi.call/cls_multi_ushortchar.c		\
-+libffi.call/struct1.c libffi.call/nested_struct9.c			\
-+libffi.call/huge_struct.c libffi.call/problem1.c			\
-+libffi.call/float4.c \
-+libffi.call/return_ldl.c \
-+libffi.call/closure_fn5.c \
-+libffi.call/struct6.c libffi.call/return_ll.c libffi.call/struct9.c	\
-+libffi.call/return_sc.c libffi.call/struct7.c				\
-+libffi.call/cls_align_uint64.c libffi.call/cls_4byte.c			\
-+libffi.call/cls_6_1_byte.c			\
-+libffi.call/cls_7_1_byte.c libffi.call/unwindtest.cc			\
-+libffi.call/unwindtest_ffi_call.cc	\
-+lib/wrapper.exp lib/target-libpath.exp	\
-+lib/libffi.exp libffi.call/cls_struct_va1.c				\
-+libffi.call/cls_uchar_va.c libffi.call/cls_uint_va.c			\
-+libffi.call/cls_ulong_va.c libffi.call/cls_ushort_va.c			\
-+libffi.call/nested_struct11.c libffi.call/uninitialized.c		\
-+libffi.call/va_1.c libffi.call/va_struct1.c libffi.call/va_struct2.c	\
-+libffi.call/va_struct3.c \
-+libffi.call/strlen2.c \
-+libffi.call/strlen3.c \
-+libffi.call/strlen4.c
- 
- all: all-am
- 
- .SUFFIXES:
- $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
- 	@for dep in $?; do \
- 	  case '$(am__configure_deps)' in \
- 	    *$$dep*) \
-@@ -287,51 +384,57 @@ Makefile: $(srcdir)/Makefile.in $(top_bu
- 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
- $(am__aclocal_m4_deps):
- 
- mostlyclean-libtool:
- 	-rm -f *.lo
- 
- clean-libtool:
- 	-rm -rf .libs _libs
--tags: TAGS
--TAGS:
-+tags TAGS:
- 
--ctags: CTAGS
--CTAGS:
-+ctags CTAGS:
-+
-+cscope cscopelist:
- 
- 
- check-DEJAGNU: site.exp
--	srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \
-+	srcdir='$(srcdir)'; export srcdir; \
- 	EXPECT=$(EXPECT); export EXPECT; \
--	runtest=$(RUNTEST); \
--	if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
-+	if $(SHELL) -c "$(RUNTEST) --version" > /dev/null 2>&1; then \
- 	  exit_status=0; l='$(DEJATOOL)'; for tool in $$l; do \
--	    if $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \
-+	    if $(RUNTEST) $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \
- 	    then :; else exit_status=1; fi; \
- 	  done; \
--	else echo "WARNING: could not find \`runtest'" 1>&2; :;\
-+	else echo "WARNING: could not find '$(RUNTEST)'" 1>&2; :;\
- 	fi; \
- 	exit $$exit_status
--site.exp: Makefile
--	@echo 'Making a new site.exp file...'
-+site.exp: Makefile $(EXTRA_DEJAGNU_SITE_CONFIG)
-+	@echo 'Making a new site.exp file ...'
- 	@echo '## these variables are automatically generated by make ##' >site.tmp
- 	@echo '# Do not edit here.  If you wish to override these values' >>site.tmp
- 	@echo '# edit the last section' >>site.tmp
--	@echo 'set srcdir $(srcdir)' >>site.tmp
-+	@echo 'set srcdir "$(srcdir)"' >>site.tmp
- 	@echo "set objdir `pwd`" >>site.tmp
- 	@echo 'set build_alias "$(build_alias)"' >>site.tmp
- 	@echo 'set build_triplet $(build_triplet)' >>site.tmp
- 	@echo 'set host_alias "$(host_alias)"' >>site.tmp
- 	@echo 'set host_triplet $(host_triplet)' >>site.tmp
- 	@echo 'set target_alias "$(target_alias)"' >>site.tmp
- 	@echo 'set target_triplet $(target_triplet)' >>site.tmp
--	@echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
--	@test ! -f site.exp || \
--	  sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
-+	@list='$(EXTRA_DEJAGNU_SITE_CONFIG)'; for f in $$list; do \
-+	  echo "## Begin content included from file $$f.  Do not modify. ##" \
-+	   && cat `test -f "$$f" || echo '$(srcdir)/'`$$f \
-+	   && echo "## End content included from file $$f. ##" \
-+	   || exit 1; \
-+	 done >> site.tmp
-+	@echo "## End of auto-generated content; you can edit from here. ##" >> site.tmp
-+	@if test -f site.exp; then \
-+	   sed -e '1,/^## End of auto-generated content.*##/d' site.exp >> site.tmp; \
-+	 fi
- 	@-rm -f site.bak
- 	@test ! -f site.exp || mv site.exp site.bak
- 	@mv site.tmp site.exp
- 
- distclean-DEJAGNU:
- 	-rm -f site.exp site.bak
- 	-l='$(DEJATOOL)'; for tool in $$l; do \
- 	  rm -f $$tool.sum $$tool.log; \
-@@ -377,20 +480,25 @@ install-exec: install-exec-am
- install-data: install-data-am
- uninstall: uninstall-am
- 
- install-am: all-am
- 	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
- 
- installcheck: installcheck-am
- install-strip:
--	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
--	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
--	  `test -z '$(STRIP)' || \
--	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-+	if test -z '$(STRIP)'; then \
-+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+	      install; \
-+	else \
-+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-+	fi
- mostlyclean-generic:
- 
- clean-generic:
- 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
- 
- distclean-generic:
- 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-@@ -462,23 +570,24 @@ ps: ps-am
- 
- ps-am:
- 
- uninstall-am:
- 
- .MAKE: check-am install-am install-strip
- 
- .PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \
--	clean-libtool distclean distclean-DEJAGNU distclean-generic \
--	distclean-libtool distdir dvi dvi-am html html-am info info-am \
--	install install-am install-data install-data-am install-dvi \
--	install-dvi-am install-exec install-exec-am install-html \
--	install-html-am install-info install-info-am install-man \
--	install-pdf install-pdf-am install-ps install-ps-am \
--	install-strip installcheck installcheck-am installdirs \
--	maintainer-clean maintainer-clean-generic mostlyclean \
--	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
--	uninstall uninstall-am
-+	clean-libtool cscopelist-am ctags-am distclean \
-+	distclean-DEJAGNU distclean-generic distclean-libtool distdir \
-+	dvi dvi-am html html-am info info-am install install-am \
-+	install-data install-data-am install-dvi install-dvi-am \
-+	install-exec install-exec-am install-html install-html-am \
-+	install-info install-info-am install-man install-pdf \
-+	install-pdf-am install-ps install-ps-am install-strip \
-+	installcheck installcheck-am installdirs maintainer-clean \
-+	maintainer-clean-generic mostlyclean mostlyclean-generic \
-+	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
-+	uninstall-am
- 
- 
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
-diff --git a/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp b/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp
-deleted file mode 100644
---- a/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp
-+++ /dev/null
-@@ -1,350 +0,0 @@
--#   Copyright (C) 2003, 2005, 2008, 2009, 2010 Free Software Foundation, Inc.
--
--# This program is free software; you can redistribute it and/or modify
--# it under the terms of the GNU General Public License as published by
--# the Free Software Foundation; either version 3 of the License, or
--# (at your option) any later version.
--#
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
--#
--# You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--
--proc load_gcc_lib { filename } {
--    global srcdir
--    load_file $srcdir/lib/$filename
--}
--
--load_lib dg.exp
--load_lib libgloss.exp
--load_gcc_lib target-libpath.exp
--load_gcc_lib wrapper.exp
--
--
--# Define libffi callbacks for dg.exp.
--
--proc libffi-dg-test-1 { target_compile prog do_what extra_tool_flags } {
--
--    # To get all \n in dg-output test strings to match printf output
--    # in a system that outputs it as \015\012 (i.e. not just \012), we
--    # need to change all \n into \r?\n.  As there is no dejagnu flag
--    # or hook to do that, we simply change the text being tested.
--    # Unfortunately, we have to know that the variable is called
--    # dg-output-text and lives in the caller of libffi-dg-test, which
--    # is two calls up.  Overriding proc dg-output would be longer and
--    # would necessarily have the same assumption.
--    upvar 2 dg-output-text output_match
--
--    if { [llength $output_match] > 1 } {
--	regsub -all "\n" [lindex $output_match 1] "\r?\n" x
--	set output_match [lreplace $output_match 1 1 $x]
--    }
--
--    # Set up the compiler flags, based on what we're going to do.
--
--    set options [list]
--    switch $do_what {
--	"compile" {
--	    set compile_type "assembly"
--	    set output_file "[file rootname [file tail $prog]].s"
--	}
--	"link" {
--	    set compile_type "executable"
--	    set output_file "[file rootname [file tail $prog]].exe"
--	    # The following line is needed for targets like the i960 where
--	    # the default output file is b.out.  Sigh.
--	}
--	"run" {
--	    set compile_type "executable"
--	    # FIXME: "./" is to cope with "." not being in $PATH.
--	    # Should this be handled elsewhere?
--	    # YES.
--	    set output_file "./[file rootname [file tail $prog]].exe"
--	    # This is the only place where we care if an executable was
--	    # created or not.  If it was, dg.exp will try to run it.
--	    remote_file build delete $output_file;
--	}
--	default {
--	    perror "$do_what: not a valid dg-do keyword"
--	    return ""
--	}
--    }
--
--    if { $extra_tool_flags != "" } {
--	lappend options "additional_flags=$extra_tool_flags"
--    }
--
--    set comp_output [libffi_target_compile "$prog" "$output_file" "$compile_type" $options];
--
--
--    return [list $comp_output $output_file]
--}
--
--
--proc libffi-dg-test { prog do_what extra_tool_flags } {
--    return [libffi-dg-test-1 target_compile $prog $do_what $extra_tool_flags]
--}
--
--proc libffi-init { args } {
--    global gluefile wrap_flags;
--    global srcdir
--    global blddirffi
--    global objdir
--    global TOOL_OPTIONS
--    global tool
--    global libffi_include
--    global libffi_link_flags
--    global tool_root_dir
--    global ld_library_path
--
--    set blddirffi [pwd]/..
--    verbose "libffi $blddirffi"
--
--    set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]
--    if {$gccdir != ""} {
--	set gccdir [file dirname $gccdir]
--    }
--    verbose "gccdir $gccdir"
--
--    set ld_library_path "."
--    append ld_library_path ":${gccdir}"
--
--    set compiler "${gccdir}/xgcc"
--    if { [is_remote host] == 0 && [which $compiler] != 0 } {
--	foreach i "[exec $compiler --print-multi-lib]" {
--	    set mldir ""
--	    regexp -- "\[a-z0-9=_/\.-\]*;" $i mldir
--	    set mldir [string trimright $mldir "\;@"]
--	    if { "$mldir" == "." } {
--		continue
--	    }
--	    if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } {
--		append ld_library_path ":${gccdir}/${mldir}"
--	    }
--	}
--    }
--    # add the library path for libffi.
--    append ld_library_path ":${blddirffi}/.libs"
--
--    verbose "ld_library_path: $ld_library_path"
--
--    # Point to the Libffi headers in libffi.
--    set libffi_include "${blddirffi}/include"
--    verbose "libffi_include $libffi_include"
--
--    set libffi_dir  "${blddirffi}/.libs"
--    verbose "libffi_dir $libffi_dir"
--    if { $libffi_dir != "" } {
--	set libffi_dir [file dirname ${libffi_dir}]
--	set libffi_link_flags "-L${libffi_dir}/.libs"
--    }
--
--    set_ld_library_path_env_vars
--    libffi_maybe_build_wrapper "${objdir}/testglue.o"
--}
--
--proc libffi_exit { } {
--    global gluefile;
--
--    if [info exists gluefile] {
--	file_on_build delete $gluefile;
--	unset gluefile;
--    }
--}
--
--proc libffi_target_compile { source dest type options } {
--    global gluefile wrap_flags;
--    global srcdir
--    global blddirffi
--    global TOOL_OPTIONS
--    global libffi_link_flags
--    global libffi_include
--    global target_triplet
--
--
--    if { [target_info needs_status_wrapper]!="" && [info exists gluefile] } {
--	lappend options "libs=${gluefile}"
--	lappend options "ldflags=$wrap_flags"
--    }
--
--    # TOOL_OPTIONS must come first, so that it doesn't override testcase
--    # specific options.
--    if [info exists TOOL_OPTIONS] {
--	lappend  options [concat "additional_flags=$TOOL_OPTIONS" $options];
--    }
--
--    # search for ffi_mips.h in srcdir, too
--    lappend options "additional_flags=-I${libffi_include} -I${srcdir}/../include  -I${libffi_include}/.."
--    lappend options "additional_flags=${libffi_link_flags}"
--
--    # Darwin needs a stack execution allowed flag.
--
--    if { [istarget "*-*-darwin9*"] || [istarget "*-*-darwin1*"]
--	 || [istarget "*-*-darwin2*"] } {
--	lappend options "additional_flags=-Wl,-allow_stack_execute"
--    }
--
--    # If you're building the compiler with --prefix set to a place
--    # where it's not yet installed, then the linker won't be able to
--    # find the libgcc used by libffi.dylib.  We could pass the
--    # -dylib_file option, but that's complicated, and it's much easier
--    # to just make the linker find libgcc using -L options.
--    if { [string match "*-*-darwin*" $target_triplet] } {
--	lappend options "libs= -shared-libgcc"
--    }
--
--    if { [string match "*-*-openbsd*" $target_triplet] } {
--	lappend options "libs= -lpthread"
--    }
--
--    lappend options "libs= -lffi"
--
--    verbose "options: $options"
--    return [target_compile $source $dest $type $options]
--}
--
--# Utility routines.
--
--#
--# search_for -- looks for a string match in a file
--#
--proc search_for { file pattern } {
--    set fd [open $file r]
--    while { [gets $fd cur_line]>=0 } {
--	if [string match "*$pattern*" $cur_line] then {
--	    close $fd
--	    return 1
--	}
--    }
--    close $fd
--    return 0
--}
--
--# Modified dg-runtest that can cycle through a list of optimization options
--# as c-torture does.
--proc libffi-dg-runtest { testcases default-extra-flags } {
--    global runtests
--
--    foreach test $testcases {
--	# If we're only testing specific files and this isn't one of
--	# them, skip it.
--	if ![runtest_file_p $runtests $test] {
--	    continue
--	}
--
--	# Look for a loop within the source code - if we don't find one,
--	# don't pass -funroll[-all]-loops.
--	global torture_with_loops torture_without_loops
--	if [expr [search_for $test "for*("]+[search_for $test "while*("]] {
--	    set option_list $torture_with_loops
--	} else {
--	    set option_list $torture_without_loops
--	}
--
--	set nshort [file tail [file dirname $test]]/[file tail $test]
--
--	foreach flags $option_list {
--	    verbose "Testing $nshort, $flags" 1
--	    dg-test $test $flags ${default-extra-flags}
--	}
--    }
--}
--
--
--# Like check_conditional_xfail, but callable from a dg test.
--
--proc dg-xfail-if { args } {
--    set args [lreplace $args 0 0]
--    set selector "target [join [lindex $args 1]]"
--    if { [dg-process-target $selector] == "S" } {
--	global compiler_conditional_xfail_data
--	set compiler_conditional_xfail_data $args
--    }
--}
--
--proc check-flags { args } {
--
--    # The args are within another list; pull them out.
--    set args [lindex $args 0]
--
--    # The next two arguments are optional.  If they were not specified,
--    # use the defaults.
--    if { [llength $args] == 2 } {
--	lappend $args [list "*"]
--    }
--    if { [llength $args] == 3 } {
--	lappend $args [list ""]
--    }
--
--    # If the option strings are the defaults, or the same as the
--    # defaults, there is no need to call check_conditional_xfail to
--    # compare them to the actual options.
--    if { [string compare [lindex $args 2] "*"] == 0
--	 && [string compare [lindex $args 3] "" ] == 0 } {
--	set result 1    
--    } else {
--	# The target list might be an effective-target keyword, so replace
--	# the original list with "*-*-*", since we already know it matches.
--	set result [check_conditional_xfail [lreplace $args 1 1 "*-*-*"]]
--    }
--
--    return $result
--}
--
--proc dg-skip-if { args } {
--    # Verify the number of arguments.  The last two are optional.
--    set args [lreplace $args 0 0]
--    if { [llength $args] < 2 || [llength $args] > 4 } {
--        error "dg-skip-if 2: need 2, 3, or 4 arguments"
--    }
--
--    # Don't bother if we're already skipping the test.
--    upvar dg-do-what dg-do-what
--    if { [lindex ${dg-do-what} 1] == "N" } {
--      return
--    }
--
--    set selector [list target [lindex $args 1]]
--    if { [dg-process-target $selector] == "S" } {
--        if [check-flags $args] {
--            upvar dg-do-what dg-do-what
--            set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
--        }
--    }
--}
--
--# We need to make sure that additional_files and additional_sources
--# are both cleared out after every test.  It is not enough to clear
--# them out *before* the next test run because gcc-target-compile gets
--# run directly from some .exp files (outside of any test).  (Those
--# uses should eventually be eliminated.)
--
--# Because the DG framework doesn't provide a hook that is run at the
--# end of a test, we must replace dg-test with a wrapper.
--
--if { [info procs saved-dg-test] == [list] } {
--    rename dg-test saved-dg-test
--
--    proc dg-test { args } {
--	global additional_files
--	global additional_sources
--	global errorInfo
--
--	if { [ catch { eval saved-dg-test $args } errmsg ] } {
--	    set saved_info $errorInfo
--	    set additional_files ""
--	    set additional_sources ""
--	    error $errmsg $saved_info
--	}
--	set additional_files ""
--	set additional_sources ""
--    }
--}
--
--# Local Variables:
--# tcl-indent-level:4
--# End:
-diff --git a/js/src/ctypes/libffi/testsuite/lib/libffi.exp b/js/src/ctypes/libffi/testsuite/lib/libffi.exp
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/lib/libffi.exp
-@@ -0,0 +1,409 @@
-+#   Copyright (C) 2003, 2005, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 3 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program; see the file COPYING3.  If not see
-+# <http://www.gnu.org/licenses/>.
-+
-+proc load_gcc_lib { filename } {
-+    global srcdir
-+    load_file $srcdir/lib/$filename
-+}
-+
-+load_lib dg.exp
-+load_lib libgloss.exp
-+load_gcc_lib target-libpath.exp
-+load_gcc_lib wrapper.exp
-+
-+
-+# Define libffi callbacks for dg.exp.
-+
-+proc libffi-dg-test-1 { target_compile prog do_what extra_tool_flags } {
-+
-+    # To get all \n in dg-output test strings to match printf output
-+    # in a system that outputs it as \015\012 (i.e. not just \012), we
-+    # need to change all \n into \r?\n.  As there is no dejagnu flag
-+    # or hook to do that, we simply change the text being tested.
-+    # Unfortunately, we have to know that the variable is called
-+    # dg-output-text and lives in the caller of libffi-dg-test, which
-+    # is two calls up.  Overriding proc dg-output would be longer and
-+    # would necessarily have the same assumption.
-+    upvar 2 dg-output-text output_match
-+
-+    if { [llength $output_match] > 1 } {
-+	regsub -all "\n" [lindex $output_match 1] "\r?\n" x
-+	set output_match [lreplace $output_match 1 1 $x]
-+    }
-+
-+    # Set up the compiler flags, based on what we're going to do.
-+
-+    set options [list]
-+    switch $do_what {
-+	"compile" {
-+	    set compile_type "assembly"
-+	    set output_file "[file rootname [file tail $prog]].s"
-+	}
-+	"link" {
-+	    set compile_type "executable"
-+	    set output_file "[file rootname [file tail $prog]].exe"
-+	    # The following line is needed for targets like the i960 where
-+	    # the default output file is b.out.  Sigh.
-+	}
-+	"run" {
-+	    set compile_type "executable"
-+	    # FIXME: "./" is to cope with "." not being in $PATH.
-+	    # Should this be handled elsewhere?
-+	    # YES.
-+	    set output_file "./[file rootname [file tail $prog]].exe"
-+	    # This is the only place where we care if an executable was
-+	    # created or not.  If it was, dg.exp will try to run it.
-+	    remote_file build delete $output_file;
-+	}
-+	default {
-+	    perror "$do_what: not a valid dg-do keyword"
-+	    return ""
-+	}
-+    }
-+
-+    if { $extra_tool_flags != "" } {
-+	lappend options "additional_flags=$extra_tool_flags"
-+    }
-+
-+    set comp_output [libffi_target_compile "$prog" "$output_file" "$compile_type" $options];
-+
-+
-+    return [list $comp_output $output_file]
-+}
-+
-+
-+proc libffi-dg-test { prog do_what extra_tool_flags } {
-+    return [libffi-dg-test-1 target_compile $prog $do_what $extra_tool_flags]
-+}
-+
-+proc libffi-init { args } {
-+    global gluefile wrap_flags;
-+    global srcdir
-+    global blddirffi
-+    global objdir
-+    global TOOL_OPTIONS
-+    global tool
-+    global libffi_include
-+    global libffi_link_flags
-+    global tool_root_dir
-+    global ld_library_path
-+
-+    global using_gcc
-+
-+    set blddirffi [pwd]/.. 
-+    verbose "libffi $blddirffi"
-+
-+    # Are we building with GCC?
-+    set tmp [grep ../config.status "GCC='yes'"]
-+    if { [string match $tmp "GCC='yes'"] } {
-+
-+      set using_gcc "yes"
-+
-+    set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]
-+    if {$gccdir != ""} {
-+	set gccdir [file dirname $gccdir]
-+    }
-+    verbose "gccdir $gccdir"
-+
-+    set ld_library_path "."
-+    append ld_library_path ":${gccdir}"
-+
-+    set compiler "${gccdir}/xgcc"
-+    if { [is_remote host] == 0 && [which $compiler] != 0 } {
-+	foreach i "[exec $compiler --print-multi-lib]" {
-+	    set mldir ""
-+	    regexp -- "\[a-z0-9=_/\.-\]*;" $i mldir
-+	    set mldir [string trimright $mldir "\;@"]
-+	    if { "$mldir" == "." } {
-+		continue
-+	    }
-+	    if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } {
-+		append ld_library_path ":${gccdir}/${mldir}"
-+	    }
-+	}
-+    }
-+ 
-+    } else {
-+
-+      set using_gcc "no"
-+
-+    }
-+
-+    # add the library path for libffi.
-+    append ld_library_path ":${blddirffi}/.libs"
-+
-+    verbose "ld_library_path: $ld_library_path"
-+
-+    # Point to the Libffi headers in libffi.
-+    set libffi_include "${blddirffi}/include"
-+    verbose "libffi_include $libffi_include"
-+
-+    set libffi_dir  "${blddirffi}/.libs"
-+    verbose "libffi_dir $libffi_dir"
-+    if { $libffi_dir != "" } {
-+	set libffi_dir [file dirname ${libffi_dir}]
-+	set libffi_link_flags "-L${libffi_dir}/.libs"
-+    }
-+
-+    set_ld_library_path_env_vars
-+    libffi_maybe_build_wrapper "${objdir}/testglue.o"
-+}
-+
-+proc libffi_exit { } {
-+    global gluefile;
-+
-+    if [info exists gluefile] {
-+	file_on_build delete $gluefile;
-+	unset gluefile;
-+    }
-+}
-+
-+proc libffi_target_compile { source dest type options } {
-+    global gluefile wrap_flags;
-+    global srcdir
-+    global blddirffi
-+    global TOOL_OPTIONS
-+    global libffi_link_flags
-+    global libffi_include
-+    global target_triplet
-+
-+
-+    if { [target_info needs_status_wrapper]!="" && [info exists gluefile] } {
-+	lappend options "libs=${gluefile}"
-+	lappend options "ldflags=$wrap_flags"
-+    }
-+
-+    # TOOL_OPTIONS must come first, so that it doesn't override testcase
-+    # specific options.
-+    if [info exists TOOL_OPTIONS] {
-+	lappend  options [concat "additional_flags=$TOOL_OPTIONS" $options];
-+    }
-+
-+    # search for ffi_mips.h in srcdir, too
-+    lappend options "additional_flags=-I${libffi_include} -I${srcdir}/../include  -I${libffi_include}/.."
-+    lappend options "additional_flags=${libffi_link_flags}"
-+
-+    # Darwin needs a stack execution allowed flag.
-+
-+    if { [istarget "*-*-darwin9*"] || [istarget "*-*-darwin1*"]
-+	 || [istarget "*-*-darwin2*"] } {
-+	lappend options "additional_flags=-Wl,-allow_stack_execute"
-+    }
-+
-+    # If you're building the compiler with --prefix set to a place
-+    # where it's not yet installed, then the linker won't be able to
-+    # find the libgcc used by libffi.dylib.  We could pass the
-+    # -dylib_file option, but that's complicated, and it's much easier
-+    # to just make the linker find libgcc using -L options.
-+    if { [string match "*-*-darwin*" $target_triplet] } {
-+	lappend options "libs= -shared-libgcc"
-+    }
-+
-+    if { [string match "*-*-openbsd*" $target_triplet] } {
-+	lappend options "libs= -lpthread"
-+    }
-+
-+    lappend options "libs= -lffi"
-+
-+    if { [string match "aarch64*-*-linux*" $target_triplet] } {
-+	lappend options "libs= -lpthread"
-+    }
-+
-+    verbose "options: $options"
-+    return [target_compile $source $dest $type $options]
-+}
-+
-+# Utility routines.
-+
-+#
-+# search_for -- looks for a string match in a file
-+#
-+proc search_for { file pattern } {
-+    set fd [open $file r]
-+    while { [gets $fd cur_line]>=0 } {
-+	if [string match "*$pattern*" $cur_line] then {
-+	    close $fd
-+	    return 1
-+	}
-+    }
-+    close $fd
-+    return 0
-+}
-+
-+# Modified dg-runtest that can cycle through a list of optimization options
-+# as c-torture does.
-+proc libffi-dg-runtest { testcases default-extra-flags } {
-+    global runtests
-+
-+    foreach test $testcases {
-+	# If we're only testing specific files and this isn't one of
-+	# them, skip it.
-+	if ![runtest_file_p $runtests $test] {
-+	    continue
-+	}
-+
-+	# Look for a loop within the source code - if we don't find one,
-+	# don't pass -funroll[-all]-loops.
-+	global torture_with_loops torture_without_loops
-+	if [expr [search_for $test "for*("]+[search_for $test "while*("]] {
-+	    set option_list $torture_with_loops
-+	} else {
-+	    set option_list $torture_without_loops
-+	}
-+
-+	set nshort [file tail [file dirname $test]]/[file tail $test]
-+
-+	foreach flags $option_list {
-+	    verbose "Testing $nshort, $flags" 1
-+	    dg-test $test $flags ${default-extra-flags}
-+	}
-+    }
-+}
-+
-+proc run-many-tests { testcases extra_flags } {
-+    global using_gcc
-+    if { [string match $using_gcc "yes"] } {
-+        set common "-W -Wall"
-+        set optimizations { "-O0" "-O2" "-O3" "-Os" "-O2 -fomit-frame-pointer" }
-+    } else {
-+        # Assume we are using the vendor compiler.
-+        set common ""
-+        set optimizations { "" }
-+    }
-+
-+    set targetabis { "" }
-+    if [string match $using_gcc "yes"] {
-+        if [istarget "i?86-*-*"] {
-+            set targetabis {
-+                ""
-+                "-DABI_NUM=FFI_STDCALL -DABI_ATTR=__STDCALL__"
-+                "-DABI_NUM=FFI_THISCALL -DABI_ATTR=__THISCALL__"
-+                "-DABI_NUM=FFI_FASTCALL -DABI_ATTR=__FASTCALL__"
-+            }
-+        }
-+    }
-+
-+    set common [ concat $common $extra_flags ]
-+    foreach test $testcases {
-+        set testname [file tail $test]
-+        if [search_for $test "ABI_NUM"] {
-+            set abis $targetabis
-+        } else {
-+            set abis { "" }
-+        }
-+        foreach opt $optimizations {
-+            foreach abi $abis {
-+                set options [concat $common $opt $abi]
-+                verbose "Testing $testname, $options" 1
-+                dg-test $test $options ""
-+            }
-+        }
-+    }
-+}
-+
-+# Like check_conditional_xfail, but callable from a dg test.
-+
-+proc dg-xfail-if { args } {
-+    set args [lreplace $args 0 0]
-+    set selector "target [join [lindex $args 1]]"
-+    if { [dg-process-target $selector] == "S" } {
-+	global compiler_conditional_xfail_data
-+	set compiler_conditional_xfail_data $args
-+    }
-+}
-+
-+proc check-flags { args } {
-+
-+    # The args are within another list; pull them out.
-+    set args [lindex $args 0]
-+
-+    # The next two arguments are optional.  If they were not specified,
-+    # use the defaults.
-+    if { [llength $args] == 2 } {
-+	lappend $args [list "*"]
-+    }
-+    if { [llength $args] == 3 } {
-+	lappend $args [list ""]
-+    }
-+
-+    # If the option strings are the defaults, or the same as the
-+    # defaults, there is no need to call check_conditional_xfail to
-+    # compare them to the actual options.
-+    if { [string compare [lindex $args 2] "*"] == 0
-+	 && [string compare [lindex $args 3] "" ] == 0 } {
-+	set result 1    
-+    } else {
-+	# The target list might be an effective-target keyword, so replace
-+	# the original list with "*-*-*", since we already know it matches.
-+	set result [check_conditional_xfail [lreplace $args 1 1 "*-*-*"]]
-+    }
-+
-+    return $result
-+}
-+
-+proc dg-skip-if { args } {
-+    # Verify the number of arguments.  The last two are optional.
-+    set args [lreplace $args 0 0]
-+    if { [llength $args] < 2 || [llength $args] > 4 } {
-+        error "dg-skip-if 2: need 2, 3, or 4 arguments"
-+    }
-+
-+    # Don't bother if we're already skipping the test.
-+    upvar dg-do-what dg-do-what
-+    if { [lindex ${dg-do-what} 1] == "N" } {
-+      return
-+    }
-+
-+    set selector [list target [lindex $args 1]]
-+    if { [dg-process-target $selector] == "S" } {
-+        if [check-flags $args] {
-+            upvar dg-do-what dg-do-what
-+            set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
-+        }
-+    }
-+}
-+
-+# We need to make sure that additional_files and additional_sources
-+# are both cleared out after every test.  It is not enough to clear
-+# them out *before* the next test run because gcc-target-compile gets
-+# run directly from some .exp files (outside of any test).  (Those
-+# uses should eventually be eliminated.)
-+
-+# Because the DG framework doesn't provide a hook that is run at the
-+# end of a test, we must replace dg-test with a wrapper.
-+
-+if { [info procs saved-dg-test] == [list] } {
-+    rename dg-test saved-dg-test
-+
-+    proc dg-test { args } {
-+	global additional_files
-+	global additional_sources
-+	global errorInfo
-+
-+	if { [ catch { eval saved-dg-test $args } errmsg ] } {
-+	    set saved_info $errorInfo
-+	    set additional_files ""
-+	    set additional_sources ""
-+	    error $errmsg $saved_info
-+	}
-+	set additional_files ""
-+	set additional_sources ""
-+    }
-+}
-+
-+# Local Variables:
-+# tcl-indent-level:4
-+# End:
-diff --git a/js/src/ctypes/libffi/testsuite/lib/target-libpath.exp b/js/src/ctypes/libffi/testsuite/lib/target-libpath.exp
---- a/js/src/ctypes/libffi/testsuite/lib/target-libpath.exp
-+++ b/js/src/ctypes/libffi/testsuite/lib/target-libpath.exp
-@@ -20,41 +20,43 @@ set orig_environment_saved 0
- set orig_ld_library_path_saved 0
- set orig_ld_run_path_saved 0
- set orig_shlib_path_saved 0
- set orig_ld_libraryn32_path_saved 0
- set orig_ld_library64_path_saved 0
- set orig_ld_library_path_32_saved 0
- set orig_ld_library_path_64_saved 0
- set orig_dyld_library_path_saved 0
--
-+set orig_path_saved 0
- 
- #######################################
- # proc set_ld_library_path_env_vars { }
- #######################################
- 
- proc set_ld_library_path_env_vars { } {
-   global ld_library_path
-   global orig_environment_saved
-   global orig_ld_library_path_saved
-   global orig_ld_run_path_saved
-   global orig_shlib_path_saved
-   global orig_ld_libraryn32_path_saved
-   global orig_ld_library64_path_saved
-   global orig_ld_library_path_32_saved
-   global orig_ld_library_path_64_saved
-   global orig_dyld_library_path_saved
-+  global orig_path_saved
-   global orig_ld_library_path
-   global orig_ld_run_path
-   global orig_shlib_path
-   global orig_ld_libraryn32_path
-   global orig_ld_library64_path
-   global orig_ld_library_path_32
-   global orig_ld_library_path_64
-   global orig_dyld_library_path
-+  global orig_path
-   global GCC_EXEC_PREFIX
- 
-   # Set the relocated compiler prefix, but only if the user hasn't specified one.
-   if { [info exists GCC_EXEC_PREFIX] && ![info exists env(GCC_EXEC_PREFIX)] } {
-     setenv GCC_EXEC_PREFIX "$GCC_EXEC_PREFIX"
-   }
- 
-   # Setting the ld library path causes trouble when testing cross-compilers.
-@@ -95,16 +97,20 @@ proc set_ld_library_path_env_vars { } {
-     if [info exists env(LD_LIBRARY_PATH_64)] {
-       set orig_ld_library_path_64 "$env(LD_LIBRARY_PATH_64)"
-       set orig_ld_library_path_64_saved 1
-     }
-     if [info exists env(DYLD_LIBRARY_PATH)] {
-       set orig_dyld_library_path "$env(DYLD_LIBRARY_PATH)"
-       set orig_dyld_library_path_saved 1
-     }
-+    if [info exists env(PATH)] {
-+      set orig_path "$env(PATH)"
-+      set orig_path_saved 1
-+    }
-   }
- 
-   # We need to set ld library path in the environment.  Currently,
-   # unix.exp doesn't set the environment correctly for all systems.
-   # It only sets SHLIB_PATH and LD_LIBRARY_PATH when it executes a
-   # program.  We also need the environment set for compilations, etc.
-   #
-   # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but
-@@ -164,16 +170,23 @@ proc set_ld_library_path_env_vars { } {
-   } else {
-     setenv LD_LIBRARY_PATH_64 "$ld_library_path"
-   }
-   if { $orig_dyld_library_path_saved } {
-     setenv DYLD_LIBRARY_PATH "$ld_library_path:$orig_dyld_library_path"
-   } else {
-     setenv DYLD_LIBRARY_PATH "$ld_library_path"
-   }
-+  if { [istarget *-*-cygwin*] || [istarget *-*-mingw*] } {
-+    if { $orig_path_saved } {
-+      setenv PATH "$ld_library_path:$orig_path"
-+    } else {
-+      setenv PATH "$ld_library_path"
-+    }
-+  }
- 
-   verbose -log "set_ld_library_path_env_vars: ld_library_path=$ld_library_path"
- }
- 
- #######################################
- # proc restore_ld_library_path_env_vars { }
- #######################################
- 
-@@ -182,24 +195,26 @@ proc restore_ld_library_path_env_vars { 
-   global orig_ld_library_path_saved
-   global orig_ld_run_path_saved
-   global orig_shlib_path_saved
-   global orig_ld_libraryn32_path_saved
-   global orig_ld_library64_path_saved
-   global orig_ld_library_path_32_saved
-   global orig_ld_library_path_64_saved
-   global orig_dyld_library_path_saved
-+  global orig_path_saved
-   global orig_ld_library_path
-   global orig_ld_run_path
-   global orig_shlib_path
-   global orig_ld_libraryn32_path
-   global orig_ld_library64_path
-   global orig_ld_library_path_32
-   global orig_ld_library_path_64
-   global orig_dyld_library_path
-+  global orig_path
- 
-   if { $orig_environment_saved == 0 } {
-     return
-   }
- 
-   if { $orig_ld_library_path_saved } {
-     setenv LD_LIBRARY_PATH "$orig_ld_library_path"
-   } elseif [info exists env(LD_LIBRARY_PATH)] {
-@@ -235,16 +250,21 @@ proc restore_ld_library_path_env_vars { 
-   } elseif [info exists env(LD_LIBRARY_PATH_64)] {
-     unsetenv LD_LIBRARY_PATH_64
-   }
-   if { $orig_dyld_library_path_saved } {
-     setenv DYLD_LIBRARY_PATH "$orig_dyld_library_path"
-   } elseif [info exists env(DYLD_LIBRARY_PATH)] {
-     unsetenv DYLD_LIBRARY_PATH
-   }
-+  if { $orig_path_saved } {
-+    setenv PATH "$orig_path"
-+  } elseif [info exists env(PATH)] {
-+    unsetenv PATH
-+  }
- }
- 
- #######################################
- # proc get_shlib_extension { }
- #######################################
- 
- proc get_shlib_extension { } {
-     global shlib_ext
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/call.exp b/js/src/ctypes/libffi/testsuite/libffi.call/call.exp
---- a/js/src/ctypes/libffi/testsuite/libffi.call/call.exp
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/call.exp
-@@ -1,36 +1,31 @@
--# Copyright (C) 2003, 2006, 2009 Free Software Foundation, Inc.
-+# Copyright (C) 2003, 2006, 2009, 2010 Free Software Foundation, Inc.
- 
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 3 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; see the file COPYING3.  If not see
- # <http://www.gnu.org/licenses/>.
- 
--# libffi testsuite that uses the 'dg.exp' driver.
--
--load_lib libffi-dg.exp
--
- dg-init
- libffi-init
- 
- global srcdir subdir
- 
--dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O0 -W -Wall" ""
--dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O2" ""
--dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O3" ""
--dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-Os" ""
--dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O2 -fomit-frame-pointer" ""
-+run-many-tests [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] ""
-+if { [string match $using_gcc "yes"] } {
-+  run-many-tests [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] "-shared-libgcc -lstdc++"
-+}
- 
- dg-finish
- 
- # Local Variables:
- # tcl-indent-level:4
- # End:
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/closure_stdcall.c b/js/src/ctypes/libffi/testsuite/libffi.call/closure_stdcall.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/closure_stdcall.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/closure_stdcall.c
-@@ -1,15 +1,15 @@
- /* Area:	closure_call (stdcall convention)
-    Purpose:	Check handling when caller expects stdcall callee
-    Limitations:	none.
-    PR:		none.
-    Originator:	<twalljava@dev.java.net> */
- 
--/* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */
-+/* { dg-do run { target i?86-*-* } } */
- #include "ffitest.h"
- 
- static void
- closure_test_stdcall(ffi_cif* cif __UNUSED__, void* resp, void** args,
- 		 void* userdata)
- {
-   *(ffi_arg*)resp =
-     (int)*(int *)args[0] + (int)(*(int *)args[1])
-@@ -18,47 +18,39 @@ closure_test_stdcall(ffi_cif* cif __UNUS
- 
-   printf("%d %d %d %d: %d\n",
- 	 (int)*(int *)args[0], (int)(*(int *)args[1]),
- 	 (int)(*(int *)args[2]), (int)(*(int *)args[3]),
-          (int)*(ffi_arg *)resp);
- 
- }
- 
--typedef int (__stdcall *closure_test_type0)(int, int, int, int);
-+typedef int (__STDCALL__ *closure_test_type0)(int, int, int, int);
- 
- int main (void)
- {
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   ffi_type * cl_arg_types[17];
-   int res;
--  void* sp_pre;
--  void* sp_post;
--  char buf[1024];
- 
-   cl_arg_types[0] = &ffi_type_uint;
-   cl_arg_types[1] = &ffi_type_uint;
-   cl_arg_types[2] = &ffi_type_uint;
-   cl_arg_types[3] = &ffi_type_uint;
-   cl_arg_types[4] = NULL;
- 
-   /* Initialize the cif */
-   CHECK(ffi_prep_cif(&cif, FFI_STDCALL, 4,
- 		     &ffi_type_sint, cl_arg_types) == FFI_OK);
- 
-   CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_stdcall,
-                              (void *) 3 /* userdata */, code) == FFI_OK);
- 
--  asm volatile (" movl %%esp,%0" : "=g" (sp_pre));
-   res = (*(closure_test_type0)code)(0, 1, 2, 3);
--  asm volatile (" movl %%esp,%0" : "=g" (sp_post));
-   /* { dg-output "0 1 2 3: 9" } */
- 
-   printf("res: %d\n",res);
-   /* { dg-output "\nres: 9" } */
- 
--  sprintf(buf, "mismatch: pre=%p vs post=%p", sp_pre, sp_post);
--  printf("stack pointer %s\n", (sp_pre == sp_post ? "match" : buf));
--  /* { dg-output "\nstack pointer match" } */
-   exit(0);
- }
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/closure_thiscall.c b/js/src/ctypes/libffi/testsuite/libffi.call/closure_thiscall.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/closure_thiscall.c
-@@ -0,0 +1,56 @@
-+/* Area:	closure_call (thiscall convention)
-+   Purpose:	Check handling when caller expects thiscall callee
-+   Limitations:	none.
-+   PR:		none.
-+   Originator:	<ktietz@redhat.com> */
-+
-+/* { dg-do run { target i?86-*-* } } */
-+#include "ffitest.h"
-+
-+static void
-+closure_test_thiscall(ffi_cif* cif __UNUSED__, void* resp, void** args,
-+		      void* userdata)
-+{
-+  *(ffi_arg*)resp =
-+    (int)*(int *)args[0] + (int)(*(int *)args[1])
-+    + (int)(*(int *)args[2])  + (int)(*(int *)args[3])
-+    + (int)(intptr_t)userdata;
-+
-+  printf("%d %d %d %d: %d\n",
-+	 (int)*(int *)args[0], (int)(*(int *)args[1]),
-+	 (int)(*(int *)args[2]), (int)(*(int *)args[3]),
-+         (int)*(ffi_arg *)resp);
-+
-+}
-+
-+typedef int (__THISCALL__ *closure_test_type0)(int, int, int, int);
-+
-+int main (void)
-+{
-+  ffi_cif cif;
-+  void *code;
-+  ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-+  ffi_type * cl_arg_types[17];
-+  int res;
-+
-+  cl_arg_types[0] = &ffi_type_uint;
-+  cl_arg_types[1] = &ffi_type_uint;
-+  cl_arg_types[2] = &ffi_type_uint;
-+  cl_arg_types[3] = &ffi_type_uint;
-+  cl_arg_types[4] = NULL;
-+
-+  /* Initialize the cif */
-+  CHECK(ffi_prep_cif(&cif, FFI_THISCALL, 4,
-+		     &ffi_type_sint, cl_arg_types) == FFI_OK);
-+
-+  CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_thiscall,
-+                             (void *) 3 /* userdata */, code) == FFI_OK);
-+
-+  res = (*(closure_test_type0)code)(0, 1, 2, 3);
-+  /* { dg-output "0 1 2 3: 9" } */
-+
-+  printf("res: %d\n",res);
-+  /* { dg-output "\nres: 9" } */
-+
-+  exit(0);
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_12byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_12byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_12byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_12byte.c
-@@ -44,25 +44,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_12byte h_dbl = { 7, 4, 9 };
-+  struct cls_struct_12byte j_dbl = { 1, 5, 3 };
-+  struct cls_struct_12byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_12byte h_dbl = { 7, 4, 9 };
--  struct cls_struct_12byte j_dbl = { 1, 5, 3 };
--  struct cls_struct_12byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_sint;
-   cls_struct_fields[1] = &ffi_type_sint;
-   cls_struct_fields[2] = &ffi_type_sint;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_16byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_16byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_16byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_16byte.c
-@@ -45,25 +45,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_16byte h_dbl = { 7, 8.0, 9 };
-+  struct cls_struct_16byte j_dbl = { 1, 9.0, 3 };
-+  struct cls_struct_16byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_16byte h_dbl = { 7, 8.0, 9 };
--  struct cls_struct_16byte j_dbl = { 1, 9.0, 3 };
--  struct cls_struct_16byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_sint;
-   cls_struct_fields[1] = &ffi_type_double;
-   cls_struct_fields[2] = &ffi_type_sint;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_18byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_18byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_18byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_18byte.c
-@@ -49,25 +49,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[3];
-   ffi_type* cls_struct_fields[5];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[3];
- 
-+  struct cls_struct_18byte g_dbl = { 1.0, 127, 126, 3.0 };
-+  struct cls_struct_18byte f_dbl = { 4.0, 125, 124, 5.0 };
-+  struct cls_struct_18byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_18byte g_dbl = { 1.0, 127, 126, 3.0 };
--  struct cls_struct_18byte f_dbl = { 4.0, 125, 124, 5.0 };
--  struct cls_struct_18byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_double;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = &ffi_type_double;
-   cls_struct_fields[4] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_19byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_19byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_19byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_19byte.c
-@@ -52,25 +52,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[3];
-   ffi_type* cls_struct_fields[6];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[3];
- 
-+  struct cls_struct_19byte g_dbl = { 1.0, 127, 126, 3.0, 120 };
-+  struct cls_struct_19byte f_dbl = { 4.0, 125, 124, 5.0, 119 };
-+  struct cls_struct_19byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_19byte g_dbl = { 1.0, 127, 126, 3.0, 120 };
--  struct cls_struct_19byte f_dbl = { 4.0, 125, 124, 5.0, 119 };
--  struct cls_struct_19byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_double;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = &ffi_type_double;
-   cls_struct_fields[4] = &ffi_type_uchar;
-   cls_struct_fields[5] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_1_1byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_1_1byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_1_1byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_1_1byte.c
-@@ -45,25 +45,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[2];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_1_1byte g_dbl = { 12 };
-+  struct cls_struct_1_1byte f_dbl = { 178 };
-+  struct cls_struct_1_1byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_1_1byte g_dbl = { 12 };
--  struct cls_struct_1_1byte f_dbl = { 178 };
--  struct cls_struct_1_1byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
- 
-   CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type,
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte.c
-@@ -45,25 +45,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_20byte g_dbl = { 1.0, 2.0, 3 };
-+  struct cls_struct_20byte f_dbl = { 4.0, 5.0, 7 };
-+  struct cls_struct_20byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_20byte g_dbl = { 1.0, 2.0, 3 };
--  struct cls_struct_20byte f_dbl = { 4.0, 5.0, 7 };
--  struct cls_struct_20byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_double;
-   cls_struct_fields[1] = &ffi_type_double;
-   cls_struct_fields[2] = &ffi_type_sint;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte1.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte1.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte1.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_20byte1.c
-@@ -47,25 +47,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[3];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[3];
- 
-+  struct cls_struct_20byte g_dbl = { 1, 2.0, 3.0 };
-+  struct cls_struct_20byte f_dbl = { 4, 5.0, 7.0 };
-+  struct cls_struct_20byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_20byte g_dbl = { 1, 2.0, 3.0 };
--  struct cls_struct_20byte f_dbl = { 4, 5.0, 7.0 };
--  struct cls_struct_20byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_sint;
-   cls_struct_fields[1] = &ffi_type_double;
-   cls_struct_fields[2] = &ffi_type_double;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_24byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_24byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_24byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_24byte.c
-@@ -56,27 +56,27 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[5];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
--  cls_struct_type.size = 0;
--  cls_struct_type.alignment = 0;
--  cls_struct_type.type = FFI_TYPE_STRUCT;
--  cls_struct_type.elements = cls_struct_fields;
--
-   struct cls_struct_24byte e_dbl = { 9.0, 2.0, 6, 5.0 };
-   struct cls_struct_24byte f_dbl = { 1.0, 2.0, 3, 7.0 };
-   struct cls_struct_24byte g_dbl = { 4.0, 5.0, 7, 9.0 };
-   struct cls_struct_24byte h_dbl = { 8.0, 6.0, 1, 4.0 };
-   struct cls_struct_24byte res_dbl;
- 
-+  cls_struct_type.size = 0;
-+  cls_struct_type.alignment = 0;
-+  cls_struct_type.type = FFI_TYPE_STRUCT;
-+  cls_struct_type.elements = cls_struct_fields;
-+
-   cls_struct_fields[0] = &ffi_type_double;
-   cls_struct_fields[1] = &ffi_type_double;
-   cls_struct_fields[2] = &ffi_type_sint;
-   cls_struct_fields[3] = &ffi_type_float;
-   cls_struct_fields[4] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_2byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_2byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_2byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_2byte.c
-@@ -45,25 +45,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_2byte g_dbl = { 12, 127 };
-+  struct cls_struct_2byte f_dbl = { 1, 13 };
-+  struct cls_struct_2byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_2byte g_dbl = { 12, 127 };
--  struct cls_struct_2byte f_dbl = { 1, 13 };
--  struct cls_struct_2byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3_1byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3_1byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3_1byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3_1byte.c
-@@ -49,25 +49,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_3_1byte g_dbl = { 12, 13, 14 };
-+  struct cls_struct_3_1byte f_dbl = { 178, 179, 180 };
-+  struct cls_struct_3_1byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_3_1byte g_dbl = { 12, 13, 14 };
--  struct cls_struct_3_1byte f_dbl = { 178, 179, 180 };
--  struct cls_struct_3_1byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte1.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte1.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte1.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte1.c
-@@ -45,25 +45,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_3byte g_dbl = { 12, 119 };
-+  struct cls_struct_3byte f_dbl = { 1, 15 };
-+  struct cls_struct_3byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_3byte g_dbl = { 12, 119 };
--  struct cls_struct_3byte f_dbl = { 1, 15 };
--  struct cls_struct_3byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_ushort;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte2.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte2.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte2.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_3byte2.c
-@@ -45,25 +45,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_3byte_1 g_dbl = { 15, 125 };
-+  struct cls_struct_3byte_1 f_dbl = { 9, 19 };
-+  struct cls_struct_3byte_1 res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_3byte_1 g_dbl = { 15, 125 };
--  struct cls_struct_3byte_1 f_dbl = { 9, 19 };
--  struct cls_struct_3byte_1 res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_ushort;
-   cls_struct_fields[2] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_4_1byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_4_1byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_4_1byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_4_1byte.c
-@@ -51,25 +51,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[5];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_4_1byte g_dbl = { 12, 13, 14, 15 };
-+  struct cls_struct_4_1byte f_dbl = { 178, 179, 180, 181 };
-+  struct cls_struct_4_1byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_4_1byte g_dbl = { 12, 13, 14, 15 };
--  struct cls_struct_4_1byte f_dbl = { 178, 179, 180, 181 };
--  struct cls_struct_4_1byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = &ffi_type_uchar;
-   cls_struct_fields[4] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_4byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_4byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_4byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_4byte.c
-@@ -45,25 +45,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_4byte g_dbl = { 127, 120 };
-+  struct cls_struct_4byte f_dbl = { 12, 128 };
-+  struct cls_struct_4byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_4byte g_dbl = { 127, 120 };
--  struct cls_struct_4byte f_dbl = { 12, 128 };
--  struct cls_struct_4byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_ushort;
-   cls_struct_fields[1] = &ffi_type_ushort;
-   cls_struct_fields[2] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_5_1_byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_5_1_byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_5_1_byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_5_1_byte.c
-@@ -53,25 +53,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[6];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_5byte g_dbl = { 127, 120, 1, 3, 4 };
-+  struct cls_struct_5byte f_dbl = { 12, 128, 9, 3, 4 };
-+  struct cls_struct_5byte res_dbl = { 0, 0, 0, 0, 0 };
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_5byte g_dbl = { 127, 120, 1, 3, 4 };
--  struct cls_struct_5byte f_dbl = { 12, 128, 9, 3, 4 };
--  struct cls_struct_5byte res_dbl = { 0, 0, 0, 0, 0 };
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = &ffi_type_uchar;
-   cls_struct_fields[4] = &ffi_type_uchar;
-   cls_struct_fields[5] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_5byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_5byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_5byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_5byte.c
-@@ -48,25 +48,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_5byte g_dbl = { 127, 120, 1 };
-+  struct cls_struct_5byte f_dbl = { 12, 128, 9 };
-+  struct cls_struct_5byte res_dbl = { 0, 0, 0 };
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_5byte g_dbl = { 127, 120, 1 };
--  struct cls_struct_5byte f_dbl = { 12, 128, 9 };
--  struct cls_struct_5byte res_dbl = { 0, 0, 0 };
--
-   cls_struct_fields[0] = &ffi_type_ushort;
-   cls_struct_fields[1] = &ffi_type_ushort;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_64byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_64byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_64byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_64byte.c
-@@ -61,27 +61,27 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[9];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
--  cls_struct_type.size = 0;
--  cls_struct_type.alignment = 0;
--  cls_struct_type.type = FFI_TYPE_STRUCT;
--  cls_struct_type.elements = cls_struct_fields;
--
-   struct cls_struct_64byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0 };
-   struct cls_struct_64byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0 };
-   struct cls_struct_64byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0 };
-   struct cls_struct_64byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0 };
-   struct cls_struct_64byte res_dbl;
- 
-+  cls_struct_type.size = 0;
-+  cls_struct_type.alignment = 0;
-+  cls_struct_type.type = FFI_TYPE_STRUCT;
-+  cls_struct_type.elements = cls_struct_fields;
-+
-   cls_struct_fields[0] = &ffi_type_double;
-   cls_struct_fields[1] = &ffi_type_double;
-   cls_struct_fields[2] = &ffi_type_double;
-   cls_struct_fields[3] = &ffi_type_double;
-   cls_struct_fields[4] = &ffi_type_double;
-   cls_struct_fields[5] = &ffi_type_double;
-   cls_struct_fields[6] = &ffi_type_double;
-   cls_struct_fields[7] = &ffi_type_double;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_6_1_byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_6_1_byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_6_1_byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_6_1_byte.c
-@@ -55,25 +55,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[7];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_6byte g_dbl = { 127, 120, 1, 3, 4, 5 };
-+  struct cls_struct_6byte f_dbl = { 12, 128, 9, 3, 4, 5 };
-+  struct cls_struct_6byte res_dbl = { 0, 0, 0, 0, 0, 0 };
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_6byte g_dbl = { 127, 120, 1, 3, 4, 5 };
--  struct cls_struct_6byte f_dbl = { 12, 128, 9, 3, 4, 5 };
--  struct cls_struct_6byte res_dbl = { 0, 0, 0, 0, 0, 0 };
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = &ffi_type_uchar;
-   cls_struct_fields[4] = &ffi_type_uchar;
-   cls_struct_fields[5] = &ffi_type_uchar;
-   cls_struct_fields[6] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_6byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_6byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_6byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_6byte.c
-@@ -51,25 +51,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[5];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_6byte g_dbl = { 127, 120, 1, 128 };
-+  struct cls_struct_6byte f_dbl = { 12, 128, 9, 127 };
-+  struct cls_struct_6byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_6byte g_dbl = { 127, 120, 1, 128 };
--  struct cls_struct_6byte f_dbl = { 12, 128, 9, 127 };
--  struct cls_struct_6byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_ushort;
-   cls_struct_fields[1] = &ffi_type_ushort;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = &ffi_type_uchar;
-   cls_struct_fields[4] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_7_1_byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_7_1_byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_7_1_byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_7_1_byte.c
-@@ -57,25 +57,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[8];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_7byte g_dbl = { 127, 120, 1, 3, 4, 5, 6 };
-+  struct cls_struct_7byte f_dbl = { 12, 128, 9, 3, 4, 5, 6 };
-+  struct cls_struct_7byte res_dbl = { 0, 0, 0, 0, 0, 0, 0 };
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_7byte g_dbl = { 127, 120, 1, 3, 4, 5, 6 };
--  struct cls_struct_7byte f_dbl = { 12, 128, 9, 3, 4, 5, 6 };
--  struct cls_struct_7byte res_dbl = { 0, 0, 0, 0, 0, 0, 0 };
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = &ffi_type_uchar;
-   cls_struct_fields[4] = &ffi_type_uchar;
-   cls_struct_fields[5] = &ffi_type_uchar;
-   cls_struct_fields[6] = &ffi_type_uchar;
-   cls_struct_fields[7] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_7byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_7byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_7byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_7byte.c
-@@ -50,25 +50,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[5];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_7byte g_dbl = { 127, 120, 1, 254 };
-+  struct cls_struct_7byte f_dbl = { 12, 128, 9, 255 };
-+  struct cls_struct_7byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_7byte g_dbl = { 127, 120, 1, 254 };
--  struct cls_struct_7byte f_dbl = { 12, 128, 9, 255 };
--  struct cls_struct_7byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_ushort;
-   cls_struct_fields[1] = &ffi_type_ushort;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = &ffi_type_ushort;
-   cls_struct_fields[4] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_8byte.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_8byte.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_8byte.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_8byte.c
-@@ -44,25 +44,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_8byte g_dbl = { 1, 2.0 };
-+  struct cls_struct_8byte f_dbl = { 4, 5.0 };
-+  struct cls_struct_8byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_8byte g_dbl = { 1, 2.0 };
--  struct cls_struct_8byte f_dbl = { 4, 5.0 };
--  struct cls_struct_8byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_sint;
-   cls_struct_fields[1] = &ffi_type_float;
-   cls_struct_fields[2] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte1.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte1.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte1.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte1.c
-@@ -45,25 +45,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[3];
-   ffi_type* cls_struct_fields[3];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[3];
- 
-+  struct cls_struct_9byte h_dbl = { 7, 8.0};
-+  struct cls_struct_9byte j_dbl = { 1, 9.0};
-+  struct cls_struct_9byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_9byte h_dbl = { 7, 8.0};
--  struct cls_struct_9byte j_dbl = { 1, 9.0};
--  struct cls_struct_9byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_sint;
-   cls_struct_fields[1] = &ffi_type_double;
-   cls_struct_fields[2] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte2.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte2.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte2.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_9byte2.c
-@@ -45,25 +45,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[3];
-   ffi_type* cls_struct_fields[3];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[3];
- 
-+  struct cls_struct_9byte h_dbl = { 7.0, 8};
-+  struct cls_struct_9byte j_dbl = { 1.0, 9};
-+  struct cls_struct_9byte res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_9byte h_dbl = { 7.0, 8};
--  struct cls_struct_9byte j_dbl = { 1.0, 9};
--  struct cls_struct_9byte res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_double;
-   cls_struct_fields[1] = &ffi_type_sint;
-   cls_struct_fields[2] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_double.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_double.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_double.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_double.c
-@@ -47,25 +47,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_align g_dbl = { 12, 4951, 127 };
-+  struct cls_struct_align f_dbl = { 1, 9320, 13 };
-+  struct cls_struct_align res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_align g_dbl = { 12, 4951, 127 };
--  struct cls_struct_align f_dbl = { 1, 9320, 13 };
--  struct cls_struct_align res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_double;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_float.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_float.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_float.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_float.c
-@@ -45,25 +45,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_align g_dbl = { 12, 4951, 127 };
-+  struct cls_struct_align f_dbl = { 1, 9320, 13 };
-+  struct cls_struct_align res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_align g_dbl = { 12, 4951, 127 };
--  struct cls_struct_align f_dbl = { 1, 9320, 13 };
--  struct cls_struct_align res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_float;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble.c
-@@ -46,25 +46,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_align g_dbl = { 12, 4951, 127 };
-+  struct cls_struct_align f_dbl = { 1, 9320, 13 };
-+  struct cls_struct_align res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_align g_dbl = { 12, 4951, 127 };
--  struct cls_struct_align f_dbl = { 1, 9320, 13 };
--  struct cls_struct_align res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_longdouble;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split.c
-@@ -1,17 +1,17 @@
- /* Area:	ffi_call, closure_call
-    Purpose:	Check structure alignment of long double.
-    Limitations:	none.
-    PR:		none.
-    Originator:	<hos@tamanegi.org> 20031203	 */
- 
- /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
- /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
--/* { dg-options -mlong-double-128 { target powerpc64*-*-* } } */
-+/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
- /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
- 
- #include "ffitest.h"
- 
- typedef struct cls_struct_align {
-   long double a;
-   long double b;
-   long double c;
-@@ -82,25 +82,25 @@ int main (void)
- 	ffi_cif cif;
-         void *code;
- 	ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
- 	void* args_dbl[3];
- 	ffi_type* cls_struct_fields[8];
- 	ffi_type cls_struct_type;
- 	ffi_type* dbl_arg_types[3];
- 
-+	struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
-+	struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
-+	struct cls_struct_align res_dbl;
-+
- 	cls_struct_type.size = 0;
- 	cls_struct_type.alignment = 0;
- 	cls_struct_type.type = FFI_TYPE_STRUCT;
- 	cls_struct_type.elements = cls_struct_fields;
- 
--	struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
--	struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
--	struct cls_struct_align res_dbl;
--
- 	cls_struct_fields[0] = &ffi_type_longdouble;
- 	cls_struct_fields[1] = &ffi_type_longdouble;
- 	cls_struct_fields[2] = &ffi_type_longdouble;
- 	cls_struct_fields[3] = &ffi_type_longdouble;
- 	cls_struct_fields[4] = &ffi_type_longdouble;
- 	cls_struct_fields[5] = &ffi_type_longdouble;
- 	cls_struct_fields[6] = &ffi_type_longdouble;
- 	cls_struct_fields[7] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c
-@@ -2,17 +2,17 @@
- 	Purpose:		Check structure alignment of long double.
- 	Limitations:	none.
- 	PR:				none.
- 	Originator:		Blake Chaffin	6/18/2007
- */
- 
- /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
- /* { dg-do run { xfail strongarm*-*-* } } */
--/* { dg-options -mlong-double-128 { target powerpc64*-*-* } } */
-+/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
- /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
- 
- #include "ffitest.h"
- 
- typedef struct cls_struct_align {
-   long double a;
-   long double b;
-   long double c;
-@@ -62,25 +62,25 @@ int main (void)
- 	ffi_cif cif;
-         void *code;
- 	ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
- 	void* args_dbl[3];
- 	ffi_type* cls_struct_fields[8];
- 	ffi_type cls_struct_type;
- 	ffi_type* dbl_arg_types[3];
- 
-+	struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
-+	struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
-+	struct cls_struct_align res_dbl;
-+
- 	cls_struct_type.size = 0;
- 	cls_struct_type.alignment = 0;
- 	cls_struct_type.type = FFI_TYPE_STRUCT;
- 	cls_struct_type.elements = cls_struct_fields;
- 
--	struct cls_struct_align g_dbl = { 1, 2, 3, 4, 5, 6, 7 };
--	struct cls_struct_align f_dbl = { 8, 9, 10, 11, 12, 13, 14 };
--	struct cls_struct_align res_dbl;
--
- 	cls_struct_fields[0] = &ffi_type_longdouble;
- 	cls_struct_fields[1] = &ffi_type_longdouble;
- 	cls_struct_fields[2] = &ffi_type_longdouble;
- 	cls_struct_fields[3] = &ffi_type_longdouble;
- 	cls_struct_fields[4] = &ffi_type_longdouble;
- 	cls_struct_fields[5] = &ffi_type_double;
- 	cls_struct_fields[6] = &ffi_type_longdouble;
- 	cls_struct_fields[7] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_pointer.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_pointer.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_pointer.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_pointer.c
-@@ -49,25 +49,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_align g_dbl = { 12, (void *)4951, 127 };
-+  struct cls_struct_align f_dbl = { 1, (void *)9320, 13 };
-+  struct cls_struct_align res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_align g_dbl = { 12, (void *)4951, 127 };
--  struct cls_struct_align f_dbl = { 1, (void *)9320, 13 };
--  struct cls_struct_align res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_pointer;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint16.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint16.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint16.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint16.c
-@@ -45,25 +45,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_align g_dbl = { 12, 4951, 127 };
-+  struct cls_struct_align f_dbl = { 1, 9320, 13 };
-+  struct cls_struct_align res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_align g_dbl = { 12, 4951, 127 };
--  struct cls_struct_align f_dbl = { 1, 9320, 13 };
--  struct cls_struct_align res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_sshort;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint32.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint32.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint32.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint32.c
-@@ -45,25 +45,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_align g_dbl = { 12, 4951, 127 };
-+  struct cls_struct_align f_dbl = { 1, 9320, 13 };
-+  struct cls_struct_align res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_align g_dbl = { 12, 4951, 127 };
--  struct cls_struct_align f_dbl = { 1, 9320, 13 };
--  struct cls_struct_align res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_sint;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint64.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint64.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint64.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_sint64.c
-@@ -46,25 +46,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_align g_dbl = { 12, 4951, 127 };
-+  struct cls_struct_align f_dbl = { 1, 9320, 13 };
-+  struct cls_struct_align res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_align g_dbl = { 12, 4951, 127 };
--  struct cls_struct_align f_dbl = { 1, 9320, 13 };
--  struct cls_struct_align res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_sint64;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint16.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint16.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint16.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint16.c
-@@ -45,25 +45,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_align g_dbl = { 12, 4951, 127 };
-+  struct cls_struct_align f_dbl = { 1, 9320, 13 };
-+  struct cls_struct_align res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_align g_dbl = { 12, 4951, 127 };
--  struct cls_struct_align f_dbl = { 1, 9320, 13 };
--  struct cls_struct_align res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_ushort;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint32.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint32.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint32.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint32.c
-@@ -45,25 +45,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_align g_dbl = { 12, 4951, 127 };
-+  struct cls_struct_align f_dbl = { 1, 9320, 13 };
-+  struct cls_struct_align res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_align g_dbl = { 12, 4951, 127 };
--  struct cls_struct_align f_dbl = { 1, 9320, 13 };
--  struct cls_struct_align res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_uint;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint64.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint64.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint64.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_align_uint64.c
-@@ -47,25 +47,25 @@ int main (void)
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[4];
-   ffi_type cls_struct_type;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_align g_dbl = { 12, 4951, 127 };
-+  struct cls_struct_align f_dbl = { 1, 9320, 13 };
-+  struct cls_struct_align res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
--  struct cls_struct_align g_dbl = { 12, 4951, 127 };
--  struct cls_struct_align f_dbl = { 1, 9320, 13 };
--  struct cls_struct_align res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_uint64;
-   cls_struct_fields[2] = &ffi_type_uchar;
-   cls_struct_fields[3] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type;
-   dbl_arg_types[1] = &cls_struct_type;
-   dbl_arg_types[2] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_dbls_struct.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_dbls_struct.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_dbls_struct.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_dbls_struct.c
-@@ -32,29 +32,29 @@ int main(int argc __UNUSED__, char** arg
- 
-         void *code;
- 	ffi_closure*	pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
- 	ffi_type*		cl_arg_types[1];
- 
- 	ffi_type	ts1_type;
- 	ffi_type*	ts1_type_elements[4];
- 
-+	Dbls arg = { 1.0, 2.0 };
-+
- 	ts1_type.size = 0;
- 	ts1_type.alignment = 0;
- 	ts1_type.type = FFI_TYPE_STRUCT;
- 	ts1_type.elements = ts1_type_elements;
- 
- 	ts1_type_elements[0] = &ffi_type_double;
- 	ts1_type_elements[1] = &ffi_type_double;
- 	ts1_type_elements[2] = NULL;
- 
- 	cl_arg_types[0] = &ts1_type;
- 
--	Dbls arg = { 1.0, 2.0 };
--
- 	/* Initialize the cif */
- 	CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
- 				 &ffi_type_void, cl_arg_types) == FFI_OK);
- 
- 	CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_gn, NULL, code) == FFI_OK);
- 
- 	((void*(*)(Dbls))(code))(arg);
- 	/* { dg-output "1.0 2.0\n" } */
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c
-@@ -1,17 +1,17 @@
- /* Area:		ffi_call, closure_call
-    Purpose:		Test doubles passed in variable argument lists.
-    Limitations:	none.
-    PR:			none.
-    Originator:	Blake Chaffin 6/6/2007	 */
- 
- /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
- /* { dg-output "" { xfail avr32*-*-* } } */
--/* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */
-+/* { dg-output "" { xfail mips-sgi-irix6* } } PR libffi/46660 */
- 
- #include "ffitest.h"
- 
- static void
- cls_double_va_fn(ffi_cif* cif __UNUSED__, void* resp, 
- 		 void** args, void* userdata __UNUSED__)
- {
- 	char*	format		= *(char**)args[0];
-@@ -31,29 +31,31 @@ int main (void)
- 	char*	format		= "%.1f\n";
- 	double	doubleArg	= 7;
- 	ffi_arg	res			= 0;
- 
- 	arg_types[0] = &ffi_type_pointer;
- 	arg_types[1] = &ffi_type_double;
- 	arg_types[2] = NULL;
- 
--	CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_sint,
--		arg_types) == FFI_OK);
-+	/* This printf call is variadic */
-+	CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, &ffi_type_sint,
-+			       arg_types) == FFI_OK);
- 
- 	args[0] = &format;
- 	args[1] = &doubleArg;
- 	args[2] = NULL;
- 
- 	ffi_call(&cif, FFI_FN(printf), &res, args);
--	// { dg-output "7.0" }
-+	/* { dg-output "7.0" } */
- 	printf("res: %d\n", (int) res);
--	// { dg-output "\nres: 4" }
-+	/* { dg-output "\nres: 4" } */
- 
--	CHECK(ffi_prep_closure_loc(pcl, &cif, cls_double_va_fn, NULL, code) == FFI_OK);
-+	CHECK(ffi_prep_closure_loc(pcl, &cif, cls_double_va_fn, NULL,
-+				   code) == FFI_OK);
- 
--	res	= ((int(*)(char*, double))(code))(format, doubleArg);
--	// { dg-output "\n7.0" }
-+	res = ((int(*)(char*, ...))(code))(format, doubleArg);
-+	/* { dg-output "\n7.0" } */
- 	printf("res: %d\n", (int) res);
--	// { dg-output "\nres: 4" }
-+	/* { dg-output "\nres: 4" } */
- 
- 	exit(0);
- }
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble.c
-@@ -1,17 +1,19 @@
- /* Area:		ffi_call, closure_call
-    Purpose:		Check long double arguments.
-    Limitations:	none.
-    PR:			none.
-    Originator:	Blake Chaffin	*/
- 
- /* { dg-excess-errors "no long double format" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
--/* { dg-do run { xfail arm*-*-* strongarm*-*-* xscale*-*-* } } */
--/* { dg-options -mlong-double-128 { target powerpc64*-*-* } } */
-+/* This test is known to PASS on armv7l-unknown-linux-gnueabihf, so I have
-+   remove the xfail for arm*-*-* below, until we know more.  */
-+/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
-+/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
- /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
- 
- #include "ffitest.h"
- 
- long double cls_ldouble_fn(
- 	long double	a1,
- 	long double	a2,
- 	long double	a3,
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c
-@@ -1,17 +1,17 @@
- /* Area:		ffi_call, closure_call
-    Purpose:		Test long doubles passed in variable argument lists.
-    Limitations:	none.
-    PR:			none.
-    Originator:	Blake Chaffin 6/6/2007	 */
- 
- /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
- /* { dg-output "" { xfail avr32*-*-* x86_64-*-mingw* } } */
--/* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */
-+/* { dg-output "" { xfail mips-sgi-irix6* } } PR libffi/46660 */
- 
- #include "ffitest.h"
- 
- static void
- cls_longdouble_va_fn(ffi_cif* cif __UNUSED__, void* resp, 
- 		     void** args, void* userdata __UNUSED__)
- {
- 	char*		format	= *(char**)args[0];
-@@ -31,29 +31,31 @@ int main (void)
- 	char*		format	= "%.1Lf\n";
- 	long double	ldArg	= 7;
- 	ffi_arg		res		= 0;
- 
- 	arg_types[0] = &ffi_type_pointer;
- 	arg_types[1] = &ffi_type_longdouble;
- 	arg_types[2] = NULL;
- 
--	CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_sint,
--		arg_types) == FFI_OK);
-+	/* This printf call is variadic */
-+	CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2, &ffi_type_sint,
-+			       arg_types) == FFI_OK);
- 
- 	args[0] = &format;
- 	args[1] = &ldArg;
- 	args[2] = NULL;
- 
- 	ffi_call(&cif, FFI_FN(printf), &res, args);
--	// { dg-output "7.0" }
-+	/* { dg-output "7.0" } */
- 	printf("res: %d\n", (int) res);
--	// { dg-output "\nres: 4" }
-+	/* { dg-output "\nres: 4" } */
- 
--	CHECK(ffi_prep_closure_loc(pcl, &cif, cls_longdouble_va_fn, NULL, code) == FFI_OK);
-+	CHECK(ffi_prep_closure_loc(pcl, &cif, cls_longdouble_va_fn, NULL,
-+				   code) == FFI_OK);
- 
--	res	= ((int(*)(char*, long double))(code))(format, ldArg);
--	// { dg-output "\n7.0" }
-+	res = ((int(*)(char*, ...))(code))(format, ldArg);
-+	/* { dg-output "\n7.0" } */
- 	printf("res: %d\n", (int) res);
--	// { dg-output "\nres: 4" }
-+	/* { dg-output "\nres: 4" } */
- 
- 	exit(0);
- }
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer.c
-@@ -30,17 +30,17 @@ cls_pointer_gn(ffi_cif* cif __UNUSED__, 
- }
- 
- int main (void)
- {
- 	ffi_cif	cif;
-         void *code;
- 	ffi_closure*	pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
- 	void*			args[3];
--//	ffi_type		cls_pointer_type;
-+	/*	ffi_type		cls_pointer_type; */
- 	ffi_type*		arg_types[3];
- 
- /*	cls_pointer_type.size = sizeof(void*);
- 	cls_pointer_type.alignment = 0;
- 	cls_pointer_type.type = FFI_TYPE_POINTER;
- 	cls_pointer_type.elements = NULL;*/
- 
- 	void*	arg1	= (void*)0x12345678;
-@@ -60,15 +60,15 @@ int main (void)
- 
- 	ffi_call(&cif, FFI_FN(cls_pointer_fn), &res, args);
- 	/* { dg-output "0x12345678 0x89abcdef: 0x9be02467" } */
- 	printf("res: 0x%08x\n", (unsigned int) res);
- 	/* { dg-output "\nres: 0x9be02467" } */
- 
- 	CHECK(ffi_prep_closure_loc(pcl, &cif, cls_pointer_gn, NULL, code) == FFI_OK);
- 
--	res = (ffi_arg)((void*(*)(void*, void*))(code))(arg1, arg2);
-+	res = (ffi_arg)(uintptr_t)((void*(*)(void*, void*))(code))(arg1, arg2);
- 	/* { dg-output "\n0x12345678 0x89abcdef: 0x9be02467" } */
- 	printf("res: 0x%08x\n", (unsigned int) res);
- 	/* { dg-output "\nres: 0x9be02467" } */
- 
- 	exit(0);
- }
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer_stack.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer_stack.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer_stack.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_pointer_stack.c
-@@ -23,21 +23,22 @@ void* cls_pointer_fn2(void* a1, void* a2
- 	long double	trample1	= (intptr_t)a1 + (intptr_t)a2;
- 	char		trample2	= ((char*)&a1)[0] + ((char*)&a2)[0];
- 	long double	trample3	= (intptr_t)trample1 + (intptr_t)a1;
- 	char		trample4	= trample2 + ((char*)&a1)[1];
- 	long double	trample5	= (intptr_t)trample3 + (intptr_t)a2;
- 	char		trample6	= trample4 + ((char*)&a2)[1];
- 	long double	trample7	= (intptr_t)trample5 + (intptr_t)trample1;
- 	char		trample8	= trample6 + trample2;
-+	void*		result;
- 
- 	dummyVar	= dummy_func(trample1, trample2, trample3, trample4,
- 		trample5, trample6, trample7, trample8);
- 
--	void*	result	= (void*)((intptr_t)a1 + (intptr_t)a2);
-+	result	= (void*)((intptr_t)a1 + (intptr_t)a2);
- 
- 	printf("0x%08x 0x%08x: 0x%08x\n", 
- 	       (unsigned int)(uintptr_t) a1,
-                (unsigned int)(uintptr_t) a2,
-                (unsigned int)(uintptr_t) result);
- 
- 	return result;
- }
-@@ -47,21 +48,22 @@ void* cls_pointer_fn1(void* a1, void* a2
- 	long double	trample1	= (intptr_t)a1 + (intptr_t)a2;
- 	char		trample2	= ((char*)&a1)[0] + ((char*)&a2)[0];
- 	long double	trample3	= (intptr_t)trample1 + (intptr_t)a1;
- 	char		trample4	= trample2 + ((char*)&a1)[1];
- 	long double	trample5	= (intptr_t)trample3 + (intptr_t)a2;
- 	char		trample6	= trample4 + ((char*)&a2)[1];
- 	long double	trample7	= (intptr_t)trample5 + (intptr_t)trample1;
- 	char		trample8	= trample6 + trample2;
-+	void*		result;
- 
- 	dummyVar	= dummy_func(trample1, trample2, trample3, trample4,
- 		trample5, trample6, trample7, trample8);
- 
--	void*	result	= (void*)((intptr_t)a1 + (intptr_t)a2);
-+	result	= (void*)((intptr_t)a1 + (intptr_t)a2);
- 
- 	printf("0x%08x 0x%08x: 0x%08x\n",
-                (unsigned int)(intptr_t) a1,
-                (unsigned int)(intptr_t) a2,
-                (unsigned int)(intptr_t) result);
- 
- 	result	= cls_pointer_fn2(result, a1);
- 
-@@ -91,17 +93,17 @@ cls_pointer_gn(ffi_cif* cif __UNUSED__, 
- }
- 
- int main (void)
- {
- 	ffi_cif	cif;
-         void *code;
- 	ffi_closure*	pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
- 	void*			args[3];
--//	ffi_type		cls_pointer_type;
-+	/*	ffi_type		cls_pointer_type; */
- 	ffi_type*		arg_types[3];
- 
- /*	cls_pointer_type.size = sizeof(void*);
- 	cls_pointer_type.alignment = 0;
- 	cls_pointer_type.type = FFI_TYPE_POINTER;
- 	cls_pointer_type.elements = NULL;*/
- 
- 	void*	arg1	= (void*)0x01234567;
-@@ -118,23 +120,23 @@ int main (void)
- 	args[0] = &arg1;
- 	args[1] = &arg2;
- 	args[2] = NULL;
- 
- 	printf("\n");
- 	ffi_call(&cif, FFI_FN(cls_pointer_fn1), &res, args);
- 
- 	printf("res: 0x%08x\n", (unsigned int) res);
--	// { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" }
--	// { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" }
--	// { dg-output "\nres: 0x8bf258bd" }
-+	/* { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } */
-+	/* { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } */
-+	/* { dg-output "\nres: 0x8bf258bd" } */
- 
- 	CHECK(ffi_prep_closure_loc(pcl, &cif, cls_pointer_gn, NULL, code) == FFI_OK);
- 
--	res = (ffi_arg)((void*(*)(void*, void*))(code))(arg1, arg2);
-+	res = (ffi_arg)(uintptr_t)((void*(*)(void*, void*))(code))(arg1, arg2);
- 
- 	printf("res: 0x%08x\n", (unsigned int) res);
--	// { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" }
--	// { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" }
--	// { dg-output "\nres: 0x8bf258bd" }
-+	/* { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } */
-+	/* { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } */
-+	/* { dg-output "\nres: 0x8bf258bd" } */
- 
- 	exit(0);
- }
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_struct_va1.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_struct_va1.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_struct_va1.c
-@@ -0,0 +1,114 @@
-+/* Area:		ffi_call, closure_call
-+   Purpose:		Test doubles passed in variable argument lists.
-+   Limitations:	none.
-+   PR:			none.
-+   Originator:	Blake Chaffin 6/6/2007	 */
-+
-+/* { dg-do run } */
-+/* { dg-output "" { xfail avr32*-*-* } } */
-+#include "ffitest.h"
-+
-+struct small_tag
-+{
-+  unsigned char a;
-+  unsigned char b;
-+};
-+
-+struct large_tag
-+{
-+  unsigned a;
-+  unsigned b;
-+  unsigned c;
-+  unsigned d;
-+  unsigned e;
-+};
-+
-+static void
-+test_fn (ffi_cif* cif __UNUSED__, void* resp,
-+	 void** args, void* userdata __UNUSED__)
-+{
-+  int n = *(int*)args[0];
-+  struct small_tag s1 = * (struct small_tag *) args[1];
-+  struct large_tag l1 = * (struct large_tag *) args[2];
-+  struct small_tag s2 = * (struct small_tag *) args[3];
-+
-+  printf ("%d %d %d %d %d %d %d %d %d %d\n", n, s1.a, s1.b,
-+	  l1.a, l1.b, l1.c, l1.d, l1.e,
-+	  s2.a, s2.b);
-+  * (ffi_arg*) resp = 42;
-+}
-+
-+int
-+main (void)
-+{
-+  ffi_cif cif;
-+  void *code;
-+  ffi_closure *pcl = ffi_closure_alloc (sizeof (ffi_closure), &code);
-+  ffi_type* arg_types[5];
-+
-+  ffi_arg res = 0;
-+
-+  ffi_type s_type;
-+  ffi_type *s_type_elements[3];
-+
-+  ffi_type l_type;
-+  ffi_type *l_type_elements[6];
-+
-+  struct small_tag s1;
-+  struct small_tag s2;
-+  struct large_tag l1;
-+
-+  int si;
-+
-+  s_type.size = 0;
-+  s_type.alignment = 0;
-+  s_type.type = FFI_TYPE_STRUCT;
-+  s_type.elements = s_type_elements;
-+
-+  s_type_elements[0] = &ffi_type_uchar;
-+  s_type_elements[1] = &ffi_type_uchar;
-+  s_type_elements[2] = NULL;
-+
-+  l_type.size = 0;
-+  l_type.alignment = 0;
-+  l_type.type = FFI_TYPE_STRUCT;
-+  l_type.elements = l_type_elements;
-+
-+  l_type_elements[0] = &ffi_type_uint;
-+  l_type_elements[1] = &ffi_type_uint;
-+  l_type_elements[2] = &ffi_type_uint;
-+  l_type_elements[3] = &ffi_type_uint;
-+  l_type_elements[4] = &ffi_type_uint;
-+  l_type_elements[5] = NULL;
-+
-+  arg_types[0] = &ffi_type_sint;
-+  arg_types[1] = &s_type;
-+  arg_types[2] = &l_type;
-+  arg_types[3] = &s_type;
-+  arg_types[4] = NULL;
-+
-+  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &ffi_type_sint,
-+			 arg_types) == FFI_OK);
-+
-+  si = 4;
-+  s1.a = 5;
-+  s1.b = 6;
-+
-+  s2.a = 20;
-+  s2.b = 21;
-+
-+  l1.a = 10;
-+  l1.b = 11;
-+  l1.c = 12;
-+  l1.d = 13;
-+  l1.e = 14;
-+
-+  CHECK(ffi_prep_closure_loc(pcl, &cif, test_fn, NULL, code) == FFI_OK);
-+
-+  res = ((int (*)(int, ...))(code))(si, s1, l1, s2);
-+  /* { dg-output "4 5 6 10 11 12 13 14 20 21" } */
-+  printf("res: %d\n", (int) res);
-+  /* { dg-output "\nres: 42" } */
-+
-+  exit(0);
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_uchar_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_uchar_va.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_uchar_va.c
-@@ -0,0 +1,44 @@
-+/* Area:	closure_call
-+   Purpose:	Test anonymous unsigned char argument.
-+   Limitations:	none.
-+   PR:		none.
-+   Originator:	ARM Ltd. */
-+
-+/* { dg-do run } */
-+#include "ffitest.h"
-+
-+typedef unsigned char T;
-+
-+static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
-+			 void* userdata __UNUSED__)
-+ {
-+   *(ffi_arg *)resp = *(T *)args[0];
-+
-+   printf("%d: %d %d\n", (int)(*(ffi_arg *)resp), *(T *)args[0], *(T *)args[1]);
-+ }
-+
-+typedef T (*cls_ret_T)(T, ...);
-+
-+int main (void)
-+{
-+  ffi_cif cif;
-+  void *code;
-+  ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-+  ffi_type * cl_arg_types[3];
-+  T res;
-+
-+  cl_arg_types[0] = &ffi_type_uchar;
-+  cl_arg_types[1] = &ffi_type_uchar;
-+  cl_arg_types[2] = NULL;
-+
-+  /* Initialize the cif */
-+  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2,
-+			 &ffi_type_uchar, cl_arg_types) == FFI_OK);
-+
-+  CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code)  == FFI_OK);
-+  res = ((((cls_ret_T)code)(67, 4)));
-+  /* { dg-output "67: 67 4" } */
-+  printf("res: %d\n", res);
-+  /* { dg-output "\nres: 67" } */
-+  exit(0);
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_uint_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_uint_va.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_uint_va.c
-@@ -0,0 +1,45 @@
-+/* Area:	closure_call
-+   Purpose:	Test anonymous unsigned int argument.
-+   Limitations:	none.
-+   PR:		none.
-+   Originator:	ARM Ltd. */
-+
-+/* { dg-do run } */
-+
-+#include "ffitest.h"
-+
-+typedef unsigned int T;
-+
-+static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
-+			 void* userdata __UNUSED__)
-+ {
-+   *(ffi_arg *)resp = *(T *)args[0];
-+
-+   printf("%d: %d %d\n", (int)*(ffi_arg *)resp, *(T *)args[0], *(T *)args[1]);
-+ }
-+
-+typedef T (*cls_ret_T)(T, ...);
-+
-+int main (void)
-+{
-+  ffi_cif cif;
-+  void *code;
-+  ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-+  ffi_type * cl_arg_types[3];
-+  T res;
-+
-+  cl_arg_types[0] = &ffi_type_uint;
-+  cl_arg_types[1] = &ffi_type_uint;
-+  cl_arg_types[2] = NULL;
-+
-+  /* Initialize the cif */
-+  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2,
-+			 &ffi_type_uint, cl_arg_types) == FFI_OK);
-+
-+  CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code)  == FFI_OK);
-+  res = ((((cls_ret_T)code)(67, 4)));
-+  /* { dg-output "67: 67 4" } */
-+  printf("res: %d\n", res);
-+  /* { dg-output "\nres: 67" } */
-+  exit(0);
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulong_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulong_va.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulong_va.c
-@@ -0,0 +1,45 @@
-+/* Area:	closure_call
-+   Purpose:	Test anonymous unsigned long argument.
-+   Limitations:	none.
-+   PR:		none.
-+   Originator:	ARM Ltd. */
-+
-+/* { dg-do run } */
-+
-+#include "ffitest.h"
-+
-+typedef unsigned long T;
-+
-+static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
-+			 void* userdata __UNUSED__)
-+ {
-+   *(T *)resp = *(T *)args[0];
-+
-+   printf("%ld: %ld %ld\n", *(T *)resp, *(T *)args[0], *(T *)args[1]);
-+ }
-+
-+typedef T (*cls_ret_T)(T, ...);
-+
-+int main (void)
-+{
-+  ffi_cif cif;
-+  void *code;
-+  ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-+  ffi_type * cl_arg_types[3];
-+  T res;
-+
-+  cl_arg_types[0] = &ffi_type_ulong;
-+  cl_arg_types[1] = &ffi_type_ulong;
-+  cl_arg_types[2] = NULL;
-+
-+  /* Initialize the cif */
-+  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2,
-+			 &ffi_type_ulong, cl_arg_types) == FFI_OK);
-+
-+  CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code)  == FFI_OK);
-+  res = ((((cls_ret_T)code)(67, 4)));
-+  /* { dg-output "67: 67 4" } */
-+  printf("res: %ld\n", res);
-+  /* { dg-output "\nres: 67" } */
-+  exit(0);
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulonglong.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulonglong.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulonglong.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ulonglong.c
-@@ -6,17 +6,17 @@
- 
- /* { dg-do run } */
- /* { dg-options "-Wno-format" { target alpha*-dec-osf* } } */
- #include "ffitest.h"
- 
- static void cls_ret_ulonglong_fn(ffi_cif* cif __UNUSED__, void* resp,
- 				 void** args, void* userdata __UNUSED__)
- {
--  *(unsigned long long *)resp=  *(unsigned long long *)args[0];
-+  *(unsigned long long *)resp= 0xfffffffffffffffLL ^ *(unsigned long long *)args[0];
- 
-   printf("%" PRIuLL ": %" PRIuLL "\n",*(unsigned long long *)args[0],
- 	 *(unsigned long long *)(resp));
- }
- typedef unsigned long long (*cls_ret_ulonglong)(unsigned long long);
- 
- int main (void)
- {
-@@ -29,19 +29,19 @@ int main (void)
-   cl_arg_types[0] = &ffi_type_uint64;
-   cl_arg_types[1] = NULL;
- 
-   /* Initialize the cif */
-   CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
- 		     &ffi_type_uint64, cl_arg_types) == FFI_OK);
-   CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_ulonglong_fn, NULL, code)  == FFI_OK);
-   res = (*((cls_ret_ulonglong)code))(214LL);
--  /* { dg-output "214: 214" } */
-+  /* { dg-output "214: 1152921504606846761" } */
-   printf("res: %" PRIdLL "\n", res);
--  /* { dg-output "\nres: 214" } */
-+  /* { dg-output "\nres: 1152921504606846761" } */
- 
-   res = (*((cls_ret_ulonglong)code))(9223372035854775808LL);
--  /* { dg-output "\n9223372035854775808: 9223372035854775808" } */
-+  /* { dg-output "\n9223372035854775808: 8070450533247928831" } */
-   printf("res: %" PRIdLL "\n", res);
--  /* { dg-output "\nres: 9223372035854775808" } */
-+  /* { dg-output "\nres: 8070450533247928831" } */
- 
-   exit(0);
- }
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_ushort_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ushort_va.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_ushort_va.c
-@@ -0,0 +1,44 @@
-+/* Area:	closure_call
-+   Purpose:	Test anonymous unsigned short argument.
-+   Limitations:	none.
-+   PR:		none.
-+   Originator:	ARM Ltd. */
-+
-+/* { dg-do run } */
-+#include "ffitest.h"
-+
-+typedef unsigned short T;
-+
-+static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
-+			 void* userdata __UNUSED__)
-+ {
-+   *(ffi_arg *)resp = *(T *)args[0];
-+
-+   printf("%d: %d %d\n", (int)(*(ffi_arg *)resp), *(T *)args[0], *(T *)args[1]);
-+ }
-+
-+typedef T (*cls_ret_T)(T, ...);
-+
-+int main (void)
-+{
-+  ffi_cif cif;
-+  void *code;
-+  ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-+  ffi_type * cl_arg_types[3];
-+  T res;
-+
-+  cl_arg_types[0] = &ffi_type_ushort;
-+  cl_arg_types[1] = &ffi_type_ushort;
-+  cl_arg_types[2] = NULL;
-+
-+  /* Initialize the cif */
-+  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 2,
-+			 &ffi_type_ushort, cl_arg_types) == FFI_OK);
-+
-+  CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ret_T_fn, NULL, code)  == FFI_OK);
-+  res = ((((cls_ret_T)code)(67, 4)));
-+  /* { dg-output "67: 67 4" } */
-+  printf("res: %d\n", res);
-+  /* { dg-output "\nres: 67" } */
-+  exit(0);
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_abi.c b/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_abi.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_abi.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_abi.c
-@@ -1,15 +1,16 @@
- /* Area:		ffi_prep_cif, ffi_prep_closure
-    Purpose:		Test error return for bad ABIs.
-    Limitations:	none.
-    PR:			none.
-    Originator:	Blake Chaffin 6/6/2007	 */
- 
--/* { dg-do run { xfail *-*-* } } */
-+/* { dg-do run } */
-+
- #include "ffitest.h"
- 
- static void
- dummy_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__, 
- 	 void** args __UNUSED__, void* userdata __UNUSED__)
- {}
- 
- int main (void)
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_typedef.c b/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_typedef.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_typedef.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/err_bad_typedef.c
-@@ -1,25 +1,26 @@
- /* Area:		ffi_prep_cif
-    Purpose:		Test error return for bad typedefs.
-    Limitations:	none.
-    PR:			none.
-    Originator:	Blake Chaffin 6/6/2007	 */
- 
--/* { dg-do run { xfail *-*-* } } */
-+/* { dg-do run } */
-+
- #include "ffitest.h"
- 
- int main (void)
- {
- 	ffi_cif cif;
- 	ffi_type* arg_types[1];
- 
-+	ffi_type	badType	= ffi_type_void;
-+
- 	arg_types[0] = NULL;
- 
--	ffi_type	badType	= ffi_type_void;
--
- 	badType.size = 0;
- 
- 	CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &badType,
- 		arg_types) == FFI_BAD_TYPEDEF);
- 
- 	exit(0);
- }
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/ffitest.h b/js/src/ctypes/libffi/testsuite/libffi.call/ffitest.h
---- a/js/src/ctypes/libffi/testsuite/libffi.call/ffitest.h
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/ffitest.h
-@@ -10,24 +10,35 @@
- #endif
- 
- #if defined HAVE_INTTYPES_H
- #include <inttypes.h>
- #endif
- 
- #define MAX_ARGS 256
- 
--#define CHECK(x) !(x) ? abort() : 0
-+#define CHECK(x) (!(x) ? (abort(), 1) : 0)
- 
--/* Define __UNUSED__ that also other compilers than gcc can run the tests.  */
-+/* Define macros so that compilers other than gcc can run the tests.  */
- #undef __UNUSED__
- #if defined(__GNUC__)
- #define __UNUSED__ __attribute__((__unused__))
-+#define __STDCALL__ __attribute__((stdcall))
-+#define __THISCALL__ __attribute__((thiscall))
-+#define __FASTCALL__ __attribute__((fastcall))
- #else
- #define __UNUSED__
-+#define __STDCALL__ __stdcall
-+#define __THISCALL__ __thiscall
-+#define __FASTCALL__ __fastcall
-+#endif
-+
-+#ifndef ABI_NUM
-+#define ABI_NUM FFI_DEFAULT_ABI
-+#define ABI_ATTR
- #endif
- 
- /* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a
-    file open.  */
- #ifdef HAVE_MMAP_ANON
- # undef HAVE_MMAP_DEV_ZERO
- 
- # include <sys/mman.h>
-@@ -62,68 +73,63 @@
- 
- /* Tru64 UNIX kludge.  */
- #if defined(__alpha__) && defined(__osf__)
- /* Tru64 UNIX V4.0 doesn't support %lld/%lld, but long is 64-bit.  */
- #undef PRIdLL
- #define PRIdLL "ld"
- #undef PRIuLL
- #define PRIuLL "lu"
-+#define PRId8 "hd"
-+#define PRIu8 "hu"
- #define PRId64 "ld"
- #define PRIu64 "lu"
- #define PRIuPTR "lu"
- #endif
- 
- /* PA HP-UX kludge.  */
- #if defined(__hppa__) && defined(__hpux__) && !defined(PRIuPTR)
- #define PRIuPTR "lu"
- #endif
- 
-+/* IRIX kludge.  */
-+#if defined(__sgi)
-+/* IRIX 6.5 <inttypes.h> provides all definitions, but only for C99
-+   compilations.  */
-+#define PRId8 "hhd"
-+#define PRIu8 "hhu"
-+#if (_MIPS_SZLONG == 32)
-+#define PRId64 "lld"
-+#define PRIu64 "llu"
-+#endif
-+/* This doesn't match <inttypes.h>, which always has "lld" here, but the
-+   arguments are uint64_t, int64_t, which are unsigned long, long for
-+   64-bit in <sgidefs.h>.  */
-+#if (_MIPS_SZLONG == 64)
-+#define PRId64 "ld"
-+#define PRIu64 "lu"
-+#endif
-+/* This doesn't match <inttypes.h>, which has "u" here, but the arguments
-+   are uintptr_t, which is always unsigned long.  */
-+#define PRIuPTR "lu"
-+#endif
-+
- /* Solaris < 10 kludge.  */
- #if defined(__sun__) && defined(__svr4__) && !defined(PRIuPTR)
- #if defined(__arch64__) || defined (__x86_64__)
- #define PRIuPTR "lu"
- #else
- #define PRIuPTR "u"
- #endif
- #endif
- 
--#ifdef USING_MMAP
--static inline void *
--allocate_mmap (size_t size)
--{
--  void *page;
--#if defined (HAVE_MMAP_DEV_ZERO)
--  static int dev_zero_fd = -1;
-+/* MSVC kludge.  */
-+#if defined _MSC_VER
-+#define PRIuPTR "lu"
-+#define PRIu8 "u"
-+#define PRId8 "d"
-+#define PRIu64 "I64u"
-+#define PRId64 "I64d"
- #endif
- 
--#ifdef HAVE_MMAP_DEV_ZERO
--  if (dev_zero_fd == -1)
--    {
--      dev_zero_fd = open ("/dev/zero", O_RDONLY);
--      if (dev_zero_fd == -1)
--	{
--	  perror ("open /dev/zero: %m");
--	  exit (1);
--	}
--    }
-+#ifndef PRIuPTR
-+#define PRIuPTR "u"
- #endif
--
--
--#ifdef HAVE_MMAP_ANON
--  page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
--	       MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
--#endif
--#ifdef HAVE_MMAP_DEV_ZERO
--  page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
--	       MAP_PRIVATE, dev_zero_fd, 0);
--#endif
--
--  if (page == (void *) MAP_FAILED)
--    {
--      perror ("virtual memory exhausted");
--      exit (1);
--    }
--
--  return page;
--}
--
--#endif
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/float_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/float_va.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/float_va.c
-@@ -0,0 +1,107 @@
-+/* Area:        fp and variadics
-+   Purpose:     check fp inputs and returns work on variadics, even the fixed params
-+   Limitations: None
-+   PR:          none
-+   Originator:  <david.gilbert@linaro.org> 2011-01-25
-+
-+   Intended to stress the difference in ABI on ARM vfp
-+*/
-+
-+/* { dg-do run } */
-+
-+#include <stdarg.h>
-+
-+#include "ffitest.h"
-+
-+/* prints out all the parameters, and returns the sum of them all.
-+ * 'x' is the number of variadic parameters all of which are double in this test
-+ */
-+double float_va_fn(unsigned int x, double y,...)
-+{
-+  double total=0.0;
-+  va_list ap;
-+  unsigned int i;
-+
-+  total+=(double)x;
-+  total+=y;
-+
-+  printf("%u: %.1f :", x, y);
-+
-+  va_start(ap, y);
-+  for(i=0;i<x;i++)
-+  {
-+    double arg=va_arg(ap, double);
-+    total+=arg;
-+    printf(" %d:%.1f ", i, arg);
-+  }
-+  va_end(ap);
-+
-+  printf(" total: %.1f\n", total);
-+
-+  return total;
-+}
-+
-+int main (void)
-+{
-+  ffi_cif    cif;
-+
-+  ffi_type    *arg_types[5];
-+  void        *values[5];
-+  double        doubles[5];
-+  unsigned int firstarg;
-+  double        resfp;
-+
-+  /* First test, pass float_va_fn(0,2.0) - note there are no actual
-+   * variadic parameters, but it's declared variadic so the ABI may be
-+   * different. */
-+  /* Call it statically and then via ffi */
-+  resfp=float_va_fn(0,2.0);
-+  /* { dg-output "0: 2.0 : total: 2.0" } */
-+  printf("compiled: %.1f\n", resfp);
-+  /* { dg-output "\ncompiled: 2.0" } */
-+
-+  arg_types[0] = &ffi_type_uint;
-+  arg_types[1] = &ffi_type_double;
-+  arg_types[2] = NULL;
-+  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 2, 2,
-+        &ffi_type_double, arg_types) == FFI_OK);
-+
-+  firstarg = 0;
-+  doubles[0] = 2.0;
-+  values[0] = &firstarg;
-+  values[1] = &doubles[0];
-+  ffi_call(&cif, FFI_FN(float_va_fn), &resfp, values);
-+  /* { dg-output "\n0: 2.0 : total: 2.0" } */
-+  printf("ffi: %.1f\n", resfp);
-+  /* { dg-output "\nffi: 2.0" } */
-+
-+  /* Second test, float_va_fn(2,2.0,3.0,4.0), now with variadic params */
-+  /* Call it statically and then via ffi */
-+  resfp=float_va_fn(2,2.0,3.0,4.0);
-+  /* { dg-output "\n2: 2.0 : 0:3.0  1:4.0  total: 11.0" } */
-+  printf("compiled: %.1f\n", resfp);
-+  /* { dg-output "\ncompiled: 11.0" } */
-+
-+  arg_types[0] = &ffi_type_uint;
-+  arg_types[1] = &ffi_type_double;
-+  arg_types[2] = &ffi_type_double;
-+  arg_types[3] = &ffi_type_double;
-+  arg_types[4] = NULL;
-+  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 2, 4,
-+        &ffi_type_double, arg_types) == FFI_OK);
-+
-+  firstarg = 2;
-+  doubles[0] = 2.0;
-+  doubles[1] = 3.0;
-+  doubles[2] = 4.0;
-+  values[0] = &firstarg;
-+  values[1] = &doubles[0];
-+  values[2] = &doubles[1];
-+  values[3] = &doubles[2];
-+  ffi_call(&cif, FFI_FN(float_va_fn), &resfp, values);
-+  /* { dg-output "\n2: 2.0 : 0:3.0  1:4.0  total: 11.0" } */
-+  printf("ffi: %.1f\n", resfp);
-+  /* { dg-output "\nffi: 11.0" } */
-+
-+  exit(0);
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/huge_struct.c b/js/src/ctypes/libffi/testsuite/libffi.call/huge_struct.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/huge_struct.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/huge_struct.c
-@@ -2,17 +2,18 @@
- 	Purpose:		Check large structure returns.
- 	Limitations:	none.
- 	PR:				none.
- 	Originator:		Blake Chaffin	6/18/2007
- */
- 
- /* { dg-excess-errors "" { target x86_64-*-mingw* x86_64-*-cygwin* } } */
- /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
--/* { dg-options -mlong-double-128 { target powerpc64*-*-* } } */
-+/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */
-+/* { dg-options -Wformat=0 { target moxie*-*-elf } } */
- /* { dg-output "" { xfail x86_64-*-mingw* x86_64-*-cygwin* } } */
- 
- #include "ffitest.h"
- 
- typedef	struct BigStruct{
- 	uint8_t		a;
- 	int8_t		b;
- 	uint16_t	c;
-@@ -124,24 +125,24 @@ test_large_fn(
- 		ui8_2 + 2, si8_2 + 2, ui16_2 + 2, si16_2 + 2, ui32_2 + 2, si32_2 + 2,
- 			ui64_2 + 2, si64_2 + 2, f_2 + 2, d_2 + 2, ld_2 + 2, (char*)((intptr_t)p_2 + 2), 
- 		ui8_3 + 3, si8_3 + 3, ui16_3 + 3, si16_3 + 3, ui32_3 + 3, si32_3 + 3,
- 			ui64_3 + 3, si64_3 + 3, f_3 + 3, d_3 + 3, ld_3 + 3, (char*)((intptr_t)p_3 + 3), 
- 		ui8_4 + 4, si8_4 + 4, ui16_4 + 4, si16_4 + 4, ui32_4 + 4, si32_4 + 4,
- 			ui64_4 + 4, si64_4 + 4, f_4 + 4, d_4 + 4, ld_4 + 4, (char*)((intptr_t)p_4 + 4), 
- 		ui8_5 + 5, si8_5 + 5};
- 
--	printf("%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
--		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
--		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
--		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %hhu %hhd: "
--		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
--		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
--		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
--		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %hhu %hhd\n",
-+	printf("%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
-+		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
-+		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
-+		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %" PRIu8 " %" PRId8 ": "
-+		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
-+		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
-+		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
-+		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %" PRIu8 " %" PRId8 "\n",
- 	       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,
- 		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,
- 		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,
- 		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,
- 		retVal.a, retVal.b, retVal.c, retVal.d, retVal.e, retVal.f,
- 	       retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (unsigned long)retVal.l,
- 		retVal.m, retVal.n, retVal.o, retVal.p, retVal.q, retVal.r,
- 	       retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (unsigned long)retVal.x,
-@@ -224,16 +225,29 @@ main(int argc __UNUSED__, const char** a
- 	ffi_cif		cif;
- 	ffi_type*	argTypes[51];
- 	void*		argValues[51];
- 
- 	ffi_type	ret_struct_type;
- 	ffi_type*	st_fields[51];
- 	BigStruct	retVal;
- 
-+	uint8_t		ui8		= 1;
-+	int8_t		si8		= 2;
-+	uint16_t	ui16	= 3;
-+	int16_t		si16	= 4;
-+	uint32_t	ui32	= 5;
-+	int32_t		si32	= 6;
-+	uint64_t	ui64	= 7;
-+	int64_t		si64	= 8;
-+	float		f		= 9;
-+	double		d		= 10;
-+	long double	ld		= 11;
-+	char*		p		= (char*)0x12345678;
-+
- 	memset (&retVal, 0, sizeof(retVal));
- 
- 	ret_struct_type.size = 0;
- 	ret_struct_type.alignment = 0;
- 	ret_struct_type.type = FFI_TYPE_STRUCT;
- 	ret_struct_type.elements = st_fields;
- 
- 	st_fields[0]	= st_fields[12]	= st_fields[24]	= st_fields[36]	= st_fields[48]	= &ffi_type_uint8;
-@@ -246,29 +260,16 @@ main(int argc __UNUSED__, const char** a
- 	st_fields[7]	= st_fields[19]	= st_fields[31]	= st_fields[43]	= &ffi_type_sint64;
- 	st_fields[8]	= st_fields[20]	= st_fields[32]	= st_fields[44]	= &ffi_type_float;
- 	st_fields[9]	= st_fields[21]	= st_fields[33]	= st_fields[45]	= &ffi_type_double;
- 	st_fields[10]	= st_fields[22]	= st_fields[34]	= st_fields[46]	= &ffi_type_longdouble;
- 	st_fields[11]	= st_fields[23]	= st_fields[35]	= st_fields[47]	= &ffi_type_pointer;
- 
- 	st_fields[50] = NULL;
- 
--	uint8_t		ui8		= 1;
--	int8_t		si8		= 2;
--	uint16_t	ui16	= 3;
--	int16_t		si16	= 4;
--	uint32_t	ui32	= 5;
--	int32_t		si32	= 6;
--	uint64_t	ui64	= 7;
--	int64_t		si64	= 8;
--	float		f		= 9;
--	double		d		= 10;
--	long double	ld		= 11;
--	char*		p		= (char*)0x12345678;
--
- 	argTypes[0]		= argTypes[12]	= argTypes[24]	= argTypes[36]	= argTypes[48]	= &ffi_type_uint8;
- 	argValues[0]	= argValues[12]	= argValues[24]	= argValues[36]	= argValues[48]	= &ui8;
- 	argTypes[1]		= argTypes[13]	= argTypes[25]	= argTypes[37]	= argTypes[49]	= &ffi_type_sint8;
- 	argValues[1]	= argValues[13]	= argValues[25]	= argValues[37]	= argValues[49]	= &si8;
- 	argTypes[2]		= argTypes[14]	= argTypes[26]	= argTypes[38]	= &ffi_type_uint16;
- 	argValues[2]	= argValues[14]	= argValues[26]	= argValues[38]	= &ui16;
- 	argTypes[3]		= argTypes[15]	= argTypes[27]	= argTypes[39]	= &ffi_type_sint16;
- 	argValues[3]	= argValues[15]	= argValues[27]	= argValues[39]	= &si16;
-@@ -290,53 +291,53 @@ main(int argc __UNUSED__, const char** a
- 	argValues[11]	= argValues[23]	= argValues[35]	= argValues[47]	= &p;
- 
- 	argTypes[50]	= NULL;
- 	argValues[50]	= NULL;
- 
- 	CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 50, &ret_struct_type, argTypes) == FFI_OK);
- 
- 	ffi_call(&cif, FFI_FN(test_large_fn), &retVal, argValues);
--	// { 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" }
--	printf("res: %hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
--		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
--		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
--		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %hhu %hhd\n",
-+	/* { 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" } */
-+	printf("res: %" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
-+		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
-+		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
-+		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %" PRIu8 " %" PRId8 "\n",
- 		retVal.a, retVal.b, retVal.c, retVal.d, retVal.e, retVal.f,
- 	       retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (unsigned long)retVal.l,
- 		retVal.m, retVal.n, retVal.o, retVal.p, retVal.q, retVal.r,
- 	       retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (unsigned long)retVal.x,
- 		retVal.y, retVal.z, retVal.aa, retVal.bb, retVal.cc, retVal.dd,
- 	       retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (unsigned long)retVal.jj,
- 		retVal.kk, retVal.ll, retVal.mm, retVal.nn, retVal.oo, retVal.pp,
- 	       retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (unsigned long)retVal.vv, retVal.ww, retVal.xx);
--	// { 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" }
-+	/* { 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" } */
- 
- 	CHECK(ffi_prep_closure_loc(pcl, &cif, cls_large_fn, NULL, code) == FFI_OK);
- 
- 	retVal	= ((BigStruct(*)(
- 		uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t, float, double, long double, char*,
- 		uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t, float, double, long double, char*,
- 		uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t, float, double, long double, char*,
- 		uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t, float, double, long double, char*,
- 		uint8_t, int8_t))(code))(
- 		ui8, si8, ui16, si16, ui32, si32, ui64, si64, f, d, ld, p,
- 		ui8, si8, ui16, si16, ui32, si32, ui64, si64, f, d, ld, p,
- 		ui8, si8, ui16, si16, ui32, si32, ui64, si64, f, d, ld, p,
- 		ui8, si8, ui16, si16, ui32, si32, ui64, si64, f, d, ld, p,
- 		ui8, si8);
--	// { 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" }
--	printf("res: %hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
--		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
--		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
--		"%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %hhu %hhd\n",
-+	/* { 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" } */
-+	printf("res: %" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
-+		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
-+		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx "
-+		"%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %" PRIu8 " %" PRId8 "\n",
- 		retVal.a, retVal.b, retVal.c, retVal.d, retVal.e, retVal.f,
- 	       retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (unsigned long)retVal.l,
- 		retVal.m, retVal.n, retVal.o, retVal.p, retVal.q, retVal.r,
- 	       retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (unsigned long)retVal.x,
- 		retVal.y, retVal.z, retVal.aa, retVal.bb, retVal.cc, retVal.dd,
- 	       retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (unsigned long)retVal.jj,
- 		retVal.kk, retVal.ll, retVal.mm, retVal.nn, retVal.oo, retVal.pp,
- 	       retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (unsigned long)retVal.vv, retVal.ww, retVal.xx);
--	// { 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" }
-+	/* { 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" } */
- 
-     return 0;
- }
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/many.c b/js/src/ctypes/libffi/testsuite/libffi.call/many.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/many.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/many.c
-@@ -2,40 +2,30 @@
-    Purpose:	Check return value float, with many arguments
-    Limitations:	none.
-    PR:		none.
-    Originator:	From the original ffitest.c  */
- 
- /* { dg-do run } */
- #include "ffitest.h"
- 
-+#include <stdlib.h>
- #include <float.h>
-+#include <math.h>
- 
--static float many(float f1,
--		  float f2,
--		  float f3,
--		  float f4,
--		  float f5,
--		  float f6,
--		  float f7,
--		  float f8,
--		  float f9,
--		  float f10,
--		  float f11,
--		  float f12,
--		  float f13)
-+static float ABI_ATTR many(float f1, float f2, float f3, float f4, float f5, float f6, float f7, float f8, float f9, float f10, float f11, float f12, float f13)
- {
- #if 0
-   printf("%f %f %f %f %f %f %f %f %f %f %f %f %f\n",
- 	 (double) f1, (double) f2, (double) f3, (double) f4, (double) f5, 
- 	 (double) f6, (double) f7, (double) f8, (double) f9, (double) f10,
- 	 (double) f11, (double) f12, (double) f13);
- #endif
- 
--  return ((f1/f2+f3/f4+f5/f6+f7/f8+f9/f10+f11/f12) * f13);
-+  return f1+f2+f3+f4+f5+f6+f7+f8+f9+f10+f11+f12+f13;
- }
- 
- int main (void)
- {
-   ffi_cif cif;
-   ffi_type *args[13];
-   void *values[13];
-   float fa[13];
-@@ -45,25 +35,25 @@ int main (void)
-   for (i = 0; i < 13; i++)
-     {
-       args[i] = &ffi_type_float;
-       values[i] = &fa[i];
-       fa[i] = (float) i;
-     }
- 
-     /* Initialize the cif */
--    CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 13, 
-+    CHECK(ffi_prep_cif(&cif, ABI_NUM, 13,
- 		       &ffi_type_float, args) == FFI_OK);
- 
-     ffi_call(&cif, FFI_FN(many), &f, values);
- 
-     ff =  many(fa[0], fa[1],
- 	       fa[2], fa[3],
- 	       fa[4], fa[5],
- 	       fa[6], fa[7],
- 	       fa[8], fa[9],
- 	       fa[10],fa[11],fa[12]);
- 
--    if (f - ff < FLT_EPSILON)
-+    if (fabs(f - ff) < FLT_EPSILON)
-       exit(0);
-     else
-       abort();
- }
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/many2.c b/js/src/ctypes/libffi/testsuite/libffi.call/many2.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/many2.c
-@@ -0,0 +1,57 @@
-+/* Area:        ffi_call
-+   Purpose:     Check uint8_t arguments.
-+   Limitations: none.
-+   PR:          PR45677.
-+   Originator:  Dan Witte <dwitte@gmail.com> 20100916  */
-+
-+/* { dg-do run } */
-+
-+#include "ffitest.h"
-+
-+#define NARGS 7
-+
-+typedef unsigned char u8;
-+
-+#ifdef __GNUC__
-+__attribute__((noinline))
-+#endif
-+uint8_t
-+foo (uint8_t a, uint8_t b, uint8_t c, uint8_t d,
-+     uint8_t e, uint8_t f, uint8_t g)
-+{
-+  return a + b + c + d + e + f + g;
-+}
-+
-+uint8_t ABI_ATTR
-+bar (uint8_t a, uint8_t b, uint8_t c, uint8_t d,
-+     uint8_t e, uint8_t f, uint8_t g)
-+{
-+  return foo (a, b, c, d, e, f, g);
-+}
-+
-+int
-+main (void)
-+{
-+  ffi_type *ffitypes[NARGS];
-+  int i;
-+  ffi_cif cif;
-+  ffi_arg result = 0;
-+  uint8_t args[NARGS];
-+  void *argptrs[NARGS];
-+
-+  for (i = 0; i < NARGS; ++i)
-+    ffitypes[i] = &ffi_type_uint8;
-+
-+  CHECK (ffi_prep_cif (&cif, ABI_NUM, NARGS,
-+		       &ffi_type_uint8, ffitypes) == FFI_OK);
-+
-+  for (i = 0; i < NARGS; ++i)
-+    {
-+      args[i] = i;
-+      argptrs[i] = &args[i];
-+    }
-+  ffi_call (&cif, FFI_FN (bar), &result, argptrs);
-+
-+  CHECK (result == 21);
-+  return 0;
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/many_win32.c b/js/src/ctypes/libffi/testsuite/libffi.call/many_win32.c
-deleted file mode 100644
---- a/js/src/ctypes/libffi/testsuite/libffi.call/many_win32.c
-+++ /dev/null
-@@ -1,63 +0,0 @@
--/* Area:	ffi_call
--   Purpose:	Check stdcall many call on X86_WIN32 systems.
--   Limitations:	none.
--   PR:		none.
--   Originator:	From the original ffitest.c  */
--
--/* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */
--
--#include "ffitest.h"
--#include <float.h>
--
--static float __attribute__((stdcall)) stdcall_many(float f1,
--						   float f2,
--						   float f3,
--						   float f4,
--						   float f5,
--						   float f6,
--						   float f7,
--						   float f8,
--						   float f9,
--						   float f10,
--						   float f11,
--						   float f12,
--						   float f13)
--{
--  return ((f1/f2+f3/f4+f5/f6+f7/f8+f9/f10+f11/f12) * f13);
--}
--
--int main (void)
--{
--  ffi_cif cif;
--  ffi_type *args[13];
--  void *values[13];
--  float fa[13];
--  float f, ff;
--  unsigned long ul;
--
--  for (ul = 0; ul < 13; ul++)
--    {
--      args[ul] = &ffi_type_float;
--      values[ul] = &fa[ul];
--	fa[ul] = (float) ul;
--    }
--
--  /* Initialize the cif */
--  CHECK(ffi_prep_cif(&cif, FFI_STDCALL, 13,
--		     &ffi_type_float, args) == FFI_OK);
--
--  ff =  stdcall_many(fa[0], fa[1],
--		     fa[2], fa[3],
--		     fa[4], fa[5],
--		     fa[6], fa[7],
--		     fa[8], fa[9],
--		     fa[10], fa[11], fa[12]);
--
--  ffi_call(&cif, FFI_FN(stdcall_many), &f, values);
--
--  if (f - ff < FLT_EPSILON)
--    printf("stdcall many arg tests ok!\n");
--  else
--    CHECK(0);
--  exit(0);
--}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/negint.c b/js/src/ctypes/libffi/testsuite/libffi.call/negint.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/negint.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/negint.c
-@@ -1,16 +1,15 @@
- /* Area:	ffi_call
-    Purpose:	Check that negative integers are passed correctly.
-    Limitations:	none.
-    PR:		none.
-    Originator:	From the original ffitest.c  */
- 
- /* { dg-do run } */
--/* { dg-options -O2 } */
- 
- #include "ffitest.h"
- 
- static int checking(int a, short b, signed char c)
- {
- 
-   return (a < 0 && b < 0 && c < 0);
- }
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct.c
-@@ -72,37 +72,37 @@ int main (void)
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[5];
-   ffi_type* cls_struct_fields1[5];
-   ffi_type* cls_struct_fields2[5];
-   ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6};
-+  struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0};
-+  struct cls_struct_combined g_dbl = {{4.0, 5.0, 6},
-+				      {3, 1.0, 8.0}};
-+  struct cls_struct_combined res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
-   cls_struct_type1.size = 0;
-   cls_struct_type1.alignment = 0;
-   cls_struct_type1.type = FFI_TYPE_STRUCT;
-   cls_struct_type1.elements = cls_struct_fields1;
- 
-   cls_struct_type2.size = 0;
-   cls_struct_type2.alignment = 0;
-   cls_struct_type2.type = FFI_TYPE_STRUCT;
-   cls_struct_type2.elements = cls_struct_fields2;
- 
--  struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6};
--  struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0};
--  struct cls_struct_combined g_dbl = {{4.0, 5.0, 6},
--				      {3, 1.0, 8.0}};
--  struct cls_struct_combined res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_double;
-   cls_struct_fields[1] = &ffi_type_float;
-   cls_struct_fields[2] = &ffi_type_sint;
-   cls_struct_fields[3] = NULL;
- 
-   cls_struct_fields1[0] = &ffi_type_sint;
-   cls_struct_fields1[1] = &ffi_type_double;
-   cls_struct_fields1[2] = &ffi_type_float;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct1.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct1.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct1.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct1.c
-@@ -76,38 +76,38 @@ int main (void)
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[5];
-   ffi_type* cls_struct_fields[5];
-   ffi_type* cls_struct_fields1[5];
-   ffi_type* cls_struct_fields2[5];
-   ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6};
-+  struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0};
-+  struct cls_struct_combined g_dbl = {{4.0, 5.0, 6},
-+				      {3, 1.0, 8.0}};
-+  struct cls_struct_16byte1 h_dbl = { 3.0, 2.0, 4};
-+  struct cls_struct_combined res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
-   cls_struct_type1.size = 0;
-   cls_struct_type1.alignment = 0;
-   cls_struct_type1.type = FFI_TYPE_STRUCT;
-   cls_struct_type1.elements = cls_struct_fields1;
- 
-   cls_struct_type2.size = 0;
-   cls_struct_type2.alignment = 0;
-   cls_struct_type2.type = FFI_TYPE_STRUCT;
-   cls_struct_type2.elements = cls_struct_fields2;
- 
--  struct cls_struct_16byte1 e_dbl = { 9.0, 2.0, 6};
--  struct cls_struct_16byte2 f_dbl = { 1, 2.0, 3.0};
--  struct cls_struct_combined g_dbl = {{4.0, 5.0, 6},
--				      {3, 1.0, 8.0}};
--  struct cls_struct_16byte1 h_dbl = { 3.0, 2.0, 4};
--  struct cls_struct_combined res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_double;
-   cls_struct_fields[1] = &ffi_type_float;
-   cls_struct_fields[2] = &ffi_type_sint;
-   cls_struct_fields[3] = NULL;
- 
-   cls_struct_fields1[0] = &ffi_type_sint;
-   cls_struct_fields1[1] = &ffi_type_double;
-   cls_struct_fields1[2] = &ffi_type_float;
-@@ -151,11 +151,11 @@ int main (void)
- 	     (code))(e_dbl, f_dbl, g_dbl, h_dbl);
-   /* { dg-output "\n9 2 6 1 2 3 4 5 6 3 1 8 3 2 4: 15 10 13 10 12 13" } */
-   CHECK( res_dbl.d.a == (e_dbl.a + f_dbl.dd + g_dbl.d.a));
-   CHECK( res_dbl.d.b == (e_dbl.b + f_dbl.ff + g_dbl.d.b));
-   CHECK( res_dbl.d.c == (e_dbl.c + f_dbl.ii + g_dbl.d.c));
-   CHECK( res_dbl.e.ii == (e_dbl.c + f_dbl.ii + g_dbl.e.ii));
-   CHECK( res_dbl.e.dd == (e_dbl.a + f_dbl.dd + g_dbl.e.dd));
-   CHECK( res_dbl.e.ff == (e_dbl.b + f_dbl.ff + g_dbl.e.ff));
--  //  CHECK( 1 == 0);
-+  /*  CHECK( 1 == 0); */
-   exit(0);
- }
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct10.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct10.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct10.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct10.c
-@@ -62,37 +62,37 @@ int main (void)
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[4];
-   ffi_type* cls_struct_fields[3];
-   ffi_type* cls_struct_fields1[4];
-   ffi_type* cls_struct_fields2[3];
-   ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2;
-   ffi_type* dbl_arg_types[4];
- 
-+  struct A e_dbl = { 1LL, 7};
-+  struct B f_dbl = { 99, {12LL , 127}, 255};
-+  struct C g_dbl = { 2LL, 9};
-+
-+  struct B res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
-   cls_struct_type1.size = 0;
-   cls_struct_type1.alignment = 0;
-   cls_struct_type1.type = FFI_TYPE_STRUCT;
-   cls_struct_type1.elements = cls_struct_fields1;
- 
-   cls_struct_type2.size = 0;
-   cls_struct_type2.alignment = 0;
-   cls_struct_type2.type = FFI_TYPE_STRUCT;
-   cls_struct_type2.elements = cls_struct_fields2;
- 
--  struct A e_dbl = { 1LL, 7};
--  struct B f_dbl = { 99, {12LL , 127}, 255};
--  struct C g_dbl = { 2LL, 9};
--
--  struct B res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uint64;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = NULL;
- 
-   cls_struct_fields1[0] = &ffi_type_uchar;
-   cls_struct_fields1[1] = &cls_struct_type;
-   cls_struct_fields1[2] = &ffi_type_uint;
-   cls_struct_fields1[3] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct11.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct11.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct11.c
-@@ -0,0 +1,121 @@
-+/* Area:	ffi_call, closure_call
-+   Purpose:	Check parameter passing with nested structs
-+		of a single type.  This tests the special cases
-+		for homogeneous floating-point aggregates in the
-+		AArch64 PCS.
-+   Limitations:	none.
-+   PR:		none.
-+   Originator:  ARM Ltd.  */
-+
-+/* { dg-do run } */
-+#include "ffitest.h"
-+
-+typedef struct A {
-+  float a_x;
-+  float a_y;
-+} A;
-+
-+typedef struct B {
-+  float b_x;
-+  float b_y;
-+} B;
-+
-+typedef struct C {
-+  A a;
-+  B b;
-+} C;
-+
-+static C C_fn (int x, int y, int z, C source, int i, int j, int k)
-+{
-+  C result;
-+  result.a.a_x = source.a.a_x;
-+  result.a.a_y = source.a.a_y;
-+  result.b.b_x = source.b.b_x;
-+  result.b.b_y = source.b.b_y;
-+
-+  printf ("%d, %d, %d, %d, %d, %d\n", x, y, z, i, j, k);
-+
-+  printf ("%.1f, %.1f, %.1f, %.1f, "
-+	  "%.1f, %.1f, %.1f, %.1f\n",
-+	  source.a.a_x, source.a.a_y,
-+	  source.b.b_x, source.b.b_y,
-+	  result.a.a_x, result.a.a_y,
-+	  result.b.b_x, result.b.b_y);
-+
-+  return result;
-+}
-+
-+int main (void)
-+{
-+  ffi_cif cif;
-+
-+  ffi_type* struct_fields_source_a[3];
-+  ffi_type* struct_fields_source_b[3];
-+  ffi_type* struct_fields_source_c[3];
-+  ffi_type* arg_types[8];
-+
-+  ffi_type struct_type_a, struct_type_b, struct_type_c;
-+
-+  struct A source_fld_a = {1.0, 2.0};
-+  struct B source_fld_b = {4.0, 8.0};
-+  int k = 1;
-+
-+  struct C result;
-+  struct C source = {source_fld_a, source_fld_b};
-+
-+  struct_type_a.size = 0;
-+  struct_type_a.alignment = 0;
-+  struct_type_a.type = FFI_TYPE_STRUCT;
-+  struct_type_a.elements = struct_fields_source_a;
-+
-+  struct_type_b.size = 0;
-+  struct_type_b.alignment = 0;
-+  struct_type_b.type = FFI_TYPE_STRUCT;
-+  struct_type_b.elements = struct_fields_source_b;
-+
-+  struct_type_c.size = 0;
-+  struct_type_c.alignment = 0;
-+  struct_type_c.type = FFI_TYPE_STRUCT;
-+  struct_type_c.elements = struct_fields_source_c;
-+
-+  struct_fields_source_a[0] = &ffi_type_float;
-+  struct_fields_source_a[1] = &ffi_type_float;
-+  struct_fields_source_a[2] = NULL;
-+
-+  struct_fields_source_b[0] = &ffi_type_float;
-+  struct_fields_source_b[1] = &ffi_type_float;
-+  struct_fields_source_b[2] = NULL;
-+
-+  struct_fields_source_c[0] = &struct_type_a;
-+  struct_fields_source_c[1] = &struct_type_b;
-+  struct_fields_source_c[2] = NULL;
-+
-+  arg_types[0] = &ffi_type_sint32;
-+  arg_types[1] = &ffi_type_sint32;
-+  arg_types[2] = &ffi_type_sint32;
-+  arg_types[3] = &struct_type_c;
-+  arg_types[4] = &ffi_type_sint32;
-+  arg_types[5] = &ffi_type_sint32;
-+  arg_types[6] = &ffi_type_sint32;
-+  arg_types[7] = NULL;
-+
-+  void *args[7];
-+  args[0] = &k;
-+  args[1] = &k;
-+  args[2] = &k;
-+  args[3] = &source;
-+  args[4] = &k;
-+  args[5] = &k;
-+  args[6] = &k;
-+  CHECK (ffi_prep_cif (&cif, FFI_DEFAULT_ABI, 7, &struct_type_c,
-+		       arg_types) == FFI_OK);
-+
-+  ffi_call (&cif, FFI_FN (C_fn), &result, args);
-+  /* { dg-output "1, 1, 1, 1, 1, 1\n" } */
-+  /* { dg-output "1.0, 2.0, 4.0, 8.0, 1.0, 2.0, 4.0, 8.0" } */
-+  CHECK (result.a.a_x == source.a.a_x);
-+  CHECK (result.a.a_y == source.a.a_y);
-+  CHECK (result.b.b_x == source.b.b_x);
-+  CHECK (result.b.b_y == source.b.b_y);
-+  exit (0);
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct2.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct2.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct2.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct2.c
-@@ -52,31 +52,31 @@ int main (void)
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[3];
-   ffi_type* cls_struct_fields[3];
-   ffi_type* cls_struct_fields1[3];
-   ffi_type cls_struct_type, cls_struct_type1;
-   ffi_type* dbl_arg_types[3];
- 
-+  struct A e_dbl = { 1, 7};
-+  struct B f_dbl = {{12 , 127}, 99};
-+
-+  struct B res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
-   cls_struct_type1.size = 0;
-   cls_struct_type1.alignment = 0;
-   cls_struct_type1.type = FFI_TYPE_STRUCT;
-   cls_struct_type1.elements = cls_struct_fields1;
- 
--  struct A e_dbl = { 1, 7};
--  struct B f_dbl = {{12 , 127}, 99};
--
--  struct B res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_ulong;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = NULL;
- 
-   cls_struct_fields1[0] = &cls_struct_type;
-   cls_struct_fields1[1] = &ffi_type_uchar;
-   cls_struct_fields1[2] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct3.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct3.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct3.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct3.c
-@@ -53,31 +53,31 @@ int main (void)
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[3];
-   ffi_type* cls_struct_fields[3];
-   ffi_type* cls_struct_fields1[3];
-   ffi_type cls_struct_type, cls_struct_type1;
-   ffi_type* dbl_arg_types[3];
- 
-+  struct A e_dbl = { 1LL, 7};
-+  struct B f_dbl = {{12LL , 127}, 99};
-+
-+  struct B res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
-   cls_struct_type1.size = 0;
-   cls_struct_type1.alignment = 0;
-   cls_struct_type1.type = FFI_TYPE_STRUCT;
-   cls_struct_type1.elements = cls_struct_fields1;
- 
--  struct A e_dbl = { 1LL, 7};
--  struct B f_dbl = {{12LL , 127}, 99};
--
--  struct B res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uint64;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = NULL;
- 
-   cls_struct_fields1[0] = &cls_struct_type;
-   cls_struct_fields1[1] = &ffi_type_uchar;
-   cls_struct_fields1[2] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct4.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct4.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct4.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct4.c
-@@ -53,31 +53,31 @@ int main (void)
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[3];
-   ffi_type* cls_struct_fields[3];
-   ffi_type* cls_struct_fields1[3];
-   ffi_type cls_struct_type, cls_struct_type1;
-   ffi_type* dbl_arg_types[3];
- 
-+  struct A e_dbl = { 1.0, 7};
-+  struct B f_dbl = {{12.0 , 127}, 99};
-+
-+  struct B res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
-   cls_struct_type1.size = 0;
-   cls_struct_type1.alignment = 0;
-   cls_struct_type1.type = FFI_TYPE_STRUCT;
-   cls_struct_type1.elements = cls_struct_fields1;
- 
--  struct A e_dbl = { 1.0, 7};
--  struct B f_dbl = {{12.0 , 127}, 99};
--
--  struct B res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_double;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = NULL;
- 
-   cls_struct_fields1[0] = &cls_struct_type;
-   cls_struct_fields1[1] = &ffi_type_uchar;
-   cls_struct_fields1[2] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct5.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct5.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct5.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct5.c
-@@ -53,31 +53,31 @@ int main (void)
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[3];
-   ffi_type* cls_struct_fields[3];
-   ffi_type* cls_struct_fields1[3];
-   ffi_type cls_struct_type, cls_struct_type1;
-   ffi_type* dbl_arg_types[3];
- 
-+  struct A e_dbl = { 1.0, 7};
-+  struct B f_dbl = {{12.0 , 127}, 99};
-+
-+  struct B res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
-   cls_struct_type1.size = 0;
-   cls_struct_type1.alignment = 0;
-   cls_struct_type1.type = FFI_TYPE_STRUCT;
-   cls_struct_type1.elements = cls_struct_fields1;
- 
--  struct A e_dbl = { 1.0, 7};
--  struct B f_dbl = {{12.0 , 127}, 99};
--
--  struct B res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_longdouble;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = NULL;
- 
-   cls_struct_fields1[0] = &cls_struct_type;
-   cls_struct_fields1[1] = &ffi_type_uchar;
-   cls_struct_fields1[2] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct6.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct6.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct6.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct6.c
-@@ -61,37 +61,37 @@ int main (void)
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[4];
-   ffi_type* cls_struct_fields[3];
-   ffi_type* cls_struct_fields1[3];
-   ffi_type* cls_struct_fields2[3];
-   ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2;
-   ffi_type* dbl_arg_types[4];
- 
-+  struct A e_dbl = { 1.0, 7};
-+  struct B f_dbl = {{12.0 , 127}, 99};
-+  struct C g_dbl = { 2, 9};
-+
-+  struct B res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
-   cls_struct_type1.size = 0;
-   cls_struct_type1.alignment = 0;
-   cls_struct_type1.type = FFI_TYPE_STRUCT;
-   cls_struct_type1.elements = cls_struct_fields1;
- 
-   cls_struct_type2.size = 0;
-   cls_struct_type2.alignment = 0;
-   cls_struct_type2.type = FFI_TYPE_STRUCT;
-   cls_struct_type2.elements = cls_struct_fields2;
- 
--  struct A e_dbl = { 1.0, 7};
--  struct B f_dbl = {{12.0 , 127}, 99};
--  struct C g_dbl = { 2, 9};
--
--  struct B res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_double;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = NULL;
- 
-   cls_struct_fields1[0] = &cls_struct_type;
-   cls_struct_fields1[1] = &ffi_type_uchar;
-   cls_struct_fields1[2] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct7.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct7.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct7.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct7.c
-@@ -53,31 +53,31 @@ int main (void)
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[3];
-   ffi_type* cls_struct_fields[3];
-   ffi_type* cls_struct_fields1[3];
-   ffi_type cls_struct_type, cls_struct_type1;
-   ffi_type* dbl_arg_types[3];
- 
-+  struct A e_dbl = { 1LL, 7};
-+  struct B f_dbl = {{12.0 , 127}, 99};
-+
-+  struct B res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
-   cls_struct_type1.size = 0;
-   cls_struct_type1.alignment = 0;
-   cls_struct_type1.type = FFI_TYPE_STRUCT;
-   cls_struct_type1.elements = cls_struct_fields1;
- 
--  struct A e_dbl = { 1LL, 7};
--  struct B f_dbl = {{12.0 , 127}, 99};
--
--  struct B res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uint64;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = NULL;
- 
-   cls_struct_fields1[0] = &cls_struct_type;
-   cls_struct_fields1[1] = &ffi_type_uchar;
-   cls_struct_fields1[2] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct8.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct8.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct8.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct8.c
-@@ -61,37 +61,37 @@ int main (void)
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[4];
-   ffi_type* cls_struct_fields[3];
-   ffi_type* cls_struct_fields1[3];
-   ffi_type* cls_struct_fields2[3];
-   ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2;
-   ffi_type* dbl_arg_types[4];
- 
-+  struct A e_dbl = { 1LL, 7};
-+  struct B f_dbl = {{12LL , 127}, 99};
-+  struct C g_dbl = { 2LL, 9};
-+
-+  struct B res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
-   cls_struct_type1.size = 0;
-   cls_struct_type1.alignment = 0;
-   cls_struct_type1.type = FFI_TYPE_STRUCT;
-   cls_struct_type1.elements = cls_struct_fields1;
- 
-   cls_struct_type2.size = 0;
-   cls_struct_type2.alignment = 0;
-   cls_struct_type2.type = FFI_TYPE_STRUCT;
-   cls_struct_type2.elements = cls_struct_fields2;
- 
--  struct A e_dbl = { 1LL, 7};
--  struct B f_dbl = {{12LL , 127}, 99};
--  struct C g_dbl = { 2LL, 9};
--
--  struct B res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uint64;
-   cls_struct_fields[1] = &ffi_type_uchar;
-   cls_struct_fields[2] = NULL;
- 
-   cls_struct_fields1[0] = &cls_struct_type;
-   cls_struct_fields1[1] = &ffi_type_uchar;
-   cls_struct_fields1[2] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct9.c b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct9.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct9.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/nested_struct9.c
-@@ -61,37 +61,37 @@ int main (void)
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   void* args_dbl[4];
-   ffi_type* cls_struct_fields[3];
-   ffi_type* cls_struct_fields1[3];
-   ffi_type* cls_struct_fields2[3];
-   ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2;
-   ffi_type* dbl_arg_types[4];
- 
-+  struct A e_dbl = { 1, 7LL};
-+  struct B f_dbl = {{12.0 , 127}, 99};
-+  struct C g_dbl = { 2, 9};
-+
-+  struct B res_dbl;
-+
-   cls_struct_type.size = 0;
-   cls_struct_type.alignment = 0;
-   cls_struct_type.type = FFI_TYPE_STRUCT;
-   cls_struct_type.elements = cls_struct_fields;
- 
-   cls_struct_type1.size = 0;
-   cls_struct_type1.alignment = 0;
-   cls_struct_type1.type = FFI_TYPE_STRUCT;
-   cls_struct_type1.elements = cls_struct_fields1;
- 
-   cls_struct_type2.size = 0;
-   cls_struct_type2.alignment = 0;
-   cls_struct_type2.type = FFI_TYPE_STRUCT;
-   cls_struct_type2.elements = cls_struct_fields2;
- 
--  struct A e_dbl = { 1, 7LL};
--  struct B f_dbl = {{12.0 , 127}, 99};
--  struct C g_dbl = { 2, 9};
--
--  struct B res_dbl;
--
-   cls_struct_fields[0] = &ffi_type_uchar;
-   cls_struct_fields[1] = &ffi_type_uint64;
-   cls_struct_fields[2] = NULL;
- 
-   cls_struct_fields1[0] = &cls_struct_type;
-   cls_struct_fields1[1] = &ffi_type_uchar;
-   cls_struct_fields1[2] = NULL;
- 
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/return_dbl.c b/js/src/ctypes/libffi/testsuite/libffi.call/return_dbl.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/return_dbl.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/return_dbl.c
-@@ -4,16 +4,17 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20050212  */
- 
- /* { dg-do run } */
- #include "ffitest.h"
- 
- static double return_dbl(double dbl)
- {
-+  printf ("%f\n", dbl);
-   return 2 * dbl;
- }
- int main (void)
- {
-   ffi_cif cif;
-   ffi_type *args[MAX_ARGS];
-   void *values[MAX_ARGS];
-   double dbl, rdbl;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/return_sc.c b/js/src/ctypes/libffi/testsuite/libffi.call/return_sc.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/return_sc.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/return_sc.c
-@@ -25,12 +25,12 @@ int main (void)
-   /* Initialize the cif */
-   CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
- 		     &ffi_type_schar, args) == FFI_OK);
- 
-   for (sc = (signed char) -127;
-        sc < (signed char) 127; sc++)
-     {
-       ffi_call(&cif, FFI_FN(return_sc), &rint, values);
--      CHECK(rint == (ffi_arg) sc);
-+      CHECK((signed char)rint == sc);
-     }
-   exit(0);
- }
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/return_uc.c b/js/src/ctypes/libffi/testsuite/libffi.call/return_uc.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/return_uc.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/return_uc.c
-@@ -27,12 +27,12 @@ int main (void)
-   /* Initialize the cif */
-   CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
- 		     &ffi_type_uchar, args) == FFI_OK);
- 
-   for (uc = (unsigned char) '\x00';
-        uc < (unsigned char) '\xff'; uc++)
-     {
-       ffi_call(&cif, FFI_FN(return_uc), &rint, values);
--      CHECK(rint == (signed int) uc);
-+      CHECK((unsigned char)rint == uc);
-     }
-   exit(0);
- }
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/stret_large.c b/js/src/ctypes/libffi/testsuite/libffi.call/stret_large.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/stret_large.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/stret_large.c
-@@ -4,18 +4,18 @@
- 				the gp and fp register count on Darwin/AIX/ppc64.
-    Limitations:	none.
-    PR:			none.
-    Originator:	Blake Chaffin	6/21/2007	*/
- 
- /* { dg-do run { xfail strongarm*-*-* xscale*-*-*  } } */
- #include "ffitest.h"
- 
--// 13 FPRs: 104 bytes
--// 14 FPRs: 112 bytes
-+/* 13 FPRs: 104 bytes */
-+/* 14 FPRs: 112 bytes */
- 
- typedef struct struct_108byte {
- 	double a;
- 	double b;
- 	double c;
- 	double d;
- 	double e;
- 	double f;
-@@ -77,27 +77,27 @@ int main (void)
- 	ffi_cif cif;
-         void *code;
- 	ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
- 	void* args_dbl[5];
- 	ffi_type* cls_struct_fields[15];
- 	ffi_type cls_struct_type;
- 	ffi_type* dbl_arg_types[5];
- 
--	cls_struct_type.size = 0;
--	cls_struct_type.alignment = 0;
--	cls_struct_type.type = FFI_TYPE_STRUCT;
--	cls_struct_type.elements = cls_struct_fields;
--
- 	struct_108byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 1.0, 2.0, 3.0, 7.0, 2.0, 7 };
- 	struct_108byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4.0, 5.0, 7.0, 9.0, 1.0, 4 };
- 	struct_108byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 8.0, 6.0, 1.0, 4.0, 0.0, 3 };
- 	struct_108byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 9.0, 2.0, 6.0, 5.0, 3.0, 2 };
- 	struct_108byte res_dbl;
- 
-+	cls_struct_type.size = 0;
-+	cls_struct_type.alignment = 0;
-+	cls_struct_type.type = FFI_TYPE_STRUCT;
-+	cls_struct_type.elements = cls_struct_fields;
-+
- 	cls_struct_fields[0] = &ffi_type_double;
- 	cls_struct_fields[1] = &ffi_type_double;
- 	cls_struct_fields[2] = &ffi_type_double;
- 	cls_struct_fields[3] = &ffi_type_double;
- 	cls_struct_fields[4] = &ffi_type_double;
- 	cls_struct_fields[5] = &ffi_type_double;
- 	cls_struct_fields[6] = &ffi_type_double;
- 	cls_struct_fields[7] = &ffi_type_double;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/stret_large2.c b/js/src/ctypes/libffi/testsuite/libffi.call/stret_large2.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/stret_large2.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/stret_large2.c
-@@ -4,18 +4,18 @@
- 				the gp and fp register count on Darwin/AIX/ppc64.
-    Limitations:	none.
-    PR:			none.
-    Originator:	Blake Chaffin	6/21/2007	*/
- 
- /* { dg-do run { xfail strongarm*-*-* xscale*-*-*  } } */
- #include "ffitest.h"
- 
--// 13 FPRs: 104 bytes
--// 14 FPRs: 112 bytes
-+/* 13 FPRs: 104 bytes */
-+/* 14 FPRs: 112 bytes */
- 
- typedef struct struct_116byte {
- 	double a;
- 	double b;
- 	double c;
- 	double d;
- 	double e;
- 	double f;
-@@ -79,27 +79,27 @@ int main (void)
- 	ffi_cif cif;
-         void *code;
- 	ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
- 	void* args_dbl[5];
- 	ffi_type* cls_struct_fields[16];
- 	ffi_type cls_struct_type;
- 	ffi_type* dbl_arg_types[5];
- 
--	cls_struct_type.size = 0;
--	cls_struct_type.alignment = 0;
--	cls_struct_type.type = FFI_TYPE_STRUCT;
--	cls_struct_type.elements = cls_struct_fields;
--
- 	struct_116byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 7 };
- 	struct_116byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4.0, 5.0, 7.0, 9.0, 1.0, 6.0, 4 };
- 	struct_116byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 8.0, 6.0, 1.0, 4.0, 0.0, 7.0, 3 };
- 	struct_116byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 9.0, 2.0, 6.0, 5.0, 3.0, 8.0, 2 };
- 	struct_116byte res_dbl;
- 
-+	cls_struct_type.size = 0;
-+	cls_struct_type.alignment = 0;
-+	cls_struct_type.type = FFI_TYPE_STRUCT;
-+	cls_struct_type.elements = cls_struct_fields;
-+
- 	cls_struct_fields[0] = &ffi_type_double;
- 	cls_struct_fields[1] = &ffi_type_double;
- 	cls_struct_fields[2] = &ffi_type_double;
- 	cls_struct_fields[3] = &ffi_type_double;
- 	cls_struct_fields[4] = &ffi_type_double;
- 	cls_struct_fields[5] = &ffi_type_double;
- 	cls_struct_fields[6] = &ffi_type_double;
- 	cls_struct_fields[7] = &ffi_type_double;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium.c b/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium.c
-@@ -63,27 +63,27 @@ int main (void)
- 	ffi_cif cif;
-         void *code;
- 	ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
- 	void* args_dbl[5];
- 	ffi_type* cls_struct_fields[10];
- 	ffi_type cls_struct_type;
- 	ffi_type* dbl_arg_types[5];
- 
--	cls_struct_type.size = 0;
--	cls_struct_type.alignment = 0;
--	cls_struct_type.type = FFI_TYPE_STRUCT;
--	cls_struct_type.elements = cls_struct_fields;
--
- 	struct_72byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 7.0 };
- 	struct_72byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4.0 };
- 	struct_72byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 3.0 };
- 	struct_72byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 2.0 };
- 	struct_72byte res_dbl;
- 
-+	cls_struct_type.size = 0;
-+	cls_struct_type.alignment = 0;
-+	cls_struct_type.type = FFI_TYPE_STRUCT;
-+	cls_struct_type.elements = cls_struct_fields;
-+
- 	cls_struct_fields[0] = &ffi_type_double;
- 	cls_struct_fields[1] = &ffi_type_double;
- 	cls_struct_fields[2] = &ffi_type_double;
- 	cls_struct_fields[3] = &ffi_type_double;
- 	cls_struct_fields[4] = &ffi_type_double;
- 	cls_struct_fields[5] = &ffi_type_double;
- 	cls_struct_fields[6] = &ffi_type_double;
- 	cls_struct_fields[7] = &ffi_type_double;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium2.c b/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium2.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium2.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/stret_medium2.c
-@@ -64,27 +64,27 @@ int main (void)
- 	ffi_cif cif;
-         void *code;
- 	ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
- 	void* args_dbl[5];
- 	ffi_type* cls_struct_fields[10];
- 	ffi_type cls_struct_type;
- 	ffi_type* dbl_arg_types[5];
- 
--	cls_struct_type.size = 0;
--	cls_struct_type.alignment = 0;
--	cls_struct_type.type = FFI_TYPE_STRUCT;
--	cls_struct_type.elements = cls_struct_fields;
--
- 	struct_72byte e_dbl = { 9.0, 2.0, 6.0, 5.0, 3.0, 4.0, 8.0, 1.0, 7 };
- 	struct_72byte f_dbl = { 1.0, 2.0, 3.0, 7.0, 2.0, 5.0, 6.0, 7.0, 4 };
- 	struct_72byte g_dbl = { 4.0, 5.0, 7.0, 9.0, 1.0, 1.0, 2.0, 9.0, 3 };
- 	struct_72byte h_dbl = { 8.0, 6.0, 1.0, 4.0, 0.0, 3.0, 3.0, 1.0, 2 };
- 	struct_72byte res_dbl;
- 
-+	cls_struct_type.size = 0;
-+	cls_struct_type.alignment = 0;
-+	cls_struct_type.type = FFI_TYPE_STRUCT;
-+	cls_struct_type.elements = cls_struct_fields;
-+
- 	cls_struct_fields[0] = &ffi_type_double;
- 	cls_struct_fields[1] = &ffi_type_double;
- 	cls_struct_fields[2] = &ffi_type_double;
- 	cls_struct_fields[3] = &ffi_type_double;
- 	cls_struct_fields[4] = &ffi_type_double;
- 	cls_struct_fields[5] = &ffi_type_double;
- 	cls_struct_fields[6] = &ffi_type_double;
- 	cls_struct_fields[7] = &ffi_type_double;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/strlen.c b/js/src/ctypes/libffi/testsuite/libffi.call/strlen.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/strlen.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/strlen.c
-@@ -2,34 +2,34 @@
-    Purpose:	Check strlen function call.
-    Limitations:	none.
-    PR:		none.
-    Originator:	From the original ffitest.c  */
- 
- /* { dg-do run } */
- #include "ffitest.h"
- 
--static size_t my_strlen(char *s)
-+static size_t ABI_ATTR my_strlen(char *s)
- {
-   return (strlen(s));
- }
- 
- int main (void)
- {
-   ffi_cif cif;
-   ffi_type *args[MAX_ARGS];
-   void *values[MAX_ARGS];
-   ffi_arg rint;
-   char *s;
- 
-   args[0] = &ffi_type_pointer;
-   values[0] = (void*) &s;
-   
-   /* Initialize the cif */
--  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, 
-+  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1,
- 		     &ffi_type_sint, args) == FFI_OK);
-   
-   s = "a";
-   ffi_call(&cif, FFI_FN(my_strlen), &rint, values);
-   CHECK(rint == 1);
-   
-   s = "1234567";
-   ffi_call(&cif, FFI_FN(my_strlen), &rint, values);
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/strlen2.c b/js/src/ctypes/libffi/testsuite/libffi.call/strlen2.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/strlen2.c
-@@ -0,0 +1,49 @@
-+/* Area:	ffi_call
-+   Purpose:	Check strlen function call with additional arguments.
-+   Limitations:	none.
-+   PR:		none.
-+   Originator:	From the original ffitest.c  */
-+
-+/* { dg-do run } */
-+
-+#include "ffitest.h"
-+
-+static size_t ABI_ATTR my_f(char *s, float a)
-+{
-+  return (size_t) ((int) strlen(s) + (int) a);
-+}
-+
-+int main (void)
-+{
-+  ffi_cif cif;
-+  ffi_type *args[MAX_ARGS];
-+  void *values[MAX_ARGS];
-+  ffi_arg rint;
-+  char *s;
-+  float v2;
-+  args[0] = &ffi_type_pointer;
-+  args[1] = &ffi_type_float;
-+  values[0] = (void*) &s;
-+  values[1] = (void*) &v2;
-+  
-+  /* Initialize the cif */
-+  CHECK(ffi_prep_cif(&cif, ABI_NUM, 2,
-+		       &ffi_type_sint, args) == FFI_OK);
-+  
-+  s = "a";
-+  v2 = 0.0;
-+  ffi_call(&cif, FFI_FN(my_f), &rint, values);
-+  CHECK(rint == 1);
-+  
-+  s = "1234567";
-+  v2 = -1.0;
-+  ffi_call(&cif, FFI_FN(my_f), &rint, values);
-+  CHECK(rint == 6);
-+  
-+  s = "1234567890123456789012345";
-+  v2 = 1.0;
-+  ffi_call(&cif, FFI_FN(my_f), &rint, values);
-+  CHECK(rint == 26);
-+  
-+  exit(0);
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/strlen3.c b/js/src/ctypes/libffi/testsuite/libffi.call/strlen3.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/strlen3.c
-@@ -0,0 +1,49 @@
-+/* Area:	ffi_call
-+   Purpose:	Check strlen function call with additional arguments.
-+   Limitations:	none.
-+   PR:		none.
-+   Originator:	From the original ffitest.c  */
-+
-+/* { dg-do run } */
-+
-+#include "ffitest.h"
-+
-+static size_t ABI_ATTR my_f(float a, char *s)
-+{
-+  return (size_t) ((int) strlen(s) + (int) a);
-+}
-+
-+int main (void)
-+{
-+  ffi_cif cif;
-+  ffi_type *args[MAX_ARGS];
-+  void *values[MAX_ARGS];
-+  ffi_arg rint;
-+  char *s;
-+  float v2;
-+  args[1] = &ffi_type_pointer;
-+  args[0] = &ffi_type_float;
-+  values[1] = (void*) &s;
-+  values[0] = (void*) &v2;
-+  
-+  /* Initialize the cif */
-+  CHECK(ffi_prep_cif(&cif, ABI_NUM, 2,
-+		       &ffi_type_sint, args) == FFI_OK);
-+  
-+  s = "a";
-+  v2 = 0.0;
-+  ffi_call(&cif, FFI_FN(my_f), &rint, values);
-+  CHECK(rint == 1);
-+  
-+  s = "1234567";
-+  v2 = -1.0;
-+  ffi_call(&cif, FFI_FN(my_f), &rint, values);
-+  CHECK(rint == 6);
-+  
-+  s = "1234567890123456789012345";
-+  v2 = 1.0;
-+  ffi_call(&cif, FFI_FN(my_f), &rint, values);
-+  CHECK(rint == 26);
-+  
-+  exit(0);
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/strlen4.c b/js/src/ctypes/libffi/testsuite/libffi.call/strlen4.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/strlen4.c
-@@ -0,0 +1,55 @@
-+/* Area:	ffi_call
-+   Purpose:	Check strlen function call with additional arguments.
-+   Limitations:	none.
-+   PR:		none.
-+   Originator:	From the original ffitest.c  */
-+
-+/* { dg-do run } */
-+
-+#include "ffitest.h"
-+
-+static size_t ABI_ATTR my_f(float a, char *s, int i)
-+{
-+  return (size_t) ((int) strlen(s) + (int) a + i);
-+}
-+
-+int main (void)
-+{
-+  ffi_cif cif;
-+  ffi_type *args[MAX_ARGS];
-+  void *values[MAX_ARGS];
-+  ffi_arg rint;
-+  char *s;
-+  int v1;
-+  float v2;
-+  args[2] = &ffi_type_sint;
-+  args[1] = &ffi_type_pointer;
-+  args[0] = &ffi_type_float;
-+  values[2] = (void*) &v1;
-+  values[1] = (void*) &s;
-+  values[0] = (void*) &v2;
-+  
-+  /* Initialize the cif */
-+  CHECK(ffi_prep_cif(&cif, ABI_NUM, 3,
-+		       &ffi_type_sint, args) == FFI_OK);
-+  
-+  s = "a";
-+  v1 = 1;
-+  v2 = 0.0;
-+  ffi_call(&cif, FFI_FN(my_f), &rint, values);
-+  CHECK(rint == 2);
-+  
-+  s = "1234567";
-+  v2 = -1.0;
-+  v1 = -2;
-+  ffi_call(&cif, FFI_FN(my_f), &rint, values);
-+  CHECK(rint == 4);
-+  
-+  s = "1234567890123456789012345";
-+  v2 = 1.0;
-+  v1 = 2;
-+  ffi_call(&cif, FFI_FN(my_f), &rint, values);
-+  CHECK(rint == 28);
-+  
-+  exit(0);
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/strlen_win32.c b/js/src/ctypes/libffi/testsuite/libffi.call/strlen_win32.c
-deleted file mode 100644
---- a/js/src/ctypes/libffi/testsuite/libffi.call/strlen_win32.c
-+++ /dev/null
-@@ -1,44 +0,0 @@
--/* Area:	ffi_call
--   Purpose:	Check stdcall strlen call on X86_WIN32 systems.
--   Limitations:	none.
--   PR:		none.
--   Originator:	From the original ffitest.c  */
--
--/* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */
--
--#include "ffitest.h"
--
--static size_t __attribute__((stdcall)) my_stdcall_strlen(char *s)
--{
--  return (strlen(s));
--}
--
--int main (void)
--{
--  ffi_cif cif;
--  ffi_type *args[MAX_ARGS];
--  void *values[MAX_ARGS];
--  ffi_arg rint;
--  char *s;
--  args[0] = &ffi_type_pointer;
--  values[0] = (void*) &s;
--  
--  /* Initialize the cif */
--  CHECK(ffi_prep_cif(&cif, FFI_STDCALL, 1,
--		       &ffi_type_sint, args) == FFI_OK);
--  
--  s = "a";
--  ffi_call(&cif, FFI_FN(my_stdcall_strlen), &rint, values);
--  CHECK(rint == 1);
--  
--  s = "1234567";
--  ffi_call(&cif, FFI_FN(my_stdcall_strlen), &rint, values);
--  CHECK(rint == 7);
--  
--  s = "1234567890123456789012345";
--  ffi_call(&cif, FFI_FN(my_stdcall_strlen), &rint, values);
--  CHECK(rint == 25);
--  
--  printf("stdcall strlen tests passed\n");
--  exit(0);
--}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct1.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct1.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct1.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct1.c
-@@ -9,51 +9,53 @@
- 
- typedef struct
- {
-   unsigned char uc;
-   double d;
-   unsigned int ui;
- } test_structure_1;
- 
--static test_structure_1 struct1(test_structure_1 ts)
-+static test_structure_1 ABI_ATTR struct1(test_structure_1 ts)
- {
-   ts.uc++;
-   ts.d--;
-   ts.ui++;
- 
-   return ts;
- }
- 
- int main (void)
- {
-   ffi_cif cif;
-   ffi_type *args[MAX_ARGS];
-   void *values[MAX_ARGS];
-   ffi_type ts1_type;
-   ffi_type *ts1_type_elements[4];
-+
-+  test_structure_1 ts1_arg;
-+
-+  /* This is a hack to get a properly aligned result buffer */
-+  test_structure_1 *ts1_result =
-+    (test_structure_1 *) malloc (sizeof(test_structure_1));
-+
-   ts1_type.size = 0;
-   ts1_type.alignment = 0;
-   ts1_type.type = FFI_TYPE_STRUCT;
-   ts1_type.elements = ts1_type_elements;
-   ts1_type_elements[0] = &ffi_type_uchar;
-   ts1_type_elements[1] = &ffi_type_double;
-   ts1_type_elements[2] = &ffi_type_uint;
-   ts1_type_elements[3] = NULL;
-   
--  test_structure_1 ts1_arg;
--  /* This is a hack to get a properly aligned result buffer */
--  test_structure_1 *ts1_result = 
--    (test_structure_1 *) malloc (sizeof(test_structure_1));
--  
-   args[0] = &ts1_type;
-   values[0] = &ts1_arg;
-   
-   /* Initialize the cif */
--  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, 
-+  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1,
- 		     &ts1_type, args) == FFI_OK);
-   
-   ts1_arg.uc = '\x01';
-   ts1_arg.d = 3.14159;
-   ts1_arg.ui = 555;
- 
-   ffi_call(&cif, FFI_FN(struct1), ts1_result, values);
-   
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct2.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct2.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct2.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct2.c
-@@ -8,50 +8,50 @@
- #include "ffitest.h"
- 
- typedef struct
- {
-   double d1;
-   double d2;
- } test_structure_2;
- 
--static test_structure_2 struct2(test_structure_2 ts)
-+static test_structure_2 ABI_ATTR struct2(test_structure_2 ts)
- {
-   ts.d1--;
-   ts.d2--;
- 
-   return ts;
- }
- 
- int main (void)
- {
-   ffi_cif cif;
-   ffi_type *args[MAX_ARGS];
-   void *values[MAX_ARGS];
-   test_structure_2 ts2_arg;
-   ffi_type ts2_type;
-   ffi_type *ts2_type_elements[3];
-+
-+  /* This is a hack to get a properly aligned result buffer */
-+  test_structure_2 *ts2_result =
-+    (test_structure_2 *) malloc (sizeof(test_structure_2));
-+
-   ts2_type.size = 0;
-   ts2_type.alignment = 0;
-   ts2_type.type = FFI_TYPE_STRUCT;
-   ts2_type.elements = ts2_type_elements;
-   ts2_type_elements[0] = &ffi_type_double;
-   ts2_type_elements[1] = &ffi_type_double;
-   ts2_type_elements[2] = NULL;
- 
--  
--  /* This is a hack to get a properly aligned result buffer */
--  test_structure_2 *ts2_result = 
--    (test_structure_2 *) malloc (sizeof(test_structure_2));
--  
-   args[0] = &ts2_type;
-   values[0] = &ts2_arg;
-   
-   /* Initialize the cif */
--  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts2_type, args) == FFI_OK);
-+  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts2_type, args) == FFI_OK);
-   
-   ts2_arg.d1 = 5.55;
-   ts2_arg.d2 = 6.66;
-   
-   printf ("%g\n", ts2_arg.d1);
-   printf ("%g\n", ts2_arg.d2);
-   
-   ffi_call(&cif, FFI_FN(struct2), ts2_result, values);
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct3.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct3.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct3.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct3.c
-@@ -7,47 +7,48 @@
- /* { dg-do run } */
- #include "ffitest.h"
- 
- typedef struct
- {
-   int si;
- } test_structure_3;
- 
--static test_structure_3 struct3(test_structure_3 ts)
-+static test_structure_3 ABI_ATTR struct3(test_structure_3 ts)
- {
-   ts.si = -(ts.si*2);
- 
-   return ts;
- }
- 
- int main (void)
- {
-   ffi_cif cif;
-   ffi_type *args[MAX_ARGS];
-   void *values[MAX_ARGS];
-   int compare_value;
-   ffi_type ts3_type;
-   ffi_type *ts3_type_elements[2];
-+
-+  test_structure_3 ts3_arg;
-+  test_structure_3 *ts3_result =
-+    (test_structure_3 *) malloc (sizeof(test_structure_3));
-+
-   ts3_type.size = 0;
-   ts3_type.alignment = 0;
-   ts3_type.type = FFI_TYPE_STRUCT;
-   ts3_type.elements = ts3_type_elements;
-   ts3_type_elements[0] = &ffi_type_sint;
-   ts3_type_elements[1] = NULL;
- 
--  test_structure_3 ts3_arg;
--  test_structure_3 *ts3_result = 
--    (test_structure_3 *) malloc (sizeof(test_structure_3));
--  
-   args[0] = &ts3_type;
-   values[0] = &ts3_arg;
-   
-   /* Initialize the cif */
--  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, 
-+  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1,
- 		     &ts3_type, args) == FFI_OK);
-   
-   ts3_arg.si = -123;
-   compare_value = ts3_arg.si;
-   
-   ffi_call(&cif, FFI_FN(struct3), ts3_result, values);
-   
-   printf ("%d %d\n", ts3_result->si, -(compare_value*2));
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct4.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct4.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct4.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct4.c
-@@ -9,50 +9,51 @@
- 
- typedef struct
- {
-   unsigned ui1;
-   unsigned ui2;
-   unsigned ui3;
- } test_structure_4;
- 
--static test_structure_4 struct4(test_structure_4 ts)
-+static test_structure_4 ABI_ATTR struct4(test_structure_4 ts)
- {
-   ts.ui3 = ts.ui1 * ts.ui2 * ts.ui3;
- 
-   return ts;
- }
- 
- int main (void)
- {
-   ffi_cif cif;
-   ffi_type *args[MAX_ARGS];
-   void *values[MAX_ARGS];
-   ffi_type ts4_type;
-   ffi_type *ts4_type_elements[4];  
-+
-+  test_structure_4 ts4_arg;
-+
-+  /* This is a hack to get a properly aligned result buffer */
-+  test_structure_4 *ts4_result =
-+    (test_structure_4 *) malloc (sizeof(test_structure_4));
-+
-   ts4_type.size = 0;
-   ts4_type.alignment = 0;
-   ts4_type.type = FFI_TYPE_STRUCT;
--  test_structure_4 ts4_arg;
-   ts4_type.elements = ts4_type_elements;
-   ts4_type_elements[0] = &ffi_type_uint;
-   ts4_type_elements[1] = &ffi_type_uint;
-   ts4_type_elements[2] = &ffi_type_uint;
-   ts4_type_elements[3] = NULL;
- 
--  
--  /* This is a hack to get a properly aligned result buffer */
--  test_structure_4 *ts4_result = 
--    (test_structure_4 *) malloc (sizeof(test_structure_4));
--  
-   args[0] = &ts4_type;
-   values[0] = &ts4_arg;
-   
-   /* Initialize the cif */
--  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts4_type, args) == FFI_OK);
-+  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts4_type, args) == FFI_OK);
-   
-   ts4_arg.ui1 = 2;
-   ts4_arg.ui2 = 3;
-   ts4_arg.ui3 = 4;
-   
-   ffi_call (&cif, FFI_FN(struct4), ts4_result, values);
-   
-   CHECK(ts4_result->ui3 == 2U * 3U * 4U);
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct5.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct5.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct5.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct5.c
-@@ -7,52 +7,53 @@
- /* { dg-do run } */
- #include "ffitest.h"
- typedef struct
- {
-   char c1;
-   char c2;
- } test_structure_5;
- 
--static test_structure_5 struct5(test_structure_5 ts1, test_structure_5 ts2)
-+static test_structure_5 ABI_ATTR struct5(test_structure_5 ts1, test_structure_5 ts2)
- {
-   ts1.c1 += ts2.c1;
-   ts1.c2 -= ts2.c2;
-   
-   return ts1;
- }
- 
- int main (void)
- {
-   ffi_cif cif;
-   ffi_type *args[MAX_ARGS];
-   void *values[MAX_ARGS];
-   ffi_type ts5_type;
-   ffi_type *ts5_type_elements[3];
-+
-+  test_structure_5 ts5_arg1, ts5_arg2;
-+
-+  /* This is a hack to get a properly aligned result buffer */
-+  test_structure_5 *ts5_result =
-+    (test_structure_5 *) malloc (sizeof(test_structure_5));
-+
-   ts5_type.size = 0;
-   ts5_type.alignment = 0;
-   ts5_type.type = FFI_TYPE_STRUCT;
-   ts5_type.elements = ts5_type_elements;
-   ts5_type_elements[0] = &ffi_type_schar;
-   ts5_type_elements[1] = &ffi_type_schar;
-   ts5_type_elements[2] = NULL;
- 
--  test_structure_5 ts5_arg1, ts5_arg2;
--  
--  /* This is a hack to get a properly aligned result buffer */
--  test_structure_5 *ts5_result = 
--    (test_structure_5 *) malloc (sizeof(test_structure_5));
--  
-   args[0] = &ts5_type;
-   args[1] = &ts5_type;
-   values[0] = &ts5_arg1;
-   values[1] = &ts5_arg2;
-   
-   /* Initialize the cif */
--  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ts5_type, args) == FFI_OK);
-+  CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, &ts5_type, args) == FFI_OK);
-   
-   ts5_arg1.c1 = 2;
-   ts5_arg1.c2 = 6;
-   ts5_arg2.c1 = 5;
-   ts5_arg2.c2 = 3;
-   
-   ffi_call (&cif, FFI_FN(struct5), ts5_result, values);
-   
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct6.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct6.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct6.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct6.c
-@@ -7,51 +7,51 @@
- /* { dg-do run } */
- #include "ffitest.h"
- typedef struct
- {
-   float f;
-   double d;
- } test_structure_6;
- 
--static test_structure_6 struct6 (test_structure_6 ts)
-+static test_structure_6 ABI_ATTR struct6 (test_structure_6 ts)
- {
-   ts.f += 1;
-   ts.d += 1;
-   
-   return ts;
- }
- 
- int main (void)
- {
-   ffi_cif cif;
-   ffi_type *args[MAX_ARGS];
-   void *values[MAX_ARGS];
-   ffi_type ts6_type;
-   ffi_type *ts6_type_elements[3];
-+
-+  test_structure_6 ts6_arg;
-+
-+  /* This is a hack to get a properly aligned result buffer */
-+  test_structure_6 *ts6_result =
-+    (test_structure_6 *) malloc (sizeof(test_structure_6));
-+
-   ts6_type.size = 0;
-   ts6_type.alignment = 0;
-   ts6_type.type = FFI_TYPE_STRUCT;
-   ts6_type.elements = ts6_type_elements;
-   ts6_type_elements[0] = &ffi_type_float;
-   ts6_type_elements[1] = &ffi_type_double;
-   ts6_type_elements[2] = NULL;
- 
--
--  test_structure_6 ts6_arg;
--
--  /* This is a hack to get a properly aligned result buffer */
--  test_structure_6 *ts6_result = 
--    (test_structure_6 *) malloc (sizeof(test_structure_6));
--  
-   args[0] = &ts6_type;
-   values[0] = &ts6_arg;
- 
-   /* Initialize the cif */
--  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts6_type, args) == FFI_OK);
-+  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts6_type, args) == FFI_OK);
-   
-   ts6_arg.f = 5.55f;
-   ts6_arg.d = 6.66;
-   
-   printf ("%g\n", ts6_arg.f);
-   printf ("%g\n", ts6_arg.d);
- 
-   ffi_call(&cif, FFI_FN(struct6), ts6_result, values);
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct7.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct7.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct7.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct7.c
-@@ -8,53 +8,53 @@
- #include "ffitest.h"
- typedef struct
- {
-   float f1;
-   float f2;
-   double d;
- } test_structure_7;
- 
--static test_structure_7 struct7 (test_structure_7 ts)
-+static test_structure_7 ABI_ATTR struct7 (test_structure_7 ts)
- {
-   ts.f1 += 1;
-   ts.f2 += 1;
-   ts.d += 1;
- 
-   return ts;
- }
- 
- int main (void)
- {
-   ffi_cif cif;
-   ffi_type *args[MAX_ARGS];
-   void *values[MAX_ARGS];
-   ffi_type ts7_type;
-   ffi_type *ts7_type_elements[4];
-+
-+  test_structure_7 ts7_arg;
-+
-+  /* This is a hack to get a properly aligned result buffer */
-+  test_structure_7 *ts7_result =
-+    (test_structure_7 *) malloc (sizeof(test_structure_7));
-+
-   ts7_type.size = 0;
-   ts7_type.alignment = 0;
-   ts7_type.type = FFI_TYPE_STRUCT;
-   ts7_type.elements = ts7_type_elements;
-   ts7_type_elements[0] = &ffi_type_float;
-   ts7_type_elements[1] = &ffi_type_float;
-   ts7_type_elements[2] = &ffi_type_double;
-   ts7_type_elements[3] = NULL;
- 
--
--  test_structure_7 ts7_arg;
--  
--  /* This is a hack to get a properly aligned result buffer */
--  test_structure_7 *ts7_result = 
--    (test_structure_7 *) malloc (sizeof(test_structure_7));
--  
-   args[0] = &ts7_type;
-   values[0] = &ts7_arg;
-   
-   /* Initialize the cif */
--  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts7_type, args) == FFI_OK);
-+  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts7_type, args) == FFI_OK);
-   
-   ts7_arg.f1 = 5.55f;
-   ts7_arg.f2 = 55.5f;
-   ts7_arg.d = 6.66;
- 
-   printf ("%g\n", ts7_arg.f1);
-   printf ("%g\n", ts7_arg.f2);
-   printf ("%g\n", ts7_arg.d);
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct8.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct8.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct8.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct8.c
-@@ -9,54 +9,55 @@
- typedef struct
- {
-   float f1;
-   float f2;
-   float f3;
-   float f4;
- } test_structure_8;
- 
--static test_structure_8 struct8 (test_structure_8 ts)
-+static test_structure_8 ABI_ATTR struct8 (test_structure_8 ts)
- {
-   ts.f1 += 1;
-   ts.f2 += 1;
-   ts.f3 += 1;
-   ts.f4 += 1;
- 
-   return ts;
- }
- 
- int main (void)
- {
-   ffi_cif cif;
-   ffi_type *args[MAX_ARGS];
-   void *values[MAX_ARGS];
-   ffi_type ts8_type;
-   ffi_type *ts8_type_elements[5];
-+
-+  test_structure_8 ts8_arg;
-+
-+  /* This is a hack to get a properly aligned result buffer */
-+  test_structure_8 *ts8_result =
-+    (test_structure_8 *) malloc (sizeof(test_structure_8));
-+
-   ts8_type.size = 0;
-   ts8_type.alignment = 0;
-   ts8_type.type = FFI_TYPE_STRUCT;
-   ts8_type.elements = ts8_type_elements;
-   ts8_type_elements[0] = &ffi_type_float;
-   ts8_type_elements[1] = &ffi_type_float;
-   ts8_type_elements[2] = &ffi_type_float;
-   ts8_type_elements[3] = &ffi_type_float;
-   ts8_type_elements[4] = NULL;
- 
--  test_structure_8 ts8_arg;
--  
--  /* This is a hack to get a properly aligned result buffer */
--  test_structure_8 *ts8_result = 
--    (test_structure_8 *) malloc (sizeof(test_structure_8));
--  
-   args[0] = &ts8_type;
-   values[0] = &ts8_arg;
-   
-   /* Initialize the cif */
--  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts8_type, args) == FFI_OK);
-+  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts8_type, args) == FFI_OK);
-   
-   ts8_arg.f1 = 5.55f;
-   ts8_arg.f2 = 55.5f;
-   ts8_arg.f3 = -5.55f;
-   ts8_arg.f4 = -55.5f;
- 
-   printf ("%g\n", ts8_arg.f1);
-   printf ("%g\n", ts8_arg.f2);
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/struct9.c b/js/src/ctypes/libffi/testsuite/libffi.call/struct9.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/struct9.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/struct9.c
-@@ -8,50 +8,51 @@
- #include "ffitest.h"
- 
- typedef struct
- {
-   float f;
-   int i;
- } test_structure_9;
- 
--static test_structure_9 struct9 (test_structure_9 ts)
-+static test_structure_9 ABI_ATTR struct9 (test_structure_9 ts)
- {
-   ts.f += 1;
-   ts.i += 1;
- 
-   return ts;
- }
- 
- int main (void)
- {
-   ffi_cif cif;
-   ffi_type *args[MAX_ARGS];
-   void *values[MAX_ARGS];
-   ffi_type ts9_type;
-   ffi_type *ts9_type_elements[3];
-+
-+  test_structure_9 ts9_arg;
-+
-+  /* This is a hack to get a properly aligned result buffer */
-+  test_structure_9 *ts9_result =
-+    (test_structure_9 *) malloc (sizeof(test_structure_9));
-+
-   ts9_type.size = 0;
-   ts9_type.alignment = 0;
-   ts9_type.type = FFI_TYPE_STRUCT;
-   ts9_type.elements = ts9_type_elements;
-   ts9_type_elements[0] = &ffi_type_float;
-   ts9_type_elements[1] = &ffi_type_sint;
-   ts9_type_elements[2] = NULL;
- 
--  test_structure_9 ts9_arg;
--  
--  /* This is a hack to get a properly aligned result buffer */
--  test_structure_9 *ts9_result = 
--    (test_structure_9 *) malloc (sizeof(test_structure_9));
--  
-   args[0] = &ts9_type;
-   values[0] = &ts9_arg;
-   
-   /* Initialize the cif */
--  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ts9_type, args) == FFI_OK);
-+  CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ts9_type, args) == FFI_OK);
-   
-   ts9_arg.f = 5.55f;
-   ts9_arg.i = 5;
-   
-   printf ("%g\n", ts9_arg.f);
-   printf ("%d\n", ts9_arg.i);
-   
-   ffi_call(&cif, FFI_FN(struct9), ts9_result, values);
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/testclosure.c b/js/src/ctypes/libffi/testsuite/libffi.call/testclosure.c
---- a/js/src/ctypes/libffi/testsuite/libffi.call/testclosure.c
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/testclosure.c
-@@ -38,23 +38,23 @@ int main (void)
- {
-   ffi_cif cif;
-   void *code;
-   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
-   ffi_type* cls_struct_fields0[5];
-   ffi_type cls_struct_type0;
-   ffi_type* dbl_arg_types[5];
- 
-+  struct cls_struct_combined g_dbl = {4.0, 5.0, 1.0, 8.0};
-+
-   cls_struct_type0.size = 0;
-   cls_struct_type0.alignment = 0;
-   cls_struct_type0.type = FFI_TYPE_STRUCT;
-   cls_struct_type0.elements = cls_struct_fields0;
- 
--  struct cls_struct_combined g_dbl = {4.0, 5.0, 1.0, 8.0};
--
-   cls_struct_fields0[0] = &ffi_type_float;
-   cls_struct_fields0[1] = &ffi_type_float;
-   cls_struct_fields0[2] = &ffi_type_float;
-   cls_struct_fields0[3] = &ffi_type_float;
-   cls_struct_fields0[4] = NULL;
- 
-   dbl_arg_types[0] = &cls_struct_type0;
-   dbl_arg_types[1] = NULL;
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/uninitialized.c b/js/src/ctypes/libffi/testsuite/libffi.call/uninitialized.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/uninitialized.c
-@@ -0,0 +1,61 @@
-+/* { dg-do run } */
-+#include "ffitest.h"
-+
-+typedef struct
-+{
-+  unsigned char uc;
-+  double d;
-+  unsigned int ui;
-+} test_structure_1;
-+
-+static test_structure_1 struct1(test_structure_1 ts)
-+{
-+  ts.uc++;
-+  ts.d--;
-+  ts.ui++;
-+
-+  return ts;
-+}
-+
-+int main (void)
-+{
-+  ffi_cif cif;
-+  ffi_type *args[MAX_ARGS];
-+  void *values[MAX_ARGS];
-+  ffi_type ts1_type;
-+  ffi_type *ts1_type_elements[4];
-+
-+  memset(&cif, 1, sizeof(cif));
-+  ts1_type.size = 0;
-+  ts1_type.alignment = 0;
-+  ts1_type.type = FFI_TYPE_STRUCT;
-+  ts1_type.elements = ts1_type_elements;
-+  ts1_type_elements[0] = &ffi_type_uchar;
-+  ts1_type_elements[1] = &ffi_type_double;
-+  ts1_type_elements[2] = &ffi_type_uint;
-+  ts1_type_elements[3] = NULL;
-+
-+  test_structure_1 ts1_arg;
-+  /* This is a hack to get a properly aligned result buffer */
-+  test_structure_1 *ts1_result =
-+    (test_structure_1 *) malloc (sizeof(test_structure_1));
-+
-+  args[0] = &ts1_type;
-+  values[0] = &ts1_arg;
-+
-+  /* Initialize the cif */
-+  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
-+		     &ts1_type, args) == FFI_OK);
-+
-+  ts1_arg.uc = '\x01';
-+  ts1_arg.d = 3.14159;
-+  ts1_arg.ui = 555;
-+
-+  ffi_call(&cif, FFI_FN(struct1), ts1_result, values);
-+
-+  CHECK(ts1_result->ui == 556);
-+  CHECK(ts1_result->d == 3.14159 - 1);
-+
-+  free (ts1_result);
-+  exit(0);
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest.cc b/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest.cc
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest.cc
-@@ -0,0 +1,117 @@
-+/* Area:	ffi_closure, unwind info
-+   Purpose:	Check if the unwind information is passed correctly.
-+   Limitations:	none.
-+   PR:		none.
-+   Originator:	Jeff Sturm <jsturm@one-point.com>  */
-+
-+/* { dg-do run } */
-+
-+#include "ffitest.h"
-+
-+void ABI_ATTR
-+closure_test_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__,
-+		void** args __UNUSED__, void* userdata __UNUSED__)
-+{
-+  throw 9;
-+}
-+
-+typedef void (*closure_test_type)();
-+
-+void closure_test_fn1(ffi_cif* cif __UNUSED__, void* resp,
-+		      void** args, void* userdata __UNUSED__)
-+ {
-+    *(ffi_arg*)resp =
-+      (int)*(float *)args[0] +(int)(*(float *)args[1]) +
-+      (int)(*(float *)args[2]) + (int)*(float *)args[3] +
-+      (int)(*(signed short *)args[4]) + (int)(*(float *)args[5]) +
-+      (int)*(float *)args[6] + (int)(*(int *)args[7]) +
-+      (int)(*(double*)args[8]) + (int)*(int *)args[9] +
-+      (int)(*(int *)args[10]) + (int)(*(float *)args[11]) +
-+      (int)*(int *)args[12] + (int)(*(int *)args[13]) +
-+      (int)(*(int *)args[14]) + *(int *)args[15] + (int)(intptr_t)userdata;
-+
-+    printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n",
-+	   (int)*(float *)args[0], (int)(*(float *)args[1]),
-+	   (int)(*(float *)args[2]), (int)*(float *)args[3],
-+	   (int)(*(signed short *)args[4]), (int)(*(float *)args[5]),
-+	   (int)*(float *)args[6], (int)(*(int *)args[7]),
-+	   (int)(*(double *)args[8]), (int)*(int *)args[9],
-+	   (int)(*(int *)args[10]), (int)(*(float *)args[11]),
-+	   (int)*(int *)args[12], (int)(*(int *)args[13]),
-+	   (int)(*(int *)args[14]), *(int *)args[15],
-+	   (int)(intptr_t)userdata, (int)*(ffi_arg*)resp);
-+
-+    throw (int)*(ffi_arg*)resp;
-+}
-+
-+typedef int (*closure_test_type1)(float, float, float, float, signed short,
-+				  float, float, int, double, int, int, float,
-+				  int, int, int, int);
-+
-+int main (void)
-+{
-+  ffi_cif cif;
-+  void *code;
-+  ffi_closure *pcl = (ffi_closure *)ffi_closure_alloc(sizeof(ffi_closure), &code);
-+  ffi_type * cl_arg_types[17];
-+
-+  {
-+    cl_arg_types[1] = NULL;
-+
-+    CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0,
-+		       &ffi_type_void, cl_arg_types) == FFI_OK);
-+    CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn, NULL, code) == FFI_OK);
-+
-+    try
-+      {
-+	(*((closure_test_type)(code)))();
-+      } catch (int exception_code)
-+      {
-+	CHECK(exception_code == 9);
-+      }
-+
-+    printf("part one OK\n");
-+    /* { dg-output "part one OK" } */
-+    }
-+
-+    {
-+
-+      cl_arg_types[0] = &ffi_type_float;
-+      cl_arg_types[1] = &ffi_type_float;
-+      cl_arg_types[2] = &ffi_type_float;
-+      cl_arg_types[3] = &ffi_type_float;
-+      cl_arg_types[4] = &ffi_type_sshort;
-+      cl_arg_types[5] = &ffi_type_float;
-+      cl_arg_types[6] = &ffi_type_float;
-+      cl_arg_types[7] = &ffi_type_uint;
-+      cl_arg_types[8] = &ffi_type_double;
-+      cl_arg_types[9] = &ffi_type_uint;
-+      cl_arg_types[10] = &ffi_type_uint;
-+      cl_arg_types[11] = &ffi_type_float;
-+      cl_arg_types[12] = &ffi_type_uint;
-+      cl_arg_types[13] = &ffi_type_uint;
-+      cl_arg_types[14] = &ffi_type_uint;
-+      cl_arg_types[15] = &ffi_type_uint;
-+      cl_arg_types[16] = NULL;
-+
-+      /* Initialize the cif */
-+      CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16,
-+			 &ffi_type_sint, cl_arg_types) == FFI_OK);
-+
-+      CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn1,
-+                                 (void *) 3 /* userdata */, code)  == FFI_OK);
-+      try
-+	{
-+	  (*((closure_test_type1)code))
-+	    (1.1, 2.2, 3.3, 4.4, 127, 5.5, 6.6, 8, 9, 10, 11, 12.0, 13,
-+	     19, 21, 1);
-+	  /* { dg-output "\n1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */
-+	} catch (int exception_code)
-+	{
-+	  CHECK(exception_code == 255);
-+	}
-+      printf("part two OK\n");
-+      /* { dg-output "\npart two OK" } */
-+    }
-+    exit(0);
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc b/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc
-@@ -0,0 +1,54 @@
-+/* Area:	ffi_call, unwind info
-+   Purpose:	Check if the unwind information is passed correctly.
-+   Limitations:	none.
-+   PR:		none.
-+   Originator:	Andreas Tobler <andreast@gcc.gnu.org> 20061213  */
-+
-+/* { dg-do run } */
-+
-+#include "ffitest.h"
-+
-+static int checking(int a __UNUSED__, short b __UNUSED__,
-+		    signed char c __UNUSED__)
-+{
-+  throw 9;
-+}
-+
-+int main (void)
-+{
-+  ffi_cif cif;
-+  ffi_type *args[MAX_ARGS];
-+  void *values[MAX_ARGS];
-+  ffi_arg rint;
-+
-+  signed int si;
-+  signed short ss;
-+  signed char sc;
-+
-+  args[0] = &ffi_type_sint;
-+  values[0] = &si;
-+  args[1] = &ffi_type_sshort;
-+  values[1] = &ss;
-+  args[2] = &ffi_type_schar;
-+  values[2] = &sc;
-+
-+  /* Initialize the cif */
-+  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3,
-+		     &ffi_type_sint, args) == FFI_OK);
-+
-+  si = -6;
-+  ss = -12;
-+  sc = -1;
-+  {
-+    try
-+      {
-+	ffi_call(&cif, FFI_FN(checking), &rint, values);
-+      } catch (int exception_code)
-+      {
-+	CHECK(exception_code == 9);
-+      }
-+    printf("part one OK\n");
-+    /* { dg-output "part one OK" } */
-+  }
-+  exit(0);
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/va_1.c b/js/src/ctypes/libffi/testsuite/libffi.call/va_1.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/va_1.c
-@@ -0,0 +1,196 @@
-+/* Area:		ffi_call
-+   Purpose:		Test passing struct in variable argument lists.
-+   Limitations:	none.
-+   PR:			none.
-+   Originator:	        ARM Ltd. */
-+
-+/* { dg-do run } */
-+/* { dg-output "" { xfail avr32*-*-* } } */
-+
-+#include "ffitest.h"
-+#include <stdarg.h>
-+
-+struct small_tag
-+{
-+  unsigned char a;
-+  unsigned char b;
-+};
-+
-+struct large_tag
-+{
-+  unsigned a;
-+  unsigned b;
-+  unsigned c;
-+  unsigned d;
-+  unsigned e;
-+};
-+
-+static int
-+test_fn (int n, ...)
-+{
-+  va_list ap;
-+  struct small_tag s1;
-+  struct small_tag s2;
-+  struct large_tag l;
-+  unsigned char uc;
-+  signed char sc;
-+  unsigned short us;
-+  signed short ss;
-+  unsigned int ui;
-+  signed int si;
-+  unsigned long ul;
-+  signed long sl;
-+  float f;
-+  double d;
-+
-+  va_start (ap, n);
-+  s1 = va_arg (ap, struct small_tag);
-+  l = va_arg (ap, struct large_tag);
-+  s2 = va_arg (ap, struct small_tag);
-+
-+  uc = va_arg (ap, unsigned);
-+  sc = va_arg (ap, signed);
-+
-+  us = va_arg (ap, unsigned);
-+  ss = va_arg (ap, signed);
-+
-+  ui = va_arg (ap, unsigned int);
-+  si = va_arg (ap, signed int);
-+
-+  ul = va_arg (ap, unsigned long);
-+  sl = va_arg (ap, signed long);
-+
-+  f = va_arg (ap, double);	/* C standard promotes float->double
-+				   when anonymous */
-+  d = va_arg (ap, double);
-+
-+  printf ("%u %u %u %u %u %u %u %u %u uc=%u sc=%d %u %d %u %d %lu %ld %f %f\n",
-+	  s1.a, s1.b, l.a, l.b, l.c, l.d, l.e,
-+	  s2.a, s2.b,
-+	  uc, sc,
-+	  us, ss,
-+	  ui, si,
-+	  ul, sl,
-+	  f, d);
-+  va_end (ap);
-+  return n + 1;
-+}
-+
-+int
-+main (void)
-+{
-+  ffi_cif cif;
-+  void* args[15];
-+  ffi_type* arg_types[15];
-+
-+  ffi_type s_type;
-+  ffi_type *s_type_elements[3];
-+
-+  ffi_type l_type;
-+  ffi_type *l_type_elements[6];
-+
-+  struct small_tag s1;
-+  struct small_tag s2;
-+  struct large_tag l1;
-+
-+  int n;
-+  ffi_arg res;
-+
-+  unsigned char uc;
-+  signed char sc;
-+  unsigned short us;
-+  signed short ss;
-+  unsigned int ui;
-+  signed int si;
-+  unsigned long ul;
-+  signed long sl;
-+  double d1;
-+  double f1;
-+
-+  s_type.size = 0;
-+  s_type.alignment = 0;
-+  s_type.type = FFI_TYPE_STRUCT;
-+  s_type.elements = s_type_elements;
-+
-+  s_type_elements[0] = &ffi_type_uchar;
-+  s_type_elements[1] = &ffi_type_uchar;
-+  s_type_elements[2] = NULL;
-+
-+  l_type.size = 0;
-+  l_type.alignment = 0;
-+  l_type.type = FFI_TYPE_STRUCT;
-+  l_type.elements = l_type_elements;
-+
-+  l_type_elements[0] = &ffi_type_uint;
-+  l_type_elements[1] = &ffi_type_uint;
-+  l_type_elements[2] = &ffi_type_uint;
-+  l_type_elements[3] = &ffi_type_uint;
-+  l_type_elements[4] = &ffi_type_uint;
-+  l_type_elements[5] = NULL;
-+
-+  arg_types[0] = &ffi_type_sint;
-+  arg_types[1] = &s_type;
-+  arg_types[2] = &l_type;
-+  arg_types[3] = &s_type;
-+  arg_types[4] = &ffi_type_uchar;
-+  arg_types[5] = &ffi_type_schar;
-+  arg_types[6] = &ffi_type_ushort;
-+  arg_types[7] = &ffi_type_sshort;
-+  arg_types[8] = &ffi_type_uint;
-+  arg_types[9] = &ffi_type_sint;
-+  arg_types[10] = &ffi_type_ulong;
-+  arg_types[11] = &ffi_type_slong;
-+  arg_types[12] = &ffi_type_double;
-+  arg_types[13] = &ffi_type_double;
-+  arg_types[14] = NULL;
-+
-+  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 14, &ffi_type_sint, arg_types) == FFI_OK);
-+
-+  s1.a = 5;
-+  s1.b = 6;
-+
-+  l1.a = 10;
-+  l1.b = 11;
-+  l1.c = 12;
-+  l1.d = 13;
-+  l1.e = 14;
-+
-+  s2.a = 7;
-+  s2.b = 8;
-+
-+  n = 41;
-+
-+  uc = 9;
-+  sc = 10;
-+  us = 11;
-+  ss = 12;
-+  ui = 13;
-+  si = 14;
-+  ul = 15;
-+  sl = 16;
-+  f1 = 2.12;
-+  d1 = 3.13;
-+
-+  args[0] = &n;
-+  args[1] = &s1;
-+  args[2] = &l1;
-+  args[3] = &s2;
-+  args[4] = &uc;
-+  args[5] = &sc;
-+  args[6] = &us;
-+  args[7] = &ss;
-+  args[8] = &ui;
-+  args[9] = &si;
-+  args[10] = &ul;
-+  args[11] = &sl;
-+  args[12] = &f1;
-+  args[13] = &d1;
-+  args[14] = NULL;
-+
-+  ffi_call(&cif, FFI_FN(test_fn), &res, args);
-+  /* { dg-output "5 6 10 11 12 13 14 7 8 uc=9 sc=10 11 12 13 14 15 16 2.120000 3.130000" } */
-+  printf("res: %d\n", (int) res);
-+  /* { dg-output "\nres: 42" } */
-+
-+  return 0;
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/va_struct1.c b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct1.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct1.c
-@@ -0,0 +1,121 @@
-+/* Area:		ffi_call
-+   Purpose:		Test passing struct in variable argument lists.
-+   Limitations:	none.
-+   PR:			none.
-+   Originator: ARM Ltd. */
-+
-+/* { dg-do run } */
-+/* { dg-output "" { xfail avr32*-*-* } } */
-+
-+#include "ffitest.h"
-+#include <stdarg.h>
-+
-+struct small_tag
-+{
-+  unsigned char a;
-+  unsigned char b;
-+};
-+
-+struct large_tag
-+{
-+  unsigned a;
-+  unsigned b;
-+  unsigned c;
-+  unsigned d;
-+  unsigned e;
-+};
-+
-+static int
-+test_fn (int n, ...)
-+{
-+  va_list ap;
-+  struct small_tag s1;
-+  struct small_tag s2;
-+  struct large_tag l;
-+
-+  va_start (ap, n);
-+  s1 = va_arg (ap, struct small_tag);
-+  l = va_arg (ap, struct large_tag);
-+  s2 = va_arg (ap, struct small_tag);
-+  printf ("%u %u %u %u %u %u %u %u %u\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e,
-+	  s2.a, s2.b);
-+  va_end (ap);
-+  return n + 1;
-+}
-+
-+int
-+main (void)
-+{
-+  ffi_cif cif;
-+  void* args[5];
-+  ffi_type* arg_types[5];
-+
-+  ffi_type s_type;
-+  ffi_type *s_type_elements[3];
-+
-+  ffi_type l_type;
-+  ffi_type *l_type_elements[6];
-+
-+  struct small_tag s1;
-+  struct small_tag s2;
-+  struct large_tag l1;
-+
-+  int n;
-+  ffi_arg res;
-+
-+  s_type.size = 0;
-+  s_type.alignment = 0;
-+  s_type.type = FFI_TYPE_STRUCT;
-+  s_type.elements = s_type_elements;
-+
-+  s_type_elements[0] = &ffi_type_uchar;
-+  s_type_elements[1] = &ffi_type_uchar;
-+  s_type_elements[2] = NULL;
-+
-+  l_type.size = 0;
-+  l_type.alignment = 0;
-+  l_type.type = FFI_TYPE_STRUCT;
-+  l_type.elements = l_type_elements;
-+
-+  l_type_elements[0] = &ffi_type_uint;
-+  l_type_elements[1] = &ffi_type_uint;
-+  l_type_elements[2] = &ffi_type_uint;
-+  l_type_elements[3] = &ffi_type_uint;
-+  l_type_elements[4] = &ffi_type_uint;
-+  l_type_elements[5] = NULL;
-+
-+  arg_types[0] = &ffi_type_sint;
-+  arg_types[1] = &s_type;
-+  arg_types[2] = &l_type;
-+  arg_types[3] = &s_type;
-+  arg_types[4] = NULL;
-+
-+  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &ffi_type_sint, arg_types) == FFI_OK);
-+
-+  s1.a = 5;
-+  s1.b = 6;
-+
-+  l1.a = 10;
-+  l1.b = 11;
-+  l1.c = 12;
-+  l1.d = 13;
-+  l1.e = 14;
-+
-+  s2.a = 7;
-+  s2.b = 8;
-+
-+  n = 41;
-+
-+  args[0] = &n;
-+  args[1] = &s1;
-+  args[2] = &l1;
-+  args[3] = &s2;
-+  args[4] = NULL;
-+
-+  ffi_call(&cif, FFI_FN(test_fn), &res, args);
-+  /* { dg-output "5 6 10 11 12 13 14 7 8" } */
-+  printf("res: %d\n", (int) res);
-+  /* { dg-output "\nres: 42" } */
-+
-+  return 0;
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/va_struct2.c b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct2.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct2.c
-@@ -0,0 +1,123 @@
-+/* Area:		ffi_call
-+   Purpose:		Test passing struct in variable argument lists.
-+   Limitations:	none.
-+   PR:			none.
-+   Originator: ARM Ltd. */
-+
-+/* { dg-do run } */
-+/* { dg-output "" { xfail avr32*-*-* } } */
-+
-+#include "ffitest.h"
-+#include <stdarg.h>
-+
-+struct small_tag
-+{
-+  unsigned char a;
-+  unsigned char b;
-+};
-+
-+struct large_tag
-+{
-+  unsigned a;
-+  unsigned b;
-+  unsigned c;
-+  unsigned d;
-+  unsigned e;
-+};
-+
-+static struct small_tag
-+test_fn (int n, ...)
-+{
-+  va_list ap;
-+  struct small_tag s1;
-+  struct small_tag s2;
-+  struct large_tag l;
-+
-+  va_start (ap, n);
-+  s1 = va_arg (ap, struct small_tag);
-+  l = va_arg (ap, struct large_tag);
-+  s2 = va_arg (ap, struct small_tag);
-+  printf ("%u %u %u %u %u %u %u %u %u\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e,
-+	  s2.a, s2.b);
-+  va_end (ap);
-+  s1.a += s2.a;
-+  s1.b += s2.b;
-+  return s1;
-+}
-+
-+int
-+main (void)
-+{
-+  ffi_cif cif;
-+  void* args[5];
-+  ffi_type* arg_types[5];
-+
-+  ffi_type s_type;
-+  ffi_type *s_type_elements[3];
-+
-+  ffi_type l_type;
-+  ffi_type *l_type_elements[6];
-+
-+  struct small_tag s1;
-+  struct small_tag s2;
-+  struct large_tag l1;
-+
-+  int n;
-+  struct small_tag res;
-+
-+  s_type.size = 0;
-+  s_type.alignment = 0;
-+  s_type.type = FFI_TYPE_STRUCT;
-+  s_type.elements = s_type_elements;
-+
-+  s_type_elements[0] = &ffi_type_uchar;
-+  s_type_elements[1] = &ffi_type_uchar;
-+  s_type_elements[2] = NULL;
-+
-+  l_type.size = 0;
-+  l_type.alignment = 0;
-+  l_type.type = FFI_TYPE_STRUCT;
-+  l_type.elements = l_type_elements;
-+
-+  l_type_elements[0] = &ffi_type_uint;
-+  l_type_elements[1] = &ffi_type_uint;
-+  l_type_elements[2] = &ffi_type_uint;
-+  l_type_elements[3] = &ffi_type_uint;
-+  l_type_elements[4] = &ffi_type_uint;
-+  l_type_elements[5] = NULL;
-+
-+  arg_types[0] = &ffi_type_sint;
-+  arg_types[1] = &s_type;
-+  arg_types[2] = &l_type;
-+  arg_types[3] = &s_type;
-+  arg_types[4] = NULL;
-+
-+  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &s_type, arg_types) == FFI_OK);
-+
-+  s1.a = 5;
-+  s1.b = 6;
-+
-+  l1.a = 10;
-+  l1.b = 11;
-+  l1.c = 12;
-+  l1.d = 13;
-+  l1.e = 14;
-+
-+  s2.a = 7;
-+  s2.b = 8;
-+
-+  n = 41;
-+
-+  args[0] = &n;
-+  args[1] = &s1;
-+  args[2] = &l1;
-+  args[3] = &s2;
-+  args[4] = NULL;
-+
-+  ffi_call(&cif, FFI_FN(test_fn), &res, args);
-+  /* { dg-output "5 6 10 11 12 13 14 7 8" } */
-+  printf("res: %d %d\n", res.a, res.b);
-+  /* { dg-output "\nres: 12 14" } */
-+
-+  return 0;
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/va_struct3.c b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct3.c
-new file mode 100644
---- /dev/null
-+++ b/js/src/ctypes/libffi/testsuite/libffi.call/va_struct3.c
-@@ -0,0 +1,125 @@
-+/* Area:		ffi_call
-+   Purpose:		Test passing struct in variable argument lists.
-+   Limitations:	none.
-+   PR:			none.
-+   Originator:	ARM Ltd. */
-+
-+/* { dg-do run } */
-+/* { dg-output "" { xfail avr32*-*-* } } */
-+
-+#include "ffitest.h"
-+#include <stdarg.h>
-+
-+struct small_tag
-+{
-+  unsigned char a;
-+  unsigned char b;
-+};
-+
-+struct large_tag
-+{
-+  unsigned a;
-+  unsigned b;
-+  unsigned c;
-+  unsigned d;
-+  unsigned e;
-+};
-+
-+static struct large_tag
-+test_fn (int n, ...)
-+{
-+  va_list ap;
-+  struct small_tag s1;
-+  struct small_tag s2;
-+  struct large_tag l;
-+
-+  va_start (ap, n);
-+  s1 = va_arg (ap, struct small_tag);
-+  l = va_arg (ap, struct large_tag);
-+  s2 = va_arg (ap, struct small_tag);
-+  printf ("%u %u %u %u %u %u %u %u %u\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e,
-+	  s2.a, s2.b);
-+  va_end (ap);
-+  l.a += s1.a;
-+  l.b += s1.b;
-+  l.c += s2.a;
-+  l.d += s2.b;
-+  return l;
-+}
-+
-+int
-+main (void)
-+{
-+  ffi_cif cif;
-+  void* args[5];
-+  ffi_type* arg_types[5];
-+
-+  ffi_type s_type;
-+  ffi_type *s_type_elements[3];
-+
-+  ffi_type l_type;
-+  ffi_type *l_type_elements[6];
-+
-+  struct small_tag s1;
-+  struct small_tag s2;
-+  struct large_tag l1;
-+
-+  int n;
-+  struct large_tag res;
-+
-+  s_type.size = 0;
-+  s_type.alignment = 0;
-+  s_type.type = FFI_TYPE_STRUCT;
-+  s_type.elements = s_type_elements;
-+
-+  s_type_elements[0] = &ffi_type_uchar;
-+  s_type_elements[1] = &ffi_type_uchar;
-+  s_type_elements[2] = NULL;
-+
-+  l_type.size = 0;
-+  l_type.alignment = 0;
-+  l_type.type = FFI_TYPE_STRUCT;
-+  l_type.elements = l_type_elements;
-+
-+  l_type_elements[0] = &ffi_type_uint;
-+  l_type_elements[1] = &ffi_type_uint;
-+  l_type_elements[2] = &ffi_type_uint;
-+  l_type_elements[3] = &ffi_type_uint;
-+  l_type_elements[4] = &ffi_type_uint;
-+  l_type_elements[5] = NULL;
-+
-+  arg_types[0] = &ffi_type_sint;
-+  arg_types[1] = &s_type;
-+  arg_types[2] = &l_type;
-+  arg_types[3] = &s_type;
-+  arg_types[4] = NULL;
-+
-+  CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 4, &l_type, arg_types) == FFI_OK);
-+
-+  s1.a = 5;
-+  s1.b = 6;
-+
-+  l1.a = 10;
-+  l1.b = 11;
-+  l1.c = 12;
-+  l1.d = 13;
-+  l1.e = 14;
-+
-+  s2.a = 7;
-+  s2.b = 8;
-+
-+  n = 41;
-+
-+  args[0] = &n;
-+  args[1] = &s1;
-+  args[2] = &l1;
-+  args[3] = &s2;
-+  args[4] = NULL;
-+
-+  ffi_call(&cif, FFI_FN(test_fn), &res, args);
-+  /* { dg-output "5 6 10 11 12 13 14 7 8" } */
-+  printf("res: %d %d %d %d %d\n", res.a, res.b, res.c, res.d, res.e);
-+  /* { dg-output "\nres: 15 17 19 21 14" } */
-+
-+  return 0;
-+}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.special/ffitestcxx.h b/js/src/ctypes/libffi/testsuite/libffi.special/ffitestcxx.h
-deleted file mode 100644
---- a/js/src/ctypes/libffi/testsuite/libffi.special/ffitestcxx.h
-+++ /dev/null
-@@ -1,96 +0,0 @@
--#include <stdlib.h>
--#include <stdio.h>
--#include <fcntl.h>
--#include <ffi.h>
--#include "fficonfig.h"
--
--#define MAX_ARGS 256
--
--
--/* Define __UNUSED__ that also other compilers than gcc can run the tests.  */
--#undef __UNUSED__
--#if defined(__GNUC__)
--#define __UNUSED__ __attribute__((__unused__))
--#else
--#define __UNUSED__
--#endif
--
--#define CHECK(x) (!(x) ? abort() : (void)0)
--
--/* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a
--   file open.  */
--#ifdef HAVE_MMAP_ANON
--# undef HAVE_MMAP_DEV_ZERO
--
--# include <sys/mman.h>
--# ifndef MAP_FAILED
--#  define MAP_FAILED -1
--# endif
--# if !defined (MAP_ANONYMOUS) && defined (MAP_ANON)
--#  define MAP_ANONYMOUS MAP_ANON
--# endif
--# define USING_MMAP
--
--#endif
--
--#ifdef HAVE_MMAP_DEV_ZERO
--
--# include <sys/mman.h>
--# ifndef MAP_FAILED
--#  define MAP_FAILED -1
--# endif
--# define USING_MMAP
--
--#endif
--
--
--/* MinGW kludge.  */
--#ifdef _WIN64
--#define PRIdLL "I64d"
--#define PRIuLL "I64u"
--#else
--#define PRIdLL "lld"
--#define PRIuLL "llu"
--#endif
--
--#ifdef USING_MMAP
--static inline void *
--allocate_mmap (size_t size)
--{
--  void *page;
--#if defined (HAVE_MMAP_DEV_ZERO)
--  static int dev_zero_fd = -1;
--#endif
--
--#ifdef HAVE_MMAP_DEV_ZERO
--  if (dev_zero_fd == -1)
--    {
--      dev_zero_fd = open ("/dev/zero", O_RDONLY);
--      if (dev_zero_fd == -1)
--	{
--	  perror ("open /dev/zero: %m");
--	  exit (1);
--	}
--    }
--#endif
--
--
--#ifdef HAVE_MMAP_ANON
--  page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
--	       MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
--#endif
--#ifdef HAVE_MMAP_DEV_ZERO
--  page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
--	       MAP_PRIVATE, dev_zero_fd, 0);
--#endif
--
--  if (page == (char *) MAP_FAILED)
--    {
--      perror ("virtual memory exhausted");
--      exit (1);
--    }
--
--  return page;
--}
--
--#endif
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.special/special.exp b/js/src/ctypes/libffi/testsuite/libffi.special/special.exp
-deleted file mode 100644
---- a/js/src/ctypes/libffi/testsuite/libffi.special/special.exp
-+++ /dev/null
-@@ -1,37 +0,0 @@
--# Copyright (C) 2003, 2006, 2009 Free Software Foundation, Inc.
--
--# This program is free software; you can redistribute it and/or modify
--# it under the terms of the GNU General Public License as published by
--# the Free Software Foundation; either version 3 of the License, or
--# (at your option) any later version.
--#
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
--#
--# You should have received a copy of the GNU General Public License
--# along with this program; see the file COPYING3.  If not see
--# <http://www.gnu.org/licenses/>.
--
--load_lib libffi-dg.exp
--
--dg-init
--libffi-init
--
--global srcdir subdir
--
--global cxx_options
--
--set cxx_options " -shared-libgcc -lstdc++"
--
--dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-O0 -W -Wall"
--dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-O2"
--dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-O3"
--dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.cc]] $cxx_options "-Os"
--
--dg-finish
--
--# Local Variables:
--# tcl-indent-level:4
--# End:
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest.cc b/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest.cc
-deleted file mode 100644
---- a/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest.cc
-+++ /dev/null
-@@ -1,124 +0,0 @@
--/* Area:	ffi_closure, unwind info
--   Purpose:	Check if the unwind information is passed correctly.
--   Limitations:	none.
--   PR:		none.
--   Originator:	Jeff Sturm <jsturm@one-point.com>  */
--
--/* { dg-do run } */
--#include "ffitestcxx.h"
--
--#if defined HAVE_STDINT_H
--#include <stdint.h>
--#endif
--
--#if defined HAVE_INTTYPES_H
--#include <inttypes.h>
--#endif
--
--void
--closure_test_fn(ffi_cif* cif __UNUSED__, void* resp __UNUSED__,
--		void** args __UNUSED__, void* userdata __UNUSED__)
--{
--  throw 9;
--}
--
--typedef void (*closure_test_type)();
--
--void closure_test_fn1(ffi_cif* cif __UNUSED__, void* resp,
--		      void** args, void* userdata __UNUSED__)
-- {
--    *(ffi_arg*)resp =
--      (int)*(float *)args[0] +(int)(*(float *)args[1]) +
--      (int)(*(float *)args[2]) + (int)*(float *)args[3] +
--      (int)(*(signed short *)args[4]) + (int)(*(float *)args[5]) +
--      (int)*(float *)args[6] + (int)(*(int *)args[7]) +
--      (int)(*(double*)args[8]) + (int)*(int *)args[9] +
--      (int)(*(int *)args[10]) + (int)(*(float *)args[11]) +
--      (int)*(int *)args[12] + (int)(*(int *)args[13]) +
--      (int)(*(int *)args[14]) + *(int *)args[15] + (int)(intptr_t)userdata;
--
--    printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d: %d\n",
--	   (int)*(float *)args[0], (int)(*(float *)args[1]),
--	   (int)(*(float *)args[2]), (int)*(float *)args[3],
--	   (int)(*(signed short *)args[4]), (int)(*(float *)args[5]),
--	   (int)*(float *)args[6], (int)(*(int *)args[7]),
--	   (int)(*(double *)args[8]), (int)*(int *)args[9],
--	   (int)(*(int *)args[10]), (int)(*(float *)args[11]),
--	   (int)*(int *)args[12], (int)(*(int *)args[13]),
--	   (int)(*(int *)args[14]), *(int *)args[15],
--	   (int)(intptr_t)userdata, (int)*(ffi_arg*)resp);
--
--    throw (int)*(ffi_arg*)resp;
--}
--
--typedef int (*closure_test_type1)(float, float, float, float, signed short,
--				  float, float, int, double, int, int, float,
--				  int, int, int, int);
--
--int main (void)
--{
--  ffi_cif cif;
--  void *code;
--  ffi_closure *pcl = (ffi_closure *)ffi_closure_alloc(sizeof(ffi_closure), &code);
--  ffi_type * cl_arg_types[17];
--
--  {
--    cl_arg_types[1] = NULL;
--
--    CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0,
--		       &ffi_type_void, cl_arg_types) == FFI_OK);
--    CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn, NULL, code) == FFI_OK);
--
--    try
--      {
--	(*((closure_test_type)(code)))();
--      } catch (int exception_code)
--      {
--	CHECK(exception_code == 9);
--      }
--
--    printf("part one OK\n");
--    /* { dg-output "part one OK" } */
--    }
--
--    {
--
--      cl_arg_types[0] = &ffi_type_float;
--      cl_arg_types[1] = &ffi_type_float;
--      cl_arg_types[2] = &ffi_type_float;
--      cl_arg_types[3] = &ffi_type_float;
--      cl_arg_types[4] = &ffi_type_sshort;
--      cl_arg_types[5] = &ffi_type_float;
--      cl_arg_types[6] = &ffi_type_float;
--      cl_arg_types[7] = &ffi_type_uint;
--      cl_arg_types[8] = &ffi_type_double;
--      cl_arg_types[9] = &ffi_type_uint;
--      cl_arg_types[10] = &ffi_type_uint;
--      cl_arg_types[11] = &ffi_type_float;
--      cl_arg_types[12] = &ffi_type_uint;
--      cl_arg_types[13] = &ffi_type_uint;
--      cl_arg_types[14] = &ffi_type_uint;
--      cl_arg_types[15] = &ffi_type_uint;
--      cl_arg_types[16] = NULL;
--
--      /* Initialize the cif */
--      CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16,
--			 &ffi_type_sint, cl_arg_types) == FFI_OK);
--
--      CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_fn1,
--                                 (void *) 3 /* userdata */, code)  == FFI_OK);
--      try
--	{
--	  (*((closure_test_type1)code))
--	    (1.1, 2.2, 3.3, 4.4, 127, 5.5, 6.6, 8, 9, 10, 11, 12.0, 13,
--	     19, 21, 1);
--	  /* { dg-output "\n1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */
--	} catch (int exception_code)
--	{
--	  CHECK(exception_code == 255);
--	}
--      printf("part two OK\n");
--      /* { dg-output "\npart two OK" } */
--    }
--    exit(0);
--}
-diff --git a/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc b/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
-deleted file mode 100644
---- a/js/src/ctypes/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
-+++ /dev/null
-@@ -1,53 +0,0 @@
--/* Area:	ffi_call, unwind info
--   Purpose:	Check if the unwind information is passed correctly.
--   Limitations:	none.
--   PR:		none.
--   Originator:	Andreas Tobler <andreast@gcc.gnu.org> 20061213  */
--
--/* { dg-do run } */
--#include "ffitestcxx.h"
--
--static int checking(int a __UNUSED__, short b __UNUSED__,
--		    signed char c __UNUSED__)
--{
--  throw 9;
--}
--
--int main (void)
--{
--  ffi_cif cif;
--  ffi_type *args[MAX_ARGS];
--  void *values[MAX_ARGS];
--  ffi_arg rint;
--
--  signed int si;
--  signed short ss;
--  signed char sc;
--
--  args[0] = &ffi_type_sint;
--  values[0] = &si;
--  args[1] = &ffi_type_sshort;
--  values[1] = &ss;
--  args[2] = &ffi_type_schar;
--  values[2] = &sc;
--
--  /* Initialize the cif */
--  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3,
--		     &ffi_type_sint, args) == FFI_OK);
--
--  si = -6;
--  ss = -12;
--  sc = -1;
--  {
--    try
--      {
--	ffi_call(&cif, FFI_FN(checking), &rint, values);
--      } catch (int exception_code)
--      {
--	CHECK(exception_code == 9);
--      }
--    printf("part one OK\n");
--    /* { dg-output "part one OK" } */
--  }
--  exit(0);
--}
---- a/js/src/ctypes/patches-libffi/00-base.patch
-+++ /dev/null
-@@ -1,1349 +0,0 @@
--Patch libffi to fix bug 550602, bug 538216, bug545634, bug 594611, bug 605421
--and bug 631928.
--
--diff --git a/js/src/ctypes/libffi/Makefile.in b/js/src/ctypes/libffi/Makefile.in
----- a/js/src/ctypes/libffi/Makefile.in
--+++ b/js/src/ctypes/libffi/Makefile.in
--@@ -199,17 +199,17 @@ LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIB
-- CCLD = $(CC)
-- LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-- 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-- 	$(LDFLAGS) -o $@
-- SOURCES = $(libffi_la_SOURCES) $(nodist_libffi_la_SOURCES) \
-- 	$(libffi_convenience_la_SOURCES) \
-- 	$(nodist_libffi_convenience_la_SOURCES)
-- DIST_SOURCES = $(libffi_la_SOURCES) $(libffi_convenience_la_SOURCES)
---INFO_DEPS = $(srcdir)/doc/libffi.info
--+INFO_DEPS =
-- am__TEXINFO_TEX_DIR = $(srcdir)
-- DVIS = doc/libffi.dvi
-- PDFS = doc/libffi.pdf
-- PSS = doc/libffi.ps
-- HTMLS = doc/libffi.html
-- TEXINFOS = doc/libffi.texi
-- TEXI2DVI = texi2dvi
-- TEXI2PDF = $(TEXI2DVI) --pdf --batch
--@@ -986,57 +986,57 @@ distclean-compile:
-- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi.Plo@am__quote@
-- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/ffi64.Plo@am__quote@
-- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/freebsd.Plo@am__quote@
-- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/sysv.Plo@am__quote@
-- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/unix64.Plo@am__quote@
-- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win32.Plo@am__quote@
-- @AMDEP_TRUE@@am__include@ @am__quote@src/x86/$(DEPDIR)/win64.Plo@am__quote@
-- 
---.S.o:
--+%.o: %.S
-- @am__fastdepCCAS_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-- @am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-- @am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-- @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- @am__fastdepCCAS_FALSE@	$(CPPASCOMPILE) -c -o $@ $<
-- 
---.S.obj:
--+%.obj: %.S
-- @am__fastdepCCAS_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-- @am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-- @am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-- @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- @am__fastdepCCAS_FALSE@	$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-- 
---.S.lo:
--+%.lo: %.S
-- @am__fastdepCCAS_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-- @am__fastdepCCAS_TRUE@	$(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-- @am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
-- @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-- @AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- @am__fastdepCCAS_FALSE@	$(LTCPPASCOMPILE) -c -o $@ $<
-- 
---.c.o:
--+%.o: %.c
-- @am__fastdepCC_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-- @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-- @am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- @am__fastdepCC_FALSE@	$(COMPILE) -c -o $@ $<
-- 
---.c.obj:
--+%.obj: %.c
-- @am__fastdepCC_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-- @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-- @am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- @am__fastdepCC_FALSE@	$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-- 
---.c.lo:
--+%.lo: %.c
-- @am__fastdepCC_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-- @am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-- @am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
-- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-- @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-- 
-- mostlyclean-libtool:
--@@ -1129,17 +1129,17 @@ doc/libffi.html: doc/libffi.texi $(srcdi
-- 	-@rm -f vti.tmp
-- 	@cp $(srcdir)/doc/version.texi $@
-- 
-- mostlyclean-vti:
-- 	-rm -f vti.tmp
-- 
-- maintainer-clean-vti:
-- @MAINTAINER_MODE_TRUE@	-rm -f $(srcdir)/doc/stamp-vti $(srcdir)/doc/version.texi
---.dvi.ps:
--+%.ps: %.dvi
-- 	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
-- 	$(DVIPS) -o $@ $<
-- 
-- uninstall-dvi-am:
-- 	@$(NORMAL_UNINSTALL)
-- 	@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
-- 	for p in $$list; do \
-- 	  $(am__strip_dir) \
--diff --git a/js/src/ctypes/libffi/aclocal.m4 b/js/src/ctypes/libffi/aclocal.m4
----- a/js/src/ctypes/libffi/aclocal.m4
--+++ b/js/src/ctypes/libffi/aclocal.m4
--@@ -4703,17 +4703,17 @@ dnl Note also adjust exclude_expsyms for
--       # Tell ltmain to make .dll files, not .so files.
--       shrext_cmds=".dll"
--       # FIXME: Setting linknames here is a bad hack.
--       _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
--       # The linker will automatically build a .lib file if we build a DLL.
--       _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
--       # FIXME: Should let the user specify the lib program.
--       _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
---      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
--+      _LT_TAGVAR(fix_srcfile_path, $1)=''
--       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
--       ;;
-- 
--     darwin* | rhapsody*)
--       _LT_DARWIN_LINKER_FEATURES($1)
--       ;;
-- 
--     dgux*)
--diff --git a/js/src/ctypes/libffi/config.sub b/js/src/ctypes/libffi/config.sub
----- a/js/src/ctypes/libffi/config.sub
--+++ b/js/src/ctypes/libffi/config.sub
--@@ -1,15 +1,15 @@
-- #! /bin/sh
-- # Configuration validation subroutine script.
-- #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-- #   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-- #   Free Software Foundation, Inc.
-- 
---timestamp='2009-11-07'
--+timestamp='2011-01-03'
-- 
-- # This file is (in principle) common to ALL GNU software.
-- # The presence of a machine in this file suggests that SOME GNU software
-- # can handle that machine.  It does not imply ALL GNU software can.
-- #
-- # This file is free software; you can redistribute it and/or modify
-- # it under the terms of the GNU General Public License as published by
-- # the Free Software Foundation; either version 2 of the License, or
--@@ -121,17 +121,17 @@ esac
-- 
-- # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-- # Here we must recognize all the valid KERNEL-OS combinations.
-- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-- case $maybe_os in
--   nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
--   uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
--   kopensolaris*-gnu* | \
---  storm-chaos* | os2-emx* | rtmk-nova*)
--+  storm-chaos* | os2-emx* | rtmk-nova* | wince-winmo*)
--     os=-$maybe_os
--     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
--     ;;
--   *)
--     basic_machine=`echo $1 | sed 's/-[^-]*$//'`
--     if [ $basic_machine != $1 ]
--     then os=`echo $1 | sed 's/.*-/-/'`
--     else os=; fi
--@@ -282,32 +282,30 @@ case $basic_machine in
-- 	| mt \
-- 	| msp430 \
-- 	| nios | nios2 \
-- 	| ns16k | ns32k \
-- 	| or32 \
-- 	| pdp10 | pdp11 | pj | pjl \
-- 	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
-- 	| pyramid \
---	| rx \
-- 	| score \
-- 	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-- 	| sh64 | sh64le \
-- 	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-- 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-- 	| spu | strongarm \
-- 	| tahoe | thumb | tic4x | tic80 | tron \
---	| ubicom32 \
-- 	| v850 | v850e \
-- 	| we32k \
-- 	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
-- 	| z8k | z80)
-- 		basic_machine=$basic_machine-unknown
-- 		;;
---	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
--+	m6811 | m68hc11 | m6812 | m68hc12)
-- 		# Motorola 68HC11/12.
-- 		basic_machine=$basic_machine-unknown
-- 		os=-none
-- 		;;
-- 	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-- 		;;
-- 	ms1)
-- 		basic_machine=mt-unknown
--@@ -368,26 +366,25 @@ case $basic_machine in
-- 	| mt-* \
-- 	| msp430-* \
-- 	| nios-* | nios2-* \
-- 	| none-* | np1-* | ns16k-* | ns32k-* \
-- 	| orion-* \
-- 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-- 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
-- 	| pyramid-* \
---	| romp-* | rs6000-* | rx-* \
--+	| romp-* | rs6000-* \
-- 	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-- 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-- 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-- 	| sparclite-* \
-- 	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
-- 	| tahoe-* | thumb-* \
-- 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
-- 	| tron-* \
---	| ubicom32-* \
-- 	| v850-* | v850e-* | vax-* \
-- 	| we32k-* \
-- 	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
-- 	| xstormy16-* | xtensa*-* \
-- 	| ymp-* \
-- 	| z8k-* | z80-*)
-- 		;;
-- 	# Recognize the basic CPU types without company name, with glob match.
--@@ -1294,17 +1291,17 @@ case $os in
-- 	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
-- 	      | -uxpv* | -beos* | -mpeix* | -udk* \
-- 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-- 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-- 	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-- 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-- 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-- 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
---	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
--+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -winmo*)
-- 	# Remember, each alternative MUST END IN *, to match a version number.
-- 		;;
-- 	-qnx*)
-- 		case $basic_machine in
-- 		    x86-* | i*86-*)
-- 			;;
-- 		    *)
-- 			os=-nto$os
--@@ -1336,16 +1333,19 @@ case $os in
-- 		os=`echo $os | sed -e 's|sunos6|solaris3|'`
-- 		;;
-- 	-opened*)
-- 		os=-openedition
-- 		;;
--         -os400*)
-- 		os=-os400
-- 		;;
--+	-wince-winmo*)
--+		os=-wince-winmo
--+		;;
-- 	-wince*)
-- 		os=-wince
-- 		;;
-- 	-osfrose*)
-- 		os=-osfrose
-- 		;;
-- 	-osf*)
-- 		os=-osf
--@@ -1427,16 +1427,19 @@ case $os in
-- 		os=-kaos
-- 		;;
-- 	-zvmoe)
-- 		os=-zvmoe
-- 		;;
-- 	-dicos*)
-- 		os=-dicos
-- 		;;
--+        -android*)
--+	        os=-android
--+                ;;
-- 	-none)
-- 		;;
-- 	*)
-- 		# Get rid of the `-' at the beginning of $os.
-- 		os=`echo $os | sed 's/[^-]*-//'`
-- 		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-- 		exit 1
-- 		;;
--@@ -1681,16 +1684,19 @@ case $basic_machine in
-- 				vendor=apple
-- 				;;
-- 			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-- 				vendor=atari
-- 				;;
-- 			-vos*)
-- 				vendor=stratus
-- 				;;
--+			*-android*|*-linuxandroid*)
--+				vendor=linux-
--+				;;
-- 		esac
-- 		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-- 		;;
-- esac
-- 
-- echo $basic_machine$os
-- exit
-- 
--diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
----- a/js/src/ctypes/libffi/configure
--+++ b/js/src/ctypes/libffi/configure
--@@ -8903,17 +8903,17 @@ if test -z "$aix_libpath"; then aix_libp
--       # Tell ltmain to make .dll files, not .so files.
--       shrext_cmds=".dll"
--       # FIXME: Setting linknames here is a bad hack.
--       archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
--       # The linker will automatically build a .lib file if we build a DLL.
--       old_archive_from_new_cmds='true'
--       # FIXME: Should let the user specify the lib program.
--       old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
---      fix_srcfile_path='`cygpath -w "$srcfile"`'
--+      fix_srcfile_path=''
--       enable_shared_with_static_runtimes=yes
--       ;;
-- 
--     darwin* | rhapsody*)
-- 
-- 
--   archive_cmds_need_lc=no
--   hardcode_direct=no
--@@ -12270,20 +12270,20 @@ fi
-- 
-- if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then
--     { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports pc related relocs" >&5
-- $as_echo_n "checking assembler supports pc related relocs... " >&6; }
-- if test "${libffi_cv_as_x86_pcrel+set}" = set; then :
--   $as_echo_n "(cached) " >&6
-- else
-- 
---	libffi_cv_as_x86_pcrel=yes
--+	libffi_cv_as_x86_pcrel=no
-- 	echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s
---	if $CC $CFLAGS -c conftest.s 2>&1 | $EGREP -i 'illegal|warning' > /dev/null; then
---	    libffi_cv_as_x86_pcrel=no
--+	if $CC $CFLAGS -c conftest.s > /dev/null; then
--+	    libffi_cv_as_x86_pcrel=yes
-- 	fi
-- 
-- fi
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_pcrel" >&5
-- $as_echo "$libffi_cv_as_x86_pcrel" >&6; }
--     if test "x$libffi_cv_as_x86_pcrel" = xyes; then
-- 
-- $as_echo "#define HAVE_AS_X86_PCREL 1" >>confdefs.h
--diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
----- a/js/src/ctypes/libffi/configure.ac
--+++ b/js/src/ctypes/libffi/configure.ac
--@@ -272,20 +272,20 @@ if test x$TARGET = xSPARC; then
--        AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
-- 	       [Define if your assembler supports .register.])
--     fi
-- fi
-- 
-- if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then
--     AC_CACHE_CHECK([assembler supports pc related relocs],
-- 	libffi_cv_as_x86_pcrel, [
---	libffi_cv_as_x86_pcrel=yes
--+	libffi_cv_as_x86_pcrel=no
-- 	echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s
---	if $CC $CFLAGS -c conftest.s 2>&1 | $EGREP -i 'illegal|warning' > /dev/null; then
---	    libffi_cv_as_x86_pcrel=no
--+	if $CC $CFLAGS -c conftest.s > /dev/null; then
--+	    libffi_cv_as_x86_pcrel=yes
-- 	fi
-- 	])
--     if test "x$libffi_cv_as_x86_pcrel" = xyes; then
-- 	AC_DEFINE(HAVE_AS_X86_PCREL, 1,
-- 		  [Define if your assembler supports PC relative relocs.])
--     fi
-- 
--     AC_CACHE_CHECK([assembler .ascii pseudo-op support],
--diff --git a/js/src/ctypes/libffi/include/ffi.h.in b/js/src/ctypes/libffi/include/ffi.h.in
----- a/js/src/ctypes/libffi/include/ffi.h.in
--+++ b/js/src/ctypes/libffi/include/ffi.h.in
--@@ -72,25 +72,37 @@ extern "C" {
-- #endif
-- 
-- #include <stddef.h>
-- #include <limits.h>
-- 
-- /* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example).
--    But we can find it either under the correct ANSI name, or under GNU
--    C's internal name.  */
--+
--+#define FFI_64_BIT_MAX 9223372036854775807
--+
-- #ifdef LONG_LONG_MAX
-- # define FFI_LONG_LONG_MAX LONG_LONG_MAX
-- #else
-- # ifdef LLONG_MAX
-- #  define FFI_LONG_LONG_MAX LLONG_MAX
-- # else
-- #  ifdef __GNUC__
-- #   define FFI_LONG_LONG_MAX __LONG_LONG_MAX__
-- #  endif
--+#  ifdef _AIX
--+#   ifndef __PPC64__
--+#    if defined (__IBMC__) || defined (__IBMCPP__)
--+#     define FFI_LONG_LONG_MAX LONGLONG_MAX
--+#    endif
--+#   endif /* __PPC64__ */
--+#   undef  FFI_64_BIT_MAX
--+#   define FFI_64_BIT_MAX 9223372036854775807LL
--+#  endif
-- # endif
-- #endif
-- 
-- /* The closure code assumes that this works on pointers, i.e. a size_t	*/
-- /* can hold a pointer.							*/
-- 
-- typedef struct _ffi_type
-- {
--@@ -127,27 +139,27 @@ typedef struct _ffi_type
-- #elif INT_MAX == 9223372036854775807
-- # define ffi_type_uint         ffi_type_uint64
-- # define ffi_type_sint         ffi_type_sint64
-- #else
--  #error "int size not supported"
-- #endif
-- 
-- #if LONG_MAX == 2147483647
---# if FFI_LONG_LONG_MAX != 9223372036854775807
--+# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX
--  #error "no 64-bit data type supported"
-- # endif
---#elif LONG_MAX != 9223372036854775807
--+#elif LONG_MAX != FFI_64_BIT_MAX
--  #error "long size not supported"
-- #endif
-- 
-- #if LONG_MAX == 2147483647
-- # define ffi_type_ulong        ffi_type_uint32
-- # define ffi_type_slong        ffi_type_sint32
---#elif LONG_MAX == 9223372036854775807
--+#elif LONG_MAX == FFI_64_BIT_MAX
-- # define ffi_type_ulong        ffi_type_uint64
-- # define ffi_type_slong        ffi_type_sint64
-- #else
--  #error "long size not supported"
-- #endif
-- 
-- /* These are defined in types.c */
-- extern ffi_type ffi_type_void;
--@@ -190,17 +202,17 @@ typedef struct {
-- #endif
-- } ffi_cif;
-- 
-- /* ---- Definitions for the raw API -------------------------------------- */
-- 
-- #ifndef FFI_SIZEOF_ARG
-- # if LONG_MAX == 2147483647
-- #  define FFI_SIZEOF_ARG        4
---# elif LONG_MAX == 9223372036854775807
--+# elif LONG_MAX == FFI_64_BIT_MAX
-- #  define FFI_SIZEOF_ARG        8
-- # endif
-- #endif
-- 
-- #ifndef FFI_SIZEOF_JAVA_RAW
-- #  define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG
-- #endif
-- 
--diff --git a/js/src/ctypes/libffi/src/arm/ffi.c b/js/src/ctypes/libffi/src/arm/ffi.c
----- a/js/src/ctypes/libffi/src/arm/ffi.c
--+++ b/js/src/ctypes/libffi/src/arm/ffi.c
--@@ -24,22 +24,30 @@
--    DEALINGS IN THE SOFTWARE.
--    ----------------------------------------------------------------------- */
-- 
-- #include <ffi.h>
-- #include <ffi_common.h>
-- 
-- #include <stdlib.h>
-- 
--+/* Forward declares. */
--+static int vfp_type_p (ffi_type *);
--+static void layout_vfp_args (ffi_cif *);
--+
-- /* ffi_prep_args is called by the assembly routine once stack space
---   has been allocated for the function's arguments */
---
---void ffi_prep_args(char *stack, extended_cif *ecif)
--+   has been allocated for the function's arguments
--+   
--+   The vfp_space parameter is the load area for VFP regs, the return
--+   value is cif->vfp_used (word bitset of VFP regs used for passing
--+   arguments). These are only used for the VFP hard-float ABI.
--+*/
--+int ffi_prep_args(char *stack, extended_cif *ecif, float *vfp_space)
-- {
---  register unsigned int i;
--+  register unsigned int i, vi = 0;
--   register void **p_argv;
--   register char *argp;
--   register ffi_type **p_arg;
-- 
--   argp = stack;
-- 
--   if ( ecif->cif->flags == FFI_TYPE_STRUCT ) {
--     *(void **) argp = ecif->rvalue;
--@@ -49,16 +57,31 @@ void ffi_prep_args(char *stack, extended
--   p_argv = ecif->avalue;
-- 
--   for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
--        (i != 0);
--        i--, p_arg++)
--     {
--       size_t z;
-- 
--+      /* Allocated in VFP registers. */
--+      if (ecif->cif->abi == FFI_VFP
--+	  && vi < ecif->cif->vfp_nargs && vfp_type_p (*p_arg))
--+	{
--+	  float* vfp_slot = vfp_space + ecif->cif->vfp_args[vi++];
--+	  if ((*p_arg)->type == FFI_TYPE_FLOAT)
--+	    *((float*)vfp_slot) = *((float*)*p_argv);
--+	  else if ((*p_arg)->type == FFI_TYPE_DOUBLE)
--+	    *((double*)vfp_slot) = *((double*)*p_argv);
--+	  else
--+	    memcpy(vfp_slot, *p_argv, (*p_arg)->size);
--+	  p_argv++;
--+	  continue;
--+	}
--+
--       /* Align if necessary */
--       if (((*p_arg)->alignment - 1) & (unsigned) argp) {
-- 	argp = (char *) ALIGN(argp, (*p_arg)->alignment);
--       }
-- 
--       if ((*p_arg)->type == FFI_TYPE_STRUCT)
-- 	argp = (char *) ALIGN(argp, 4);
-- 
--@@ -98,23 +121,25 @@ void ffi_prep_args(char *stack, extended
-- 	    }
-- 	  else
-- 	    {
-- 	      memcpy(argp, *p_argv, z);
-- 	    }
-- 	  p_argv++;
-- 	  argp += z;
--     }
---  
---  return;
--+
--+  /* Indicate the VFP registers used. */
--+  return ecif->cif->vfp_used;
-- }
-- 
-- /* Perform machine dependent cif processing */
-- ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
-- {
--+  int type_code;
--   /* Round the stack up to a multiple of 8 bytes.  This isn't needed 
--      everywhere, but it is on some platforms, and it doesn't harm anything
--      when it isn't needed.  */
--   cif->bytes = (cif->bytes + 7) & ~7;
-- 
--   /* Set the return type flag */
--   switch (cif->rtype->type)
--     {
--@@ -125,137 +150,176 @@ ffi_status ffi_prep_cif_machdep(ffi_cif 
--       break;
-- 
--     case FFI_TYPE_SINT64:
--     case FFI_TYPE_UINT64:
--       cif->flags = (unsigned) FFI_TYPE_SINT64;
--       break;
-- 
--     case FFI_TYPE_STRUCT:
---      if (cif->rtype->size <= 4)
--+      if (cif->abi == FFI_VFP
--+	  && (type_code = vfp_type_p (cif->rtype)) != 0)
--+	{
--+	  /* A Composite Type passed in VFP registers, either
--+	     FFI_TYPE_STRUCT_VFP_FLOAT or FFI_TYPE_STRUCT_VFP_DOUBLE. */
--+	  cif->flags = (unsigned) type_code;
--+	}
--+      else if (cif->rtype->size <= 4)
-- 	/* A Composite Type not larger than 4 bytes is returned in r0.  */
-- 	cif->flags = (unsigned)FFI_TYPE_INT;
--       else
-- 	/* A Composite Type larger than 4 bytes, or whose size cannot
-- 	   be determined statically ... is stored in memory at an
-- 	   address passed [in r0].  */
-- 	cif->flags = (unsigned)FFI_TYPE_STRUCT;
--       break;
-- 
--     default:
--       cif->flags = FFI_TYPE_INT;
--       break;
--     }
-- 
--+  /* Map out the register placements of VFP register args.
--+     The VFP hard-float calling conventions are slightly more sophisticated than
--+     the base calling conventions, so we do it here instead of in ffi_prep_args(). */
--+  if (cif->abi == FFI_VFP)
--+    layout_vfp_args (cif);
--+
--   return FFI_OK;
-- }
-- 
---extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *,
---			  unsigned, unsigned, unsigned *, void (*fn)(void));
--+/* Prototypes for assembly functions, in sysv.S */
--+extern void ffi_call_SYSV (void (*fn)(void), extended_cif *, unsigned, unsigned, unsigned *);
--+extern void ffi_call_VFP (void (*fn)(void), extended_cif *, unsigned, unsigned, unsigned *);
-- 
-- void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
-- {
--   extended_cif ecif;
-- 
--   int small_struct = (cif->flags == FFI_TYPE_INT 
-- 		      && cif->rtype->type == FFI_TYPE_STRUCT);
--+  int vfp_struct = (cif->flags == FFI_TYPE_STRUCT_VFP_FLOAT
--+		    || cif->flags == FFI_TYPE_STRUCT_VFP_DOUBLE);
-- 
--   ecif.cif = cif;
--   ecif.avalue = avalue;
-- 
--   unsigned int temp;
--   
--   /* If the return value is a struct and we don't have a return	*/
--   /* value address then we need to make one		        */
-- 
--   if ((rvalue == NULL) && 
--       (cif->flags == FFI_TYPE_STRUCT))
--     {
--       ecif.rvalue = alloca(cif->rtype->size);
--     }
--   else if (small_struct)
--     ecif.rvalue = &temp;
--+  else if (vfp_struct)
--+    {
--+      /* Largest case is double x 4. */
--+      ecif.rvalue = alloca(32);
--+    }
--   else
--     ecif.rvalue = rvalue;
-- 
--   switch (cif->abi) 
--     {
--     case FFI_SYSV:
---      ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue,
---		    fn);
--+      ffi_call_SYSV (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue);
--+      break;
-- 
--+    case FFI_VFP:
--+      ffi_call_VFP (fn, &ecif, cif->bytes, cif->flags, ecif.rvalue);
--       break;
--+
--     default:
--       FFI_ASSERT(0);
--       break;
--     }
--   if (small_struct)
--     memcpy (rvalue, &temp, cif->rtype->size);
--+  else if (vfp_struct)
--+    memcpy (rvalue, ecif.rvalue, cif->rtype->size);
-- }
-- 
-- /** private members **/
-- 
-- static void ffi_prep_incoming_args_SYSV (char *stack, void **ret,
---					 void** args, ffi_cif* cif);
--+					 void** args, ffi_cif* cif, float *vfp_stack);
-- 
-- void ffi_closure_SYSV (ffi_closure *);
-- 
--+void ffi_closure_VFP (ffi_closure *);
--+
-- /* This function is jumped to by the trampoline */
-- 
-- unsigned int
---ffi_closure_SYSV_inner (closure, respp, args)
--+ffi_closure_SYSV_inner (closure, respp, args, vfp_args)
--      ffi_closure *closure;
--      void **respp;
--      void *args;
--+     void *vfp_args;
-- {
--   // our various things...
--   ffi_cif       *cif;
--   void         **arg_area;
-- 
--   cif         = closure->cif;
--   arg_area    = (void**) alloca (cif->nargs * sizeof (void*));  
-- 
--   /* this call will initialize ARG_AREA, such that each
--    * element in that array points to the corresponding 
--    * value on the stack; and if the function returns
--    * a structure, it will re-set RESP to point to the
--    * structure return address.  */
-- 
---  ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif);
--+  ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif, vfp_args);
-- 
--   (closure->fun) (cif, *respp, arg_area, closure->user_data);
-- 
--   return cif->flags;
-- }
-- 
-- /*@-exportheader@*/
-- static void 
-- ffi_prep_incoming_args_SYSV(char *stack, void **rvalue,
---			    void **avalue, ffi_cif *cif)
--+			    void **avalue, ffi_cif *cif,
--+			    /* Used only under VFP hard-float ABI. */
--+			    float *vfp_stack)
-- /*@=exportheader@*/
-- {
---  register unsigned int i;
--+  register unsigned int i, vi = 0;
--   register void **p_argv;
--   register char *argp;
--   register ffi_type **p_arg;
-- 
--   argp = stack;
-- 
--   if ( cif->flags == FFI_TYPE_STRUCT ) {
--     *rvalue = *(void **) argp;
--     argp += 4;
--   }
-- 
--   p_argv = avalue;
-- 
--   for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++)
--     {
--       size_t z;
--+      size_t alignment;
--+  
--+      if (cif->abi == FFI_VFP
--+	  && vi < cif->vfp_nargs && vfp_type_p (*p_arg))
--+	{
--+	  *p_argv++ = (void*)(vfp_stack + cif->vfp_args[vi++]);
--+	  continue;
--+	}
-- 
---      size_t alignment = (*p_arg)->alignment;
--+      alignment = (*p_arg)->alignment;
--       if (alignment < 4)
-- 	alignment = 4;
--       /* Align if necessary */
--       if ((alignment - 1) & (unsigned) argp) {
-- 	argp = (char *) ALIGN(argp, alignment);
--       }
-- 
--       z = (*p_arg)->size;
--@@ -290,20 +354,147 @@ ffi_prep_incoming_args_SYSV(char *stack,
-- 
-- ffi_status
-- ffi_prep_closure_loc (ffi_closure* closure,
-- 		      ffi_cif* cif,
-- 		      void (*fun)(ffi_cif*,void*,void**,void*),
-- 		      void *user_data,
-- 		      void *codeloc)
-- {
---  FFI_ASSERT (cif->abi == FFI_SYSV);
--+  void (*closure_func)(ffi_closure*) = NULL;
-- 
--+  if (cif->abi == FFI_SYSV)
--+    closure_func = &ffi_closure_SYSV;
--+  else if (cif->abi == FFI_VFP)
--+    closure_func = &ffi_closure_VFP;
--+  else
--+    FFI_ASSERT (0);
--+    
--   FFI_INIT_TRAMPOLINE (&closure->tramp[0], \
---		       &ffi_closure_SYSV,  \
--+		       closure_func,  \
-- 		       codeloc);
--     
--   closure->cif  = cif;
--   closure->user_data = user_data;
--   closure->fun  = fun;
-- 
--   return FFI_OK;
-- }
--+
--+/* Below are routines for VFP hard-float support. */
--+
--+static int rec_vfp_type_p (ffi_type *t, int *elt, int *elnum)
--+{
--+  switch (t->type)
--+    {
--+    case FFI_TYPE_FLOAT:
--+    case FFI_TYPE_DOUBLE:
--+      *elt = (int) t->type;
--+      *elnum = 1;
--+      return 1;
--+
--+    case FFI_TYPE_STRUCT_VFP_FLOAT:
--+      *elt = FFI_TYPE_FLOAT;
--+      *elnum = t->size / sizeof (float);
--+      return 1;
--+
--+    case FFI_TYPE_STRUCT_VFP_DOUBLE:
--+      *elt = FFI_TYPE_DOUBLE;
--+      *elnum = t->size / sizeof (double);
--+      return 1;
--+
--+    case FFI_TYPE_STRUCT:;
--+      {
--+	int base_elt = 0, total_elnum = 0;
--+	ffi_type **el = t->elements;
--+	while (*el)
--+	  {
--+	    int el_elt = 0, el_elnum = 0;
--+	    if (! rec_vfp_type_p (*el, &el_elt, &el_elnum)
--+		|| (base_elt && base_elt != el_elt)
--+		|| total_elnum + el_elnum > 4)
--+	      return 0;
--+	    base_elt = el_elt;
--+	    total_elnum += el_elnum;
--+	    el++;
--+	  }
--+	*elnum = total_elnum;
--+	*elt = base_elt;
--+	return 1;
--+      }
--+    default: ;
--+    }
--+  return 0;
--+}
--+
--+static int vfp_type_p (ffi_type *t)
--+{
--+  int elt, elnum;
--+  if (rec_vfp_type_p (t, &elt, &elnum))
--+    {
--+      if (t->type == FFI_TYPE_STRUCT)
--+	{
--+	  if (elnum == 1)
--+	    t->type = elt;
--+	  else
--+	    t->type = (elt == FFI_TYPE_FLOAT
--+		       ? FFI_TYPE_STRUCT_VFP_FLOAT
--+		       : FFI_TYPE_STRUCT_VFP_DOUBLE);
--+	}
--+      return (int) t->type;
--+    }
--+  return 0;
--+}
--+
--+static void place_vfp_arg (ffi_cif *cif, ffi_type *t)
--+{
--+  int reg = cif->vfp_reg_free;
--+  int nregs = t->size / sizeof (float);
--+  int align = ((t->type == FFI_TYPE_STRUCT_VFP_FLOAT
--+		|| t->type == FFI_TYPE_FLOAT) ? 1 : 2);
--+  /* Align register number. */
--+  if ((reg & 1) && align == 2)
--+    reg++;
--+  while (reg + nregs <= 16)
--+    {
--+      int s, new_used = 0;
--+      for (s = reg; s < reg + nregs; s++)
--+	{
--+	  new_used |= (1 << s);
--+	  if (cif->vfp_used & (1 << s))
--+	    {
--+	      reg += align;
--+	      goto next_reg;
--+	    }
--+	}
--+      /* Found regs to allocate. */
--+      cif->vfp_used |= new_used;
--+      cif->vfp_args[cif->vfp_nargs++] = reg;
--+
--+      /* Update vfp_reg_free. */
--+      if (cif->vfp_used & (1 << cif->vfp_reg_free))
--+	{
--+	  reg += nregs;
--+	  while (cif->vfp_used & (1 << reg))
--+	    reg += 1;
--+	  cif->vfp_reg_free = reg;
--+	}
--+      return;
--+    next_reg: ;
--+    }
--+}
--+
--+static void layout_vfp_args (ffi_cif *cif)
--+{
--+  int i;
--+  /* Init VFP fields */
--+  cif->vfp_used = 0;
--+  cif->vfp_nargs = 0;
--+  cif->vfp_reg_free = 0;
--+  memset (cif->vfp_args, -1, 16); /* Init to -1. */
--+
--+  for (i = 0; i < cif->nargs; i++)
--+    {
--+      ffi_type *t = cif->arg_types[i];
--+      if (vfp_type_p (t))
--+	place_vfp_arg (cif, t);
--+    }
--+}
--diff --git a/js/src/ctypes/libffi/src/arm/ffitarget.h b/js/src/ctypes/libffi/src/arm/ffitarget.h
----- a/js/src/ctypes/libffi/src/arm/ffitarget.h
--+++ b/js/src/ctypes/libffi/src/arm/ffitarget.h
--@@ -29,21 +29,35 @@
-- 
-- #ifndef LIBFFI_ASM
-- typedef unsigned long          ffi_arg;
-- typedef signed long            ffi_sarg;
-- 
-- typedef enum ffi_abi {
--   FFI_FIRST_ABI = 0,
--   FFI_SYSV,
--+  FFI_VFP,
--   FFI_LAST_ABI,
--+#ifdef __ARM_PCS_VFP
--+  FFI_DEFAULT_ABI = FFI_VFP
--+#else
--   FFI_DEFAULT_ABI = FFI_SYSV
--+#endif
-- } ffi_abi;
-- #endif
-- 
--+#define FFI_EXTRA_CIF_FIELDS			\
--+  int vfp_used;					\
--+  short vfp_reg_free, vfp_nargs;		\
--+  signed char vfp_args[16]			\
--+
--+/* Internally used. */
--+#define FFI_TYPE_STRUCT_VFP_FLOAT  (FFI_TYPE_LAST + 1)
--+#define FFI_TYPE_STRUCT_VFP_DOUBLE (FFI_TYPE_LAST + 2)
--+
-- /* ---- Definitions for closures ----------------------------------------- */
-- 
-- #define FFI_CLOSURES 1
-- #define FFI_TRAMPOLINE_SIZE 20
-- #define FFI_NATIVE_RAW_API 0
-- 
-- #endif
-- 
--diff --git a/js/src/ctypes/libffi/src/arm/sysv.S b/js/src/ctypes/libffi/src/arm/sysv.S
----- a/js/src/ctypes/libffi/src/arm/sysv.S
--+++ b/js/src/ctypes/libffi/src/arm/sysv.S
--@@ -137,54 +137,52 @@
-- 	ldr\cond	pc, [sp], #4
-- 	.else
-- 	ldm\cond\dirn	sp!, {\regs, pc}
-- 	.endif
-- #endif
-- .endm
-- 
-- 
---	@ r0:   ffi_prep_args
--+	@ r0:   fn
-- 	@ r1:   &ecif
-- 	@ r2:   cif->bytes
-- 	@ r3:   fig->flags
-- 	@ sp+0: ecif.rvalue
---	@ sp+4: fn
-- 
-- 	@ This assumes we are using gas.
-- ARM_FUNC_START ffi_call_SYSV
-- 	@ Save registers
--         stmfd	sp!, {r0-r3, fp, lr}
-- 	UNWIND .save	{r0-r3, fp, lr}
-- 	mov	fp, sp
-- 
-- 	UNWIND .setfp	fp, sp
-- 
-- 	@ Make room for all of the new args.
-- 	sub	sp, fp, r2
-- 
-- 	@ Place all of the ffi_prep_args in position
---	mov	ip, r0
-- 	mov	r0, sp
-- 	@     r1 already set
-- 
-- 	@ Call ffi_prep_args(stack, &ecif)
---	call_reg(ip)
--+	bl	ffi_prep_args
-- 
-- 	@ move first 4 parameters in registers
-- 	ldmia	sp, {r0-r3}
-- 
-- 	@ and adjust stack
---	ldr	ip, [fp, #8]
---        cmp	ip, #16
---	movhs	ip, #16
---        add	sp, sp, ip
--+	sub	lr, fp, sp	@ cif->bytes == fp - sp
--+	ldr	ip, [fp]	@ load fn() in advance
--+	cmp	lr, #16
--+	movhs	lr, #16
--+	add	sp, sp, lr
-- 
-- 	@ call (fn) (...)
---	ldr	ip, [fp, #28]
-- 	call_reg(ip)
-- 	
-- 	@ Remove the space we pushed for the args
-- 	mov	sp, fp
-- 
-- 	@ Load r2 with the pointer to storage for the return value
-- 	ldr	r2, [sp, #24]
-- 
--@@ -225,16 +223,111 @@ ARM_FUNC_START ffi_call_SYSV
-- 
-- LSYM(Lepilogue):
-- 	RETLDM	"r0-r3,fp"
-- 
-- .ffi_call_SYSV_end:
-- 	UNWIND .fnend
--         .size    CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV)
-- 
--+
--+	@ r0:   fn
--+	@ r1:   &ecif
--+	@ r2:   cif->bytes
--+	@ r3:   fig->flags
--+	@ sp+0: ecif.rvalue
--+
--+ARM_FUNC_START ffi_call_VFP
--+	@ Save registers
--+        stmfd	sp!, {r0-r3, fp, lr}
--+	UNWIND .save	{r0-r3, fp, lr}
--+	mov	fp, sp
--+	UNWIND .setfp	fp, sp
--+
--+	@ Make room for all of the new args.
--+	sub	sp, sp, r2
--+
--+	@ Make room for loading VFP args
--+	sub	sp, sp, #64
--+
--+	@ Place all of the ffi_prep_args in position
--+	mov	r0, sp
--+	@     r1 already set
--+	sub	r2, fp, #64   @ VFP scratch space
--+
--+	@ Call ffi_prep_args(stack, &ecif, vfp_space)
--+	bl	ffi_prep_args
--+
--+	@ Load VFP register args if needed
--+	cmp	r0, #0
--+	beq	LSYM(Lbase_args)
--+
--+	@ Load only d0 if possible
--+	cmp	r0, #3
--+	sub	ip, fp, #64
--+	flddle	d0, [ip]
--+	fldmiadgt	ip, {d0-d7}
--+
--+LSYM(Lbase_args):
--+	@ move first 4 parameters in registers
--+	ldmia	sp, {r0-r3}
--+
--+	@ and adjust stack
--+	sub	lr, ip, sp	@ cif->bytes == (fp - 64) - sp
--+	ldr	ip, [fp]	@ load fn() in advance
--+        cmp	lr, #16
--+	movhs	lr, #16
--+        add	sp, sp, lr
--+
--+	@ call (fn) (...)
--+	call_reg(ip)
--+
--+	@ Remove the space we pushed for the args
--+	mov	sp, fp
--+
--+	@ Load r2 with the pointer to storage for
--+	@ the return value
--+	ldr	r2, [sp, #24]
--+
--+	@ Load r3 with the return type code 
--+	ldr	r3, [sp, #12]
--+
--+	@ If the return value pointer is NULL,
--+	@ assume no return value.
--+	cmp	r2, #0
--+	beq	LSYM(Lepilogue_vfp)
--+	
--+	cmp	r3, #FFI_TYPE_INT
--+	streq	r0, [r2]
--+	beq	LSYM(Lepilogue_vfp)
--+
--+	cmp	r3, #FFI_TYPE_SINT64
--+	stmeqia	r2, {r0, r1}
--+	beq	LSYM(Lepilogue_vfp)
--+
--+	cmp	r3, #FFI_TYPE_FLOAT
--+	fstseq	s0, [r2]
--+	beq	LSYM(Lepilogue_vfp)
--+	
--+	cmp	r3, #FFI_TYPE_DOUBLE
--+	fstdeq	d0, [r2]
--+	beq	LSYM(Lepilogue_vfp)
--+
--+	cmp	r3, #FFI_TYPE_STRUCT_VFP_FLOAT
--+	cmpne	r3, #FFI_TYPE_STRUCT_VFP_DOUBLE
--+	fstmiadeq	r2, {d0-d3}
--+
--+LSYM(Lepilogue_vfp):
--+	RETLDM	"r0-r3,fp"
--+
--+.ffi_call_VFP_end:
--+	UNWIND .fnend
--+        .size    CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP)
--+	
--+	
-- /*
-- 	unsigned int FFI_HIDDEN
-- 	ffi_closure_SYSV_inner (closure, respp, args)
-- 	     ffi_closure *closure;
-- 	     void **respp;
--   	     void *args;
-- */
-- 
--@@ -297,11 +390,73 @@ ARM_FUNC_START ffi_closure_SYSV
-- 	ldfd	f0, [sp]
-- 	b	.Lclosure_epilogue
-- #endif
-- 
-- .ffi_closure_SYSV_end:
-- 	UNWIND .fnend
--         .size    CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV)
-- 
--+
--+ARM_FUNC_START ffi_closure_VFP
--+	fstmfdd	sp!, {d0-d7}
--+	@ r0-r3, then d0-d7
--+	UNWIND .pad #80
--+	add	ip, sp, #80
--+	stmfd	sp!, {ip, lr}
--+	UNWIND .save	{r0, lr}
--+	add	r2, sp, #72
--+	add	r3, sp, #8
--+	.pad #72
--+	sub	sp, sp, #72
--+	str	sp, [sp, #64]
--+	add	r1, sp, #64
--+	bl	ffi_closure_SYSV_inner
--+
--+	cmp	r0, #FFI_TYPE_INT
--+	beq	.Lretint_vfp
--+
--+	cmp	r0, #FFI_TYPE_FLOAT
--+	beq	.Lretfloat_vfp
--+
--+	cmp	r0, #FFI_TYPE_DOUBLE
--+	cmpne	r0, #FFI_TYPE_LONGDOUBLE
--+	beq	.Lretdouble_vfp
--+
--+	cmp	r0, #FFI_TYPE_SINT64
--+	beq	.Lretlonglong_vfp
--+
--+	cmp	r0, #FFI_TYPE_STRUCT_VFP_FLOAT
--+	beq	.Lretfloat_struct_vfp
--+
--+	cmp	r0, #FFI_TYPE_STRUCT_VFP_DOUBLE
--+	beq	.Lretdouble_struct_vfp
--+	
--+.Lclosure_epilogue_vfp:
--+	add	sp, sp, #72
--+	ldmfd	sp, {sp, pc}
--+
--+.Lretfloat_vfp:
--+	flds	s0, [sp]
--+	b	.Lclosure_epilogue_vfp
--+.Lretdouble_vfp:
--+	fldd	d0, [sp]
--+	b	.Lclosure_epilogue_vfp
--+.Lretint_vfp:
--+	ldr	r0, [sp]
--+	b	.Lclosure_epilogue_vfp
--+.Lretlonglong_vfp:
--+	ldmia	sp, {r0, r1}
--+	b	.Lclosure_epilogue_vfp
--+.Lretfloat_struct_vfp:
--+	fldmiad	sp, {d0-d1}
--+	b	.Lclosure_epilogue_vfp
--+.Lretdouble_struct_vfp:
--+	fldmiad	sp, {d0-d3}
--+	b	.Lclosure_epilogue_vfp
--+
--+.ffi_closure_VFP_end:
--+	UNWIND .fnend
--+        .size    CNAME(ffi_closure_VFP),.ffi_closure_VFP_end-CNAME(ffi_closure_VFP)
--+
-- #if defined __ELF__ && defined __linux__
-- 	.section	.note.GNU-stack,"",%progbits
-- #endif
--diff --git a/js/src/ctypes/libffi/src/x86/ffi64.c b/js/src/ctypes/libffi/src/x86/ffi64.c
----- a/js/src/ctypes/libffi/src/x86/ffi64.c
--+++ b/js/src/ctypes/libffi/src/x86/ffi64.c
--@@ -373,29 +373,29 @@ ffi_prep_cif_machdep (ffi_cif *cif)
-- 	  || gprcount + ngpr > MAX_GPR_REGS
-- 	  || ssecount + nsse > MAX_SSE_REGS)
-- 	{
-- 	  long align = cif->arg_types[i]->alignment;
-- 
-- 	  if (align < 8)
-- 	    align = 8;
-- 
---	  bytes = ALIGN(bytes, align);
--+	  bytes = ALIGN (bytes, align);
-- 	  bytes += cif->arg_types[i]->size;
-- 	}
--       else
-- 	{
-- 	  gprcount += ngpr;
-- 	  ssecount += nsse;
-- 	}
--     }
--   if (ssecount)
--     flags |= 1 << 11;
--   cif->flags = flags;
---  cif->bytes = bytes;
--+  cif->bytes = ALIGN (bytes, 8);
-- 
--   return FFI_OK;
-- }
-- 
-- void
-- ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
-- {
--   enum x86_64_reg_class classes[MAX_CLASSES];
--diff --git a/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp b/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp
----- a/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp
--+++ b/js/src/ctypes/libffi/testsuite/lib/libffi-dg.exp
--@@ -261,16 +261,66 @@ proc dg-xfail-if { args } {
--     set args [lreplace $args 0 0]
--     set selector "target [join [lindex $args 1]]"
--     if { [dg-process-target $selector] == "S" } {
-- 	global compiler_conditional_xfail_data
-- 	set compiler_conditional_xfail_data $args
--     }
-- }
-- 
--+proc check-flags { args } {
--+
--+    # The args are within another list; pull them out.
--+    set args [lindex $args 0]
--+
--+    # The next two arguments are optional.  If they were not specified,
--+    # use the defaults.
--+    if { [llength $args] == 2 } {
--+	lappend $args [list "*"]
--+    }
--+    if { [llength $args] == 3 } {
--+	lappend $args [list ""]
--+    }
--+
--+    # If the option strings are the defaults, or the same as the
--+    # defaults, there is no need to call check_conditional_xfail to
--+    # compare them to the actual options.
--+    if { [string compare [lindex $args 2] "*"] == 0
--+	 && [string compare [lindex $args 3] "" ] == 0 } {
--+	set result 1    
--+    } else {
--+	# The target list might be an effective-target keyword, so replace
--+	# the original list with "*-*-*", since we already know it matches.
--+	set result [check_conditional_xfail [lreplace $args 1 1 "*-*-*"]]
--+    }
--+
--+    return $result
--+}
--+
--+proc dg-skip-if { args } {
--+    # Verify the number of arguments.  The last two are optional.
--+    set args [lreplace $args 0 0]
--+    if { [llength $args] < 2 || [llength $args] > 4 } {
--+        error "dg-skip-if 2: need 2, 3, or 4 arguments"
--+    }
--+
--+    # Don't bother if we're already skipping the test.
--+    upvar dg-do-what dg-do-what
--+    if { [lindex ${dg-do-what} 1] == "N" } {
--+      return
--+    }
--+
--+    set selector [list target [lindex $args 1]]
--+    if { [dg-process-target $selector] == "S" } {
--+        if [check-flags $args] {
--+            upvar dg-do-what dg-do-what
--+            set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
--+        }
--+    }
--+}
-- 
-- # We need to make sure that additional_files and additional_sources
-- # are both cleared out after every test.  It is not enough to clear
-- # them out *before* the next test run because gcc-target-compile gets
-- # run directly from some .exp files (outside of any test).  (Those
-- # uses should eventually be eliminated.)
-- 
-- # Because the DG framework doesn't provide a hook that is run at the
--diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c
----- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c
--+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_double_va.c
--@@ -1,16 +1,18 @@
-- /* Area:		ffi_call, closure_call
--    Purpose:		Test doubles passed in variable argument lists.
--    Limitations:	none.
--    PR:			none.
--    Originator:	Blake Chaffin 6/6/2007	 */
-- 
-- /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
-- /* { dg-output "" { xfail avr32*-*-* } } */
--+/* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */
--+
-- #include "ffitest.h"
-- 
-- static void
-- cls_double_va_fn(ffi_cif* cif __UNUSED__, void* resp, 
-- 		 void** args, void* userdata __UNUSED__)
-- {
-- 	char*	format		= *(char**)args[0];
-- 	double	doubleValue	= *(double*)args[1];
--diff --git a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c
----- a/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c
--+++ b/js/src/ctypes/libffi/testsuite/libffi.call/cls_longdouble_va.c
--@@ -1,16 +1,18 @@
-- /* Area:		ffi_call, closure_call
--    Purpose:		Test long doubles passed in variable argument lists.
--    Limitations:	none.
--    PR:			none.
--    Originator:	Blake Chaffin 6/6/2007	 */
-- 
-- /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
-- /* { dg-output "" { xfail avr32*-*-* x86_64-*-mingw* } } */
--+/* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */
--+
-- #include "ffitest.h"
-- 
-- static void
-- cls_longdouble_va_fn(ffi_cif* cif __UNUSED__, void* resp, 
-- 		     void** args, void* userdata __UNUSED__)
-- {
-- 	char*		format	= *(char**)args[0];
-- 	long double	ldValue	= *(long double*)args[1];
-diff --git a/js/src/ctypes/patches-libffi/01-bug-670719.patch b/js/src/ctypes/patches-libffi/01-bug-670719.patch
-deleted file mode 100644
---- a/js/src/ctypes/patches-libffi/01-bug-670719.patch
-+++ /dev/null
-@@ -1,50 +0,0 @@
--# HG changeset patch
--# Parent e357f3f732a0f3e98f8bd4661de03c9042c5c330
--# User Landry Breuil <landry@openbsd.org>
--treat powerpc-*-openbsd* as powerpc-*-freebsd*
--
--
--diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
----- a/js/src/ctypes/libffi/configure
--+++ b/js/src/ctypes/libffi/configure
--@@ -11272,17 +11272,17 @@ case "$host" in
-- 	TARGET=POWERPC; TARGETDIR=powerpc
-- 	;;
--   powerpc-*-darwin*)
-- 	TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
-- 	;;
--   powerpc-*-aix* | rs6000-*-aix*)
-- 	TARGET=POWERPC_AIX; TARGETDIR=powerpc
-- 	;;
---  powerpc-*-freebsd*)
--+  powerpc-*-freebsd* | powerpc-*-openbsd*)
-- 	TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
-- 	;;
--   powerpc*-*-rtems*)
-- 	TARGET=POWERPC; TARGETDIR=powerpc
-- 	;;
-- 
--   s390-*-* | s390x-*-*)
-- 	TARGET=S390; TARGETDIR=s390
--diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
----- a/js/src/ctypes/libffi/configure.ac
--+++ b/js/src/ctypes/libffi/configure.ac
--@@ -135,17 +135,17 @@ case "$host" in
-- 	TARGET=POWERPC; TARGETDIR=powerpc
-- 	;;
--   powerpc-*-darwin*)
-- 	TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
-- 	;;
--   powerpc-*-aix* | rs6000-*-aix*)
-- 	TARGET=POWERPC_AIX; TARGETDIR=powerpc
-- 	;;
---  powerpc-*-freebsd*)
--+  powerpc-*-freebsd* | powerpc-*-openbsd*)
-- 	TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
-- 	;;
--   powerpc*-*-rtems*)
-- 	TARGET=POWERPC; TARGETDIR=powerpc
-- 	;;
-- 
--   s390-*-* | s390x-*-*)
-- 	TARGET=S390; TARGETDIR=s390
-diff --git a/js/src/ctypes/patches-libffi/02-bug-682180.patch b/js/src/ctypes/patches-libffi/02-bug-682180.patch
-deleted file mode 100644
---- a/js/src/ctypes/patches-libffi/02-bug-682180.patch
-+++ /dev/null
-@@ -1,48 +0,0 @@
--# HG changeset patch
--# Parent 5e5eb679345b4d13b8e9ee40e253a97fd665dad3
--diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
----- a/js/src/ctypes/libffi/configure
--+++ b/js/src/ctypes/libffi/configure
--@@ -12357,17 +12357,18 @@ fi
--     if test "x$libffi_cv_as_string_pseudo_op" = xyes; then
-- 
-- $as_echo "#define HAVE_AS_STRING_PSEUDO_OP 1" >>confdefs.h
-- 
--     fi
-- fi
-- 
-- case "$target" in
---     *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
--+     # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages
--+     *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
-- 
-- $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
-- 
--      ;;
-- esac
-- 
-- if test x$TARGET = xX86_64; then
--     { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports unwind section type" >&5
--diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
----- a/js/src/ctypes/libffi/configure.ac
--+++ b/js/src/ctypes/libffi/configure.ac
--@@ -311,17 +311,18 @@ if test x$TARGET = xX86 || test x$TARGET
--     ])
--     if test "x$libffi_cv_as_string_pseudo_op" = xyes; then
--        AC_DEFINE(HAVE_AS_STRING_PSEUDO_OP, 1,
-- 	       [Define if your assembler supports .string.])
--     fi
-- fi
-- 
-- case "$target" in
---     *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
--+     # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages
--+     *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
--        AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
--                  [Cannot use malloc on this target, so, we revert to
--                    alternative means])
--      ;;
-- esac
-- 
-- if test x$TARGET = xX86_64; then
--     AC_CACHE_CHECK([assembler supports unwind section type],
-diff --git a/js/src/ctypes/patches-libffi/03-bug-712594.patch b/js/src/ctypes/patches-libffi/03-bug-712594.patch
-deleted file mode 100644
---- a/js/src/ctypes/patches-libffi/03-bug-712594.patch
-+++ /dev/null
-@@ -1,1210 +0,0 @@
--commit 5b9cd52784339a42e417174a55e310e214d435f9
--Author: Anthony Green <green@moxielogic.com>
--Date:   Mon Nov 22 15:19:57 2010 -0500
--
--    win64-underscore patch
--
--diff --git a/js/src/ctypes/libffi/aclocal.m4 b/js/src/ctypes/libffi/aclocal.m4
----- a/js/src/ctypes/libffi/aclocal.m4
--+++ b/js/src/ctypes/libffi/aclocal.m4
--@@ -7359,16 +7359,821 @@ func_append ()
--   eval "$[1]=\$$[1]\$[2]"
-- }
-- 
-- _LT_EOF
--     ;;
--   esac
-- ])
-- 
--+# ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*-
--+#
--+#   Copyright (C) 1999-2006, 2007, 2008 Free Software Foundation, Inc.
--+#   Written by Thomas Tanner, 1999
--+#
--+# This file is free software; the Free Software Foundation gives
--+# unlimited permission to copy and/or distribute it, with or without
--+# modifications, as long as this notice is preserved.
--+
--+# serial 17 LTDL_INIT
--+
--+# LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE])
--+# ------------------------------------------
--+# DIRECTORY contains the libltdl sources.  It is okay to call this
--+# function multiple times, as long as the same DIRECTORY is always given.
--+AC_DEFUN([LT_CONFIG_LTDL_DIR],
--+[AC_BEFORE([$0], [LTDL_INIT])
--+_$0($*)
--+])# LT_CONFIG_LTDL_DIR
--+
--+# We break this out into a separate macro, so that we can call it safely
--+# internally without being caught accidentally by the sed scan in libtoolize.
--+m4_defun([_LT_CONFIG_LTDL_DIR],
--+[dnl remove trailing slashes
--+m4_pushdef([_ARG_DIR], m4_bpatsubst([$1], [/*$]))
--+m4_case(_LTDL_DIR,
--+	[], [dnl only set lt_ltdl_dir if _ARG_DIR is not simply `.'
--+	     m4_if(_ARG_DIR, [.],
--+	             [],
--+		 [m4_define([_LTDL_DIR], _ARG_DIR)
--+	          _LT_SHELL_INIT([lt_ltdl_dir=']_ARG_DIR['])])],
--+    [m4_if(_ARG_DIR, _LTDL_DIR,
--+	    [],
--+	[m4_fatal([multiple libltdl directories: `]_LTDL_DIR[', `]_ARG_DIR['])])])
--+m4_popdef([_ARG_DIR])
--+])# _LT_CONFIG_LTDL_DIR
--+
--+# Initialise:
--+m4_define([_LTDL_DIR], [])
--+
--+
--+# _LT_BUILD_PREFIX
--+# ----------------
--+# If Autoconf is new enough, expand to `${top_build_prefix}', otherwise
--+# to `${top_builddir}/'.
--+m4_define([_LT_BUILD_PREFIX],
--+[m4_ifdef([AC_AUTOCONF_VERSION],
--+   [m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.62]),
--+	  [-1], [m4_ifdef([_AC_HAVE_TOP_BUILD_PREFIX],
--+			  [${top_build_prefix}],
--+			  [${top_builddir}/])],
--+	  [${top_build_prefix}])],
--+   [${top_builddir}/])[]dnl
--+])
--+
--+
--+# LTDL_CONVENIENCE
--+# ----------------
--+# sets LIBLTDL to the link flags for the libltdl convenience library and
--+# LTDLINCL to the include flags for the libltdl header and adds
--+# --enable-ltdl-convenience to the configure arguments.  Note that
--+# AC_CONFIG_SUBDIRS is not called here.  LIBLTDL will be prefixed with
--+# '${top_build_prefix}' if available, otherwise with '${top_builddir}/',
--+# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
--+# quotes!).  If your package is not flat and you're not using automake,
--+# define top_build_prefix, top_builddir, and top_srcdir appropriately
--+# in your Makefiles.
--+AC_DEFUN([LTDL_CONVENIENCE],
--+[AC_BEFORE([$0], [LTDL_INIT])dnl
--+dnl Although the argument is deprecated and no longer documented,
--+dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one
--+dnl here make sure it is the same as any other declaration of libltdl's
--+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
--+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
--+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
--+_$0()
--+])# LTDL_CONVENIENCE
--+
--+# AC_LIBLTDL_CONVENIENCE accepted a directory argument in older libtools,
--+# now we have LT_CONFIG_LTDL_DIR:
--+AU_DEFUN([AC_LIBLTDL_CONVENIENCE],
--+[_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
--+_LTDL_CONVENIENCE])
--+
--+dnl aclocal-1.4 backwards compatibility:
--+dnl AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [])
--+
--+
--+# _LTDL_CONVENIENCE
--+# -----------------
--+# Code shared by LTDL_CONVENIENCE and LTDL_INIT([convenience]).
--+m4_defun([_LTDL_CONVENIENCE],
--+[case $enable_ltdl_convenience in
--+  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
--+  "") enable_ltdl_convenience=yes
--+      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
--+esac
--+LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdlc.la"
--+LTDLDEPS=$LIBLTDL
--+LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}"
--+
--+AC_SUBST([LIBLTDL])
--+AC_SUBST([LTDLDEPS])
--+AC_SUBST([LTDLINCL])
--+
--+# For backwards non-gettext consistent compatibility...
--+INCLTDL="$LTDLINCL"
--+AC_SUBST([INCLTDL])
--+])# _LTDL_CONVENIENCE
--+
--+
--+# LTDL_INSTALLABLE
--+# ----------------
--+# sets LIBLTDL to the link flags for the libltdl installable library
--+# and LTDLINCL to the include flags for the libltdl header and adds
--+# --enable-ltdl-install to the configure arguments.  Note that
--+# AC_CONFIG_SUBDIRS is not called from here.  If an installed libltdl
--+# is not found, LIBLTDL will be prefixed with '${top_build_prefix}' if
--+# available, otherwise with '${top_builddir}/', and LTDLINCL will be
--+# prefixed with '${top_srcdir}/' (note the single quotes!).  If your
--+# package is not flat and you're not using automake, define top_build_prefix,
--+# top_builddir, and top_srcdir appropriately in your Makefiles.
--+# In the future, this macro may have to be called after LT_INIT.
--+AC_DEFUN([LTDL_INSTALLABLE],
--+[AC_BEFORE([$0], [LTDL_INIT])dnl
--+dnl Although the argument is deprecated and no longer documented,
--+dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one
--+dnl here make sure it is the same as any other declaration of libltdl's
--+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
--+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
--+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
--+_$0()
--+])# LTDL_INSTALLABLE
--+
--+# AC_LIBLTDL_INSTALLABLE accepted a directory argument in older libtools,
--+# now we have LT_CONFIG_LTDL_DIR:
--+AU_DEFUN([AC_LIBLTDL_INSTALLABLE],
--+[_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
--+_LTDL_INSTALLABLE])
--+
--+dnl aclocal-1.4 backwards compatibility:
--+dnl AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [])
--+
--+
--+# _LTDL_INSTALLABLE
--+# -----------------
--+# Code shared by LTDL_INSTALLABLE and LTDL_INIT([installable]).
--+m4_defun([_LTDL_INSTALLABLE],
--+[if test -f $prefix/lib/libltdl.la; then
--+  lt_save_LDFLAGS="$LDFLAGS"
--+  LDFLAGS="-L$prefix/lib $LDFLAGS"
--+  AC_CHECK_LIB([ltdl], [lt_dlinit], [lt_lib_ltdl=yes])
--+  LDFLAGS="$lt_save_LDFLAGS"
--+  if test x"${lt_lib_ltdl-no}" = xyes; then
--+    if test x"$enable_ltdl_install" != xyes; then
--+      # Don't overwrite $prefix/lib/libltdl.la without --enable-ltdl-install
--+      AC_MSG_WARN([not overwriting libltdl at $prefix, force with `--enable-ltdl-install'])
--+      enable_ltdl_install=no
--+    fi
--+  elif test x"$enable_ltdl_install" = xno; then
--+    AC_MSG_WARN([libltdl not installed, but installation disabled])
--+  fi
--+fi
--+
--+# If configure.ac declared an installable ltdl, and the user didn't override
--+# with --disable-ltdl-install, we will install the shipped libltdl.
--+case $enable_ltdl_install in
--+  no) ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
--+      LIBLTDL="-lltdl"
--+      LTDLDEPS=
--+      LTDLINCL=
--+      ;;
--+  *)  enable_ltdl_install=yes
--+      ac_configure_args="$ac_configure_args --enable-ltdl-install"
--+      LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdl.la"
--+      LTDLDEPS=$LIBLTDL
--+      LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}"
--+      ;;
--+esac
--+
--+AC_SUBST([LIBLTDL])
--+AC_SUBST([LTDLDEPS])
--+AC_SUBST([LTDLINCL])
--+
--+# For backwards non-gettext consistent compatibility...
--+INCLTDL="$LTDLINCL"
--+AC_SUBST([INCLTDL])
--+])# LTDL_INSTALLABLE
--+
--+
--+# _LTDL_MODE_DISPATCH
--+# -------------------
--+m4_define([_LTDL_MODE_DISPATCH],
--+[dnl If _LTDL_DIR is `.', then we are configuring libltdl itself:
--+m4_if(_LTDL_DIR, [],
--+	[],
--+    dnl if _LTDL_MODE was not set already, the default value is `subproject':
--+    [m4_case(m4_default(_LTDL_MODE, [subproject]),
--+	  [subproject], [AC_CONFIG_SUBDIRS(_LTDL_DIR)
--+			  _LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"])],
--+	  [nonrecursive], [_LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"; lt_libobj_prefix="$lt_ltdl_dir/"])],
--+	  [recursive], [],
--+	[m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])dnl
--+dnl Be careful not to expand twice:
--+m4_define([$0], [])
--+])# _LTDL_MODE_DISPATCH
--+
--+
--+# _LT_LIBOBJ(MODULE_NAME)
--+# -----------------------
--+# Like AC_LIBOBJ, except that MODULE_NAME goes into _LT_LIBOBJS instead
--+# of into LIBOBJS.
--+AC_DEFUN([_LT_LIBOBJ], [
--+  m4_pattern_allow([^_LT_LIBOBJS$])
--+  _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext"
--+])# _LT_LIBOBJS
--+
--+
--+# LTDL_INIT([OPTIONS])
--+# --------------------
--+# Clients of libltdl can use this macro to allow the installer to
--+# choose between a shipped copy of the ltdl sources or a preinstalled
--+# version of the library.  If the shipped ltdl sources are not in a
--+# subdirectory named libltdl, the directory name must be given by
--+# LT_CONFIG_LTDL_DIR.
--+AC_DEFUN([LTDL_INIT],
--+[dnl Parse OPTIONS
--+_LT_SET_OPTIONS([$0], [$1])
--+
--+dnl We need to keep our own list of libobjs separate from our parent project,
--+dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while
--+dnl we look for our own LIBOBJs.
--+m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ]))
--+m4_pushdef([AC_LIBSOURCES])
--+
--+dnl If not otherwise defined, default to the 1.5.x compatible subproject mode:
--+m4_if(_LTDL_MODE, [],
--+        [m4_define([_LTDL_MODE], m4_default([$2], [subproject]))
--+        m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])],
--+                [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])
--+
--+AC_ARG_WITH([included_ltdl],
--+    [AS_HELP_STRING([--with-included-ltdl],
--+                    [use the GNU ltdl sources included here])])
--+
--+if test "x$with_included_ltdl" != xyes; then
--+  # We are not being forced to use the included libltdl sources, so
--+  # decide whether there is a useful installed version we can use.
--+  AC_CHECK_HEADER([ltdl.h],
--+      [AC_CHECK_DECL([lt_dlinterface_register],
--+	   [AC_CHECK_LIB([ltdl], [lt_dladvise_preload],
--+	       [with_included_ltdl=no],
--+	       [with_included_ltdl=yes])],
--+	   [with_included_ltdl=yes],
--+	   [AC_INCLUDES_DEFAULT
--+	    #include <ltdl.h>])],
--+      [with_included_ltdl=yes],
--+      [AC_INCLUDES_DEFAULT]
--+  )
--+fi
--+
--+dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE
--+dnl was called yet, then for old times' sake, we assume libltdl is in an
--+dnl eponymous directory:
--+AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])])
--+
--+AC_ARG_WITH([ltdl_include],
--+    [AS_HELP_STRING([--with-ltdl-include=DIR],
--+                    [use the ltdl headers installed in DIR])])
--+
--+if test -n "$with_ltdl_include"; then
--+  if test -f "$with_ltdl_include/ltdl.h"; then :
--+  else
--+    AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include'])
--+  fi
--+else
--+  with_ltdl_include=no
--+fi
--+
--+AC_ARG_WITH([ltdl_lib],
--+    [AS_HELP_STRING([--with-ltdl-lib=DIR],
--+                    [use the libltdl.la installed in DIR])])
--+
--+if test -n "$with_ltdl_lib"; then
--+  if test -f "$with_ltdl_lib/libltdl.la"; then :
--+  else
--+    AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib'])
--+  fi
--+else
--+  with_ltdl_lib=no
--+fi
--+
--+case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in
--+  ,yes,no,no,)
--+	m4_case(m4_default(_LTDL_TYPE, [convenience]),
--+	    [convenience], [_LTDL_CONVENIENCE],
--+	    [installable], [_LTDL_INSTALLABLE],
--+	  [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)])
--+	;;
--+  ,no,no,no,)
--+	# If the included ltdl is not to be used, then use the
--+	# preinstalled libltdl we found.
--+	AC_DEFINE([HAVE_LTDL], [1],
--+	  [Define this if a modern libltdl is already installed])
--+	LIBLTDL=-lltdl
--+	LTDLDEPS=
--+	LTDLINCL=
--+	;;
--+  ,no*,no,*)
--+	AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together])
--+	;;
--+  *)	with_included_ltdl=no
--+	LIBLTDL="-L$with_ltdl_lib -lltdl"
--+	LTDLDEPS=
--+	LTDLINCL="-I$with_ltdl_include"
--+	;;
--+esac
--+INCLTDL="$LTDLINCL"
--+
--+# Report our decision...
--+AC_MSG_CHECKING([where to find libltdl headers])
--+AC_MSG_RESULT([$LTDLINCL])
--+AC_MSG_CHECKING([where to find libltdl library])
--+AC_MSG_RESULT([$LIBLTDL])
--+
--+_LTDL_SETUP
--+
--+dnl restore autoconf definition.
--+m4_popdef([AC_LIBOBJ])
--+m4_popdef([AC_LIBSOURCES])
--+
--+AC_CONFIG_COMMANDS_PRE([
--+    _ltdl_libobjs=
--+    _ltdl_ltlibobjs=
--+    if test -n "$_LT_LIBOBJS"; then
--+      # Remove the extension.
--+      _lt_sed_drop_objext='s/\.o$//;s/\.obj$//'
--+      for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do
--+        _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext"
--+        _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo"
--+      done
--+    fi
--+    AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs])
--+    AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs])
--+])
--+
--+# Only expand once:
--+m4_define([LTDL_INIT])
--+])# LTDL_INIT
--+
--+# Old names:
--+AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)])
--+AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)])
--+AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)])
--+dnl aclocal-1.4 backwards compatibility:
--+dnl AC_DEFUN([AC_LIB_LTDL], [])
--+dnl AC_DEFUN([AC_WITH_LTDL], [])
--+dnl AC_DEFUN([LT_WITH_LTDL], [])
--+
--+
--+# _LTDL_SETUP
--+# -----------
--+# Perform all the checks necessary for compilation of the ltdl objects
--+#  -- including compiler checks and header checks.  This is a public
--+# interface  mainly for the benefit of libltdl's own configure.ac, most
--+# other users should call LTDL_INIT instead.
--+AC_DEFUN([_LTDL_SETUP],
--+[AC_REQUIRE([AC_PROG_CC])dnl
--+AC_REQUIRE([LT_SYS_MODULE_EXT])dnl
--+AC_REQUIRE([LT_SYS_MODULE_PATH])dnl
--+AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl
--+AC_REQUIRE([LT_LIB_DLLOAD])dnl
--+AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
--+AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl
--+AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl
--+AC_REQUIRE([gl_FUNC_ARGZ])dnl
--+
--+m4_require([_LT_CHECK_OBJDIR])dnl
--+m4_require([_LT_HEADER_DLFCN])dnl
--+m4_require([_LT_CHECK_DLPREOPEN])dnl
--+m4_require([_LT_DECL_SED])dnl
--+
--+dnl Don't require this, or it will be expanded earlier than the code
--+dnl that sets the variables it relies on:
--+_LT_ENABLE_INSTALL
--+
--+dnl _LTDL_MODE specific code must be called at least once:
--+_LTDL_MODE_DISPATCH
--+
--+# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS
--+# the user used.  This is so that ltdl.h can pick up the parent projects
--+# config.h file, The first file in AC_CONFIG_HEADERS must contain the
--+# definitions required by ltdl.c.
--+# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility).
--+AC_CONFIG_COMMANDS_PRE([dnl
--+m4_pattern_allow([^LT_CONFIG_H$])dnl
--+m4_ifset([AH_HEADER],
--+    [LT_CONFIG_H=AH_HEADER],
--+    [m4_ifset([AC_LIST_HEADERS],
--+	    [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[      ]]*,,;s,[[ :]].*$,,'`],
--+	[])])])
--+AC_SUBST([LT_CONFIG_H])
--+
--+AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h],
--+	[], [], [AC_INCLUDES_DEFAULT])
--+
--+AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])])
--+AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])])
--+
--+AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension])
--+
--+name=ltdl
--+LTDLOPEN=`eval "\\$ECHO \"$libname_spec\""`
--+AC_SUBST([LTDLOPEN])
--+])# _LTDL_SETUP
--+
--+
--+# _LT_ENABLE_INSTALL
--+# ------------------
--+m4_define([_LT_ENABLE_INSTALL],
--+[AC_ARG_ENABLE([ltdl-install],
--+    [AS_HELP_STRING([--enable-ltdl-install], [install libltdl])])
--+
--+case ,${enable_ltdl_install},${enable_ltdl_convenience} in
--+  *yes*) ;;
--+  *) enable_ltdl_convenience=yes ;;
--+esac
--+
--+m4_ifdef([AM_CONDITIONAL],
--+[AM_CONDITIONAL(INSTALL_LTDL, test x"${enable_ltdl_install-no}" != xno)
--+ AM_CONDITIONAL(CONVENIENCE_LTDL, test x"${enable_ltdl_convenience-no}" != xno)])
--+])# _LT_ENABLE_INSTALL
--+
--+
--+# LT_SYS_DLOPEN_DEPLIBS
--+# ---------------------
--+AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS],
--+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
--+AC_CACHE_CHECK([whether deplibs are loaded by dlopen],
--+  [lt_cv_sys_dlopen_deplibs],
--+  [# PORTME does your system automatically load deplibs for dlopen?
--+  # or its logical equivalent (e.g. shl_load for HP-UX < 11)
--+  # For now, we just catch OSes we know something about -- in the
--+  # future, we'll try test this programmatically.
--+  lt_cv_sys_dlopen_deplibs=unknown
--+  case $host_os in
--+  aix3*|aix4.1.*|aix4.2.*)
--+    # Unknown whether this is true for these versions of AIX, but
--+    # we want this `case' here to explicitly catch those versions.
--+    lt_cv_sys_dlopen_deplibs=unknown
--+    ;;
--+  aix[[4-9]]*)
--+    lt_cv_sys_dlopen_deplibs=yes
--+    ;;
--+  amigaos*)
--+    case $host_cpu in
--+    powerpc)
--+      lt_cv_sys_dlopen_deplibs=no
--+      ;;
--+    esac
--+    ;;
--+  darwin*)
--+    # Assuming the user has installed a libdl from somewhere, this is true
--+    # If you are looking for one http://www.opendarwin.org/projects/dlcompat
--+    lt_cv_sys_dlopen_deplibs=yes
--+    ;;
--+  freebsd* | dragonfly*)
--+    lt_cv_sys_dlopen_deplibs=yes
--+    ;;
--+  gnu* | linux* | k*bsd*-gnu)
--+    # GNU and its variants, using gnu ld.so (Glibc)
--+    lt_cv_sys_dlopen_deplibs=yes
--+    ;;
--+  hpux10*|hpux11*)
--+    lt_cv_sys_dlopen_deplibs=yes
--+    ;;
--+  interix*)
--+    lt_cv_sys_dlopen_deplibs=yes
--+    ;;
--+  irix[[12345]]*|irix6.[[01]]*)
--+    # Catch all versions of IRIX before 6.2, and indicate that we don't
--+    # know how it worked for any of those versions.
--+    lt_cv_sys_dlopen_deplibs=unknown
--+    ;;
--+  irix*)
--+    # The case above catches anything before 6.2, and it's known that
--+    # at 6.2 and later dlopen does load deplibs.
--+    lt_cv_sys_dlopen_deplibs=yes
--+    ;;
--+  netbsd*)
--+    lt_cv_sys_dlopen_deplibs=yes
--+    ;;
--+  openbsd*)
--+    lt_cv_sys_dlopen_deplibs=yes
--+    ;;
--+  osf[[1234]]*)
--+    # dlopen did load deplibs (at least at 4.x), but until the 5.x series,
--+    # it did *not* use an RPATH in a shared library to find objects the
--+    # library depends on, so we explicitly say `no'.
--+    lt_cv_sys_dlopen_deplibs=no
--+    ;;
--+  osf5.0|osf5.0a|osf5.1)
--+    # dlopen *does* load deplibs and with the right loader patch applied
--+    # it even uses RPATH in a shared library to search for shared objects
--+    # that the library depends on, but there's no easy way to know if that
--+    # patch is installed.  Since this is the case, all we can really
--+    # say is unknown -- it depends on the patch being installed.  If
--+    # it is, this changes to `yes'.  Without it, it would be `no'.
--+    lt_cv_sys_dlopen_deplibs=unknown
--+    ;;
--+  osf*)
--+    # the two cases above should catch all versions of osf <= 5.1.  Read
--+    # the comments above for what we know about them.
--+    # At > 5.1, deplibs are loaded *and* any RPATH in a shared library
--+    # is used to find them so we can finally say `yes'.
--+    lt_cv_sys_dlopen_deplibs=yes
--+    ;;
--+  qnx*)
--+    lt_cv_sys_dlopen_deplibs=yes
--+    ;;
--+  solaris*)
--+    lt_cv_sys_dlopen_deplibs=yes
--+    ;;
--+  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
--+    libltdl_cv_sys_dlopen_deplibs=yes
--+    ;;
--+  esac
--+  ])
--+if test "$lt_cv_sys_dlopen_deplibs" != yes; then
--+ AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1],
--+    [Define if the OS needs help to load dependent libraries for dlopen().])
--+fi
--+])# LT_SYS_DLOPEN_DEPLIBS
--+
--+# Old name:
--+AU_ALIAS([AC_LTDL_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS])
--+dnl aclocal-1.4 backwards compatibility:
--+dnl AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [])
--+
--+
--+# LT_SYS_MODULE_EXT
--+# -----------------
--+AC_DEFUN([LT_SYS_MODULE_EXT],
--+[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
--+AC_CACHE_CHECK([which extension is used for runtime loadable modules],
--+  [libltdl_cv_shlibext],
--+[
--+module=yes
--+eval libltdl_cv_shlibext=$shrext_cmds
--+  ])
--+if test -n "$libltdl_cv_shlibext"; then
--+  m4_pattern_allow([LT_MODULE_EXT])dnl
--+  AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"],
--+    [Define to the extension used for runtime loadable modules, say, ".so".])
--+fi
--+])# LT_SYS_MODULE_EXT
--+
--+# Old name:
--+AU_ALIAS([AC_LTDL_SHLIBEXT], [LT_SYS_MODULE_EXT])
--+dnl aclocal-1.4 backwards compatibility:
--+dnl AC_DEFUN([AC_LTDL_SHLIBEXT], [])
--+
--+
--+# LT_SYS_MODULE_PATH
--+# ------------------
--+AC_DEFUN([LT_SYS_MODULE_PATH],
--+[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
--+AC_CACHE_CHECK([which variable specifies run-time module search path],
--+  [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"])
--+if test -n "$lt_cv_module_path_var"; then
--+  m4_pattern_allow([LT_MODULE_PATH_VAR])dnl
--+  AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"],
--+    [Define to the name of the environment variable that determines the run-time module search path.])
--+fi
--+])# LT_SYS_MODULE_PATH
--+
--+# Old name:
--+AU_ALIAS([AC_LTDL_SHLIBPATH], [LT_SYS_MODULE_PATH])
--+dnl aclocal-1.4 backwards compatibility:
--+dnl AC_DEFUN([AC_LTDL_SHLIBPATH], [])
--+
--+
--+# LT_SYS_DLSEARCH_PATH
--+# --------------------
--+AC_DEFUN([LT_SYS_DLSEARCH_PATH],
--+[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
--+AC_CACHE_CHECK([for the default library search path],
--+  [lt_cv_sys_dlsearch_path],
--+  [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"])
--+if test -n "$lt_cv_sys_dlsearch_path"; then
--+  sys_dlsearch_path=
--+  for dir in $lt_cv_sys_dlsearch_path; do
--+    if test -z "$sys_dlsearch_path"; then
--+      sys_dlsearch_path="$dir"
--+    else
--+      sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir"
--+    fi
--+  done
--+  m4_pattern_allow([LT_DLSEARCH_PATH])dnl
--+  AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"],
--+    [Define to the system default library search path.])
--+fi
--+])# LT_SYS_DLSEARCH_PATH
--+
--+# Old name:
--+AU_ALIAS([AC_LTDL_SYSSEARCHPATH], [LT_SYS_DLSEARCH_PATH])
--+dnl aclocal-1.4 backwards compatibility:
--+dnl AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [])
--+
--+
--+# _LT_CHECK_DLPREOPEN
--+# -------------------
--+m4_defun([_LT_CHECK_DLPREOPEN],
--+[m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
--+AC_CACHE_CHECK([whether libtool supports -dlopen/-dlpreopen],
--+  [libltdl_cv_preloaded_symbols],
--+  [if test -n "$lt_cv_sys_global_symbol_pipe"; then
--+    libltdl_cv_preloaded_symbols=yes
--+  else
--+    libltdl_cv_preloaded_symbols=no
--+  fi
--+  ])
--+if test x"$libltdl_cv_preloaded_symbols" = xyes; then
--+  AC_DEFINE([HAVE_PRELOADED_SYMBOLS], [1],
--+    [Define if libtool can extract symbol lists from object files.])
--+fi
--+])# _LT_CHECK_DLPREOPEN
--+
--+
--+# LT_LIB_DLLOAD
--+# -------------
--+AC_DEFUN([LT_LIB_DLLOAD],
--+[m4_pattern_allow([^LT_DLLOADERS$])
--+LT_DLLOADERS=
--+AC_SUBST([LT_DLLOADERS])
--+
--+AC_LANG_PUSH([C])
--+
--+LIBADD_DLOPEN=
--+AC_SEARCH_LIBS([dlopen], [dl],
--+	[AC_DEFINE([HAVE_LIBDL], [1],
--+		   [Define if you have the libdl library or equivalent.])
--+	if test "$ac_cv_search_dlopen" != "none required" ; then
--+	  LIBADD_DLOPEN="-ldl"
--+	fi
--+	libltdl_cv_lib_dl_dlopen="yes"
--+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
--+    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H
--+#  include <dlfcn.h>
--+#endif
--+    ]], [[dlopen(0, 0);]])],
--+	    [AC_DEFINE([HAVE_LIBDL], [1],
--+		       [Define if you have the libdl library or equivalent.])
--+	    libltdl_cv_func_dlopen="yes"
--+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
--+	[AC_CHECK_LIB([svld], [dlopen],
--+		[AC_DEFINE([HAVE_LIBDL], [1],
--+			 [Define if you have the libdl library or equivalent.])
--+	        LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes"
--+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])])
--+if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes
--+then
--+  lt_save_LIBS="$LIBS"
--+  LIBS="$LIBS $LIBADD_DLOPEN"
--+  AC_CHECK_FUNCS([dlerror])
--+  LIBS="$lt_save_LIBS"
--+fi
--+AC_SUBST([LIBADD_DLOPEN])
--+
--+LIBADD_SHL_LOAD=
--+AC_CHECK_FUNC([shl_load],
--+	[AC_DEFINE([HAVE_SHL_LOAD], [1],
--+		   [Define if you have the shl_load function.])
--+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"],
--+    [AC_CHECK_LIB([dld], [shl_load],
--+	    [AC_DEFINE([HAVE_SHL_LOAD], [1],
--+		       [Define if you have the shl_load function.])
--+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"
--+	    LIBADD_SHL_LOAD="-ldld"])])
--+AC_SUBST([LIBADD_SHL_LOAD])
--+
--+case $host_os in
--+darwin[[1567]].*)
--+# We only want this for pre-Mac OS X 10.4.
--+  AC_CHECK_FUNC([_dyld_func_lookup],
--+	[AC_DEFINE([HAVE_DYLD], [1],
--+		   [Define if you have the _dyld_func_lookup function.])
--+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"])
--+  ;;
--+beos*)
--+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la"
--+  ;;
--+cygwin* | mingw* | os2* | pw32*)
--+  AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include <sys/cygwin.h>]])
--+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la"
--+  ;;
--+esac
--+
--+AC_CHECK_LIB([dld], [dld_link],
--+	[AC_DEFINE([HAVE_DLD], [1],
--+		   [Define if you have the GNU dld library.])
--+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"])
--+AC_SUBST([LIBADD_DLD_LINK])
--+
--+m4_pattern_allow([^LT_DLPREOPEN$])
--+LT_DLPREOPEN=
--+if test -n "$LT_DLLOADERS"
--+then
--+  for lt_loader in $LT_DLLOADERS; do
--+    LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader "
--+  done
--+  AC_DEFINE([HAVE_LIBDLLOADER], [1],
--+            [Define if libdlloader will be built on this platform])
--+fi
--+AC_SUBST([LT_DLPREOPEN])
--+
--+dnl This isn't used anymore, but set it for backwards compatibility
--+LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD"
--+AC_SUBST([LIBADD_DL])
--+
--+AC_LANG_POP
--+])# LT_LIB_DLLOAD
--+
--+# Old name:
--+AU_ALIAS([AC_LTDL_DLLIB], [LT_LIB_DLLOAD])
--+dnl aclocal-1.4 backwards compatibility:
--+dnl AC_DEFUN([AC_LTDL_DLLIB], [])
--+
--+
--+# LT_SYS_SYMBOL_USCORE
--+# --------------------
--+# does the compiler prefix global symbols with an underscore?
--+AC_DEFUN([LT_SYS_SYMBOL_USCORE],
--+[m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
--+AC_CACHE_CHECK([for _ prefix in compiled symbols],
--+  [lt_cv_sys_symbol_underscore],
--+  [lt_cv_sys_symbol_underscore=no
--+  cat > conftest.$ac_ext <<_LT_EOF
--+void nm_test_func(){}
--+int main(){nm_test_func;return 0;}
--+_LT_EOF
--+  if AC_TRY_EVAL(ac_compile); then
--+    # Now try to grab the symbols.
--+    ac_nlist=conftest.nm
--+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
--+      # See whether the symbols have a leading underscore.
--+      if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
--+        lt_cv_sys_symbol_underscore=yes
--+      else
--+        if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
--+	  :
--+        else
--+	  echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD
--+        fi
--+      fi
--+    else
--+      echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
--+    fi
--+  else
--+    echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
--+    cat conftest.c >&AS_MESSAGE_LOG_FD
--+  fi
--+  rm -rf conftest*
--+  ])
--+  sys_symbol_underscore=$lt_cv_sys_symbol_underscore
--+  AC_SUBST([sys_symbol_underscore])
--+])# LT_SYS_SYMBOL_USCORE
--+
--+# Old name:
--+AU_ALIAS([AC_LTDL_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE])
--+dnl aclocal-1.4 backwards compatibility:
--+dnl AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [])
--+
--+
--+# LT_FUNC_DLSYM_USCORE
--+# --------------------
--+AC_DEFUN([LT_FUNC_DLSYM_USCORE],
--+[AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
--+if test x"$lt_cv_sys_symbol_underscore" = xyes; then
--+  if test x"$libltdl_cv_func_dlopen" = xyes ||
--+     test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then
--+	AC_CACHE_CHECK([whether we have to add an underscore for dlsym],
--+	  [libltdl_cv_need_uscore],
--+	  [libltdl_cv_need_uscore=unknown
--+          save_LIBS="$LIBS"
--+          LIBS="$LIBS $LIBADD_DLOPEN"
--+	  _LT_TRY_DLOPEN_SELF(
--+	    [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes],
--+	    [],				 [libltdl_cv_need_uscore=cross])
--+	  LIBS="$save_LIBS"
--+	])
--+  fi
--+fi
--+
--+if test x"$libltdl_cv_need_uscore" = xyes; then
--+  AC_DEFINE([NEED_USCORE], [1],
--+    [Define if dlsym() requires a leading underscore in symbol names.])
--+fi
--+])# LT_FUNC_DLSYM_USCORE
--+
--+# Old name:
--+AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE])
--+dnl aclocal-1.4 backwards compatibility:
--+dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], [])
--+
-- # Helper functions for option handling.                    -*- Autoconf -*-
-- #
-- #   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-- #   Written by Gary V. Vaughan, 2004
-- #
-- # This file is free software; the Free Software Foundation gives
-- # unlimited permission to copy and/or distribute it, with or without
-- # modifications, as long as this notice is preserved.
--diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
----- a/js/src/ctypes/libffi/configure
--+++ b/js/src/ctypes/libffi/configure
--@@ -747,16 +747,17 @@ am__EXEEXT_TRUE
-- LTLIBOBJS
-- LIBOBJS
-- toolexeclibdir
-- toolexecdir
-- FFI_DEBUG_FALSE
-- FFI_DEBUG_TRUE
-- TARGETDIR
-- TARGET
--+sys_symbol_underscore
-- HAVE_LONG_DOUBLE
-- ALLOCA
-- PA64_HPUX_FALSE
-- PA64_HPUX_TRUE
-- PA_HPUX_FALSE
-- PA_HPUX_TRUE
-- PA_LINUX_FALSE
-- PA_LINUX_TRUE
--@@ -5045,23 +5046,23 @@ test -z "$NM" && NM=nm
-- 
-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-- $as_echo_n "checking the name lister ($NM) interface... " >&6; }
-- if test "${lt_cv_nm_interface+set}" = set; then :
--   $as_echo_n "(cached) " >&6
-- else
--   lt_cv_nm_interface="BSD nm"
--   echo "int some_variable = 0;" > conftest.$ac_ext
---  (eval echo "\"\$as_me:5053: $ac_compile\"" >&5)
--+  (eval echo "\"\$as_me:5054: $ac_compile\"" >&5)
--   (eval "$ac_compile" 2>conftest.err)
--   cat conftest.err >&5
---  (eval echo "\"\$as_me:5056: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
--+  (eval echo "\"\$as_me:5057: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
--   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
--   cat conftest.err >&5
---  (eval echo "\"\$as_me:5059: output\"" >&5)
--+  (eval echo "\"\$as_me:5060: output\"" >&5)
--   cat conftest.out >&5
--   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
--     lt_cv_nm_interface="MS dumpbin"
--   fi
--   rm -f conftest*
-- fi
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-- $as_echo "$lt_cv_nm_interface" >&6; }
--@@ -6257,17 +6258,17 @@ ia64-*-hpux*)
-- 	HPUX_IA64_MODE="64"
-- 	;;
--     esac
--   fi
--   rm -rf conftest*
--   ;;
-- *-*-irix6*)
--   # Find out which ABI we are using.
---  echo '#line 6265 "configure"' > conftest.$ac_ext
--+  echo '#line 6266 "configure"' > conftest.$ac_ext
--   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
--   (eval $ac_compile) 2>&5
--   ac_status=$?
--   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
--   test $ac_status = 0; }; then
--     if test "$lt_cv_prog_gnu_ld" = yes; then
--       case `/usr/bin/file conftest.$ac_objext` in
-- 	*32-bit*)
--@@ -7783,21 +7784,21 @@ else
--    # (2) before a word containing "conftest.", or (3) at the end.
--    # Note that $ac_compile itself does not contain backslashes and begins
--    # with a dollar sign (not a hyphen), so the echo should work correctly.
--    # The option is referenced via a variable to avoid confusing sed.
--    lt_compile=`echo "$ac_compile" | $SED \
--    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
--    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
--    -e 's:$: $lt_compiler_flag:'`
---   (eval echo "\"\$as_me:7791: $lt_compile\"" >&5)
--+   (eval echo "\"\$as_me:7792: $lt_compile\"" >&5)
--    (eval "$lt_compile" 2>conftest.err)
--    ac_status=$?
--    cat conftest.err >&5
---   echo "$as_me:7795: \$? = $ac_status" >&5
--+   echo "$as_me:7796: \$? = $ac_status" >&5
--    if (exit $ac_status) && test -s "$ac_outfile"; then
--      # The compiler can only warn and ignore the option if not recognized
--      # So say no if there are warnings other than the usual output.
--      $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
--      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
--      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
--        lt_cv_prog_compiler_rtti_exceptions=yes
--      fi
--@@ -8122,21 +8123,21 @@ else
--    # (2) before a word containing "conftest.", or (3) at the end.
--    # Note that $ac_compile itself does not contain backslashes and begins
--    # with a dollar sign (not a hyphen), so the echo should work correctly.
--    # The option is referenced via a variable to avoid confusing sed.
--    lt_compile=`echo "$ac_compile" | $SED \
--    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
--    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
--    -e 's:$: $lt_compiler_flag:'`
---   (eval echo "\"\$as_me:8130: $lt_compile\"" >&5)
--+   (eval echo "\"\$as_me:8131: $lt_compile\"" >&5)
--    (eval "$lt_compile" 2>conftest.err)
--    ac_status=$?
--    cat conftest.err >&5
---   echo "$as_me:8134: \$? = $ac_status" >&5
--+   echo "$as_me:8135: \$? = $ac_status" >&5
--    if (exit $ac_status) && test -s "$ac_outfile"; then
--      # The compiler can only warn and ignore the option if not recognized
--      # So say no if there are warnings other than the usual output.
--      $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
--      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
--      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
--        lt_cv_prog_compiler_pic_works=yes
--      fi
--@@ -8227,21 +8228,21 @@ else
--    # Insert the option either (1) after the last *FLAGS variable, or
--    # (2) before a word containing "conftest.", or (3) at the end.
--    # Note that $ac_compile itself does not contain backslashes and begins
--    # with a dollar sign (not a hyphen), so the echo should work correctly.
--    lt_compile=`echo "$ac_compile" | $SED \
--    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
--    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
--    -e 's:$: $lt_compiler_flag:'`
---   (eval echo "\"\$as_me:8235: $lt_compile\"" >&5)
--+   (eval echo "\"\$as_me:8236: $lt_compile\"" >&5)
--    (eval "$lt_compile" 2>out/conftest.err)
--    ac_status=$?
--    cat out/conftest.err >&5
---   echo "$as_me:8239: \$? = $ac_status" >&5
--+   echo "$as_me:8240: \$? = $ac_status" >&5
--    if (exit $ac_status) && test -s out/conftest2.$ac_objext
--    then
--      # The compiler can only warn and ignore the option if not recognized
--      # So say no if there are warnings
--      $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
--      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
--      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
--        lt_cv_prog_compiler_c_o=yes
--@@ -8282,21 +8283,21 @@ else
--    # Insert the option either (1) after the last *FLAGS variable, or
--    # (2) before a word containing "conftest.", or (3) at the end.
--    # Note that $ac_compile itself does not contain backslashes and begins
--    # with a dollar sign (not a hyphen), so the echo should work correctly.
--    lt_compile=`echo "$ac_compile" | $SED \
--    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
--    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
--    -e 's:$: $lt_compiler_flag:'`
---   (eval echo "\"\$as_me:8290: $lt_compile\"" >&5)
--+   (eval echo "\"\$as_me:8291: $lt_compile\"" >&5)
--    (eval "$lt_compile" 2>out/conftest.err)
--    ac_status=$?
--    cat out/conftest.err >&5
---   echo "$as_me:8294: \$? = $ac_status" >&5
--+   echo "$as_me:8295: \$? = $ac_status" >&5
--    if (exit $ac_status) && test -s out/conftest2.$ac_objext
--    then
--      # The compiler can only warn and ignore the option if not recognized
--      # So say no if there are warnings
--      $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
--      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
--      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
--        lt_cv_prog_compiler_c_o=yes
--@@ -10652,17 +10653,17 @@ if test "${lt_cv_dlopen_self+set}" = set
--   $as_echo_n "(cached) " >&6
-- else
--   	  if test "$cross_compiling" = yes; then :
--   lt_cv_dlopen_self=cross
-- else
--   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
--   lt_status=$lt_dlunknown
--   cat > conftest.$ac_ext <<_LT_EOF
---#line 10660 "configure"
--+#line 10661 "configure"
-- #include "confdefs.h"
-- 
-- #if HAVE_DLFCN_H
-- #include <dlfcn.h>
-- #endif
-- 
-- #include <stdio.h>
-- 
--@@ -10748,17 +10749,17 @@ if test "${lt_cv_dlopen_self_static+set}
--   $as_echo_n "(cached) " >&6
-- else
--   	  if test "$cross_compiling" = yes; then :
--   lt_cv_dlopen_self_static=cross
-- else
--   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
--   lt_status=$lt_dlunknown
--   cat > conftest.$ac_ext <<_LT_EOF
---#line 10756 "configure"
--+#line 10757 "configure"
-- #include "confdefs.h"
-- 
-- #if HAVE_DLFCN_H
-- #include <dlfcn.h>
-- #endif
-- 
-- #include <stdio.h>
-- 
--@@ -12356,16 +12357,71 @@ fi
-- $as_echo "$libffi_cv_as_string_pseudo_op" >&6; }
--     if test "x$libffi_cv_as_string_pseudo_op" = xyes; then
-- 
-- $as_echo "#define HAVE_AS_STRING_PSEUDO_OP 1" >>confdefs.h
-- 
--     fi
-- fi
-- 
--+if test x$TARGET = xX86_WIN64; then
--+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ prefix in compiled symbols" >&5
--+$as_echo_n "checking for _ prefix in compiled symbols... " >&6; }
--+if test "${lt_cv_sys_symbol_underscore+set}" = set; then :
--+  $as_echo_n "(cached) " >&6
--+else
--+  lt_cv_sys_symbol_underscore=no
--+  cat > conftest.$ac_ext <<_LT_EOF
--+void nm_test_func(){}
--+int main(){nm_test_func;return 0;}
--+_LT_EOF
--+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
--+  (eval $ac_compile) 2>&5
--+  ac_status=$?
--+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
--+  test $ac_status = 0; }; then
--+    # Now try to grab the symbols.
--+    ac_nlist=conftest.nm
--+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist\""; } >&5
--+  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5
--+  ac_status=$?
--+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
--+  test $ac_status = 0; } && test -s "$ac_nlist"; then
--+      # See whether the symbols have a leading underscore.
--+      if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
--+        lt_cv_sys_symbol_underscore=yes
--+      else
--+        if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
--+	  :
--+        else
--+	  echo "configure: cannot find nm_test_func in $ac_nlist" >&5
--+        fi
--+      fi
--+    else
--+      echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&5
--+    fi
--+  else
--+    echo "configure: failed program was:" >&5
--+    cat conftest.c >&5
--+  fi
--+  rm -rf conftest*
--+
--+fi
--+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_symbol_underscore" >&5
--+$as_echo "$lt_cv_sys_symbol_underscore" >&6; }
--+  sys_symbol_underscore=$lt_cv_sys_symbol_underscore
--+
--+
--+    if test "x$sys_symbol_underscore" = xyes; then
--+
--+$as_echo "#define SYMBOL_UNDERSCORE 1" >>confdefs.h
--+
--+    fi
--+fi
--+
-- case "$target" in
--      # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages
--      *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
-- 
-- $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
-- 
--      ;;
-- esac
--diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
----- a/js/src/ctypes/libffi/configure.ac
--+++ b/js/src/ctypes/libffi/configure.ac
--@@ -310,16 +310,23 @@ if test x$TARGET = xX86 || test x$TARGET
-- 		       [libffi_cv_as_string_pseudo_op=no])
--     ])
--     if test "x$libffi_cv_as_string_pseudo_op" = xyes; then
--        AC_DEFINE(HAVE_AS_STRING_PSEUDO_OP, 1,
-- 	       [Define if your assembler supports .string.])
--     fi
-- fi
-- 
--+if test x$TARGET = xX86_WIN64; then
--+    LT_SYS_SYMBOL_USCORE
--+    if test "x$sys_symbol_underscore" = xyes; then
--+        AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.])
--+    fi
--+fi
--+
-- case "$target" in
--      # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages
--      *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
--        AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
--                  [Cannot use malloc on this target, so, we revert to
--                    alternative means])
--      ;;
-- esac
--diff --git a/js/src/ctypes/libffi/src/x86/win64.S b/js/src/ctypes/libffi/src/x86/win64.S
----- a/js/src/ctypes/libffi/src/x86/win64.S
--+++ b/js/src/ctypes/libffi/src/x86/win64.S
--@@ -227,32 +227,40 @@ ret_void$:
-- 	xor	rax, rax
-- 
-- 	lea	rsp, QWORD PTR [rbp+16]
-- 	pop	rbp
-- 	ret	0
-- ffi_call_win64 ENDP
-- _TEXT	ENDS
-- END
---#else        
--+
--+#else
--+
--+#ifdef SYMBOL_UNDERSCORE
--+#define SYMBOL_NAME(name) _##name
--+#else
--+#define SYMBOL_NAME(name) name
--+#endif
--+
-- .text
-- 
---.extern _ffi_closure_win64_inner
--+.extern SYMBOL_NAME(ffi_closure_win64_inner)
-- 
-- # ffi_closure_win64 will be called with these registers set:
-- #    rax points to 'closure'
-- #    r11 contains a bit mask that specifies which of the
-- #    first four parameters are float or double
-- #
-- # It must move the parameters passed in registers to their stack location,
-- # call ffi_closure_win64_inner for the actual work, then return the result.
-- # 
-- 	.balign 16
---        .globl _ffi_closure_win64	
---_ffi_closure_win64:     
--+        .globl SYMBOL_NAME(ffi_closure_win64)
--+SYMBOL_NAME(ffi_closure_win64):
-- 	# copy register arguments onto stack
-- 	test	$1,%r11
-- 	jne	.Lfirst_is_float	
-- 	mov	%rcx, 8(%rsp)
-- 	jmp	.Lsecond
-- .Lfirst_is_float:
-- 	movlpd	%xmm0, 8(%rsp)
-- 
--@@ -282,27 +290,27 @@ END
-- 
-- .Ldone:
-- #.ALLOCSTACK 40
-- 	sub	$40, %rsp
-- #.ENDPROLOG
-- 	mov	%rax, %rcx	# context is first parameter
-- 	mov	%rsp, %rdx	# stack is second parameter
-- 	add	$48, %rdx	# point to start of arguments
---	mov	$_ffi_closure_win64_inner, %rax
--+	mov	$SYMBOL_NAME(ffi_closure_win64_inner), %rax
-- 	callq	*%rax		# call the real closure function
-- 	add	$40, %rsp
-- 	movq	%rax, %xmm0	# If the closure returned a float,
--                                 # ffi_closure_win64_inner wrote it to rax
-- 	retq
-- .ffi_closure_win64_end:
-- 
-- 	.balign 16
---        .globl	_ffi_call_win64
---_ffi_call_win64:        
--+        .globl	SYMBOL_NAME(ffi_call_win64)
--+SYMBOL_NAME(ffi_call_win64):
--         # copy registers onto stack
-- 	mov	%r9,32(%rsp)
-- 	mov	%r8,24(%rsp)
-- 	mov	%rdx,16(%rsp)
-- 	mov	%rcx,8(%rsp)
--         #.PUSHREG rbp
-- 	push	%rbp
--         #.ALLOCSTACK 48
-diff --git a/js/src/ctypes/patches-libffi/04-bug-756740.patch b/js/src/ctypes/patches-libffi/04-bug-756740.patch
-deleted file mode 100644
---- a/js/src/ctypes/patches-libffi/04-bug-756740.patch
-+++ /dev/null
-@@ -1,44 +0,0 @@
--diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
----- a/js/src/ctypes/libffi/configure
--+++ b/js/src/ctypes/libffi/configure
--@@ -11251,17 +11251,17 @@ case "$host" in
-- 
--   m68k-*-*)
-- 	TARGET=M68K; TARGETDIR=m68k
-- 	;;
-- 
--   mips-sgi-irix5.* | mips-sgi-irix6.*)
-- 	TARGET=MIPS; TARGETDIR=mips
-- 	;;
---  mips*-*-linux*)
--+  mips*-*linux*)
-- 	# Support 128-bit long double for NewABI.
-- 	HAVE_LONG_DOUBLE='defined(__mips64)'
-- 	TARGET=MIPS; TARGETDIR=mips
-- 	;;
-- 
--   moxie-*-*)
--         TARGET=MOXIE; TARGETDIR=moxie
-- 	;;
--diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
----- a/js/src/ctypes/libffi/configure.ac
--+++ b/js/src/ctypes/libffi/configure.ac
--@@ -113,17 +113,17 @@ case "$host" in
-- 
--   m68k-*-*)
-- 	TARGET=M68K; TARGETDIR=m68k
-- 	;;
-- 
--   mips-sgi-irix5.* | mips-sgi-irix6.*)
-- 	TARGET=MIPS; TARGETDIR=mips
-- 	;;
---  mips*-*-linux*)
--+  mips*-*linux*)
-- 	# Support 128-bit long double for NewABI.
-- 	HAVE_LONG_DOUBLE='defined(__mips64)'
-- 	TARGET=MIPS; TARGETDIR=mips
-- 	;;
-- 
--   moxie-*-*)
--         TARGET=MOXIE; TARGETDIR=moxie
-- 	;;
-diff --git a/js/src/ctypes/patches-libffi/05-bug-644136.patch b/js/src/ctypes/patches-libffi/05-bug-644136.patch
-deleted file mode 100644
---- a/js/src/ctypes/patches-libffi/05-bug-644136.patch
-+++ /dev/null
-@@ -1,31 +0,0 @@
--# HG changeset patch
--# User Siarhei Siamashka <siarhei.siamashka@gmail.com>
--# Date 1314529402 -3600
--# Node ID 0be4a94258c28b97a7e6e87b099359c759941b22
--# Parent  f1cf848b1ff22bad8980b673cc4410a21c8bdf28
--Bug 644136 - Add missing fpu directive to fix libffi build on ARM hardfloat systems; r=bsmedberg
--
--diff --git a/js/src/ctypes/libffi/src/arm/sysv.S b/js/src/ctypes/libffi/src/arm/sysv.S
----- a/js/src/ctypes/libffi/src/arm/sysv.S
--+++ b/js/src/ctypes/libffi/src/arm/sysv.S
--@@ -224,16 +224,20 @@ ARM_FUNC_START ffi_call_SYSV
-- LSYM(Lepilogue):
-- 	RETLDM	"r0-r3,fp"
-- 
-- .ffi_call_SYSV_end:
-- 	UNWIND .fnend
--         .size    CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV)
-- 
-- 
--+/* Below are VFP hard-float ABI call and closure implementations.
--+   Add VFP FPU directive here. */
--+	.fpu	vfp
--+
-- 	@ r0:   fn
-- 	@ r1:   &ecif
-- 	@ r2:   cif->bytes
-- 	@ r3:   fig->flags
-- 	@ sp+0: ecif.rvalue
-- 
-- ARM_FUNC_START ffi_call_VFP
-- 	@ Save registers
-diff --git a/js/src/ctypes/patches-libffi/06-bug-778414.patch b/js/src/ctypes/patches-libffi/06-bug-778414.patch
-deleted file mode 100644
---- a/js/src/ctypes/patches-libffi/06-bug-778414.patch
-+++ /dev/null
-@@ -1,99 +0,0 @@
--diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
----- a/js/src/ctypes/libffi/configure
--+++ b/js/src/ctypes/libffi/configure
--@@ -12422,26 +12422,42 @@ case "$target" in
--      *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
-- 
-- $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
-- 
--      ;;
-- esac
-- 
-- if test x$TARGET = xX86_64; then
---    { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports unwind section type" >&5
---$as_echo_n "checking assembler supports unwind section type... " >&6; }
--+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking toolchain supports unwind section type" >&5
--+$as_echo_n "checking toolchain supports unwind section type... " >&6; }
-- if test "${libffi_cv_as_x86_64_unwind_section_type+set}" = set; then :
--   $as_echo_n "(cached) " >&6
-- else
-- 
---	libffi_cv_as_x86_64_unwind_section_type=yes
---	echo '.section .eh_frame,"a",@unwind' > conftest.s
---	if $CC $CFLAGS -c conftest.s 2>&1 | grep -i warning > /dev/null; then
---	    libffi_cv_as_x86_64_unwind_section_type=no
--+        cat  > conftest1.s << EOF
--+.text
--+.globl foo
--+foo:
--+jmp bar
--+.section .eh_frame,"a",@unwind
--+bar:
--+EOF
--+
--+        cat > conftest2.c  << EOF
--+extern void foo();
--+int main(){foo();}
--+EOF
--+
--+	libffi_cv_as_x86_64_unwind_section_type=no
--+	# we ensure that we can compile _and_ link an assembly file containing an @unwind section
--+	# since the compiler can support it and not the linker (ie old binutils)
--+	if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \
--+           $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then
--+	    libffi_cv_as_x86_64_unwind_section_type=yes
-- 	fi
-- 
-- fi
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_64_unwind_section_type" >&5
-- $as_echo "$libffi_cv_as_x86_64_unwind_section_type" >&6; }
--     if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
-- 
-- $as_echo "#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1" >>confdefs.h
--diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
----- a/js/src/ctypes/libffi/configure.ac
--+++ b/js/src/ctypes/libffi/configure.ac
--@@ -327,22 +327,38 @@ case "$target" in
--      *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
--        AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
--                  [Cannot use malloc on this target, so, we revert to
--                    alternative means])
--      ;;
-- esac
-- 
-- if test x$TARGET = xX86_64; then
---    AC_CACHE_CHECK([assembler supports unwind section type],
--+    AC_CACHE_CHECK([toolchain supports unwind section type],
-- 	libffi_cv_as_x86_64_unwind_section_type, [
---	libffi_cv_as_x86_64_unwind_section_type=yes
---	echo '.section .eh_frame,"a",@unwind' > conftest.s
---	if $CC $CFLAGS -c conftest.s 2>&1 | grep -i warning > /dev/null; then
---	    libffi_cv_as_x86_64_unwind_section_type=no
--+        cat  > conftest1.s << EOF
--+.text
--+.globl foo
--+foo:
--+jmp bar
--+.section .eh_frame,"a",@unwind
--+bar:
--+EOF
--+
--+        cat > conftest2.c  << EOF
--+extern void foo();
--+int main(){foo();}
--+EOF
--+
--+	libffi_cv_as_x86_64_unwind_section_type=no
--+	# we ensure that we can compile _and_ link an assembly file containing an @unwind section
--+	# since the compiler can support it and not the linker (ie old binutils)
--+	if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \
--+           $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then
--+	    libffi_cv_as_x86_64_unwind_section_type=yes
-- 	fi
-- 	])
--     if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
-- 	AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1,
-- 		  [Define if your assembler supports unwind section type.])
--     fi
-- fi
-- 
-diff --git a/js/src/ctypes/patches-libffi/07-bug-928381.patch b/js/src/ctypes/patches-libffi/07-bug-928381.patch
-deleted file mode 100644
---- a/js/src/ctypes/patches-libffi/07-bug-928381.patch
-+++ /dev/null
-@@ -1,31 +0,0 @@
--# HG changeset patch
--# User Landry Breuil <landry@openbsd.org>
--# Date 1382105758 -7200
--#      Fri Oct 18 16:15:58 2013 +0200
--# Node ID 5f82dae8c495a7fddf5ed935eb2a8be7f47b9bd8
--# Parent  d50df2233e95f4d45b35eddbfbe84bcdda6a11e2
--Bug 928381 - ctypes/libffi: Fix stack alignment on *BSD/i386 r=glandium
--
--diff --git a/js/src/ctypes/libffi/src/x86/freebsd.S b/js/src/ctypes/libffi/src/x86/freebsd.S
----- a/js/src/ctypes/libffi/src/x86/freebsd.S
--+++ b/js/src/ctypes/libffi/src/x86/freebsd.S
--@@ -44,16 +44,19 @@ ffi_call_SYSV:
--         pushl %ebp
-- .LCFI0:
--         movl  %esp,%ebp
-- .LCFI1:
-- 	/* Make room for all of the new args.  */
-- 	movl  16(%ebp),%ecx
-- 	subl  %ecx,%esp
-- 
--+	/* Align the stack pointer to 16-bytes */
--+	andl  $0xfffffff0, %esp
--+
-- 	movl  %esp,%eax
-- 
-- 	/* Place all of the ffi_prep_args in position  */
-- 	pushl 12(%ebp)
-- 	pushl %eax
-- 	call  *8(%ebp)
-- 
-- 	/* Return stack to previous state and call the function  */
-diff --git a/js/src/ctypes/patches-libffi/08-bug-928390.patch b/js/src/ctypes/patches-libffi/08-bug-928390.patch
-deleted file mode 100644
---- a/js/src/ctypes/patches-libffi/08-bug-928390.patch
-+++ /dev/null
-@@ -1,135 +0,0 @@
--# HG changeset patch
--# Parent e5f7246bf2158ac88b3e0727811925c467226d2e
--# User Landry Breuil <landry@openbsd.org>
--Bug 928390: Partially backport libffi upstream 049d8386ff for OpenBSD/mips/hppa. r=glandium
--
--diff --git a/js/src/ctypes/libffi/configure b/js/src/ctypes/libffi/configure
----- a/js/src/ctypes/libffi/configure
--+++ b/js/src/ctypes/libffi/configure
--@@ -11208,17 +11208,17 @@ case "$host" in
--   cris-*-*)
-- 	TARGET=LIBFFI_CRIS; TARGETDIR=cris
-- 	;;
-- 
--   frv-*-*)
-- 	TARGET=FRV; TARGETDIR=frv
-- 	;;
-- 
---  hppa*-*-linux* | parisc*-*-linux*)
--+  hppa*-*-linux* | hppa*-*-openbsd* | parisc*-*-linux*)
-- 	TARGET=PA_LINUX; TARGETDIR=pa
-- 	;;
--   hppa*64-*-hpux*)
-- 	TARGET=PA64_HPUX; TARGETDIR=pa
-- 	;;
--   hppa*-*-hpux*)
-- 	TARGET=PA_HPUX; TARGETDIR=pa
-- 	;;
--@@ -11251,17 +11251,17 @@ case "$host" in
-- 
--   m68k-*-*)
-- 	TARGET=M68K; TARGETDIR=m68k
-- 	;;
-- 
--   mips-sgi-irix5.* | mips-sgi-irix6.*)
-- 	TARGET=MIPS; TARGETDIR=mips
-- 	;;
---  mips*-*linux*)
--+  mips*-*linux* | mips*-*-openbsd*)
-- 	# Support 128-bit long double for NewABI.
-- 	HAVE_LONG_DOUBLE='defined(__mips64)'
-- 	TARGET=MIPS; TARGETDIR=mips
-- 	;;
-- 
--   moxie-*-*)
--         TARGET=MOXIE; TARGETDIR=moxie
-- 	;;
--diff --git a/js/src/ctypes/libffi/configure.ac b/js/src/ctypes/libffi/configure.ac
----- a/js/src/ctypes/libffi/configure.ac
--+++ b/js/src/ctypes/libffi/configure.ac
--@@ -70,17 +70,17 @@ case "$host" in
--   cris-*-*)
-- 	TARGET=LIBFFI_CRIS; TARGETDIR=cris
-- 	;;
-- 
--   frv-*-*)
-- 	TARGET=FRV; TARGETDIR=frv
-- 	;;
-- 
---  hppa*-*-linux* | parisc*-*-linux*)
--+  hppa*-*-linux* | hppa*-*-openbsd* | parisc*-*-linux*)
-- 	TARGET=PA_LINUX; TARGETDIR=pa
-- 	;;
--   hppa*64-*-hpux*)
-- 	TARGET=PA64_HPUX; TARGETDIR=pa
-- 	;;
--   hppa*-*-hpux*)
-- 	TARGET=PA_HPUX; TARGETDIR=pa
-- 	;;
--@@ -113,17 +113,17 @@ case "$host" in
-- 
--   m68k-*-*)
-- 	TARGET=M68K; TARGETDIR=m68k
-- 	;;
-- 
--   mips-sgi-irix5.* | mips-sgi-irix6.*)
-- 	TARGET=MIPS; TARGETDIR=mips
-- 	;;
---  mips*-*linux*)
--+  mips*-*linux* | mips*-*-openbsd*)
-- 	# Support 128-bit long double for NewABI.
-- 	HAVE_LONG_DOUBLE='defined(__mips64)'
-- 	TARGET=MIPS; TARGETDIR=mips
-- 	;;
-- 
--   moxie-*-*)
--         TARGET=MOXIE; TARGETDIR=moxie
-- 	;;
--diff --git a/js/src/ctypes/libffi/src/mips/ffi.c b/js/src/ctypes/libffi/src/mips/ffi.c
----- a/js/src/ctypes/libffi/src/mips/ffi.c
--+++ b/js/src/ctypes/libffi/src/mips/ffi.c
--@@ -32,17 +32,21 @@
-- 
-- #ifdef __GNUC__
-- #  if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3))
-- #    define USE__BUILTIN___CLEAR_CACHE 1
-- #  endif
-- #endif
-- 
-- #ifndef USE__BUILTIN___CLEAR_CACHE
---#include <sys/cachectl.h>
--+#  if defined(__OpenBSD__)
--+#    include <mips64/sysarch.h>
--+#  else
--+#    include <sys/cachectl.h>
--+#  endif
-- #endif
-- 
-- #ifdef FFI_DEBUG
-- # define FFI_MIPS_STOP_HERE() ffi_stop_here()
-- #else
-- # define FFI_MIPS_STOP_HERE() do {} while(0)
-- #endif
-- 
--diff --git a/js/src/ctypes/libffi/src/mips/ffitarget.h b/js/src/ctypes/libffi/src/mips/ffitarget.h
----- a/js/src/ctypes/libffi/src/mips/ffitarget.h
--+++ b/js/src/ctypes/libffi/src/mips/ffitarget.h
--@@ -24,17 +24,17 @@
-- 
--    ----------------------------------------------------------------------- */
-- 
-- #ifndef LIBFFI_TARGET_H
-- #define LIBFFI_TARGET_H
-- 
-- #ifdef linux
-- # include <asm/sgidefs.h>
---#else
--+#elif !defined(__OpenBSD__)
-- # include <sgidefs.h>
-- #endif
-- #  ifndef _ABIN32
-- #    define _ABIN32 _MIPS_SIM_NABI32
-- #  endif
-- #  ifndef _ABI64
-- #    define _ABI64 _MIPS_SIM_ABI64
-- #  endif
-
--- a/mozilla-kde.patch	Thu Jun 12 22:59:33 2014 +0200
+++ b/mozilla-kde.patch	Wed Jul 09 14:56:22 2014 +0200
@@ -85,7 +85,7 @@
      path->GetNativeLeafName(leaf);
  
      // Do we care if a file provided by this process fails to load?
-     if (Substring(leaf, leaf.Length() - 4).Equals(NS_LITERAL_CSTRING(".xpi")))
+     if (Substring(leaf, leaf.Length() - 4).EqualsLiteral(".xpi"))
        ReadExtensionPrefs(path);
      else
 -      pref_LoadPrefsInDir(path, nullptr, 0);
@@ -217,7 +217,7 @@
  #include "AndroidBridge.h"
  using namespace mozilla::widget::android;
  #endif
-@@ -2722,16 +2726,25 @@ nsDownload::SetState(DownloadState aStat
+@@ -2729,16 +2733,25 @@ nsDownload::SetState(DownloadState aStat
        nsCOMPtr<nsIPrefBranch> pref(do_GetService(NS_PREFSERVICE_CONTRACTID));
  
        // Master pref to control this function.
@@ -243,7 +243,7 @@
          int64_t goat = PR_Now() - mStartTime;
          showTaskbarAlert = goat > alertIntervalUSec;
  
-@@ -2759,19 +2772,20 @@ nsDownload::SetState(DownloadState aStat
+@@ -2766,19 +2779,20 @@ nsDownload::SetState(DownloadState aStat
                // because if it is, they'll click open the download manager and
                // the items they downloaded will have been removed.
                alerts->ShowAlertNotification(
@@ -268,7 +268,7 @@
 diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
 --- a/toolkit/content/jar.mn
 +++ b/toolkit/content/jar.mn
-@@ -58,29 +58,33 @@ toolkit.jar:
+@@ -55,29 +55,33 @@ toolkit.jar:
     content/global/viewZoomOverlay.js          (viewZoomOverlay.js)
  *+ content/global/bindings/autocomplete.xml    (widgets/autocomplete.xml)
     content/global/bindings/browser.xml         (widgets/browser.xml)
@@ -290,7 +290,7 @@
     content/global/bindings/menulist.xml        (widgets/menulist.xml)
     content/global/bindings/notification.xml    (widgets/notification.xml)
     content/global/bindings/numberbox.xml       (widgets/numberbox.xml)
- *  content/global/bindings/popup.xml           (widgets/popup.xml)
+    content/global/bindings/popup.xml           (widgets/popup.xml)
  *+ content/global/bindings/preferences.xml     (widgets/preferences.xml)
 +*+ content/global/bindings/preferences-kde.xml (widgets/preferences-kde.xml)
 +% override chrome://global/content/bindings/preferences.xml chrome://global/content/bindings/preferences-kde.xml desktop=kde
@@ -339,7 +339,7 @@
 +        <xul:button dlgtype="cancel" class="dialog-button"/>
 +        <xul:button dlgtype="accept" class="dialog-button" xbl:inherits="disabled=buttondisabledaccept"/>
 +#elif XP_UNIX
-+                pack="end">
++                >
 +	<xul:button dlgtype="help" class="dialog-button" hidden="true"/>
 +	<xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
 +	<xul:spacer anonid="spacer" flex="1" hidden="true"/>
@@ -760,7 +760,7 @@
 new file mode 100644
 --- /dev/null
 +++ b/toolkit/content/widgets/preferences-kde.xml
-@@ -0,0 +1,1333 @@
+@@ -0,0 +1,1343 @@
 +<?xml version="1.0"?>
 +
 +<!DOCTYPE bindings [
@@ -793,6 +793,25 @@
 +
 +  <binding id="preferences">
 +    <implementation implements="nsIObserver">
++      <method name="_constructAfterChildren">
++      <body>
++      <![CDATA[
++      // This method will be called after each one of the child
++      // <preference> elements is constructed. Its purpose is to propagate
++      // the values to the associated form elements
++
++      var elements = this.getElementsByTagName("preference");
++      for (let element of elements) {
++        if (!element._constructed) {
++          return;
++        }
++      }
++      for (let element of elements) {
++        element.updateElements();
++      }
++      ]]>
++      </body>
++      </method>
 +      <method name="observe">
 +        <parameter name="aSubject"/>
 +        <parameter name="aTopic"/>
@@ -864,6 +883,8 @@
 +    <implementation>
 +      <constructor>
 +      <![CDATA[
++        this._constructed = true;
++
 +        // if the element has been inserted without the name attribute set,
 +        // we have nothing to do here
 +        if (!this.name)
@@ -889,18 +910,20 @@
 +                preference = parentPrefs[l];
 +            }
 +          }
-+          this._setValue(preference ? preference.value 
-+                                    : this.valueFromPreferences, false);
++
++          // Don't use the value setter here, we don't want updateElements to be prematurely fired.
++          this._value = preference ? preference.value : this.valueFromPreferences;
 +        }
 +        else
-+          this._setValue(this.valueFromPreferences, false);
++          this._value = this.valueFromPreferences;
++        this.preferences._constructAfterChildren();
 +      ]]>
 +      </constructor>
 +      <destructor>
 +        this.preferences.rootBranchInternal
 +            .removeObserver(this.name, this.preferences);
 +      </destructor>
-+      
++      <field name="_constructed">false</field>
 +      <property name="instantApply">
 +        <getter>
 +          return this.getAttribute("instantApply") == "true" || this.preferences.instantApply;
@@ -932,24 +955,19 @@
 +      <field name="_value">null</field>
 +      <method name="_setValue">
 +        <parameter name="aValue"/>
-+        <parameter name="aUpdate"/>
 +        <body>
 +        <![CDATA[
-+          if (aUpdate && this.value !== aValue) {
++          if (this.value !== aValue) {
 +            this._value = aValue;
 +            if (this.instantApply)
 +              this.valueFromPreferences = aValue;
 +            this.preferences.fireChangedEvent(this);
 +          }
-+          else if (!aUpdate) {
-+            this._value = aValue;
-+            this.updateElements();
-+          }
 +          return aValue;
 +        ]]>
 +        </body>
 +      </method>
-+      <property name="value" onget="return this._value" onset="return this._setValue(val, true);"/>
++      <property name="value" onget="return this._value" onset="return this._setValue(val);"/>
 +      
 +      <property name="locked">
 +        <getter>
@@ -1336,7 +1354,7 @@
 +        </xul:deck>
 +      </xul:hbox>
 +      <xul:hbox anonid="dlg-buttons" class="prefWindow-dlgbuttons" pack="end">
-+#ifdef XP_UNIX_GNOME
++#ifndef XP_UNIX
 +        <xul:button dlgtype="disclosure" class="dialog-button" hidden="true"/>
 +        <xul:button dlgtype="help" class="dialog-button" hidden="true" icon="help"/>
 +        <xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
@@ -1344,14 +1362,6 @@
 +        <xul:spacer anonid="spacer" flex="1"/>
 +        <xul:button dlgtype="cancel" class="dialog-button" icon="cancel"/>
 +        <xul:button dlgtype="accept" class="dialog-button" icon="accept"/>
-+#elif XP_UNIX
-+        <xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
-+        <xul:spacer anonid="spacer" flex="1"/>
-+        <xul:button dlgtype="accept" class="dialog-button" icon="accept"/>
-+        <xul:button dlgtype="extra1" class="dialog-button" hidden="true"/>
-+        <xul:button dlgtype="cancel" class="dialog-button" icon="cancel"/>
-+        <xul:button dlgtype="help" class="dialog-button" hidden="true" icon="help"/>
-+        <xul:button dlgtype="disclosure" class="dialog-button" hidden="true"/>
 +#else
 +        <xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
 +        <xul:spacer anonid="spacer" flex="1"/>
@@ -2626,7 +2636,7 @@
 diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
 --- a/uriloader/exthandler/moz.build
 +++ b/uriloader/exthandler/moz.build
-@@ -80,17 +80,19 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
+@@ -75,17 +75,19 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
  else:
      # These files can't be built in unified mode because they force NSPR logging.
      SOURCES += [
@@ -3584,7 +3594,7 @@
 diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
 --- a/xpcom/io/nsLocalFileUnix.cpp
 +++ b/xpcom/io/nsLocalFileUnix.cpp
-@@ -43,16 +43,17 @@
+@@ -44,16 +44,17 @@
  #include "nsIDirectoryEnumerator.h"
  #include "nsISimpleEnumerator.h"
  #include "private/pprio.h"
@@ -3602,8 +3612,8 @@
  #include "prmem.h"
  #include "plbase64.h"
  
-@@ -1816,46 +1817,52 @@ nsLocalFile::SetPersistentDescriptor(con
-     return InitWithNativePath(aPersistentDescriptor);
+@@ -1962,53 +1963,55 @@ nsLocalFile::SetPersistentDescriptor(con
+   return InitWithNativePath(aPersistentDescriptor);
  #endif
  }
  
@@ -3611,66 +3621,73 @@
  nsLocalFile::Reveal()
  {
  #ifdef MOZ_WIDGET_GTK
--    nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
--    nsCOMPtr<nsIGnomeVFSService> gnomevfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
--    if (!giovfs && !gnomevfs)
--        return NS_ERROR_FAILURE;
+-  nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
+-  nsCOMPtr<nsIGnomeVFSService> gnomevfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
+-  if (!giovfs && !gnomevfs) {
+-    return NS_ERROR_FAILURE;
+-  }
 -
-+    nsAutoCString url;
-     bool isDirectory;
-     if (NS_FAILED(IsDirectory(&isDirectory)))
-         return NS_ERROR_FAILURE;
++  nsAutoCString url;
+   bool isDirectory;
+   if (NS_FAILED(IsDirectory(&isDirectory))) {
+     return NS_ERROR_FAILURE;
+   }
  
-+    nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
-     if (isDirectory) {
--        if (giovfs)
--            return giovfs->ShowURIForInput(mPath);
--        else 
--            /* Fallback to GnomeVFS */
--            return gnomevfs->ShowURIForInput(mPath);
-+        url = mPath;
-     } else if (giovfs && NS_SUCCEEDED(giovfs->OrgFreedesktopFileManager1ShowItems(mPath))) {
-         return NS_OK;
-     } else {
-         nsCOMPtr<nsIFile> parentDir;
-         nsAutoCString dirPath;
-         if (NS_FAILED(GetParent(getter_AddRefs(parentDir))))
-             return NS_ERROR_FAILURE;
-         if (NS_FAILED(parentDir->GetNativePath(dirPath)))
-             return NS_ERROR_FAILURE;
++  nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
+   if (isDirectory) {
+-    if (giovfs) {
+-      return giovfs->ShowURIForInput(mPath);
+-    } else
+-      /* Fallback to GnomeVFS */
+-    {
+-      return gnomevfs->ShowURIForInput(mPath);
+-    }
++    url = mPath;
+   } else if (giovfs && NS_SUCCEEDED(giovfs->OrgFreedesktopFileManager1ShowItems(mPath))) {
+     return NS_OK;
+   } else {
+     nsCOMPtr<nsIFile> parentDir;
+     nsAutoCString dirPath;
+     if (NS_FAILED(GetParent(getter_AddRefs(parentDir)))) {
+       return NS_ERROR_FAILURE;
+     }
+     if (NS_FAILED(parentDir->GetNativePath(dirPath))) {
+       return NS_ERROR_FAILURE;
+     }
  
--        if (giovfs)
--            return giovfs->ShowURIForInput(dirPath);
--        else 
--            return gnomevfs->ShowURIForInput(dirPath);        
-+        url = dirPath;
-     }
+-    if (giovfs) {
+-      return giovfs->ShowURIForInput(dirPath);
+-    } else {
+-      return gnomevfs->ShowURIForInput(dirPath);
+-    }
++    url = dirPath;
+   }
 +
-+    if(nsKDEUtils::kdeSupport()) {
-+      nsTArray<nsCString> command;
-+      command.AppendElement( NS_LITERAL_CSTRING("REVEAL") );
-+      command.AppendElement( mPath );
-+      return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
-+    }
++  if(nsKDEUtils::kdeSupport()) {
++    nsTArray<nsCString> command;
++    command.AppendElement( NS_LITERAL_CSTRING("REVEAL") );
++    command.AppendElement( mPath );
++    return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
++  }
 +
-+    nsCOMPtr<nsIGnomeVFSService> gnomevfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
-+    if (!giovfs && !gnomevfs)
-+      return NS_ERROR_FAILURE;
++  nsCOMPtr<nsIGnomeVFSService> gnomevfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
++  if (!giovfs && !gnomevfs)
++    return NS_ERROR_FAILURE;
 +
-+    if (giovfs)
-+      return giovfs->ShowURIForInput(url);
-+    else
-+      return gnomevfs->ShowURIForInput(url);
++  if (giovfs)
++    return giovfs->ShowURIForInput(url);
++  else
++    return gnomevfs->ShowURIForInput(url);
  #elif defined(MOZ_WIDGET_COCOA)
-     CFURLRef url;
-     if (NS_SUCCEEDED(GetCFURL(&url))) {
-       nsresult rv = CocoaFileUtils::RevealFileInFinder(url);
-       ::CFRelease(url);
-       return rv;
-     }
-     return NS_ERROR_FAILURE;
-@@ -1863,16 +1870,23 @@ nsLocalFile::Reveal()
-     return NS_ERROR_FAILURE;
+   CFURLRef url;
+   if (NS_SUCCEEDED(GetCFURL(&url))) {
+     nsresult rv = CocoaFileUtils::RevealFileInFinder(url);
+     ::CFRelease(url);
+     return rv;
+   }
+   return NS_ERROR_FAILURE;
+@@ -2016,16 +2019,22 @@ nsLocalFile::Reveal()
+   return NS_ERROR_FAILURE;
  #endif
  }
  
@@ -3678,18 +3695,17 @@
  nsLocalFile::Launch()
  {
  #ifdef MOZ_WIDGET_GTK
-+    if( nsKDEUtils::kdeSupport()) {
-+      nsTArray<nsCString> command;
-+      command.AppendElement( NS_LITERAL_CSTRING("OPEN") );
-+      command.AppendElement( mPath );
-+      return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
-+    }
-+
-     nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
-     nsCOMPtr<nsIGnomeVFSService> gnomevfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
-     if (giovfs) {
-       return giovfs->ShowURIForInput(mPath);
-     } else if (gnomevfs) {
-       /* GnomeVFS fallback */
-       return gnomevfs->ShowURIForInput(mPath);
-     }
++  if( nsKDEUtils::kdeSupport()) {
++    nsTArray<nsCString> command;
++    command.AppendElement( NS_LITERAL_CSTRING("OPEN") );
++    command.AppendElement( mPath );
++    return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
++  }
+   nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
+   nsCOMPtr<nsIGnomeVFSService> gnomevfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
+   if (giovfs) {
+     return giovfs->ShowURIForInput(mPath);
+   } else if (gnomevfs) {
+     /* GnomeVFS fallback */
+     return gnomevfs->ShowURIForInput(mPath);
+   }
--- a/mozilla-preferences.patch	Thu Jun 12 22:59:33 2014 +0200
+++ b/mozilla-preferences.patch	Wed Jul 09 14:56:22 2014 +0200
@@ -5,16 +5,16 @@
 package unconditionally.
 
 # HG changeset patch
-# Parent 5c086bb8e0fa4f1600aced485e6156b0cdcd1755
+# Parent 8c1bfc96b05ef1836aad6e9f2af323f63ed1b69c
 
 diff --git a/modules/libpref/src/init/all.js b/modules/libpref/src/init/all.js
 --- a/modules/libpref/src/init/all.js
 +++ b/modules/libpref/src/init/all.js
-@@ -1428,17 +1428,17 @@ pref("intl.charsetmenu.mailedit",       
- pref("intl.charsetmenu.browser.cache",      "");
- pref("intl.charsetmenu.mailview.cache",     "");
- pref("intl.charsetmenu.composer.cache",     "");
- pref("intl.charsetmenu.browser.cache.size", 5);
+@@ -1503,17 +1503,17 @@ pref("converter.html2txt.header_strategy
+ 
+ pref("intl.accept_languages",               "chrome://global/locale/intl.properties");
+ pref("intl.menuitems.alwaysappendaccesskeys","chrome://global/locale/intl.properties");
+ pref("intl.menuitems.insertseparatorbeforeaccesskeys","chrome://global/locale/intl.properties");
  pref("intl.charset.detector",               "chrome://global/locale/intl.properties");
  pref("intl.charset.fallback.override",      "");
  pref("intl.charset.fallback.tld",           true);
--- a/series	Thu Jun 12 22:59:33 2014 +0200
+++ b/series	Wed Jul 09 14:56:22 2014 +0200
@@ -15,7 +15,6 @@
 mozilla-ppc.patch
 mozilla-idldir.patch
 mozilla-libproxy-compat.patch
-mozilla-aarch64-bmo-810631.patch
 
 # Firefox patches
 firefox-kde.patch