24698806 Upgrade Thunderbird to version 45.3.0
authorJingning Ji <jingning.ji@oracle.com>
Thu, 22 Sep 2016 15:38:45 -0700
changeset 7018 fdf447a07aff
parent 7017 25872950aa80
child 7020 58ca1f0fa3a7
24698806 Upgrade Thunderbird to version 45.3.0
components/desktop/thunderbird/Makefile
components/desktop/thunderbird/patches/firefox-00-locale.patch
components/desktop/thunderbird/patches/firefox-01-cairo-perf.patch
components/desktop/thunderbird/patches/firefox-02-libnspr_flt4.patch
components/desktop/thunderbird/patches/firefox-03-strcasestr.patch
components/desktop/thunderbird/patches/firefox-04-check_test.patch
components/desktop/thunderbird/patches/firefox-05-sqlite3-unix-excl.patch
components/desktop/thunderbird/patches/firefox-06-hnjfile.patch
components/desktop/thunderbird/patches/firefox-07-nsMathUtils.patch
components/desktop/thunderbird/patches/firefox-08-skip_mozbuild_test.patch
components/desktop/thunderbird/patches/firefox-09-gthread-dlopen.patch
components/desktop/thunderbird/patches/firefox-10-webaudio_math.patch
components/desktop/thunderbird/patches/firefox-11-donot-delay-stopping-realplayer.patch
components/desktop/thunderbird/patches/firefox-12-package_warning.patch
components/desktop/thunderbird/patches/firefox-13-LocalFileUnix.patch
components/desktop/thunderbird/patches/firefox-14-uname.patch
components/desktop/thunderbird/patches/firefox-15-ion_AsmJS_x86.patch
components/desktop/thunderbird/patches/firefox-16-mftt_infinity.patch
components/desktop/thunderbird/patches/firefox-17-xpt-as-flag.patch
components/desktop/thunderbird/patches/firefox-18-libvpx_compile.patch
components/desktop/thunderbird/patches/firefox-19-cubeb.patch
components/desktop/thunderbird/patches/firefox-20-gfx.patch
components/desktop/thunderbird/patches/firefox-21-mozconfig_loader_bash.patch
components/desktop/thunderbird/patches/firefox-22-snappy.patch
components/desktop/thunderbird/patches/firefox-23-skia_gpu.patch
components/desktop/thunderbird/patches/firefox-24-test.patch
components/desktop/thunderbird/patches/firefox-25-rules_mk.patch
components/desktop/thunderbird/patches/firefox-26-jit-test-multi-processes.patch
components/desktop/thunderbird/patches/firefox-27-stacksize.patch
components/desktop/thunderbird/patches/firefox-28-configure.patch
components/desktop/thunderbird/patches/firefox-30-other-buildissue.patch
components/desktop/thunderbird/patches/firefox-31-urlbar-sparc.patch
components/desktop/thunderbird/patches/firefox-32-solaris_jemalloc_linkage.patch
components/desktop/thunderbird/patches/firefox-33-ycbcr2.patch
components/desktop/thunderbird/patches/firefox-34-lz4-restrict-keyword.patch
components/desktop/thunderbird/patches/firefox-35-mozalloc.patch
components/desktop/thunderbird/patches/firefox-36-xpopen.patch
components/desktop/thunderbird/patches/firefox-37-ipc.patch
components/desktop/thunderbird/patches/firefox-38-sparc-align.patch
components/desktop/thunderbird/patches/firefox-39-gc-memory.patch
components/desktop/thunderbird/patches/firefox-40-libstagefright.patch
components/desktop/thunderbird/patches/firefox-41-static-xul-components.patch
components/desktop/thunderbird/patches/firefox-43-xpcom.patch
components/desktop/thunderbird/patches/firefox-44-readahead.patch
components/desktop/thunderbird/patches/firefox-45-wifi-scanner.patch
components/desktop/thunderbird/patches/firefox-47-unreachable.patch
components/desktop/thunderbird/patches/firefox-48-donot-disable-locale-addon.patch
components/desktop/thunderbird/patches/firefox-49-freebl-as.patch
components/desktop/thunderbird/patches/firefox-49-npapi.patch
components/desktop/thunderbird/patches/firefox-50-arc4random.patch
components/desktop/thunderbird/patches/firefox-51-atomicops.patch
components/desktop/thunderbird/patches/firefox-52-sincos.patch
components/desktop/thunderbird/patches/firefox-53-sparc-gfx-atomicops.patch
components/desktop/thunderbird/test/results-32.master
components/desktop/thunderbird/test/results-i386.master
components/desktop/thunderbird/test/results-sparc.master
--- a/components/desktop/thunderbird/Makefile	Fri Sep 30 21:33:56 2016 -0700
+++ b/components/desktop/thunderbird/Makefile	Thu Sep 22 15:38:45 2016 -0700
@@ -32,18 +32,18 @@
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		thunderbird
-COMPONENT_VERSION=	45.1.0
+COMPONENT_VERSION=	45.3.0
 COMPONENT_PROJECT_URL=	http://www.mozilla.com/thunderbird
 COMPONENT_ARCHIVE = 	$(COMPONENT_SRC).source.tar.xz
 COMPONENT_ARCHIVE_HASH= \
-    sha256:8ae9ebe536895d69d99f412f2b3aba645b7dd839e520959330da13892d672309
+    sha256:231f6a7a073344659e436a2b1ae58004c3a29e74375af2c8d0de13f3bc79fac7
 MOZILLA_FTP = 		http://ftp.mozilla.org/pub/$(COMPONENT_NAME)/releases/$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE_URL=	$(MOZILLA_FTP)/source/$(COMPONENT_ARCHIVE)
 COMPONENT_BUGDB=	tbird/mailer
 
-TPNO=			27834	
+TPNO=			31787	
 
-LIGHTNING_VERSION=	lightning-4.7.1
+LIGHTNING_VERSION=	4.7.1
 
 # There are a set of .xpi files (as given in the LANG_LIST definition below)
 # that we need. These are available under:
@@ -56,31 +56,32 @@
 # collide due to different files with identical .xpi names. 
 COMPONENT_ARCHIVE_1 =   	$(COMPONENT_SRC)-xpi.tar.gz
 COMPONENT_ARCHIVE_HASH_1 = \
-    sha256:04269456df31de93e5af4b3ee14faf108278e8a885330e3c5c3504ccfb3a6381
-COMPONENT_ARCHIVE_URL_1 =       $(INTERNAL_ARCHIVE_MIRROR)/source-archives/$(COMPONENT_ARCHIVE_1)
+    sha256:6b170356db3c345e4704de93ed41f5d16afac9460345f6675b02193ad41a128f
+COMPONENT_ARCHIVE_URL_1 =       $(INTERNAL_ARCHIVE_MIRROR)/$(COMPONENT_ARCHIVE_1)
 
-COMPONENT_ARCHIVE_2 =		$(LIGHTNING_VERSION)-xpi.tar.gz
+COMPONENT_ARCHIVE_2 =		lightning-$(LIGHTNING_VERSION)-xpi.tar.gz
 COMPONENT_ARCHIVE_HASH_2 = \
     sha256:5bab9f0f879bdae9a312c5612b089c932c0400db89346c9c38b5c41623410e75
-COMPONENT_ARCHIVE_URL_2 = 	$(INTERNAL_ARCHIVE_MIRROR)/source-archives/$(COMPONENT_ARCHIVE_2)
+COMPONENT_ARCHIVE_URL_2 = 	$(INTERNAL_ARCHIVE_MIRROR)/$(COMPONENT_ARCHIVE_2)
 
 LANG_LIST = ar bg ca cs da de el es-AR es-ES et eu fi \
 	fr gl he hu id is it ja ko lt nb-NO nl nn-NO pa-IN pl \
 	pt-BR pt-PT ro ru sk sl sq sv-SE tr uk zh-CN zh-TW
 
-# Do not use Firefox patches until Firefox is updated to 45.1.1. 
+CLEAN_PATHS += $(COMPONENT_DIR)/xpi
+CLEAN_PATHS += $(COMPONENT_DIR)/xpi-lightning 
 
 # Firefox and Thunderbird share the same firefox*.patch patches. Copy these 
 # patches from the Firefox patches directory and the Thunderbird patches to a 
 # directory of all files (patches-all), except for Firefox patches 42 and 46, 
 # which don't get applied in Thunderbird. (libxul and dtrace patches)
-#PATCH_DIR=patches-all
-#CLEAN_PATHS += $(PATCH_DIR)
-#COPY_COMMON_FILES_1:= $(shell mkdir -p $(PATCH_DIR))
-#COPY_COMMON_FILES_2:=  \
-#    $(shell /usr/bin/rsync -ac patches/* ../firefox/patches/* $(PATCH_DIR))
-#COPY_COMMON_FILES_3:= \
-#    $(shell /usr/bin/rm -f $(PATCH_DIR)/firefox*42*.patch $(PATCH_DIR)/firefox*46*.patch)
+PATCH_DIR=patches-all
+CLEAN_PATHS += $(PATCH_DIR)
+COPY_COMMON_FILES_1:= $(shell mkdir -p $(PATCH_DIR))
+COPY_COMMON_FILES_2:=  \
+    $(shell /usr/bin/rsync -ac patches/* ../firefox/patches/* $(PATCH_DIR))
+COPY_COMMON_FILES_3:= \
+    $(shell /usr/bin/rm -f $(PATCH_DIR)/firefox*42*.patch $(PATCH_DIR)/firefox*46*.patch)
 
 # Depends on libsmbclient but samba is on the do-not-publish list, so this
 # must be too.
@@ -179,12 +180,40 @@
         list1='$(LANG_LIST)' ; for f in $$list1 ; do \
             $(CP) xpi/$$f.xpi \
                 $(PROTOUSRLIBDIR)/thunderbird-$(COMPONENT_VERSION)/distribution/extensions/[email protected] ; \
-	    unzip xpi-lightning/$(LIGHTNING_VERSION).$$f.linux-i686.xpi \
+	    unzip xpi-lightning/lightning-$(LIGHTNING_VERSION).$$f.linux-i686.xpi \
 		chrome/calendar-$$f/\* chrome/lightning-$$f/\* -d \
 		    $(LIGHTNING_EXT_DIR)/ ; \
 	    echo 'locale calendar '$$f' chrome/calendar-'$$f'/locale/'$$f'/calendar/' >> $(LIGHTNING_EXT_DIR)/chrome.manifest ; \
 	    echo 'locale lightning '$$f' chrome/lightning-'$$f'/locale/'$$f'/lightning/' >> $(LIGHTNING_EXT_DIR)/chrome.manifest ; \
 	done ;
+ 
+download-xpis:
+	@echo "download-xpis"
+	$(RM) -r $(COMPONENT_DIR)/xpi $(COMPONENT_DIR)/$(COMPONENT_ARCHIVE_1) 
+	$(MKDIR) $(COMPONENT_DIR)/xpi
+	@echo "downloading thunderbird xpis"
+	list1='$(LANG_LIST)' ; for f in $$list1 ; do \
+		echo $$f; \
+		/usr/bin/curl -s -o $(COMPONENT_DIR)/xpi/$$f.xpi \
+			$(TB_XPI)/$$f.xpi ;\
+	done
+	(cd $(COMPONENT_DIR); \
+	    $(TAR) czvf $(COMPONENT_DIR)/$(COMPONENT_ARCHIVE_1) xpi )
+	/usr/bin/sha256sum $(COMPONENT_ARCHIVE_1)
+
+download-lightning-xpis:
+	@echo "download-lightning-xpis"
+	$(RM) $(COMPONENT_DIR)/xpi-lightning $(COMPONENT_DIR)/$(COMPONENT_ARCHIVE_2)
+	$(MKDIR) $(COMPONENT_DIR)/xpi-lightning
+	@echo "downloading lightning xpis"
+	list1='$(LANG_LIST)' ; for f in $$list1 ; do \
+		echo $$f; \
+		/usr/bin/curl -s -o $(COMPONENT_DIR)/xpi-lightning/lightning-$(LIGHTNING_VERSION).$$f.linux-i686.xpi \
+	                $(LN_XPI)/lightning-$(LIGHTNING_VERSION).$$f.linux-i686.xpi ;\
+	done
+	(cd $(COMPONENT_DIR); \
+	    $(TAR) czvf $(COMPONENT_DIR)/$(COMPONENT_ARCHIVE_2) xpi-lightning )
+	/usr/bin/sha256sum $(COMPONENT_ARCHIVE_2)
 
 LIB_LIST.i386 =
 LIB_LIST.sparc = $(PROTOUSRLIBDIR)/thunderbird-devel-$(COMPONENT_VERSION)/sdk/lib/cpu/sparcv8plus/libnspr_flt4.so
@@ -196,12 +225,13 @@
 	    $(CP) $$f $(PROTOUSRLIBDIR)/thunderbird-$(COMPONENT_VERSION)/cpu/sparcv8plus/libnspr_flt4.so ; \
 	done ;
 
+COMPONENT_TEST_MASTER = \
+        $(COMPONENT_TEST_RESULTS_DIR)/results-$(MACH).master
 COMPONENT_TEST_DIR =    $(@D)/js/src
 COMPONENT_TEST_TARGETS=check-jit-test
 COMPONENT_TEST_TRANSFORMS += \
         '-e "/\(^TEST-PASS\).*/d" '
 
-# Do not use firefox patches until firefox is update to 45.1.1.
 $(SOURCE_DIR)/.patched-firefox-%: GPATCH_FLAGS += -d $(@D)/mozilla
 
 REQUIRED_PACKAGES += compress/bzip2
--- a/components/desktop/thunderbird/patches/firefox-00-locale.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-Matches the OS locale. We need to determine if this patch should be sent
-upstream. 
-
---- mozilla-esr38/modules/libpref/init/all.js.orig      2015-02-18 16:39:16.189950136 +0530
-+++ mozilla-esr38/modules/libpref/init/all.js   2015-02-18 16:40:56.002524458 +0530
[email protected]@ -1461,7 +1461,7 @@ pref("intl.charset.detector",
- pref("intl.charset.fallback.override",      "");
- pref("intl.charset.fallback.tld",           true);
- pref("intl.ellipsis",                       "chrome://global-platform/locale/intl.properties");
--pref("intl.locale.matchOS",                 false);
-+pref("intl.locale.matchOS",                 true);
- // fallback charset list for Unicode conversion (converting from Unicode)
- // currently used for mail send only to handle symbol characters (e.g Euro, trademark, smartquotes)
- // for ISO-8859-1
--- a/components/desktop/thunderbird/patches/firefox-01-cairo-perf.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-This enables tracking of ARGB values for image masks, since some machines do
-not use ARGB values.
-See Mozilla bug #716462 - Performance regression with xBGR visual and no
-RENDER extension.
-We would like to try to get this upstream in the future.
-
-diff --git a/gfx/cairo/cairo/src/cairo-xlib-surface.c b/gfx/cairo/cairo/src/cairo-xlib-surface.c
---- a/gfx/cairo/cairo/src/cairo-xlib-surface.c
-+++ b/gfx/cairo/cairo/src/cairo-xlib-surface.c
[email protected]@ -2325,6 +2325,7 @@
-                           cairo_region_t *clip_region)
- {
-     cairo_image_surface_t *image;
-+    cairo_format_masks_t image_masks;
-     cairo_rectangle_int_t extents;
-     cairo_status_t status;
-     int tx, ty;
[email protected]@ -2341,6 +2342,16 @@
-            (image->base.content & CAIRO_CONTENT_ALPHA) == 0)))
-        return CAIRO_INT_STATUS_UNSUPPORTED;
- 
-+    if (image->base.backend->type == CAIRO_SURFACE_TYPE_IMAGE) {
-+       if (_pixman_format_to_masks (image->pixman_format, &image_masks)) {
-+           if (! ((image_masks.alpha_mask == surface->a_mask || surface->a_mask == 0) &&
-+                  (image_masks.red_mask   == surface->r_mask || surface->r_mask == 0) &&
-+                  (image_masks.green_mask == surface->g_mask || surface->g_mask == 0) &&
-+                  (image_masks.blue_mask  == surface->b_mask || surface->b_mask == 0)))
-+               return CAIRO_INT_STATUS_UNSUPPORTED;
-+       }
-+    }
-+
-     if (image->base.backend->type != CAIRO_SURFACE_TYPE_IMAGE) {
-        if (image->base.backend->type == CAIRO_INTERNAL_SURFACE_TYPE_SNAPSHOT) {
-            image = (cairo_image_surface_t *) ((cairo_surface_snapshot_t *) image)->target;
--- a/components/desktop/thunderbird/patches/firefox-02-libnspr_flt4.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-This adds a library necessary for sparc. 
-This will not be sent upstream because it would be difficult to
-add a sparc-only ifdef condition for this.
-
-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
[email protected]@ -804,6 +804,7 @@
- bin/libfreebl_32fpu_3.so
- bin/libfreebl_32int_3.so
- bin/libfreebl_32int64_3.so
-+bin/cpu/sparcv8plus/libnspr_flt4.so
- #endif
- 
- ; [Updater]
--- a/components/desktop/thunderbird/patches/firefox-03-strcasestr.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-The 'uname' part is necessary because the uname() function returns a
-non-negative value.
-
-diff --git a/widget/GfxInfoX11.cpp b/widget/GfxInfoX11.cpp
---- a/widget/GfxInfoX11.cpp
-+++ b/widget/GfxInfoX11.cpp
[email protected]@ -135,7 +136,7 @@
-     // only useful for Linux kernel version check for FGLRX driver.
-     // assumes X client == X server, which is sad.
-     struct utsname unameobj;
--    if (!uname(&unameobj))
-+    if (uname(&unameobj) >= 0)
-     {
-       mOS.Assign(unameobj.sysname);
-       mOSRelease.Assign(unameobj.release);
--- a/components/desktop/thunderbird/patches/firefox-04-check_test.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-This patch is for testing. Potential for sending upstream. 
-
-diff --git a/testing/runcppunittests.py b/testing/runcppunittests.py
---- a/testing/runcppunittests.py
-+++ b/testing/runcppunittests.py
[email protected]@ -103,6 +103,8 @@
-         libpath = self.xre_path
-         if mozinfo.os == "linux":
-             pathvar = "LD_LIBRARY_PATH"
-+        if mozinfo.os == "unix":
-+            pathvar = "LD_LIBRARY_PATH"
-         elif mozinfo.os == "mac":
-             applibpath = os.path.join(os.path.dirname(libpath), 'MacOS')
-             if os.path.exists(applibpath):
--- a/components/desktop/thunderbird/patches/firefox-05-sqlite3-unix-excl.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-This provides the option to set the indicator for a NFS profile to true.
-It may be necessary for users on NFS to use bookmarks/logging.
-Will not be sending upstream.
-
-diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
---- a/browser/app/profile/firefox.js
-+++ b/browser/app/profile/firefox.js
[email protected]@ -1075,6 +1075,9 @@
- // allow META refresh by default
- pref("accessibility.blockautorefresh", false);
- 
-+// Whether profile is on NFS
-+pref("storage.nfs_filesystem", true);
-+            
- // Whether history is enabled or not.
- pref("places.history.enabled", true);
- 
--- a/components/desktop/thunderbird/patches/firefox-06-hnjfile.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-This allows us to access some function from wchar.h that other platforms
-can get from stdio.h. 
-Potentially add an ifdef Solaris statement to try and send upstream.
-
-diff --git a/intl/hyphenation/glue/hnjalloc.h b/intl/hyphenation/glue/hnjalloc.h
---- a/intl/hyphenation/glue/hnjalloc.h
-+++ b/intl/hyphenation/glue/hnjalloc.h
[email protected]@ -24,6 +24,7 @@
-  */
- 
- #include <stdio.h> /* ensure stdio.h is loaded before our macros */
-+#include <wchar.h>
- 
- #undef FILE 
- #define FILE hnjFile
--- a/components/desktop/thunderbird/patches/firefox-07-nsMathUtils.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-This allows us to get some function from math.h that other platforms are
-getting from ieeefp.h.
-Can send upstream since it already has an ifdef statement for Solaris.
-
-diff --git a/xpcom/ds/nsMathUtils.h b/xpcom/ds/nsMathUtils.h
---- a/xpcom/ds/nsMathUtils.h
-+++ b/xpcom/ds/nsMathUtils.h
[email protected]@ -13,6 +13,7 @@
- #include <float.h>
- 
- #ifdef SOLARIS
-+#include <math.h>
- #include <ieeefp.h>
- #endif
- 
--- a/components/desktop/thunderbird/patches/firefox-08-skip_mozbuild_test.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-For testing. Runs the test from a different environment than the Mozilla
-default.
-
-diff --git a/python/mozbuild/mozbuild/test/test_base.py b/python/mozbuild/mozbuild/test/test_base.py
---- a/python/mozbuild/mozbuild/test/test_base.py
-+++ b/python/mozbuild/mozbuild/test/test_base.py
[email protected]@ -393,5 +393,5 @@
-         self.assertEqual(p.srcdir_path(), "/src/foo/bar")
-         self.assertEqual(p.objdir_path(), "/src/obj/foo/bar")
- 
--if __name__ == '__main__':
--    main()
-+#if __name__ == '__main__':
-+#    main()
-diff --git a/python/mozbuild/mozbuild/test/test_mozconfig.py b/python/mozbuild/mozbuild/test/test_mozconfig.py
---- a/python/mozbuild/mozbuild/test/test_mozconfig.py
-+++ b/python/mozbuild/mozbuild/test/test_mozconfig.py
[email protected]@ -477,5 +477,5 @@
-             self.assertEquals(e.exception.output, ['hello world'])
- 
- 
--if __name__ == '__main__':
--    main()
-+#if __name__ == '__main__':
-+#    main()
--- a/components/desktop/thunderbird/patches/firefox-09-gthread-dlopen.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-See Mozilla bug #675585 - crash [@ g_slice_free1] when run firefox-bin -no-
-remote -process-updates.
-
-diff --git a/xpcom/glue/standalone/nsXPCOMGlue.cpp b/xpcom/glue/standalone/nsXPCOMGlue.cpp
---- a/xpcom/glue/standalone/nsXPCOMGlue.cpp
-+++ b/xpcom/glue/standalone/nsXPCOMGlue.cpp
[email protected]@ -386,6 +386,8 @@
-     }   
-   }
- 
-+  static void* gthreadso = dlopen("libgthread-2.0.so.0", RTLD_GLOBAL | RTLD_LAZY);
-+
-   GetFrozenFunctionsFunc sym =
-     (GetFrozenFunctionsFunc)GetSymbol(sTop->libHandle,
-                                       LEADING_UNDERSCORE "NS_GetFrozenFunctions");
--- a/components/desktop/thunderbird/patches/firefox-10-webaudio_math.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-This allows us to get some function from math.h that other platforms are
-getting elsewhere.
-Can potentially send upstream with ifdef Solaris statement.
-
-diff --git a/dom/media/webaudio/ThreeDPoint.h b/dom/media/webaudio/ThreeDPoint.h
---- a/dom/media/webaudio/ThreeDPoint.h
-+++ b/dom/media/webaudio/ThreeDPoint.h
[email protected]@ -8,6 +8,7 @@
- #define ThreeDPoint_h_
-  
- #include <cmath>
-+#include <math.h>
- #include <algorithm>
- 
- namespace mozilla {
-diff --git a/dom/media/webaudio/blink/DenormalDisabler.h b/dom/media/webaudio/blink/DenormalDisabler.h        
---- a/dom/media/webaudio/blink/DenormalDisabler.h
-+++ b/dom/media/webaudio/blink/DenormalDisabler.h
[email protected]@ -27,6 +27,7 @@
- 
- #define _USE_MATH_DEFINES
- #include <cmath>
-+#include <math.h>
- #include <float.h>
- 
- namespace WebCore {
--- a/components/desktop/thunderbird/patches/firefox-11-donot-delay-stopping-realplayer.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-See Mozilla bug #451007 - Reload page causing problems with
-RealPlayer/Helix plugin.
-We can potentially drop this patch since RealPlayer is no longer being
-supported, but some people may still be using it.
-
-diff --git a/dom/base/nsObjectLoadingContent.cpp b/dom/base/nsObjectLoadingContent.cpp
---- a/dom/base/nsObjectLoadingContent.cpp
-+++ b/dom/base/nsObjectLoadingContent.cpp
[email protected]@ -2902,7 +2902,8 @@
-               bool aDelayedStop)
- {
-   // Don't delay stopping QuickTime (bug 425157), Flip4Mac (bug 426524),
--  // XStandard (bug 430219), CMISS Zinc (bug 429604).
-+  // XStandard (bug 430219), CMISS Zinc (bug 429604),
-+  // RealPlayer/Helix (bug 451007).
-   if (aDelayedStop
- #if !(defined XP_WIN || defined MOZ_X11)
-       && !aInstanceOwner->MatchPluginName("QuickTime")
[email protected]@ -2910,6 +2911,8 @@
-       && !aInstanceOwner->MatchPluginName("XStandard plugin")
-       && !aInstanceOwner->MatchPluginName("CMISS Zinc Plugin")
- #endif
-+      && !aInstanceOwner->MatchPluginName("RealPlayer")
-+      && !aInstanceOwner->MatchPluginName("Helix")
-       ) {
-     nsCOMPtr<nsIRunnable> evt =
-       new nsStopPluginRunnable(aInstanceOwner, aContent);
--- a/components/desktop/thunderbird/patches/firefox-12-package_warning.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-Disables fatal warnings. Inside package-manifest.in, there is a sparc-specific
-line that we can't ifdef out. So we want to make sure this doesn't exit on
-an error for x86.  
-We will want to redo this patch with an ifdef for x86 vs sparc.
-
-diff --git a/browser/installer/Makefile.in b/browser/installer/Makefile.in
---- a/browser/installer/Makefile.in
-+++ b/browser/installer/Makefile.in
[email protected]@ -13,7 +13,7 @@ MOZ_PKG_MANIFEST = $(srcdir)/package-man
-
- # Some files have been already bundled with xulrunner
- ifndef MOZ_MULET
--MOZ_PKG_FATAL_WARNINGS = 1
-+#MOZ_PKG_FATAL_WARNINGS = 1
- else
- DEFINES += -DMOZ_MULET
- endif
--- a/components/desktop/thunderbird/patches/firefox-13-LocalFileUnix.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-Another ifdef Solaris patch. Some function is defined in limits.h that other 
-platforms can get elsewhere.  
-Can potentially send upstream with ifdef Solaris statement.
-
-diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
---- a/xpcom/io/nsLocalFileUnix.cpp
-+++ b/xpcom/io/nsLocalFileUnix.cpp
[email protected]@ -14,6 +14,7 @@
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <unistd.h>
-+#include <limits.h>
- #include <fcntl.h>
- #include <errno.h>
- #include <utime.h>
--- a/components/desktop/thunderbird/patches/firefox-14-uname.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-The uname() function on Solaris can return a non-negative value.
-Solaris specific patch, will not send upstream
-
-diff --git a/toolkit/components/startup/nsUserInfoUnix.cpp b/toolkit/components/startup/nsUserInfoUnix.cpp
---- a/toolkit/components/startup/nsUserInfoUnix.cpp
-+++ b/toolkit/components/startup/nsUserInfoUnix.cpp
[email protected]@ -106,7 +106,7 @@
-     char *domainname = nullptr;
- 
-     // is this portable?  that is a POSIX compliant call, but I need to check
--    if (uname(&buf)) { 
-+    if (uname(&buf) < 0) { 
-         return rv;
-     }
- 
--- a/components/desktop/thunderbird/patches/firefox-15-ion_AsmJS_x86.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-REG_EIP is already defined elsewhere for Linux.
-Can potentially send upstream.
-
-diff --git a/js/src/asmjs/AsmJSSignalHandlers.cpp b/js/src/asmjs/AsmJSSignalHandlers.cpp
---- a/js/src/asmjs/AsmJSSignalHandlers.cpp
-+++ b/js/src/asmjs/AsmJSSignalHandlers.cpp
[email protected]@ -116,6 +116,9 @@
- # define R14_sig(p) ((p)->sc_r14)
- # define R15_sig(p) ((p)->sc_r15)
- #elif defined(__linux__) || defined(SOLARIS)
-+# if defined(SOLARIS)
-+#  define REG_EIP EIP
-+# endif 
- # if defined(__linux__)
- #  define XMM_sig(p,i) ((p)->uc_mcontext.fpregs->_xmm[i])
- #  define EIP_sig(p) ((p)->uc_mcontext.gregs[REG_EIP])
--- a/components/desktop/thunderbird/patches/firefox-16-mftt_infinity.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-We use a different function from the one in ieeefp.h.
-This may be a studio specific patch. Need to investigate if this can be
-removed.
-
-diff --git a/mfbt/decimal/Decimal.cpp b/mfbt/decimal/Decimal.cpp
---- a/mfbt/decimal/Decimal.cpp
-+++ b/mfbt/decimal/Decimal.cpp
[email protected]@ -33,6 +33,7 @@
- 
- #include <algorithm>
- #include <float.h>
-+#include <ieeefp.h>
- 
- using namespace moz_decimal_utils;
- 
[email protected]@ -686,13 +687,13 @@
- 
- Decimal Decimal::fromDouble(double doubleValue)
- {
--    if (std::isfinite(doubleValue))
-+    if (finite(doubleValue))
-         return fromString(mozToString(doubleValue));
- 
--    if (std::isinf(doubleValue))
--        return infinity(doubleValue < 0 ? Negative : Positive);
-+    if (isnand(doubleValue))
-+        return nan();
- 
--    return nan();
-+    return infinity(doubleValue < 0 ? Negative : Positive);
- }
- 
- Decimal Decimal::fromString(const String& str)
--- a/components/desktop/thunderbird/patches/firefox-17-xpt-as-flag.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-We need the xptcstubsdef_asm file for Sun Studio, but not necessary for GCC. 
-One of the files was placed in the wrong location and needs to be moved. This 
-part can probably be sent upstream. 
-
-diff --git a/xpcom/reflect/xptcall/md/unix/moz.build b/xpcom/reflect/xptcall/md/unix/moz.build
---- a/xpcom/reflect/xptcall/md/unix/moz.build
-+++ b/xpcom/reflect/xptcall/md/unix/moz.build
[email protected]@ -267,9 +270,6 @@
-     ]
- 
- if CONFIG['OS_ARCH'] == 'SunOS' and '86' in CONFIG['OS_TEST']:
--    GENERATED_FILES = [
--        'xptcstubsdef_asm.solx86',
--    ]
-     if CONFIG['OS_TEST'] == 'x86_64':
-         if CONFIG['GNU_CC']:
-             SOURCES += [
--- a/components/desktop/thunderbird/patches/firefox-18-libvpx_compile.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-Can probably send upstream. 
-
---- a/media/libvpx/moz.build
-+++ b/media/libvpx/moz.build
[email protected]@ -97,3 +97,8 @@ if CONFIG['OS_TARGET'] == 'Android':
-     ASFLAGS += [
-         '-D__ANDROID__'
-     ]
-+
-+if CONFIG['OS_TARGET'] == 'SunOS':
-+    ASFLAGS += [
-+        '-DSOLARIS'
-+    ]
-diff --git a/media/libvpx/Makefile.in b/media/libvpx/Makefile.in
---- a/media/libvpx/Makefile.in
-+++ b/media/libvpx/Makefile.in
[email protected]@ -121,7 +125,7 @@
- # Workaround a bug of Sun Studio (CR 6963410)
- ifdef SOLARIS_SUNPRO_CC
- ifeq (86,$(findstring 86,$(OS_TEST)))
--filter.o: filter.c Makefile.in
-+filter.o: vp8/common/filter.c Makefile.in
- 	$(REPORT_BUILD)
- 	@$(MAKE_DEPS_AUTO_CC)
- 	$(CC) -o [email protected] -c $(patsubst -xO[45],-xO3,$(COMPILE_CFLAGS)) $<
-diff --git a/media/libvpx/vpx_ports/x86_abi_support.asm b/media/libvpx/vpx_ports/x86_abi_support.asm
---- a/media/libvpx/vpx_ports/x86_abi_support.asm
-+++ b/media/libvpx/vpx_ports/x86_abi_support.asm
[email protected]@ -225,9 +225,13 @@
-   %ifdef CHROMIUM
-     %ifidn __OUTPUT_FORMAT__,macho32
-       %define HIDDEN_DATA(x) x:private_extern
-+    %elifidn SOLARIS,1
-+      %define HIDDEN_DATA(x) x:data hidden
-     %else
-       %define HIDDEN_DATA(x) x
-     %endif
-+  %elifidn SOLARIS,1
-+    %define HIDDEN_DATA(x) x:data hidden
-   %else
-     %define HIDDEN_DATA(x) x
-   %endif
[email protected]@ -244,9 +248,13 @@
-   %elifidn __OUTPUT_FORMAT__,macho64
-     %ifdef CHROMIUM
-       %define HIDDEN_DATA(x) x:private_extern
-+    %elifidn SOLARIS,1
-+      %define HIDDEN_DATA(x) x:data hidden
-     %else
-       %define HIDDEN_DATA(x) x
-     %endif
-+  %elifidn SOLARIS,1
-+    %define HIDDEN_DATA(x) x:data hidden
-   %else
-     %define HIDDEN_DATA(x) x
-   %endif
--- a/components/desktop/thunderbird/patches/firefox-19-cubeb.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,547 +0,0 @@
-For SunAudio audio playback. We need to investigate whether we care about
-this or whether we are just going to support PulseAudio.
-
-diff --git a/media/libcubeb/src/cubeb.c b/media/libcubeb/src/cubeb.c
---- a/media/libcubeb/src/cubeb.c
-+++ b/media/libcubeb/src/cubeb.c
[email protected]@ -56,6 +56,9 @@
- #if defined(USE_AUDIOTRACK)
- int audiotrack_init(cubeb ** context, char const * context_name);
- #endif
-+#if defined(USE_SUN)
-+int sunaudio_init(cubeb ** context, char const * context_name);
-+#endif
- 
- int
- validate_stream_params(cubeb_stream_params stream_params)
[email protected]@ -122,6 +125,9 @@
- #if defined(USE_AUDIOTRACK)
-     audiotrack_init,
- #endif
-+#if defined(USE_SUN)
-+    sunaudio_init,
-+#endif
-   };
-   int i;
- 
-diff --git a/media/libcubeb/src/moz.build b/media/libcubeb/src/moz.build
---- a/media/libcubeb/src/moz.build
-+++ b/media/libcubeb/src/moz.build
[email protected]@ -31,6 +31,12 @@
-     ]
-     DEFINES['USE_SNDIO'] = True
- 
-+if CONFIG['OS_ARCH'] == 'SunOS':
-+    SOURCES += [
-+        'cubeb_sun.c',
-+    ]
-+    DEFINES['USE_SUN'] = True
-+
- if CONFIG['OS_TARGET'] == 'Darwin':
-     SOURCES += [
-         'cubeb_audiounit.c',
-diff --git a/media/libcubeb/src/cubeb_sun.c b/media/libcubeb/src/cubeb_sun.c
-new file mode 100644
---- /dev/null
-+++ b/media/libcubeb/src/cubeb_sun.c
[email protected]@ -0,0 +1,500 @@
-+/*
-+ * Copyright (c) 2013 Ginn Chen <[email protected]>
-+ *
-+ * This program is made available under an ISC-style license.  See the
-+ * accompanying file LICENSE for details.
-+ */
-+#include <poll.h>
-+#include <pthread.h>
-+#include <stdlib.h>
-+#include <stdio.h>
-+#include <errno.h>
-+#include <fcntl.h>
-+#include <sys/audio.h>
-+#include <sys/stat.h>
-+#include <unistd.h>
-+#include <sys/stropts.h>
-+#include "cubeb/cubeb.h"
-+#include "cubeb-internal.h"
-+
-+/* Macros copied from audio_oss.h */
-+/*
-+ * CDDL HEADER START
-+ *
-+ * The contents of this file are subject to the terms of the
-+ * Common Development and Distribution License (the "License").
-+ * You may not use this file except in compliance with the License.
-+ *
-+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-+ * or http://www.opensolaris.org/os/licensing.
-+ * See the License for the specific language governing permissions
-+ * and limitations under the License.
-+ *
-+ * When distributing Covered Code, include this CDDL HEADER in each
-+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-+ * If applicable, add the following below this CDDL HEADER, with the
-+ * fields enclosed by brackets "[]" replaced with your own identifying
-+ * information: Portions Copyright [yyyy] [name of copyright owner]
-+ *
-+ * CDDL HEADER END
-+ */
-+/*
-+ * Copyright (C) 4Front Technologies 1996-2008.
-+ *
-+ * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
-+ * Use is subject to license terms.
-+ */
-+#define OSSIOCPARM_MASK 0x1fff          /* parameters must be < 8192 bytes */
-+#define OSSIOC_VOID     0x00000000      /* no parameters */
-+#define OSSIOC_OUT      0x20000000      /* copy out parameters */
-+#define OSSIOC_IN       0x40000000      /* copy in parameters */
-+#define OSSIOC_INOUT    (OSSIOC_IN|OSSIOC_OUT)
-+#define OSSIOC_SZ(t)    ((sizeof (t) & OSSIOCPARM_MASK) << 16)
-+#define __OSSIO(x, y)           ((int)(OSSIOC_VOID|(x<<8)|y))
-+#define __OSSIOR(x, y, t)       ((int)(OSSIOC_OUT|OSSIOC_SZ(t)|(x<<8)|y))
-+#define __OSSIOWR(x, y, t)      ((int)(OSSIOC_INOUT|OSSIOC_SZ(t)|(x<<8)|y))
-+#define SNDCTL_DSP_SPEED        __OSSIOWR('P', 2, int)
-+#define SNDCTL_DSP_CHANNELS     __OSSIOWR('P', 6, int)
-+#define SNDCTL_DSP_SETFMT       __OSSIOWR('P', 5, int)  /* Selects ONE fmt */
-+#define SNDCTL_DSP_GETODELAY    __OSSIOR('P', 23, int)
-+#define SNDCTL_DSP_HALT_OUTPUT  __OSSIO('P', 34)
-+#define AFMT_S16_LE     0x00000010
-+#define AFMT_S16_BE     0x00000020
-+
-+#if defined(WORDS_BIGENDIAN) || defined(__BIG_ENDIAN__)
-+#define AFMT_S16_NE    AFMT_S16_BE
-+#else
-+#define AFMT_S16_NE    AFMT_S16_LE
-+#endif
-+
-+#define DEFAULT_AUDIO_DEVICE "/dev/audio"
-+#define DEFAULT_DSP_DEVICE   "/dev/dsp"
-+
-+#define BUF_SIZE_MS 10
-+
-+#if defined(CUBEB_SUNAUDIO_DEBUG)
-+#define DPR(...) fprintf(stderr, __VA_ARGS__);
-+#else
-+#define DPR(...) do {} while(0)
-+#endif
-+
-+static struct cubeb_ops const sunaudio_ops;
-+
-+struct cubeb {
-+  struct cubeb_ops const * ops;
-+};
-+
-+struct cubeb_stream {
-+  cubeb * context;
-+  pthread_t th;			  /* to run real-time audio i/o */
-+  pthread_mutex_t mutex;	  /* protects fd and frm_played */
-+  int fd;			  /* link us to sunaudio */
-+  int active;			  /* cubec_start() called */
-+  int conv;			  /* need float->s16 conversion */
-+  int using_oss;
-+  unsigned char *buf;		  /* data is prepared here */
-+  unsigned int rate;
-+  unsigned int n_channles;
-+  unsigned int bytes_per_ch;
-+  unsigned int n_frm;
-+  unsigned int buffer_size;
-+  int64_t frm_played;
-+  cubeb_data_callback data_cb;    /* cb to preapare data */
-+  cubeb_state_callback state_cb;  /* cb to notify about state changes */
-+  void *arg;			  /* user arg to {data,state}_cb */
-+};
-+
-+static void
-+float_to_s16(void *ptr, long nsamp)
-+{
-+  int16_t *dst = ptr;
-+  float *src = ptr;
-+
-+  while (nsamp-- > 0)
-+    *(dst++) = *(src++) * 32767;
-+}
-+
-+static void *
-+sunaudio_mainloop(void *arg)
-+{
-+  struct cubeb_stream *s = arg;
-+  int state;
-+
-+  DPR("sunaudio_mainloop()\n");
-+
-+  s->state_cb(s, s->arg, CUBEB_STATE_STARTED);
-+
-+  pthread_mutex_lock(&s->mutex);
-+  DPR("sunaudio_mainloop(), started\n");
-+
-+  for (;;) {
-+    if (!s->active) {
-+      DPR("sunaudio_mainloop() stopped\n");
-+      state = CUBEB_STATE_STOPPED;
-+      break;
-+    }
-+
-+    if (!s->using_oss) {
-+      audio_info_t info;
-+      ioctl(s->fd, AUDIO_GETINFO, &info);
-+      if (s->frm_played > info.play.samples + 3 * s->n_frm) {
-+        pthread_mutex_unlock(&s->mutex);
-+        struct timespec ts = {0, 10000}; // 10 ms
-+        nanosleep(&ts, NULL);
-+        pthread_mutex_lock(&s->mutex);
-+        continue;
-+      }
-+    }
-+
-+    pthread_mutex_unlock(&s->mutex);
-+    unsigned int got = s->data_cb(s, s->arg, s->buf, s->n_frm);
-+    DPR("sunaudio_mainloop() ask %d got %d\n", s->n_frm, got);
-+    pthread_mutex_lock(&s->mutex);
-+
-+    if (got < 0) {
-+      DPR("sunaudio_mainloop() cb err\n");
-+      state = CUBEB_STATE_ERROR;
-+      break;
-+    }
-+
-+    if (s->conv) {
-+      float_to_s16(s->buf, got * s->n_channles);
-+    }
-+
-+    unsigned int avail = got * 2 * s->n_channles; // coverted to s16
-+    unsigned int pos = 0;
-+
-+    while (avail > 0 && s->active) {
-+      int written = write(s->fd, s->buf + pos, avail);
-+      if (written == -1) {
-+        if (errno != EINTR && errno != EWOULDBLOCK) {
-+          DPR("sunaudio_mainloop() write err\n");
-+          state = CUBEB_STATE_ERROR;
-+          break;
-+        }
-+        pthread_mutex_unlock(&s->mutex);
-+        struct timespec ts = {0, 10000}; // 10 ms
-+        nanosleep(&ts, NULL);
-+        pthread_mutex_lock(&s->mutex);
-+      } else {
-+        pos += written;
-+        DPR("sunaudio_mainloop() write %d pos %d\n", written, pos);
-+        s->frm_played += written / 2 / s->n_channles;
-+        avail -= written;
-+      }
-+    }
-+
-+    if ((got  < s->n_frm)) {
-+      DPR("sunaudio_mainloop() drained\n");
-+      state = CUBEB_STATE_DRAINED;
-+      break;
-+    }
-+  }
-+
-+  pthread_mutex_unlock(&s->mutex);
-+  s->state_cb(s, s->arg, state);
-+
-+  return NULL;
-+}
-+
-+/*static*/ int
-+sunaudio_init(cubeb **context, char const *context_name)
-+{
-+  DPR("sunaudio_init(%s)\n", context_name);
-+  *context = malloc(sizeof(*context));
-+  (*context)->ops = &sunaudio_ops;
-+  (void)context_name;
-+  return CUBEB_OK;
-+}
-+
-+static char const *
-+sunaudio_get_backend_id(cubeb *context)
-+{
-+  return "sunaudio";
-+}
-+
-+static void
-+sunaudio_destroy(cubeb *context)
-+{
-+  DPR("sunaudio_destroy()\n");
-+  free(context);
-+}
-+
-+static int
-+sunaudio_stream_init(cubeb *context,
-+                  cubeb_stream **stream,
-+                  char const *stream_name,
-+                  cubeb_stream_params stream_params, unsigned int latency,
-+                  cubeb_data_callback data_callback,
-+                  cubeb_state_callback state_callback,
-+                  void *user_ptr)
-+{
-+  struct cubeb_stream *s;
-+  DPR("sunaudio_stream_init(%s)\n", stream_name);
-+  size_t size;
-+
-+  s = malloc(sizeof(struct cubeb_stream));
-+  if (s == NULL)
-+    return CUBEB_ERROR;
-+  s->context = context;
-+
-+  // If UTAUDIODEV is set, use it with Sun Audio interface
-+  char * sa_device_name = getenv("UTAUDIODEV");
-+  char * dsp_device_name = NULL;
-+  if (!sa_device_name) {
-+    dsp_device_name = getenv("AUDIODSP");
-+    if (!dsp_device_name) {
-+      dsp_device_name = DEFAULT_DSP_DEVICE;
-+    }
-+    sa_device_name = getenv("AUDIODEV");
-+    if (!sa_device_name) {
-+      sa_device_name = DEFAULT_AUDIO_DEVICE;
-+    }
-+  }
-+
-+  s->using_oss = 0;
-+  // Try to use OSS if available
-+  if (dsp_device_name) {
-+    s->fd = open(dsp_device_name, O_WRONLY | O_NONBLOCK);
-+    if (s->fd >= 0) {
-+      s->using_oss = 1;
-+    }
-+  }
-+
-+  // Try Sun Audio
-+  if (!s->using_oss) {
-+    s->fd = open(sa_device_name, O_WRONLY | O_NONBLOCK);
-+  }
-+
-+  if (s->fd < 0) {
-+    free(s);
-+    DPR("sunaudio_stream_init(), open() failed\n");
-+    return CUBEB_ERROR;
-+  }
-+
-+  if (s->using_oss) {
-+    if (ioctl(s->fd, SNDCTL_DSP_SPEED, &stream_params.rate) < 0) {
-+      DPR("ioctl SNDCTL_DSP_SPEED failed.\n");
-+      close(s->fd);
-+      free(s);
-+      return CUBEB_ERROR_INVALID_FORMAT;
-+    }
-+
-+    if (ioctl(s->fd, SNDCTL_DSP_CHANNELS, &stream_params.channels) < 0) {
-+      DPR("ioctl SNDCTL_DSP_CHANNELS failed.\n");
-+      close(s->fd);
-+      free(s);
-+      return CUBEB_ERROR_INVALID_FORMAT;
-+    }
-+
-+    int format = AFMT_S16_NE;
-+    if (ioctl(s->fd, SNDCTL_DSP_SETFMT, &format) < 0) {
-+      DPR("ioctl SNDCTL_DSP_SETFMT failed.\n");
-+      close(s->fd);
-+      free(s);
-+      return CUBEB_ERROR_INVALID_FORMAT;
-+    }
-+  } else {
-+    audio_info_t audio_info;
-+    AUDIO_INITINFO(&audio_info)
-+    audio_info.play.sample_rate = stream_params.rate;
-+    audio_info.play.channels = stream_params.channels;
-+    audio_info.play.encoding = AUDIO_ENCODING_LINEAR;
-+    audio_info.play.precision = 16;
-+    if (ioctl(s->fd, AUDIO_SETINFO, &audio_info) == -1) {
-+      DPR("ioctl AUDIO_SETINFO failed.\n");
-+      close(s->fd);
-+      free(s);
-+      return CUBEB_ERROR_INVALID_FORMAT;
-+    }
-+  }
-+
-+  s->conv = 0;
-+  switch (stream_params.format) {
-+    case CUBEB_SAMPLE_S16NE:
-+      s->bytes_per_ch = 2;
-+      break;
-+    case CUBEB_SAMPLE_FLOAT32NE:
-+      s->bytes_per_ch = 4;
-+      s->conv = 1;
-+      break;
-+    default:
-+      DPR("sunaudio_stream_init() unsupported format\n");
-+      close(s->fd);
-+      free(s);
-+      return CUBEB_ERROR_INVALID_FORMAT;
-+  }
-+
-+  s->active = 0;
-+  s->rate = stream_params.rate;
-+  s->n_channles = stream_params.channels;
-+  s->data_cb = data_callback;
-+  s->state_cb = state_callback;
-+  s->arg = user_ptr;
-+  if (pthread_mutex_init(&s->mutex, NULL) != 0) {
-+    free(s);
-+    return CUBEB_ERROR;
-+  }
-+  s->frm_played = 0;
-+  s->n_frm = s->rate * BUF_SIZE_MS / 1000;
-+  s->buffer_size = s->bytes_per_ch * s->n_channles * s->n_frm;
-+  s->buf = malloc(s->buffer_size);
-+  if (s->buf == NULL) {
-+    close(s->fd);
-+    free(s);
-+    return CUBEB_ERROR;
-+  }
-+
-+  *stream = s;
-+  DPR("sunaudio_stream_init() end, ok\n");
-+  return CUBEB_OK;
-+}
-+
-+static void
-+sunaudio_stream_destroy(cubeb_stream *s)
-+{
-+  DPR("sunaudio_stream_destroy()\n");
-+  if (s->fd > 0) {
-+    // Flush buffer
-+    if (s->using_oss) {
-+      ioctl(s->fd, SNDCTL_DSP_HALT_OUTPUT);
-+    } else {
-+      ioctl(s->fd, I_FLUSH);
-+    }
-+    close(s->fd);
-+  }
-+  free(s->buf);
-+  free(s);
-+}
-+
-+static int
-+sunaudio_stream_start(cubeb_stream *s)
-+{
-+  int err;
-+
-+  DPR("sunaudio_stream_start()\n");
-+  s->active = 1;
-+  err = pthread_create(&s->th, NULL, sunaudio_mainloop, s);
-+  if (err) {
-+    s->active = 0;
-+    return CUBEB_ERROR;
-+  }
-+  return CUBEB_OK;
-+}
-+
-+static int
-+sunaudio_stream_stop(cubeb_stream *s)
-+{
-+  void *dummy;
-+
-+  DPR("sunaudio_stream_stop()\n");
-+  if (s->active) {
-+    s->active = 0;
-+    pthread_join(s->th, &dummy);
-+  }
-+  return CUBEB_OK;
-+}
-+
-+static int
-+sunaudio_stream_get_position(cubeb_stream *s, uint64_t *p)
-+{
-+  int rv = CUBEB_OK;
-+  pthread_mutex_lock(&s->mutex);
-+  if (s->active && s->fd > 0) {
-+    if (s->using_oss) {
-+      int delay;
-+      ioctl(s->fd, SNDCTL_DSP_GETODELAY, &delay);
-+      int64_t t = s->frm_played - delay / s->n_channles / 2;
-+      if (t < 0) {
-+        *p = 0;
-+      } else {
-+        *p = t;
-+      }
-+    } else {
-+      audio_info_t info;
-+      ioctl(s->fd, AUDIO_GETINFO, &info);
-+      *p = info.play.samples;
-+    }
-+    DPR("sunaudio_stream_get_position() %lld\n", *p);
-+  } else {
-+    rv = CUBEB_ERROR;
-+  }
-+  pthread_mutex_unlock(&s->mutex);
-+  return rv;
-+}
-+
-+static int
-+sunaudio_get_max_channel_count(cubeb * ctx, uint32_t * max_channels)
-+{
-+  if (!ctx || !max_channels)
-+    return CUBEB_ERROR;
-+
-+  *max_channels = 2;
-+
-+  return CUBEB_OK;
-+}
-+
-+static int
-+sunaudio_get_preferred_sample_rate(cubeb * ctx, uint32_t * rate)
-+{
-+  if (!ctx || !rate)
-+    return CUBEB_ERROR;
-+
-+  // XXX Not yet implemented.
-+  *rate = 44100;
-+
-+  return CUBEB_OK;
-+}
-+
-+static int
-+sunaudio_get_min_latency(cubeb * ctx, cubeb_stream_params params, uint32_t * latency_ms)
-+{
-+  if (!ctx || !latency_ms)
-+    return CUBEB_ERROR;
-+
-+  // XXX Not yet implemented.
-+  *latency_ms = 20;
-+
-+  return CUBEB_OK;
-+}
-+
-+static int
-+sunaudio_stream_get_latency(cubeb_stream * s, uint32_t * latency)
-+{
-+  if (!s || !latency)
-+    return CUBEB_ERROR;
-+
-+  int rv = CUBEB_OK;
-+  pthread_mutex_lock(&s->mutex);
-+  if (s->active && s->fd > 0) {
-+    if (s->using_oss) {
-+      int delay;
-+      ioctl(s->fd, SNDCTL_DSP_GETODELAY, &delay);
-+      *latency = delay / s->n_channles / 2 / s->rate;
-+    } else {
-+      audio_info_t info;
-+      ioctl(s->fd, AUDIO_GETINFO, &info);
-+      *latency = (s->frm_played - info.play.samples) / s->rate;
-+    }
-+    DPR("sunaudio_stream_get_position() %lld\n", *p);
-+  } else {
-+    rv = CUBEB_ERROR;
-+  }
-+  pthread_mutex_unlock(&s->mutex);
-+  return rv;
-+}
-+
-+static struct cubeb_ops const sunaudio_ops = {
-+  .init = sunaudio_init,
-+  .get_backend_id = sunaudio_get_backend_id,
-+  .destroy = sunaudio_destroy,
-+  .get_preferred_sample_rate = sunaudio_get_preferred_sample_rate,
-+  .stream_init = sunaudio_stream_init,
-+  .stream_destroy = sunaudio_stream_destroy,
-+  .stream_start = sunaudio_stream_start,
-+  .stream_stop = sunaudio_stream_stop,
-+  .stream_get_position = sunaudio_stream_get_position,
-+  .get_max_channel_count = sunaudio_get_max_channel_count,
-+  .get_min_latency = sunaudio_get_min_latency,
-+  .stream_get_latency = sunaudio_stream_get_latency
-+};
--- a/components/desktop/thunderbird/patches/firefox-20-gfx.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-Compiler specific. Can potentially send upstream with an ifdef Solaris
-statement. 
-
-diff --git a/gfx/2d/FilterProcessingSIMD-inl.h b/gfx/2d/FilterProcessingSIMD-inl.h
---- a/gfx/2d/FilterProcessingSIMD-inl.h
-+++ b/gfx/2d/FilterProcessingSIMD-inl.h
[email protected]@ -490,7 +490,7 @@
-   // int16_t rows_ra[8] == { rB, rG, rR, rA, aB, aG, aR, aA }.
-   // int32_t bias[4] == { _B, _G, _R, _A }.
- 
--  i32x4_t sum = bias;
-+  i32x4_t sum = (i32x4_t)bias;
- 
-   // int16_t bg[8] = { b, g, b, g, b, g, b, g };
-   i16x8_t bg = simd::ShuffleHi16<1,0,1,0>(simd::ShuffleLo16<1,0,1,0>(p));
-diff --git a/gfx/2d/SIMD.h b/gfx/2d/SIMD.h
---- a/gfx/2d/SIMD.h
-+++ b/gfx/2d/SIMD.h
[email protected]@ -10,8 +10,8 @@
-  * Consumers of this file need to #define SIMD_COMPILE_SSE2 before including it
-  * if they want access to the SSE2 functions.
-  */
--
- #ifdef SIMD_COMPILE_SSE2
-+#include <emmintrin.h>
- #include <xmmintrin.h>
- #endif
- 
--- a/components/desktop/thunderbird/patches/firefox-21-mozconfig_loader_bash.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-This patch is needed because the default shell on Solaris has issues. 
-Still needed for ksh93 on S11 and S12.
-
-diff --git a/python/mozbuild/mozbuild/mozconfig_loader b/python/mozbuild/mozbuild/mozconfig_loader
---- a/python/mozbuild/mozbuild/mozconfig_loader
-+++ b/python/mozbuild/mozbuild/mozconfig_loader
[email protected]@ -1,4 +1,4 @@
--#!/bin/sh
-+#!/bin/bash
- # 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/.
--- a/components/desktop/thunderbird/patches/firefox-22-snappy.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-Defined Endians.
-Can potentially go upstream.
-
-diff --git a/configure b/configure
---- a/configure
-+++ b/configure
[email protected]@ -9620,6 +9620,18 @@
- #define SOLARIS 1
- EOF
- 
-+    if test "$CPU_ARCH" = "sparc"; then
-+ cat >> confdefs.pytmp <<\EOF
-+  (''' WORDS_BIGENDIAN ''', ' 1 ')
-+  (''' IS_BIG_ENDIAN ''', ' 1 ')
-+EOF
-+cat >> confdefs.h <<\EOF
-+#define WORDS_BIGENDIAN 1
-+#define IS_BIG_ENDIAN 1
-+EOF
-+
-+    fi
-+
-     TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
-     MOZ_FIX_LINK_PATHS=
-     # $ORIGIN/.. is for shared libraries under components/ to locate shared
--- a/components/desktop/thunderbird/patches/firefox-23-skia_gpu.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-Returns an error if big endian. We probably don't need to worry about this
-since we don't use Skia gpu.
-Seems sparc specific. To be investigated.
-
-diff --git a/gfx/skia/skia/include/gpu/GrTypes.h b/gfx/skia/skia/include/gpu/GrTypes.h
---- a/gfx/skia/skia/include/gpu/GrTypes.h
-+++ b/gfx/skia/skia/include/gpu/GrTypes.h
[email protected]@ -309,9 +309,9 @@
- static const int kGrPixelConfigCnt = kLast_GrPixelConfig + 1;
- 
- // Aliases for pixel configs that match skia's byte order.
--#ifndef SK_CPU_LENDIAN
--    #error "Skia gpu currently assumes little endian"
--#endif
-+// #ifndef SK_CPU_LENDIAN
-+//    #error "Skia gpu currently assumes little endian"
-+// #endif
- #if SK_PMCOLOR_BYTE_ORDER(B,G,R,A)
-     static const GrPixelConfig kSkia8888_GrPixelConfig = kBGRA_8888_GrPixelConfig;
- #elif SK_PMCOLOR_BYTE_ORDER(R,G,B,A)
--- a/components/desktop/thunderbird/patches/firefox-24-test.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-For testing. Commented out some tests that are known not to work on Solaris. 
-Solaris-specific patch.
-
-diff --git a/docshell/test/unit/test_bug414201_jfif.js b/docshell/test/unit/test_bug414201_jfif.js
---- a/docshell/test/unit/test_bug414201_jfif.js
-+++ b/docshell/test/unit/test_bug414201_jfif.js
[email protected]@ -20,8 +20,9 @@
-     /* Check whether the primary extension is what we'd expect */
-     for (var mimetype in types) {
-         var exts = types[mimetype];
--        var primary = ms.getFromTypeAndExtension(mimetype, null).primaryExtension.toLowerCase();
-+// Known issue on Solaris
-+//        var primary = ms.getFromTypeAndExtension(mimetype, null).primaryExtension.toLowerCase();
- 
--        do_check_true (exts.indexOf(primary) != -1);
-+//        do_check_true (exts.indexOf(primary) != -1);
-     }
- }
-diff --git a/dom/tests/unit/test_geolocation_provider.js b/dom/tests/unit/test_geolocation_provider.js
---- a/dom/tests/unit/test_geolocation_provider.js
-+++ b/dom/tests/unit/test_geolocation_provider.js
[email protected]@ -70,6 +70,7 @@
-     // needs a place where it can store databases.
-     do_get_profile();
- 
-+/* Network issue
-     // only kill this test when shutdown is called on the provider.
-     do_test_pending();
- 
[email protected]@ -89,4 +90,5 @@
- 
-     geolocation = Cc["@mozilla.org/geolocation;1"].getService(Ci.nsISupports);
-     watchID = geolocation.watchPosition(successCallback, errorCallback);
-+*/
- }
-diff --git a/gfx/tests/gtest/TestLayers.cpp b/gfx/tests/gtest/TestLayers.cpp
---- a/gfx/tests/gtest/TestLayers.cpp
-+++ b/gfx/tests/gtest/TestLayers.cpp
[email protected]@ -102,7 +102,7 @@
- 
- TEST(Layers, Defaults) {
-   TestContainerLayer layer(nullptr);
--  ASSERT_EQ(1.0, layer.GetOpacity());
-+  ASSERT_EQ(1.0f, layer.GetOpacity());
-   ASSERT_EQ(1.0f, layer.GetPostXScale());
-   ASSERT_EQ(1.0f, layer.GetPostYScale());
- 
--- a/components/desktop/thunderbird/patches/firefox-25-rules_mk.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-The ninstall... function is not callable for some reason, so we need to copy
-the definition when using install_cmd.
-
-diff --git a/config/rules.mk b/config/rules.mk
---- a/config/rules.mk
-+++ b/config/rules.mk
[email protected]@ -1402,7 +1402,7 @@
- nsinstall_is_usable = $(if $(wildcard $(DEPTH)/config/nsinstall$(HOST_BIN_SUFFIX)),yes)
-     
- define install_cmd_override
--$(1): install_cmd = $$(if $$(nsinstall_is_usable),$$(INSTALL),$$(NSINSTALL_PY) -t) $$(1)
-+$(1): install_cmd = $$(if $(wildcard $(DIST)/bin/nsinstall$(HOST_BIN_SUFFIX)),$$(INSTALL),$$(NSINSTALL_PY) -t) $$(1)
- endef
- endif
- endif
--- a/components/desktop/thunderbird/patches/firefox-26-jit-test-multi-processes.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-For testing. This reduces memory needed for JIT test. The -f flag will print
-the full patch of failures (want to keep this).
-In-house patch for testing.
-
-diff --git a/js/src/Makefile.in b/js/src/Makefile.in
---- a/js/src/Makefile.in
-+++ b/js/src/Makefile.in
[email protected]@ -134,7 +134,7 @@
- 
- check-jit-test::
- 	$(JITTEST_SANITIZER_ENV) $(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON) -u $(srcdir)/jit-test/jit_test.py \
--	        --no-slow --no-progress --format=automation --jitflags=all \
-+	        --no-slow --no-progress --format=automation --jitflags=all -j 2 -f \
- 			$(JITTEST_VALGRIND_FLAG) \
- 			$(JITTEST_EXTRA_ARGS) \
-                	$(DIST)/bin/$(JS_SHELL_NAME)$(BIN_SUFFIX)
--- a/components/desktop/thunderbird/patches/firefox-27-stacksize.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-For sparc. Our function frame is very big, so on sparc we need more stack size.
-Potentially send upstream. 
-
-diff --git a/js/src/jsapi.cpp b/js/src/jsapi.cpp
---- a/js/src/jsapi.cpp
-+++ b/js/src/jsapi.cpp
[email protected]@ -1491,6 +1491,9 @@
- static void
- SetNativeStackQuotaAndLimit(JSRuntime* rt, StackKind kind, size_t stackSize)
- {
-+#ifdef JS_CPU_SPARC
-+    stackSize = stackSize * 8 < 7 * 1024 * 1024 ? stackSize * 8 : 7 * 1024 * 1024;
-+#endif
-     rt->nativeStackQuota[kind] = stackSize;
-      
- #if JS_STACK_GROWTH_DIRECTION > 0
--- a/components/desktop/thunderbird/patches/firefox-28-configure.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-Shell translations. 
-
-diff --git a/js/src/configure b/js/src/configure
---- a/js/src/configure
-+++ b/js/src/configure
[email protected]@ -1230,7 +1230,7 @@
-   fi
- 
-     fi
--    IS_GCC=$($CC -v 2>&1 | grep gcc)
-+    IS_GCC=`$CC -v 2>&1 | grep gcc`
-     if test -n "$IS_GCC"
-     then
-       echo gcc is known to be broken on OS X, please use clang.
[email protected]@ -4426,7 +4426,7 @@
- for base in $MOZILLA_CENTRAL_PATH $_topsrcdir $_topsrcdir/../..; do
-   possible=$base/python/mozbuild/mozbuild/virtualenv.py
- 
--  if test -e $possible; then
-+  if test -f $possible; then
-     _virtualenv_topsrcdir=$base
-     _virtualenv_populate_path=$possible
-     break
[email protected]@ -8743,12 +8743,12 @@
- 
- if test "$GNU_CC" -a -n "$MOZ_FORCE_GOLD"; then
-             if $CC -Wl,--version 2>&1 | grep -q "GNU ld"; then
--        GOLD=$($CC -print-prog-name=ld.gold)
-+        GOLD=`$CC -print-prog-name=ld.gold`
-         case "$GOLD" in
-         /*)
-             ;;
-         *)
--            GOLD=$(which $GOLD)
-+            GOLD=`which $GOLD`
-             ;;
-         esac
-         if test -n "$GOLD"; then
[email protected]@ -16322,9 +16322,12 @@
- 
- 
- rm -fr confdefs* $ac_clean_files
--if test "$no_create" != yes && ! ${PYTHON} $CONFIG_STATUS; then
-+if test "$no_create" != yes; then
-+  ${PYTHON} $CONFIG_STATUS
-+  if test "$?" != 0; then
-     trap '' EXIT
-     exit 1
--fi
--
--fi
-+  fi
-+fi
-+
-+fi
--- a/components/desktop/thunderbird/patches/firefox-30-other-buildissue.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-Various ifdef Solaris fixes. 
-Recast for getpid() because it requires an int. 
-Changing default flags for compiling on SSE. We can try removing these or add
-them to the config lines in Makefile. 
-
-diff --git a/build/gyp.mozbuild b/build/gyp.mozbuild
---- a/build/gyp.mozbuild
-+++ b/build/gyp.mozbuild
[email protected]@ -45,6 +45,7 @@
-     'moz_widget_toolkit_gonk': 0,
-     'moz_webrtc_omx': 0,
- 
-+    'use_official_google_api_keys': 0,
-     # (for vp8) chromium sets to 0 also
-     'use_temporal_layers': 0,
- 
-diff --git a/configure b/configure
---- a/configure
-+++ b/configure
[email protected]@ -9650,8 +9650,8 @@
-        CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
-        LDFLAGS="-xildoff $LDFLAGS"
-        MMX_FLAGS="-xarch=mmx -xO4"
--       SSE_FLAGS="-xarch=sse"
--       SSE2_FLAGS="-xarch=ssei2 -xO4"
-+       SSE_FLAGS="-xarch=sse -xO4"
-+       SSE2_FLAGS="-xarch=sse2 -xO4"
-        if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
-            _SAVE_LDFLAGS=$LDFLAGS
-            LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
-diff --git a/media/libsoundtouch/src/FIRFilter.cpp b/media/libsoundtouch/src/FIRFilter.cpp
---- a/media/libsoundtouch/src/FIRFilter.cpp
-+++ b/media/libsoundtouch/src/FIRFilter.cpp
[email protected]@ -46,6 +46,10 @@
- #include "FIRFilter.h"
- #include "cpu_detect.h"
- 
-+#ifdef __sun
-+#include <alloca.h>
-+#endif
-+
- using namespace soundtouch;
- 
- /*****************************************************************************
-diff --git a/media/libsoundtouch/src/SoundTouch.cpp b/media/libsoundtouch/src/SoundTouch.cpp
---- a/media/libsoundtouch/src/SoundTouch.cpp
-+++ b/media/libsoundtouch/src/SoundTouch.cpp
[email protected]@ -80,6 +80,10 @@
- #include "RateTransposer.h"
- #include "cpu_detect.h"
- 
-+#ifdef __sun
-+#include <alloca.h>
-+#endif
-+
- using namespace soundtouch;
- 
- /// test if two floating point numbers are equal
-diff --git a/media/webrtc/trunk/build/common.gypi b/media/webrtc/trunk/build/common.gypi
---- a/media/webrtc/trunk/build/common.gypi
-+++ b/media/webrtc/trunk/build/common.gypi
[email protected]@ -917,11 +917,16 @@
-     'android_app_version_name%': 'Developer Build',
-     'android_app_version_code%': 0,
- 
--    'sas_dll_exists': '<!(<(PYTHON) <(DEPTH)/build/dir_exists.py <(sas_dll_path))',
--    'wix_exists': '<!(<(PYTHON) <(DEPTH)/build/dir_exists.py <(wix_path))',
-+    'conditions': [
-+      ['OS=="win"', {
-+        'sas_dll_exists': '<!(<(PYTHON) <(DEPTH)/build/dir_exists.py <(sas_dll_path))',
-+        'wix_exists': '<!(<(PYTHON) <(DEPTH)/build/dir_exists.py <(wix_path))',
-+      }],
-+    ],
- 
-     'windows_sdk_default_path': '<(DEPTH)/third_party/platformsdk_win8/files',
-     'directx_sdk_default_path': '<(DEPTH)/third_party/directxsdk/files',
-+    'windows_sdk_path%': 'C:/Program Files (x86)/Windows Kits/8.0',
- 
-     'conditions': [
-       ['"<!(<(PYTHON) <(DEPTH)/build/dir_exists.py <(windows_sdk_default_path))"=="True"', {
-diff --git a/memory/volatile/VolatileBufferFallback.cpp b/memory/volatile/VolatileBufferFallback.cpp
---- a/memory/volatile/VolatileBufferFallback.cpp
-+++ b/memory/volatile/VolatileBufferFallback.cpp
[email protected]@ -7,7 +7,7 @@
- #include "mozilla/mozalloc.h"
- 
- #ifdef MOZ_MEMORY
--int posix_memalign(void** memptr, size_t alignment, size_t size);
-+extern "C" int posix_memalign(void** memptr, size_t alignment, size_t size);
- #endif
- 
- namespace mozilla {
-diff --git a/xpcom/base/nsStatusReporterManager.cpp b/xpcom/base/nsStatusReporterManager.cpp
---- a/xpcom/base/nsStatusReporterManager.cpp
-+++ b/xpcom/base/nsStatusReporterManager.cpp
[email protected]@ -148,7 +148,7 @@
-   nsresult rv;
- 
-   nsCString filename("status-reports-");
--  filename.AppendInt(getpid());
-+  filename.AppendInt((int)getpid());
-   filename.Append('-');
-   filename.AppendInt(number++);
-   filename.AppendLiteral(".json");
--- a/components/desktop/thunderbird/patches/firefox-31-urlbar-sparc.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-For the font in the URL bar. Can try to send upstream.
-
-diff --git a/gfx/cairo/cairo/src/cairo-xlib-surface.c b/gfx/cairo/cairo/src/cairo-xlib-surface.c
---- a/gfx/cairo/cairo/src/cairo-xlib-surface.c
-+++ b/gfx/cairo/cairo/src/cairo-xlib-surface.c
[email protected]@ -1310,7 +1310,11 @@
- 		int a, r, g, b;
- 
- 		if (image_masks.bpp == 1)
-+#ifdef WORDS_BIGENDIAN
-+		    in_pixel = !! (((uint8_t*)row)[x/8] & (1 << (7 - (x & 7))));
-+#else
-		    in_pixel = !! (((uint8_t*)row)[x/8] & (1 << (x & 7)));
-+#endif
- 		else if (image_masks.bpp <= 8)
- 		    in_pixel = ((uint8_t*)row)[x];
- 		else if (image_masks.bpp <= 16)
--- a/components/desktop/thunderbird/patches/firefox-32-solaris_jemalloc_linkage.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-This patch makes it so jemalloc is not included in firefox. Not accepted by 
-the upstream community. 
-Put jemalloc inside libxul. Then need firefox to depend on libxul
-and build jemalloc library.
-Remove lines - do not include memory for every program
-Need to create/add our own versions of the functions malloc_usable, jemalloc_stats, etc.
-Remove mozalloc library
-Check if we have jemalloc; if not, skip it.
-Build libxul and use flags -Wl,-z,interpose, needed to build the library.
-
-diff --git a/config/jemalloc_solaris.map b/config/jemalloc_solaris.map
-new file mode 100644
---- /dev/null
-+++ b/config/jemalloc_solaris.map
[email protected]@ -0,0 +1,12 @@
-+{
-+    global:
-+        calloc             = NODIRECT;
-+        free               = NODIRECT;
-+        jemalloc_stats     = NODIRECT;
-+        malloc             = NODIRECT;
-+        malloc_usable_size = NODIRECT;
-+        memalign           = NODIRECT;
-+        posix_memalign     = NODIRECT;
-+        realloc            = NODIRECT;
-+        valloc             = NODIRECT;
-+};
-diff --git a/storage/mozStorageService.cpp b/storage/mozStorageService.cpp
---- a/storage/mozStorageService.cpp
-+++ b/storage/mozStorageService.cpp
[email protected]@ -514,9 +514,14 @@
-   int rc;
- 
- #ifdef MOZ_STORAGE_MEMORY
--  rc = ::sqlite3_config(SQLITE_CONFIG_MALLOC, &memMethods);
--  if (rc != SQLITE_OK)
--    return convertResultCode(rc);
-+  // in case other malloc library is PRELOAD-ed
-+  void *test_jemalloc = malloc(4);
-+  if (::moz_malloc_usable_size(test_jemalloc)) {
-+    rc = ::sqlite3_config(SQLITE_CONFIG_MALLOC, &memMethods);
-+    if (rc != SQLITE_OK)
-+      return convertResultCode(rc);
-+  }
-+  free(test_jemalloc);
- #endif
- 
-   // Explicitly initialize sqlite3.  Although this is implicitly called by
-diff --git a/memory/jemalloc/src/include/jemalloc/internal/jemalloc_internal.h.in b/memory/jemalloc/src/include/jemalloc/internal/jemalloc_internal.h.in
---- a/memory/jemalloc/src/include/jemalloc/internal/jemalloc_internal.h.in
-+++ b/memory/jemalloc/src/include/jemalloc/internal/jemalloc_internal.h.in
[email protected]@ -184,6 +184,9 @@ static const bool config_cache_oblivious
- #include "jemalloc/internal/jemalloc_internal_macros.h"
- 
- /* Size class index type. */
-+#ifdef __sun
-+#define index_t je_index_t
-+#endif
- typedef unsigned szind_t;
- 
- /*
---- a/memory/jemalloc/src/include/jemalloc/internal/jemalloc_internal.h.in	2015-09-15 13:37:17.326056000 +0800
-+++ b/memory/jemalloc/src/include/jemalloc/internal/jemalloc_internal.h.in	2015-09-15 13:37:51.959830000 +0800
[email protected]@ -204,6 +204,9 @@
- #  ifdef __alpha__
- #    define LG_QUANTUM		4
- #  endif
-+#  ifdef __sparc__
-+#    define LG_QUANTUM		4
-+#  endif
- #  ifdef __sparc64__
- #    define LG_QUANTUM		4
- #  endif
--- a/components/desktop/thunderbird/patches/firefox-33-ycbcr2.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-EMMS() is not in sparc. 
-
-diff --git a/gfx/ycbcr/yuv_convert.cpp b/gfx/ycbcr/yuv_convert.cpp
---- a/gfx/ycbcr/yuv_convert.cpp
-+++ b/gfx/ycbcr/yuv_convert.cpp
[email protected]@ -105,9 +105,11 @@
-     }
-   }
- 
-+#ifdef ARCH_CPU_X86_FAMILY
-   // MMX used for FastConvertYUVToRGB32Row requires emms instruction.
-   if (has_sse)
-     EMMS();
-+#endif
- }
- 
- // C version does 8 at a time to mimic MMX code
[email protected]@ -348,9 +350,12 @@
- #endif
-     }
-   }
-+
-+#ifdef ARCH_CPU_X86_FAMILY
-   // MMX used for FastConvertYUVToRGB32Row and FilterRows requires emms.
-   if (has_mmx)
-     EMMS();
-+#endif
- }
- 
- }  // namespace gfx
--- a/components/desktop/thunderbird/patches/firefox-34-lz4-restrict-keyword.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-Correctly recognize the "restrict" keyword for the lz4.c file included in
-Compression.cpp
-https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57025
-
-diff --git a/mfbt/lz4.c b/mfbt/lz4.c
---- a/mfbt/lz4.c
-+++ b/mfbt/lz4.c
[email protected]@ -104,7 +104,7 @@
- /**************************************
-  Compiler Options
- **************************************/
--#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)   /* C99 */
-+#if defined(__STDC_VERSION__) && !defined(__cplusplus) && (__STDC_VERSION__ >= 199901L)   /* C99 */
- /* "restrict" is a known keyword */
- #else
- #  define restrict /* Disable restrict */
--- a/components/desktop/thunderbird/patches/firefox-35-mozalloc.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-Correctly define malloc_usable_size
-
-Get correct abort() function definition for Solaris.
-
-diff --git a/memory/mozalloc/mozalloc.cpp b/memory/mozalloc/mozalloc.cpp
---- a/memory/mozalloc/mozalloc.cpp
-+++ b/memory/mozalloc/mozalloc.cpp
[email protected]@ -208,6 +208,8 @@
- #endif // if defined(HAVE_VALLOC) 
- 
- #ifndef MOZ_STATIC_RUNTIME
-+extern "C" size_t malloc_usable_size(const void *ptr);
-+
- size_t
- moz_malloc_usable_size(void *ptr)
- {
-diff --git a/memory/mozalloc/mozalloc_abort.cpp b/memory/mozalloc/mozalloc_abort.cpp
---- a/memory/mozalloc/mozalloc_abort.cpp
-+++ b/memory/mozalloc/mozalloc_abort.cpp
[email protected]@ -63,7 +63,11 @@
- //
- // That segmentation fault will be interpreted as another bug by ASan and as a
- // result, ASan will just exit(1) instead of aborting.
-+#if defined(SOLARIS)
-+void std::abort(void)
-+#else
- void abort(void)
-+#endif
- {
- #ifdef MOZ_WIDGET_ANDROID
-     char msg[64] = {};
--- a/components/desktop/thunderbird/patches/firefox-36-xpopen.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-Prevent:
-error: #error "Compiler or options invalid for pre-UNIX 03 X/Open applications  and pre-2001 POSIX applications
-
-diff --git a/configure b/configure
---- a/configure
-+++ b/configure
[email protected]@ -9759,6 +9759,8 @@
- cross_compiling=$ac_cv_prog_cc_cross
- 
-     else
-+       CFLAGS="$CFLAGS -D_XPG6 -D__EXTENSIONS__"
-+       CXXFLAGS="$CXXFLAGS -D_XPG6 -D__EXTENSIONS__"
-        LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
-        LIBS="-lc $LIBS"
-        MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
--- a/components/desktop/thunderbird/patches/firefox-37-ipc.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1779 +0,0 @@
-There are a lot of separate ipcv2 patches collected here in one file.
-Some of them are Studio specific and can hopefully be removed.
-
-In more detail: 
-
-First part is for studio, we may be able to remove. 
-Need to keep the if defined(OS_LINUX)... parts, should try to send upstream. 
-Using evpoll/devpoll instead of epoll may be Studio specific. 
-asm_volatile changes may also be studio specific. 
-
-For Solaris, we have no proc/self/exe location so we get the name of the 
-process some other way. Should be able to send this part upstream. 
-
-Patch to use FTS (tool for traversing tool hierarchies). We have these
-functions but they're not in libraries for C. This part is included in firefox
-40. 
-
-ENABLE_XSS_SUPPORT links XSS libraries; needs further investigation. 
-
-In Solaris, the queue can be too long so we have it read 32 bits only (?) for
-the wakeup_pip_read function. 
-
-DCHECK(std::find...) may be because we couldn't compile it otherwise. Needs
-namespace added. 
-
-We can remove the part for wstring because it's for studio. 
-
-Solaris specific change for adding definition of thr_self. 
-
-Differing memory for munmap((caddr_t)... patch
-
-We don't have timestruct defined in solaris (#ifndef SOLARIS...timstruct...)
-
-event2/event-config.h: Adds a new file so that libevent will compile on Solaris.In the .mozconfig file, we are using system libevent, so this shouldn't be necessary.
-
-IPC_RMID -- shared memory; on solaris, need to detach the shared memory first. So we move that segment of code up. If we detach the memory in Solaris, we cannot do a new attach.
-
-Add flags for Studio compiler. (CXXFLAGS)
-
-extern *C* int madvise(...) not defined , so we need to define it.
-
-diff --git a/configure b/configure
---- a/configure
-+++ b/configure
[email protected]@ -9647,7 +9647,7 @@
- EOF
- 
-        CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
--       CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
-+       CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef -D_XOPEN_SOURCE=500 -D__EXTENSIONS__"
-        LDFLAGS="-xildoff $LDFLAGS"
-        MMX_FLAGS="-xarch=mmx -xO4"
-        SSE_FLAGS="-xarch=sse -xO4"
-diff --git a/dom/plugins/ipc/PluginMessageUtils.cpp b/dom/plugins/ipc/PluginMessageUtils.cpp
---- a/dom/plugins/ipc/PluginMessageUtils.cpp
-+++ b/dom/plugins/ipc/PluginMessageUtils.cpp
[email protected]@ -85,7 +85,7 @@
-   }
- }
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_SOLARIS)
- static string
- ReplaceAll(const string& haystack, const string& needle, const string& with)
- {
[email protected]@ -104,7 +104,7 @@
- string
- MungePluginDsoPath(const string& path)
- {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_SOLARIS)
-   // https://bugzilla.mozilla.org/show_bug.cgi?id=519601
-   return ReplaceAll(path, "netscape", "[email protected]");
- #else
[email protected]@ -115,7 +115,7 @@
- string
- UnmungePluginDsoPath(const string& munged)
- {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_SOLARIS)
-   return ReplaceAll(munged, "[email protected]", "netscape");
- #else
-   return munged;
-diff --git a/dom/plugins/ipc/PluginModuleChild.cpp b/dom/plugins/ipc/PluginModuleChild.cpp
---- a/dom/plugins/ipc/PluginModuleChild.cpp
-+++ b/dom/plugins/ipc/PluginModuleChild.cpp
[email protected]@ -320,7 +320,7 @@
- 
-     // TODO: use PluginPRLibrary here
- 
--#if defined(OS_LINUX) || defined(OS_BSD)
-+#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
-     mShutdownFunc =
-         (NP_PLUGINSHUTDOWN) PR_FindFunctionSymbol(mLibrary, "NP_Shutdown");
- 
[email protected]@ -351,9 +351,11 @@
- }
- 
- #if defined(MOZ_WIDGET_GTK)
-+extern "C" {
- typedef void (*GObjectDisposeFn)(GObject*);
- typedef gboolean (*GtkWidgetScrollEventFn)(GtkWidget*, GdkEventScroll*);
- typedef void (*GtkPlugEmbeddedFn)(GtkPlug*);
-+}
- 
- static GObjectDisposeFn real_gtk_plug_dispose;
- static GtkPlugEmbeddedFn real_gtk_plug_embedded;
[email protected]@ -1882,7 +1884,7 @@
-     AssertPluginThread();
-     MOZ_ASSERT(mIsChrome);
- 
--#if defined(OS_LINUX) || defined(OS_BSD)
-+#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
-     return true;
- #elif defined(OS_WIN) || defined(OS_MACOSX)
-     *_retval = mGetEntryPointsFunc(&mFunctions);
[email protected]@ -1927,7 +1929,7 @@
- #endif
- 
-     NPError result;
--#if defined(OS_LINUX) || defined(OS_BSD)
-+#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
-     result = mInitializeFunc(&sBrowserFuncs, &mFunctions);
- #elif defined(OS_WIN) || defined(OS_MACOSX)
-     result = mInitializeFunc(&sBrowserFuncs);
-diff --git a/dom/plugins/ipc/PluginModuleChild.h b/dom/plugins/ipc/PluginModuleChild.h
---- a/dom/plugins/ipc/PluginModuleChild.h
-+++ b/dom/plugins/ipc/PluginModuleChild.h
[email protected]@ -328,7 +328,7 @@
- 
-     // we get this from the plugin
-     NP_PLUGINSHUTDOWN mShutdownFunc;
--#if defined(OS_LINUX) || defined(OS_BSD)
-+#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
-     NP_PLUGINUNIXINIT mInitializeFunc;
- #elif defined(OS_WIN) || defined(OS_MACOSX)
-     NP_PLUGININIT mInitializeFunc;
-diff --git a/ipc/chromium/chromium-config.mozbuild b/ipc/chromium/chromium-config.mozbuild
---- a/ipc/chromium/chromium-config.mozbuild
-+++ b/ipc/chromium/chromium-config.mozbuild
[email protected]@ -45,6 +45,9 @@
-     if CONFIG['OS_ARCH'] == 'Darwin':
-         DEFINES['OS_MACOSX'] = 1
- 
-+    elif CONFIG['OS_ARCH'] == 'SunOS':
-+        DEFINES['OS_SOLARIS'] = 1
-+
-     elif CONFIG['OS_ARCH'] == 'DragonFly':
-         DEFINES.update({
-             'OS_DRAGONFLY': 1,
-diff --git a/ipc/chromium/src/base/atomicops_internals_x86_gcc.cc b/ipc/chromium/src/base/atomicops_internals_x86_gcc.cc
---- a/ipc/chromium/src/base/atomicops_internals_x86_gcc.cc
-+++ b/ipc/chromium/src/base/atomicops_internals_x86_gcc.cc
[email protected]@ -19,13 +19,13 @@
- // Inline cpuid instruction.  In PIC compilations, %ebx contains the address
- // of the global offset table.  To avoid breaking such executables, this code
- // must preserve that register's value across cpuid instructions.
--#if defined(__i386__)
-+#if defined(__i386__) || defined (__i386)
- #define cpuid(a, b, c, d, inp) \
-   asm ("mov %%ebx, %%edi\n"    \
-        "cpuid\n"               \
-        "xchg %%edi, %%ebx\n"   \
-        : "=a" (a), "=D" (b), "=c" (c), "=d" (d) : "a" (inp))
--#elif defined (__x86_64__)
-+#elif defined (__x86_64__) || defined(__x86_64)
- #define cpuid(a, b, c, d, inp) \
-   asm ("mov %%rbx, %%rdi\n"    \
-        "cpuid\n"               \
-diff --git a/ipc/chromium/src/base/atomicops_internals_x86_gcc.h b/ipc/chromium/src/base/atomicops_internals_x86_gcc.h
---- a/ipc/chromium/src/base/atomicops_internals_x86_gcc.h
-+++ b/ipc/chromium/src/base/atomicops_internals_x86_gcc.h
[email protected]@ -29,18 +29,18 @@
-                                          Atomic32 old_value,
-                                          Atomic32 new_value) {
-   Atomic32 prev;
--  __asm__ __volatile__("lock; cmpxchgl %1,%2"
-+  __asm__ __volatile__("lock; cmpxchgl %1,(%2)"
-                        : "=a" (prev)
--                       : "q" (new_value), "m" (*ptr), "0" (old_value)
-+                       : "q" (new_value), "r" (ptr), "0" (old_value)
-                        : "memory");
-   return prev;
- }
- 
- inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr,
-                                          Atomic32 new_value) {
--  __asm__ __volatile__("xchgl %1,%0"  // The lock prefix is implicit for xchg.
-+  __asm__ __volatile__("xchgl (%1),%0"  // The lock prefix is implicit for xchg.
-                        : "=r" (new_value)
--                       : "m" (*ptr), "0" (new_value)
-+                       : "r" (ptr), "0" (new_value)
-                        : "memory");
-   return new_value;  // Now it's the previous value.
- }
[email protected]@ -48,8 +48,8 @@
- inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr,
-                                           Atomic32 increment) {
-   Atomic32 temp = increment;
--  __asm__ __volatile__("lock; xaddl %0,%1"
--                       : "+r" (temp), "+m" (*ptr)
-+  __asm__ __volatile__("lock; xaddl %0,(%1)"
-+                       : "+r" (temp), "+r" (ptr)
-                        : : "memory");
-   // temp now holds the old value of *ptr
-   return temp + increment;
[email protected]@ -58,8 +58,8 @@
- inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr,
-                                         Atomic32 increment) {
-   Atomic32 temp = increment;
--  __asm__ __volatile__("lock; xaddl %0,%1"
--                       : "+r" (temp), "+m" (*ptr)
-+  __asm__ __volatile__("lock; xaddl %0,(%1)"
-+                       : "+r" (temp), "+r" (ptr)
-                        : : "memory");
-   // temp now holds the old value of *ptr
-   if (AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug) {
[email protected]@ -153,18 +153,18 @@
-                                          Atomic64 old_value,
-                                          Atomic64 new_value) {
-   Atomic64 prev;
--  __asm__ __volatile__("lock; cmpxchgq %1,%2"
-+  __asm__ __volatile__("lock; cmpxchgq %1,(%2)"
-                        : "=a" (prev)
--                       : "q" (new_value), "m" (*ptr), "0" (old_value)
-+                       : "q" (new_value), "r" (ptr), "0" (old_value)
-                        : "memory");
-   return prev;
- }
- 
- inline Atomic64 NoBarrier_AtomicExchange(volatile Atomic64* ptr,
-                                          Atomic64 new_value) {
--  __asm__ __volatile__("xchgq %1,%0"  // The lock prefix is implicit for xchg.
-+  __asm__ __volatile__("xchgq (%1),%0"  // The lock prefix is implicit for xchg.
-                        : "=r" (new_value)
--                       : "m" (*ptr), "0" (new_value)
-+                       : "r" (ptr), "0" (new_value)
-                        : "memory");
-   return new_value;  // Now it's the previous value.
- }
[email protected]@ -172,8 +172,8 @@
- inline Atomic64 NoBarrier_AtomicIncrement(volatile Atomic64* ptr,
-                                           Atomic64 increment) {
-   Atomic64 temp = increment;
--  __asm__ __volatile__("lock; xaddq %0,%1"
--                       : "+r" (temp), "+m" (*ptr)
-+  __asm__ __volatile__("lock; xaddq %0,(%1)"
-+                       : "+r" (temp), "+r" (ptr)
-                        : : "memory");
-   // temp now contains the previous value of *ptr
-   return temp + increment;
[email protected]@ -182,8 +182,8 @@
- inline Atomic64 Barrier_AtomicIncrement(volatile Atomic64* ptr,
-                                         Atomic64 increment) {
-   Atomic64 temp = increment;
--  __asm__ __volatile__("lock; xaddq %0,%1"
--                       : "+r" (temp), "+m" (*ptr)
-+  __asm__ __volatile__("lock; xaddq %0,(%1)"
-+                       : "+r" (temp), "+r" (ptr)
-                        : : "memory");
-   // temp now contains the previous value of *ptr
-   if (AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug) {
-diff --git a/ipc/chromium/src/base/file_util.cc b/ipc/chromium/src/base/file_util.cc
---- a/ipc/chromium/src/base/file_util.cc
-+++ b/ipc/chromium/src/base/file_util.cc
[email protected]@ -245,4 +245,25 @@
- int WriteFile(const std::wstring& filename, const char* data, int size) {
-   return WriteFile(FilePath::FromWStringHack(filename), data, size);
- }
-+
-+#ifdef OS_SOLARIS
-+
-+bool IsDot(const FilePath& path) {
-+  return FILE_PATH_LITERAL(".") == path.BaseName().value();
-+}
-+
-+bool IsDotDot(const FilePath& path) {
-+  return FILE_PATH_LITERAL("..") == path.BaseName().value();
-+}
-+
-+///////////////////////////////////////////////
-+// FileEnumerator
-+//
-+// Note: the main logic is in file_util_<platform>.cc
-+
-+bool FileEnumerator::ShouldSkip(const FilePath& path) {
-+  FilePath::StringType basename = path.BaseName().value();
-+  return IsDot(path) || (IsDotDot(path) && !(INCLUDE_DOT_DOT & file_type_));
-+}
-+#endif
- }  // namespace
-diff --git a/ipc/chromium/src/base/file_util.h b/ipc/chromium/src/base/file_util.h
---- a/ipc/chromium/src/base/file_util.h
-+++ b/ipc/chromium/src/base/file_util.h
[email protected]@ -12,7 +12,7 @@
- 
- #if defined(OS_WIN)
- #include <windows.h>
--#elif defined(ANDROID)
-+#elif defined(ANDROID) || defined(OS_SOLARIS)
- #include <sys/stat.h>
- #elif defined(OS_POSIX) 
- #include <sys/types.h>
[email protected]@ -240,6 +240,103 @@
- // Deprecated temporary compatibility function.
- bool SetCurrentDirectory(const std::wstring& current_directory);
- 
-+#ifdef OS_SOLARIS
-+// A class for enumerating the files in a provided path. The order of the
-+// results is not guaranteed.
-+//
-+// DO NOT USE FROM THE MAIN THREAD of your application unless it is a test
-+// program where latency does not matter. This class is blocking.
-+class FileEnumerator {
-+ public:
-+  typedef struct {
-+    struct stat stat;
-+    std::string filename;
-+  } FindInfo;
-+
-+  enum FILE_TYPE {
-+    FILES                 = 1 << 0,
-+    DIRECTORIES           = 1 << 1,
-+    INCLUDE_DOT_DOT       = 1 << 2,
-+    SHOW_SYM_LINKS        = 1 << 4,
-+  };
-+
-+  // |root_path| is the starting directory to search for. It may or may not end
-+  // in a slash.
-+  //  
-+  // If |recursive| is true, this will enumerate all matches in any
-+  // subdirectories matched as well. It does a breadth-first search, so all
-+  // files in one directory will be returned before any files in a
-+  // subdirectory.
-+  //
-+  // |file_type| specifies whether the enumerator should match files,
-+  // directories, or both.
-+  //
-+  // |pattern| is an optional pattern for which files to match. This
-+  // works like shell globbing. For example, "*.txt" or "Foo???.doc".
-+  // However, be careful in specifying patterns that aren't cross platform
-+  // since the underlying code uses OS-specific matching routines.  In general,
-+  // Windows matching is less featureful than others, so test there first.
-+  // If unspecified, this will match all files.
-+  // NOTE: the pattern only matches the contents of root_path, not files in
-+  // recursive subdirectories.
-+  // TODO(erikkay): Fix the pattern matching to work at all levels.
-+  FileEnumerator(const FilePath& root_path,
-+                 bool recursive,
-+                 FileEnumerator::FILE_TYPE file_type);
-+  FileEnumerator(const FilePath& root_path,
-+                 bool recursive,
-+                 FileEnumerator::FILE_TYPE file_type,
-+                 const FilePath::StringType& pattern);
-+  ~FileEnumerator();
-+
-+  // Returns an empty string if there are no more results.
-+  FilePath Next();
-+
-+  // Write the file info into |info|.
-+  void GetFindInfo(FindInfo* info);
-+
-+  // Looks inside a FindInfo and determines if it's a directory.
-+  static bool IsDirectory(const FindInfo& info);
-+
-+  static FilePath GetFilename(const FindInfo& find_info);
-+
-+ private:
-+  // Returns true if the given path should be skipped in enumeration.
-+  bool ShouldSkip(const FilePath& path);
-+
-+
-+  typedef struct {
-+    FilePath filename;
-+    struct stat stat;
-+  } DirectoryEntryInfo;
-+
-+  // Read the filenames in source into the vector of DirectoryEntryInfo's
-+  static bool ReadDirectory(std::vector<DirectoryEntryInfo>* entries,
-+                            const FilePath& source, bool show_links);
-+
-+  // The files in the current directory
-+  std::vector<DirectoryEntryInfo> directory_entries_;
-+
-+  // The next entry to use from the directory_entries_ vector
-+  size_t current_directory_entry_;
-+
-+  FilePath root_path_;
-+  bool recursive_;
-+  FILE_TYPE file_type_;
-+  FilePath::StringType pattern_;  // Empty when we want to find everything.
-+
-+  // Set to true when there is a find operation open. This way, we can lazily
-+  // start the operations when the caller calls Next().
-+  bool is_in_find_op_;
-+
-+  // A stack that keeps track of which subdirectories we still need to
-+  // enumerate in the breadth-first search.
-+  std::stack<FilePath> pending_paths_;
-+
-+  DISALLOW_COPY_AND_ASSIGN(FileEnumerator);
-+};
-+#endif
-+
- }  // namespace file_util
- 
- #endif  // BASE_FILE_UTIL_H_
-diff --git a/ipc/chromium/src/base/file_util_posix.cc b/ipc/chromium/src/base/file_util_posix.cc
---- a/ipc/chromium/src/base/file_util_posix.cc
-+++ b/ipc/chromium/src/base/file_util_posix.cc
[email protected]@ -446,7 +555,7 @@
- }
- 
- bool GetShmemTempDir(FilePath* path) {
--#if defined(OS_LINUX) && !defined(ANDROID)
-+#if defined(OS_LINUX) && !defined(ANDROID) && !defined(OS_SOLARIS)
-   *path = FilePath("/dev/shm");
-   return true;
- #else
[email protected]@ -501,4 +610,144 @@
- }
- #endif // !defined(OS_MACOSX)
- 
-+#ifdef OS_SOLARIS
-+///////////////////////////////////////////////
-+// FileEnumerator
-+
-+FileEnumerator::FileEnumerator(const FilePath& root_path,
-+                               bool recursive,
-+                               FileEnumerator::FILE_TYPE file_type)
-+    : current_directory_entry_(0),
-+      root_path_(root_path),
-+      recursive_(recursive),
-+      file_type_(file_type),
-+      is_in_find_op_(false) {
-+  // INCLUDE_DOT_DOT must not be specified if recursive.
-+  DCHECK(!(recursive && (INCLUDE_DOT_DOT & file_type_)));
-+  pending_paths_.push(root_path);
-+}
-+
-+FileEnumerator::FileEnumerator(const FilePath& root_path,
-+                               bool recursive,
-+                               FileEnumerator::FILE_TYPE file_type,
-+                               const FilePath::StringType& pattern)
-+    : current_directory_entry_(0),
-+      root_path_(root_path),
-+      recursive_(recursive),
-+      file_type_(file_type),
-+      pattern_(root_path.Append(pattern).value()),
-+      is_in_find_op_(false) {
-+  // INCLUDE_DOT_DOT must not be specified if recursive.
-+  DCHECK(!(recursive && (INCLUDE_DOT_DOT & file_type_)));
-+  // The Windows version of this code appends the pattern to the root_path,
-+  // potentially only matching against items in the top-most directory.
-+  // Do the same here.
-+  if (pattern.size() == 0)
-+    pattern_ = FilePath::StringType();
-+  pending_paths_.push(root_path);
-+}
-+
-+FileEnumerator::~FileEnumerator() {
-+}
-+
-+void FileEnumerator::GetFindInfo(FindInfo* info) {
-+  DCHECK(info);
-+
-+  if (current_directory_entry_ >= directory_entries_.size())
-+    return;
-+
-+  DirectoryEntryInfo* cur_entry = &directory_entries_[current_directory_entry_];
-+  memcpy(&(info->stat), &(cur_entry->stat), sizeof(info->stat));
-+  info->filename.assign(cur_entry->filename.value());
-+}
-+
-+bool FileEnumerator::IsDirectory(const FindInfo& info) {
-+  return S_ISDIR(info.stat.st_mode);
-+}
-+
-+// static
-+FilePath FileEnumerator::GetFilename(const FindInfo& find_info) {
-+  return FilePath(find_info.filename);
-+}
-+
-+FilePath FileEnumerator::Next() {
-+  ++current_directory_entry_;
-+
-+  // While we've exhausted the entries in the current directory, do the next
-+  while (current_directory_entry_ >= directory_entries_.size()) {
-+    if (pending_paths_.empty())
-+      return FilePath();
-+
-+    root_path_ = pending_paths_.top();
-+    root_path_ = root_path_.StripTrailingSeparators();
-+    pending_paths_.pop();
-+
-+    std::vector<DirectoryEntryInfo> entries;
-+    if (!ReadDirectory(&entries, root_path_, file_type_ & SHOW_SYM_LINKS))
-+      continue;
-+
-+    directory_entries_.clear();
-+    current_directory_entry_ = 0;
-+    for (std::vector<DirectoryEntryInfo>::const_iterator
-+        i = entries.begin(); i != entries.end(); ++i) {
-+      FilePath full_path = root_path_.Append(i->filename);
-+      if (ShouldSkip(full_path))
-+        continue;
-+
-+      if (pattern_.size() &&
-+          fnmatch(pattern_.c_str(), full_path.value().c_str(), FNM_NOESCAPE))
-+        continue;
-+
-+      if (recursive_ && S_ISDIR(i->stat.st_mode))
-+        pending_paths_.push(full_path);
-+
-+      if ((S_ISDIR(i->stat.st_mode) && (file_type_ & DIRECTORIES)) ||
-+          (!S_ISDIR(i->stat.st_mode) && (file_type_ & FILES)))
-+        directory_entries_.push_back(*i);
-+    }
-+  }
-+
-+  return root_path_.Append(directory_entries_[current_directory_entry_
-+      ].filename);
-+}
-+
-+bool FileEnumerator::ReadDirectory(std::vector<DirectoryEntryInfo>* entries,
-+                                   const FilePath& source, bool show_links) {
-+
-+  DIR* dir = opendir(source.value().c_str());
-+  if (!dir)
-+    return false;
-+  struct {
-+          dirent dent_buffer;
-+          char chars[MAXNAMLEN];
-+  } dent_buf;
-+  struct dirent* dent;
-+
-+  while (readdir_r(dir, (dirent *)&dent_buf, &dent) == 0 && dent) {
-+    DirectoryEntryInfo info;
-+    info.filename = FilePath(dent->d_name);
-+
-+    FilePath full_name = source.Append(dent->d_name);
-+    int ret;
-+    if (show_links)
-+      ret = lstat(full_name.value().c_str(), &info.stat);
-+    else
-+      ret = stat(full_name.value().c_str(), &info.stat);
-+    if (ret < 0) {
-+      // Print the stat() error message unless it was ENOENT and we're
-+      // following symlinks.
-+      if (!(errno == ENOENT && !show_links)) {
-+        CHROMIUM_LOG(ERROR) << "Couldn't stat "
-+                   << source.Append(dent->d_name).value();
-+      }
-+      memset(&info.stat, 0, sizeof(info.stat));
-+    }
-+    entries->push_back(info);
-+  }
-+
-+  closedir(dir);
-+  return true;
-+}
-+#endif
-+
- } // namespace file_util
-diff --git a/ipc/chromium/src/base/idle_timer.cc b/ipc/chromium/src/base/idle_timer.cc
---- a/ipc/chromium/src/base/idle_timer.cc
-+++ b/ipc/chromium/src/base/idle_timer.cc
[email protected]@ -7,13 +7,13 @@
- // We may not want to port idle_timer to Linux, but we have implemented it
- // anyway.  Define this to 1 to enable the Linux idle timer and then add the
- // libs that need to be linked (Xss).
--#define ENABLE_XSS_SUPPORT 0
-+#define ENABLE_XSS_SUPPORT 1
- 
- #if defined(OS_MACOSX)
- #include <ApplicationServices/ApplicationServices.h>
- #endif
- 
--#if defined(OS_LINUX) && ENABLE_XSS_SUPPORT
-+#if (defined(OS_LINUX) || defined(OS_SOLARIS)) && ENABLE_XSS_SUPPORT
- // We may not want to port idle_timer to Linux, but we have implemented it
- // anyway.  Remove the 0 above if we want it.
- #include <gdk/gdkx.h>
[email protected]@ -53,7 +53,7 @@
-           kCGAnyInputEventType) * 1000.0;
-   return true;
- }
--#elif defined(OS_LINUX) && ENABLE_XSS_SUPPORT
-+#elif (defined(OS_LINUX) || defined(OS_SOLARIS)) && ENABLE_XSS_SUPPORT
- class IdleState {
-  public:
-   IdleState() {
-diff --git a/ipc/chromium/src/base/message_loop.cc b/ipc/chromium/src/base/message_loop.cc
---- a/ipc/chromium/src/base/message_loop.cc
-+++ b/ipc/chromium/src/base/message_loop.cc
[email protected]@ -19,7 +19,7 @@
- #if defined(OS_POSIX)
- #include "base/message_pump_libevent.h"
- #endif
--#if defined(OS_LINUX) || defined(OS_BSD)
-+#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
- #if defined(MOZ_WIDGET_GTK)
- #include "base/message_pump_glib.h"
- #endif
[email protected]@ -144,9 +144,9 @@
-   if (type_ == TYPE_UI) {
- #if defined(OS_MACOSX)
-     pump_ = base::MessagePumpMac::Create();
--#elif defined(OS_LINUX) || defined(OS_BSD)
-+#elif defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
-     pump_ = new base::MessagePumpForUI();
--#endif  // OS_LINUX
-+#endif  // OS_LINUX || OS_SOLARIS
-   } else if (type_ == TYPE_IO) {
-     pump_ = new base::MessagePumpLibevent();
-   } else {
-diff --git a/ipc/chromium/src/base/message_pump_glib.cc b/ipc/chromium/src/base/message_pump_glib.cc
---- a/ipc/chromium/src/base/message_pump_glib.cc
-+++ b/ipc/chromium/src/base/message_pump_glib.cc
[email protected]@ -128,6 +128,12 @@
-   // Create our wakeup pipe, which is used to flag when work was scheduled.
-   int fds[2];
-   CHECK(pipe(fds) == 0);
-+
-+  int flags = fcntl(fds[0], F_GETFL, 0);
-+  if (flags == -1)
-+    flags = 0;
-+  fcntl(fds[0], F_SETFL, flags | O_NDELAY);
-+
-   wakeup_pipe_read_  = fds[0];
-   wakeup_pipe_write_ = fds[1];
-   wakeup_gpollfd_->fd = wakeup_pipe_read_;
[email protected]@ -234,10 +240,9 @@
-   // are only signaled when the queue went from empty to non-empty.  The glib
-   // poll will tell us whether there was data, so this read shouldn't block.
-   if (wakeup_gpollfd_->revents & G_IO_IN) {
--    char msg;
--    if (HANDLE_EINTR(read(wakeup_pipe_read_, &msg, 1)) != 1 || msg != '!') {
--      NOTREACHED() << "Error reading from the wakeup pipe.";
--    }
-+    char buf[32];
-+    while (HANDLE_EINTR(read(wakeup_pipe_read_, &buf, 32)));
-+
-     // Since we ate the message, we need to record that we have more work,
-     // because HandleCheck() may be called without HandleDispatch being called
-     // afterwards.
[email protected]@ -301,6 +306,9 @@
-   // variables as we would then need locks all over.  This ensures that if
-   // we are sleeping in a poll that we will wake up.
-   char msg = '!';
-+  char buf[32];
-+  while (HANDLE_EINTR(read(wakeup_pipe_read_, &buf, 32)));
-+
-   if (HANDLE_EINTR(write(wakeup_pipe_write_, &msg, 1)) != 1) {
-     NOTREACHED() << "Could not write to the UI message loop wakeup pipe!";
-   }
-diff --git a/ipc/chromium/src/base/message_pump_libevent.cc b/ipc/chromium/src/base/message_pump_libevent.cc
---- a/ipc/chromium/src/base/message_pump_libevent.cc
-+++ b/ipc/chromium/src/base/message_pump_libevent.cc
[email protected]@ -6,6 +6,10 @@
- 
- #include <errno.h>
- #include <fcntl.h>
-+#if defined(OS_SOLARIS)
-+#include <unistd.h>
-+#include <sys/stat.h>
-+#endif
- #if defined(ANDROID) || defined(OS_POSIX)
- #include <unistd.h>
- #endif
-diff --git a/ipc/chromium/src/base/observer_list.h b/ipc/chromium/src/base/observer_list.h
---- a/ipc/chromium/src/base/observer_list.h
-+++ b/ipc/chromium/src/base/observer_list.h
[email protected]@ -88,7 +88,7 @@
- 
-   // Add an observer to the list.
-   void AddObserver(ObserverType* obs) {
--    DCHECK(find(observers_.begin(), observers_.end(), obs) == observers_.end())
-+    DCHECK(std::find(observers_.begin(), observers_.end(), obs) == observers_.end())
-         << "Observers can only be added once!";
-     observers_.push_back(obs);
-   }
-diff --git a/ipc/chromium/src/base/platform_thread.h b/ipc/chromium/src/base/platform_thread.h
---- a/ipc/chromium/src/base/platform_thread.h
-+++ b/ipc/chromium/src/base/platform_thread.h
[email protected]@ -22,7 +22,7 @@
- #elif defined(OS_POSIX)
- #include <pthread.h>
- typedef pthread_t PlatformThreadHandle;
--#if defined(OS_LINUX) || defined(OS_OPENBSD) || defined(__GLIBC__)
-+#if defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_SOLARIS) || defined(__GLIBC__)
- #include <unistd.h>
- typedef pid_t PlatformThreadId;
- #elif defined(OS_BSD)
-diff --git a/ipc/chromium/src/base/platform_thread_posix.cc b/ipc/chromium/src/base/platform_thread_posix.cc
---- a/ipc/chromium/src/base/platform_thread_posix.cc
-+++ b/ipc/chromium/src/base/platform_thread_posix.cc
[email protected]@ -27,6 +27,12 @@
- #include <pthread_np.h>
- #endif
- 
-+#if defined(OS_SOLARIS)
-+#include <sys/syscall.h>
-+#include <unistd.h>
-+#include <thread.h>
-+#endif
-+
- #if defined(OS_MACOSX)
- namespace base {
- void InitThreading();
[email protected]@ -54,6 +60,8 @@
- #else
-   return syscall(__NR_gettid);
- #endif
-+#elif defined(OS_SOLARIS)
-+  return thr_self();
- #elif defined(OS_OPENBSD) || defined(__GLIBC__)
-   return (intptr_t) (pthread_self());
- #elif defined(OS_NETBSD)
[email protected]@ -96,6 +104,7 @@
- 
- // static
- void PlatformThread::SetName(const char* name) {
-+#ifndef OS_SOLARIS
-   // On linux we can get the thread names to show up in the debugger by setting
-   // the process name for the LWP.  We don't want to do this for the main
-   // thread because that would rename the process, causing tools like killall
[email protected]@ -116,6 +125,7 @@
-   pthread_set_name_np(pthread_self(), name);
- #else
- #endif
-+#endif // !OS_SOLARIS
- }
- #endif // !OS_MACOSX
- 
-diff --git a/ipc/chromium/src/base/port.h b/ipc/chromium/src/base/port.h
---- a/ipc/chromium/src/base/port.h
-+++ b/ipc/chromium/src/base/port.h
[email protected]@ -56,7 +56,7 @@
- // Define an OS-neutral wrapper for shared library entry points
- #if defined(OS_WIN)
- #define API_CALL __stdcall
--#elif defined(OS_LINUX) || defined(OS_MACOSX)
-+#elif defined(OS_LINUX) || defined(OS_SOLARIS) || defined(OS_MACOSX)
- #define API_CALL
- #endif
- 
-diff --git a/ipc/chromium/src/base/process_util.h b/ipc/chromium/src/base/process_util.h
---- a/ipc/chromium/src/base/process_util.h
-+++ b/ipc/chromium/src/base/process_util.h
[email protected]@ -25,6 +25,10 @@
- #include <mach/mach.h>
- #endif
- 
-+#if defined(OS_SOLARIS)
-+#define NAME_MAX 14
-+#endif
-+
- #include <map>
- #include <string>
- #include <vector>
[email protected]@ -86,8 +86,8 @@
-   currentArchitecture = base::PROCESS_ARCH_PPC;
- #elif defined(ARCH_CPU_ARMEL)
-   currentArchitecture = base::PROCESS_ARCH_ARM;
--#elif defined(ARCH_CPU_MIPS)
-+#elif defined(ARCH_CPU_MIPS) || defined(ARCH_CPU_SPARC)
-   currentArchitecture = base::PROCESS_ARCH_MIPS;
- #endif
-   return currentArchitecture;
- }
-diff --git a/ipc/chromium/src/base/process_util_posix.cc b/ipc/chromium/src/base/process_util_posix.cc
---- a/ipc/chromium/src/base/process_util_posix.cc
-+++ b/ipc/chromium/src/base/process_util_posix.cc
[email protected]@ -116,7 +116,7 @@
- #if defined(ANDROID)
-   static const rlim_t kSystemDefaultMaxFds = 1024;
-   static const char kFDDir[] = "/proc/self/fd";
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_SOLARIS)
-   static const rlim_t kSystemDefaultMaxFds = 8192;
-   static const char kFDDir[] = "/proc/self/fd";
- #elif defined(OS_MACOSX)
[email protected]@ -208,7 +208,7 @@
- // TODO(agl): Remove this function. It's fundamentally broken for multithreaded
- // apps.
- void SetAllFDsToCloseOnExec() {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_SOLARIS)
-   const char fd_dir[] = "/proc/self/fd";
- #elif defined(OS_MACOSX) || defined(OS_BSD)
-   const char fd_dir[] = "/dev/fd";
-diff --git a/ipc/chromium/src/base/shared_memory_posix.cc b/ipc/chromium/src/base/shared_memory_posix.cc
---- a/ipc/chromium/src/base/shared_memory_posix.cc
-+++ b/ipc/chromium/src/base/shared_memory_posix.cc
[email protected]@ -125,9 +125,15 @@
-   if (file_util::GetShmemTempDir(&temp_dir) == false)
-     return false;
- 
-+#ifndef OS_SOLARIS    
-   mem_filename = UTF8ToWide(temp_dir.value());
-   file_util::AppendToPath(&mem_filename, L"com.google.chrome.shmem." + memname);
-   *filename = mem_filename;
-+#else  
-+  *filename = (temp_dir.Append("com.google.chrome.shmem." +
-+                               WideToUTF8(memname))).ToWStringHack();
-+#endif                               
-+
-   return true;
- }
- 
[email protected]@ -247,7 +253,7 @@
-   if (memory_ == NULL)
-     return false;
- 
--  munmap(memory_, max_size_);
-+  munmap((caddr_t)memory_, max_size_);
-   memory_ = NULL;
-   max_size_ = 0;
-   return true;
-diff --git a/ipc/chromium/src/base/sys_info_posix.cc b/ipc/chromium/src/base/sys_info_posix.cc
---- a/ipc/chromium/src/base/sys_info_posix.cc
-+++ b/ipc/chromium/src/base/sys_info_posix.cc
[email protected]@ -119,7 +119,7 @@
- 
- // static
- std::string SysInfo::OperatingSystemName() {
--  utsname info;
-+  struct utsname info;
-   if (uname(&info) < 0) {
-     NOTREACHED();
-     return "";
[email protected]@ -139,7 +139,7 @@
- 
- // static
- std::string SysInfo::CPUArchitecture() {
--  utsname info;
-+  struct utsname info;
-   if (uname(&info) < 0) {
-     NOTREACHED();
-     return "";
-diff --git a/ipc/chromium/src/base/time.h b/ipc/chromium/src/base/time.h
---- a/ipc/chromium/src/base/time.h
-+++ b/ipc/chromium/src/base/time.h
[email protected]@ -62,6 +62,10 @@
-     return delta_;
-   }
- 
-+#if defined(OS_POSIX)
-+  struct timespec ToTimeSpec() const;
-+#endif
-+
-   // Returns the time delta in some unit. The F versions return a floating
-   // point value, the "regular" versions return a rounded-down value.
-   int InDays() const;
[email protected]@ -224,6 +228,10 @@
-   static Time FromDoubleT(double dt);
-   double ToDoubleT() const;
- 
-+#if defined(OS_POSIX)
-+  struct timeval ToTimeVal() const;
-+#endif
-+
- 
- #if defined(OS_WIN)
-   static Time FromFileTime(FILETIME ft);
-diff --git a/ipc/chromium/src/base/time_posix.cc b/ipc/chromium/src/base/time_posix.cc
---- a/ipc/chromium/src/base/time_posix.cc
-+++ b/ipc/chromium/src/base/time_posix.cc
[email protected]@ -65,11 +65,13 @@
-   timestruct.tm_wday   = exploded.day_of_week;  // mktime/timegm ignore this
-   timestruct.tm_yday   = 0;     // mktime/timegm ignore this
-   timestruct.tm_isdst  = -1;    // attempt to figure it out
-+#ifndef OS_SOLARIS
-   timestruct.tm_gmtoff = 0;     // not a POSIX field, so mktime/timegm ignore
-   timestruct.tm_zone   = NULL;  // not a POSIX field, so mktime/timegm ignore
--
-+#endif
-+  
-   time_t seconds;
--#ifdef ANDROID
-+#if defined(ANDROID) || defined(OS_SOLARIS)
-     seconds = mktime(&timestruct);
- #else
-   if (is_local)
[email protected]@ -167,7 +169,7 @@
-   // With numer and denom = 1 (the expected case), the 64-bit absolute time
-   // reported in nanoseconds is enough to last nearly 585 years.
- 
--#elif defined(OS_OPENBSD) || defined(OS_POSIX) && \
-+#elif defined(OS_OPENBSD) || defined(OS_SOLARIS) || defined(OS_POSIX) && \
-       defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK >= 0
- 
-   struct timespec ts;
[email protected]@ -192,4 +194,25 @@
-   return Now();
- }
- 
-+struct timespec TimeDelta::ToTimeSpec() const {
-+  int64_t microseconds = InMicroseconds();
-+  time_t seconds = 0;
-+  if (microseconds >= Time::kMicrosecondsPerSecond) {
-+    seconds = InSeconds();
-+    microseconds -= seconds * Time::kMicrosecondsPerSecond;
-+  }
-+  struct timespec result =
-+      {seconds,
-+       microseconds * Time::kNanosecondsPerMicrosecond};
-+  return result;
-+}
-+
-+struct timeval Time::ToTimeVal() const {
-+  struct timeval result;
-+  int64_t us = us_ - kTimeTToMicrosecondsOffset;
-+  result.tv_sec = us / Time::kMicrosecondsPerSecond;
-+  result.tv_usec = us % Time::kMicrosecondsPerSecond;
-+  return result;
-+}
-+
- }  // namespace base
-diff --git a/ipc/chromium/src/build/build_config.h b/ipc/chromium/src/build/build_config.h
---- a/ipc/chromium/src/build/build_config.h
-+++ b/ipc/chromium/src/build/build_config.h
[email protected]@ -4,9 +4,9 @@
- 
- // This file adds defines about the platform we're currently building on.
- //  Operating System:
--//    OS_WIN / OS_MACOSX / OS_LINUX / OS_POSIX (MACOSX or LINUX)
-+//    OS_WIN / OS_MACOSX / OS_LINUX / OS_SOLARIS / OS_POSIX (MACOSX or LINUX)
- //  Compiler:
--//    COMPILER_MSVC / COMPILER_GCC
-+//    COMPILER_MSVC / COMPILER_GCC / COMPILER_SUNPRO
- //  Processor:
- //    ARCH_CPU_X86 / ARCH_CPU_X86_64 / ARCH_CPU_X86_FAMILY (X86 or X86_64)
- //    ARCH_CPU_32_BITS / ARCH_CPU_64_BITS
[email protected]@ -30,6 +30,8 @@
- #define OS_NETBSD 1
- #elif defined(__OpenBSD__)
- #define OS_OPENBSD 1
-+#elif defined(__sun__) || defined(__sun)
-+#define OS_SOLARIS 1
- #elif defined(_WIN32)
- #define OS_WIN 1
- #else
[email protected]@ -45,13 +47,15 @@
- 
- // For access to standard POSIX features, use OS_POSIX instead of a more
- // specific macro.
--#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
-+#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
- #define OS_POSIX 1
- #endif
- 
- // Compiler detection.
- #if defined(__GNUC__)
- #define COMPILER_GCC 1
-+#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
-+#define COMPILER_SUNPRO 1
- #elif defined(_MSC_VER)
- #define COMPILER_MSVC 1
- #else
[email protected]@ -62,11 +66,11 @@
- //   http://msdn.microsoft.com/en-us/library/b0084kay.aspx
- //   http://www.agner.org/optimize/calling_conventions.pdf
- //   or with gcc, run: "echo | gcc -E -dM -"
--#if defined(_M_X64) || defined(__x86_64__)
-+#if defined(_M_X64) || defined(__x86_64__) || defined(__x86_64)
- #define ARCH_CPU_X86_FAMILY 1
- #define ARCH_CPU_X86_64 1
- #define ARCH_CPU_64_BITS 1
--#elif defined(_M_IX86) || defined(__i386__)
-+#elif defined(_M_IX86) || defined(__i386__) || defined(__i386)
- #define ARCH_CPU_X86_FAMILY 1
- #define ARCH_CPU_X86 1
- #define ARCH_CPU_32_BITS 1
[email protected]@ -84,7 +88,7 @@
- #elif defined(__sparc64__)
- #define ARCH_CPU_SPARC 1
- #define ARCH_CPU_64_BITS 1
--#elif defined(__sparc__)
-+#elif defined(__sparc__) || defined(__sparc)
- #define ARCH_CPU_SPARC 1
- #define ARCH_CPU_32_BITS 1
- #elif defined(__mips64) && defined(__LP64__)
-diff --git a/ipc/chromium/src/chrome/common/file_descriptor_set_posix.cc b/ipc/chromium/src/chrome/common/file_descriptor_set_posix.cc
---- a/ipc/chromium/src/chrome/common/file_descriptor_set_posix.cc
-+++ b/ipc/chromium/src/chrome/common/file_descriptor_set_posix.cc
[email protected]@ -4,6 +4,10 @@
- 
- #include "chrome/common/file_descriptor_set_posix.h"
- 
-+#if defined(OS_SOLARIS)
-+#include <unistd.h>
-+#endif
-+
- #include "base/eintr_wrapper.h"
- #include "base/logging.h"
- 
-diff --git a/ipc/chromium/src/chrome/common/transport_dib.h b/ipc/chromium/src/chrome/common/transport_dib.h
---- a/ipc/chromium/src/chrome/common/transport_dib.h
-+++ b/ipc/chromium/src/chrome/common/transport_dib.h
[email protected]@ -13,7 +13,7 @@
- 
- #if defined(OS_WIN)
- #include <windows.h>
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_SOLARIS)
- #include "chrome/common/x11_util.h"
- #endif
- 
[email protected]@ -66,7 +66,7 @@
-   typedef base::SharedMemoryHandle Handle;
-   // On Mac, the inode number of the backing file is used as an id.
-   typedef base::SharedMemoryId Id;
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_SOLARIS)
-   typedef int Handle;  // These two ints are SysV IPC shared memory keys
-   typedef int Id;
- #endif
[email protected]@ -96,7 +96,7 @@
-   // wire to give this transport DIB to another process.
-   Handle handle() const;
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_SOLARIS)
-   // Map the shared memory into the X server and return an id for the shared
-   // segment.
-   XID MapToX(Display* connection);
[email protected]@ -107,7 +107,7 @@
- #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD)
-   explicit TransportDIB(base::SharedMemoryHandle dib);
-   base::SharedMemory shared_memory_;
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_SOLARIS)
-   int key_;  // SysV shared memory id
-   void* address_;  // mapped address
-   XID x_shm_;  // X id for the shared segment
-diff --git a/ipc/chromium/src/third_party/libevent/solaris/event2/event-config.h b/ipc/chromium/src/third_party/libevent/solaris/event2/event-config.h
-new file mode 100644
---- /dev/null
-+++ b/ipc/chromium/src/third_party/libevent/solaris/event2/event-config.h
[email protected]@ -0,0 +1,455 @@
-+/* event2/event-config.h
-+ *
-+ * This file was generated by autoconf when libevent was built, and post-
-+ * processed by Libevent so that its macros would have a uniform prefix.
-+ *
-+ * DO NOT EDIT THIS FILE.
-+ *
-+ * Do not rely on macros in this file existing in later versions.
-+ */
-+
-+#ifndef _EVENT2_EVENT_CONFIG_H_
-+#define _EVENT2_EVENT_CONFIG_H_
-+
-+/* config.h.  Generated from config.h.in by configure.  */
-+/* config.h.in.  Generated from configure.in by autoheader.  */
-+
-+/* Define if libevent should build without support for a debug mode */
-+/* #undef _EVENT_DISABLE_DEBUG_MODE */
-+
-+/* Define if libevent should not allow replacing the mm functions */
-+/* #undef _EVENT_DISABLE_MM_REPLACEMENT */
-+
-+/* Define if libevent should not be compiled with thread support */
-+/* #undef _EVENT_DISABLE_THREAD_SUPPORT */
-+
-+/* Define to 1 if you have the `arc4random' function. */
-+/* #undef _EVENT_HAVE_ARC4RANDOM */
-+
-+/* Define to 1 if you have the `arc4random_buf' function. */
-+/* #undef _EVENT_HAVE_ARC4RANDOM_BUF */
-+
-+/* Define to 1 if you have the <arpa/inet.h> header file. */
-+#define _EVENT_HAVE_ARPA_INET_H 1
-+
-+/* Define to 1 if you have the `clock_gettime' function. */
-+#define _EVENT_HAVE_CLOCK_GETTIME 1
-+
-+/* Define to 1 if you have the declaration of `CTL_KERN', and to 0 if you
-+   don't. */
-+/* #undef _EVENT_HAVE_DECL_CTL_KERN */
-+
-+/* Define to 1 if you have the declaration of `KERN_ARND', and to 0 if you
-+   don't. */
-+/* #undef _EVENT_HAVE_DECL_KERN_ARND */
-+
-+/* Define to 1 if you have the declaration of `KERN_RANDOM', and to 0 if you
-+   don't. */
-+/* #undef _EVENT_HAVE_DECL_KERN_RANDOM */
-+
-+/* Define to 1 if you have the declaration of `RANDOM_UUID', and to 0 if you
-+   don't. */
-+#define _EVENT_HAVE_DECL_RANDOM_UUID 1
-+
-+/* Define if /dev/poll is available */
-+#define _EVENT_HAVE_DEVPOLL 1
-+
-+/* Define to 1 if you have the <dlfcn.h> header file. */
-+#define _EVENT_HAVE_DLFCN_H 1
-+
-+/* Define if your system supports the epoll system calls */
-+/* #undef _EVENT_HAVE_EPOLL */
-+
-+/* Define to 1 if you have the `epoll_ctl' function. */
-+/* #undef _EVENT_HAVE_EPOLL_CTL */
-+
-+/* Define to 1 if you have the `eventfd' function. */
-+/* #undef _EVENT_HAVE_EVENTFD */
-+
-+/* Define if your system supports event ports */
-+#define _EVENT_HAVE_EVENT_PORTS 1
-+
-+/* Define to 1 if you have the `fcntl' function. */
-+#define _EVENT_HAVE_FCNTL 1
-+
-+/* Define to 1 if you have the <fcntl.h> header file. */
-+#define _EVENT_HAVE_FCNTL_H 1
-+
-+/* Define to 1 if the system has the type `fd_mask'. */
-+#define _EVENT_HAVE_FD_MASK 1
-+
-+/* Do we have getaddrinfo()? */
-+#define _EVENT_HAVE_GETADDRINFO 1
-+
-+/* Define to 1 if you have the `getegid' function. */
-+#define _EVENT_HAVE_GETEGID 1
-+
-+/* Define to 1 if you have the `geteuid' function. */
-+#define _EVENT_HAVE_GETEUID 1
-+
-+/* Define this if you have any gethostbyname_r() */
-+/* #undef _EVENT_HAVE_GETHOSTBYNAME_R */
-+
-+/* Define this if gethostbyname_r takes 3 arguments */
-+/* #undef _EVENT_HAVE_GETHOSTBYNAME_R_3_ARG */
-+
-+/* Define this if gethostbyname_r takes 5 arguments */
-+/* #undef _EVENT_HAVE_GETHOSTBYNAME_R_5_ARG */
-+
-+/* Define this if gethostbyname_r takes 6 arguments */
-+/* #undef _EVENT_HAVE_GETHOSTBYNAME_R_6_ARG */
-+
-+/* Define to 1 if you have the `getnameinfo' function. */
-+#define _EVENT_HAVE_GETNAMEINFO 1
-+
-+/* Define to 1 if you have the `getprotobynumber' function. */
-+#define _EVENT_HAVE_GETPROTOBYNUMBER 1
-+
-+/* Define to 1 if you have the `getservbyname' function. */
-+/* #undef _EVENT_HAVE_GETSERVBYNAME */
-+
-+/* Define to 1 if you have the `gettimeofday' function. */
-+#define _EVENT_HAVE_GETTIMEOFDAY 1
-+
-+/* Define to 1 if you have the `inet_aton' function. */
-+#define _EVENT_HAVE_INET_ATON 1
-+
-+/* Define to 1 if you have the `inet_ntop' function. */
-+#define _EVENT_HAVE_INET_NTOP 1
-+
-+/* Define to 1 if you have the `inet_pton' function. */
-+#define _EVENT_HAVE_INET_PTON 1
-+
-+/* Define to 1 if you have the <inttypes.h> header file. */
-+#define _EVENT_HAVE_INTTYPES_H 1
-+
-+/* Define to 1 if you have the `issetugid' function. */
-+#define _EVENT_HAVE_ISSETUGID 1
-+
-+/* Define to 1 if you have the `kqueue' function. */
-+/* #undef _EVENT_HAVE_KQUEUE */
-+
-+/* Define if the system has zlib */
-+#define _EVENT_HAVE_LIBZ 1
-+
-+/* Define to 1 if you have the <memory.h> header file. */
-+#define _EVENT_HAVE_MEMORY_H 1
-+
-+/* Define to 1 if you have the `mmap' function. */
-+#define _EVENT_HAVE_MMAP 1
-+
-+/* Define to 1 if you have the <netdb.h> header file. */
-+#define _EVENT_HAVE_NETDB_H 1
-+
-+/* Define to 1 if you have the <netinet/in6.h> header file. */
-+/* #undef _EVENT_HAVE_NETINET_IN6_H */
-+
-+/* Define to 1 if you have the <netinet/in.h> header file. */
-+#define _EVENT_HAVE_NETINET_IN_H 1
-+
-+/* Define if the system has openssl */
-+#define _EVENT_HAVE_OPENSSL 1
-+
-+/* Define to 1 if you have the <openssl/bio.h> header file. */
-+#define _EVENT_HAVE_OPENSSL_BIO_H 1
-+
-+/* Define to 1 if you have the `pipe' function. */
-+#define _EVENT_HAVE_PIPE 1
-+
-+/* Define to 1 if you have the `poll' function. */
-+#define _EVENT_HAVE_POLL 1
-+
-+/* Define to 1 if you have the <poll.h> header file. */
-+#define _EVENT_HAVE_POLL_H 1
-+
-+/* Define to 1 if you have the `port_create' function. */
-+#define _EVENT_HAVE_PORT_CREATE 1
-+
-+/* Define to 1 if you have the <port.h> header file. */
-+#define _EVENT_HAVE_PORT_H 1
-+
-+/* Define if you have POSIX threads libraries and header files. */
-+/* #undef _EVENT_HAVE_PTHREAD */
-+
-+/* Define if we have pthreads on this system */
-+#define _EVENT_HAVE_PTHREADS 1
-+
-+/* Define to 1 if you have the `putenv' function. */
-+#define _EVENT_HAVE_PUTENV 1
-+
-+/* Define to 1 if the system has the type `sa_family_t'. */
-+#define _EVENT_HAVE_SA_FAMILY_T 1
-+
-+/* Define to 1 if you have the `select' function. */
-+#define _EVENT_HAVE_SELECT 1
-+
-+/* Define to 1 if you have the `sendfile' function. */
-+#define _EVENT_HAVE_SENDFILE 1
-+
-+/* Define to 1 if you have the `setenv' function. */
-+#define _EVENT_HAVE_SETENV 1
-+
-+/* Define if F_SETFD is defined in <fcntl.h> */
-+#define _EVENT_HAVE_SETFD 1
-+
-+/* Define to 1 if you have the `sigaction' function. */
-+#define _EVENT_HAVE_SIGACTION 1
-+
-+/* Define to 1 if you have the `signal' function. */
-+#define _EVENT_HAVE_SIGNAL 1
-+
-+/* Define to 1 if you have the `splice' function. */
-+#define _EVENT_HAVE_SPLICE 1
-+
-+/* Define to 1 if you have the <stdarg.h> header file. */
-+#define _EVENT_HAVE_STDARG_H 1
-+
-+/* Define to 1 if you have the <stddef.h> header file. */
-+#define _EVENT_HAVE_STDDEF_H 1
-+
-+/* Define to 1 if you have the <stdint.h> header file. */
-+#define _EVENT_HAVE_STDINT_H 1
-+
-+/* Define to 1 if you have the <stdlib.h> header file. */
-+#define _EVENT_HAVE_STDLIB_H 1
-+
-+/* Define to 1 if you have the <strings.h> header file. */
-+#define _EVENT_HAVE_STRINGS_H 1
-+
-+/* Define to 1 if you have the <string.h> header file. */
-+#define _EVENT_HAVE_STRING_H 1
-+
-+/* Define to 1 if you have the `strlcpy' function. */
-+#define _EVENT_HAVE_STRLCPY 1
-+
-+/* Define to 1 if you have the `strsep' function. */
-+#define _EVENT_HAVE_STRSEP 1
-+
-+/* Define to 1 if you have the `strtok_r' function. */
-+#define _EVENT_HAVE_STRTOK_R 1
-+
-+/* Define to 1 if you have the `strtoll' function. */
-+#define _EVENT_HAVE_STRTOLL 1
-+
-+/* Define to 1 if the system has the type `struct addrinfo'. */
-+#define _EVENT_HAVE_STRUCT_ADDRINFO 1
-+
-+/* Define to 1 if the system has the type `struct in6_addr'. */
-+#define _EVENT_HAVE_STRUCT_IN6_ADDR 1
-+
-+/* Define to 1 if `s6_addr16' is a member of `struct in6_addr'. */
-+/* #undef _EVENT_HAVE_STRUCT_IN6_ADDR_S6_ADDR16 */
-+
-+/* Define to 1 if `s6_addr32' is a member of `struct in6_addr'. */
-+/* #undef _EVENT_HAVE_STRUCT_IN6_ADDR_S6_ADDR32 */
-+
-+/* Define to 1 if the system has the type `struct sockaddr_in6'. */
-+#define _EVENT_HAVE_STRUCT_SOCKADDR_IN6 1
-+
-+/* Define to 1 if `sin6_len' is a member of `struct sockaddr_in6'. */
-+/* #undef _EVENT_HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN */
-+
-+/* Define to 1 if `sin_len' is a member of `struct sockaddr_in'. */
-+/* #undef _EVENT_HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */
-+
-+/* Define to 1 if the system has the type `struct sockaddr_storage'. */
-+#define _EVENT_HAVE_STRUCT_SOCKADDR_STORAGE 1
-+
-+/* Define to 1 if `ss_family' is a member of `struct sockaddr_storage'. */
-+#define _EVENT_HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1
-+
-+/* Define to 1 if `__ss_family' is a member of `struct sockaddr_storage'. */
-+/* #undef _EVENT_HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY */
-+
-+/* Define to 1 if you have the `sysctl' function. */
-+/* #undef _EVENT_HAVE_SYSCTL */
-+
-+/* Define to 1 if you have the <sys/devpoll.h> header file. */
-+#define _EVENT_HAVE_SYS_DEVPOLL_H 1
-+
-+/* Define to 1 if you have the <sys/epoll.h> header file. */
-+/* #undef _EVENT_HAVE_SYS_EPOLL_H 1 */
-+
-+/* Define to 1 if you have the <sys/eventfd.h> header file. */
-+/* #define _EVENT_HAVE_SYS_EVENTFD_H 1 */
-+
-+/* Define to 1 if you have the <sys/event.h> header file. */
-+/* #undef _EVENT_HAVE_SYS_EVENT_H */
-+
-+/* Define to 1 if you have the <sys/ioctl.h> header file. */
-+#define _EVENT_HAVE_SYS_IOCTL_H 1
-+
-+/* Define to 1 if you have the <sys/mman.h> header file. */
-+#define _EVENT_HAVE_SYS_MMAN_H 1
-+
-+/* Define to 1 if you have the <sys/param.h> header file. */
-+#define _EVENT_HAVE_SYS_PARAM_H 1
-+
-+/* Define to 1 if you have the <sys/queue.h> header file. */
-+#define _EVENT_HAVE_SYS_QUEUE_H 1
-+
-+/* Define to 1 if you have the <sys/select.h> header file. */
-+#define _EVENT_HAVE_SYS_SELECT_H 1
-+
-+/* Define to 1 if you have the <sys/sendfile.h> header file. */
-+#define _EVENT_HAVE_SYS_SENDFILE_H 1
-+
-+/* Define to 1 if you have the <sys/socket.h> header file. */
-+#define _EVENT_HAVE_SYS_SOCKET_H 1
-+
-+/* Define to 1 if you have the <sys/stat.h> header file. */
-+#define _EVENT_HAVE_SYS_STAT_H 1
-+
-+/* Define to 1 if you have the <sys/sysctl.h> header file. */
-+/* #undef _EVENT_HAVE_SYS_SYSCTL_H */
-+
-+/* Define to 1 if you have the <sys/time.h> header file. */
-+#define _EVENT_HAVE_SYS_TIME_H 1
-+
-+/* Define to 1 if you have the <sys/types.h> header file. */
-+#define _EVENT_HAVE_SYS_TYPES_H 1
-+
-+/* Define to 1 if you have the <sys/uio.h> header file. */
-+#define _EVENT_HAVE_SYS_UIO_H 1
-+
-+/* Define to 1 if you have the <sys/wait.h> header file. */
-+#define _EVENT_HAVE_SYS_WAIT_H 1
-+
-+/* Define if TAILQ_FOREACH is defined in <sys/queue.h> */
-+#define _EVENT_HAVE_TAILQFOREACH 1
-+
-+/* Define if timeradd is defined in <sys/time.h> */
-+#define _EVENT_HAVE_TIMERADD 1
-+
-+/* Define if timerclear is defined in <sys/time.h> */
-+#define _EVENT_HAVE_TIMERCLEAR 1
-+
-+/* Define if timercmp is defined in <sys/time.h> */
-+#define _EVENT_HAVE_TIMERCMP 1
-+
-+/* Define if timerisset is defined in <sys/time.h> */
-+#define _EVENT_HAVE_TIMERISSET 1
-+
-+/* Define to 1 if the system has the type `uint16_t'. */
-+#define _EVENT_HAVE_UINT16_T 1
-+
-+/* Define to 1 if the system has the type `uint32_t'. */
-+#define _EVENT_HAVE_UINT32_T 1
-+
-+/* Define to 1 if the system has the type `uint64_t'. */
-+#define _EVENT_HAVE_UINT64_T 1
-+
-+/* Define to 1 if the system has the type `uint8_t'. */
-+#define _EVENT_HAVE_UINT8_T 1
-+
-+/* Define to 1 if the system has the type `uintptr_t'. */
-+#define _EVENT_HAVE_UINTPTR_T 1
-+
-+/* Define to 1 if you have the `umask' function. */
-+#define _EVENT_HAVE_UMASK 1
-+
-+/* Define to 1 if you have the <unistd.h> header file. */
-+#define _EVENT_HAVE_UNISTD_H 1
-+
-+/* Define to 1 if you have the `unsetenv' function. */
-+#define _EVENT_HAVE_UNSETENV 1
-+
-+/* Define to 1 if you have the `vasprintf' function. */
-+#define _EVENT_HAVE_VASPRINTF 1
-+
-+/* Define if kqueue works correctly with pipes */
-+/* #undef _EVENT_HAVE_WORKING_KQUEUE */
-+
-+/* Define to 1 if you have the <zlib.h> header file. */
-+#define _EVENT_HAVE_ZLIB_H 1
-+
-+/* Define to the sub-directory in which libtool stores uninstalled libraries.
-+   */
-+#define _EVENT_LT_OBJDIR ".libs/"
-+
-+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-+/* #undef _EVENT_NO_MINUS_C_MINUS_O */
-+
-+/* Numeric representation of the version */
-+#define _EVENT_NUMERIC_VERSION 0x02001500
-+
-+/* Name of package */
-+#define _EVENT_PACKAGE "libevent"
-+
-+/* Define to the address where bug reports for this package should be sent. */
-+#define _EVENT_PACKAGE_BUGREPORT ""
-+
-+/* Define to the full name of this package. */
-+#define _EVENT_PACKAGE_NAME ""
-+
-+/* Define to the full name and version of this package. */
-+#define _EVENT_PACKAGE_STRING ""
-+
-+/* Define to the one symbol short name of this package. */
-+#define _EVENT_PACKAGE_TARNAME ""
-+
-+/* Define to the home page for this package. */
-+#define _EVENT_PACKAGE_URL ""
-+
-+/* Define to the version of this package. */
-+#define _EVENT_PACKAGE_VERSION ""
-+
-+/* Define to necessary symbol if this constant uses a non-standard name on
-+   your system. */
-+/* #undef _EVENT_PTHREAD_CREATE_JOINABLE */
-+
-+/* The size of `int', as computed by sizeof. */
-+#define _EVENT_SIZEOF_INT 4
-+
-+/* The size of `long', as computed by sizeof. */
-+#define _EVENT_SIZEOF_LONG 4
-+
-+/* The size of `long long', as computed by sizeof. */
-+#define _EVENT_SIZEOF_LONG_LONG 8
-+
-+/* The size of `pthread_t', as computed by sizeof. */
-+#define _EVENT_SIZEOF_PTHREAD_T 4
-+
-+/* The size of `short', as computed by sizeof. */
-+#define _EVENT_SIZEOF_SHORT 2
-+
-+/* The size of `size_t', as computed by sizeof. */
-+#define _EVENT_SIZEOF_SIZE_T 4
-+
-+/* The size of `void *', as computed by sizeof. */
-+#define _EVENT_SIZEOF_VOID_P 4
-+
-+/* Define to 1 if you have the ANSI C header files. */
-+#define _EVENT_STDC_HEADERS 1
-+
-+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-+#define _EVENT_TIME_WITH_SYS_TIME 1
-+
-+/* Version number of package */
-+#define _EVENT_VERSION "2.0.21-stable"
-+
-+/* Define to appropriate substitue if compiler doesnt have __func__ */
-+/* #undef _EVENT___func__ */
-+
-+/* Define to empty if `const' does not conform to ANSI C. */
-+/* #undef _EVENT_const */
-+
-+/* Define to `__inline__' or `__inline' if that's what the C compiler
-+   calls it, or to nothing if 'inline' is not supported under any name.  */
-+#ifndef _EVENT___cplusplus
-+/* #undef _EVENT_inline */
-+#endif
-+
-+/* Define to `int' if <sys/types.h> does not define. */
-+/* #undef _EVENT_pid_t */
-+
-+/* Define to `unsigned int' if <sys/types.h> does not define. */
-+/* #undef _EVENT_size_t */
-+
-+/* Define to unsigned int if you dont have it */
-+/* #undef _EVENT_socklen_t */
-+
-+/* Define to `int' if <sys/types.h> does not define. */
-+/* #undef _EVENT_ssize_t */
-+
-+#endif /* event2/event-config.h */
-diff --git a/ipc/glue/BrowserProcessSubThread.cpp b/ipc/glue/BrowserProcessSubThread.cpp
---- a/ipc/glue/BrowserProcessSubThread.cpp
-+++ b/ipc/glue/BrowserProcessSubThread.cpp
[email protected]@ -25,7 +25,7 @@
- //  "Chrome_FileThread",  // FILE
- //  "Chrome_DBThread",  // DB
- //  "Chrome_HistoryThread",  // HISTORY
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_SOLARIS)
-   "Gecko_Background_X11Thread",  // BACKGROUND_X11
- #endif
- };
[email protected]@ -36,7 +36,7 @@
- //  nullptr,  // FILE
- //  nullptr,  // DB
- //  nullptr,  // HISTORY
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_SOLARIS)
-   nullptr,  // BACKGROUND_X11
- #endif
- };
-diff --git a/ipc/glue/BrowserProcessSubThread.h b/ipc/glue/BrowserProcessSubThread.h
---- a/ipc/glue/BrowserProcessSubThread.h
-+++ b/ipc/glue/BrowserProcessSubThread.h
[email protected]@ -28,7 +28,7 @@
-       //FILE,
-       //DB,
-       //HISTORY,
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_SOLARIS)
-       // This thread has a second connection to the X server and is used
-       // to process UI requests when routing the request to the UI
-       // thread would risk deadlock.
-diff --git a/ipc/glue/GeckoChildProcessHost.cpp b/ipc/glue/GeckoChildProcessHost.cpp
---- a/ipc/glue/GeckoChildProcessHost.cpp
-+++ b/ipc/glue/GeckoChildProcessHost.cpp
[email protected]@ -547,12 +547,15 @@
-   // and passing wstrings from one config to the other is unsafe.  So
-   // we split the logic here.
- 
--#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
--  base::environment_map newEnvVars;
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) || defined(OS_SOLARIS)
-   ChildPrivileges privs = mPrivileges;
-   if (privs == base::PRIVILEGES_DEFAULT) {
-     privs = DefaultChildPrivileges();
-   }
-+#endif
-+
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
-+  base::environment_map newEnvVars;
-   // XPCOM may not be initialized in some subprocesses.  We don't want
-   // to initialize XPCOM just for the directory service, especially
-   // since LD_LIBRARY_PATH is already set correctly in subprocesses
[email protected]@ -686,7 +689,7 @@
-   childArgv.push_back(pidstring);
- 
- #if defined(MOZ_CRASHREPORTER)
--#  if defined(OS_LINUX) || defined(OS_BSD)
-+#  if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS)
-   int childCrashFd, childCrashRemapFd;
-   if (!CrashReporter::CreateNotificationPipeForChild(
-         &childCrashFd, &childCrashRemapFd))
[email protected]@ -702,7 +705,7 @@
-   }
- #  elif defined(MOZ_WIDGET_COCOA)
-   childArgv.push_back(CrashReporter::GetChildNotificationPipe());
--#  endif  // OS_LINUX
-+#  endif  // OS_LINUX || defined(OS_SOLARIS)
- #endif
- 
- #ifdef MOZ_WIDGET_COCOA
[email protected]@ -721,6 +724,8 @@
-   base::LaunchApp(childArgv, mFileMap,
- #if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
-                   newEnvVars, privs,
-+#elif defined(OS_SOLARIS)
-+                  base::environment_map(), privs,
- #endif
-                   false, &process, arch);
- 
-diff --git a/ipc/glue/SharedMemorySysV.h b/ipc/glue/SharedMemorySysV.h
---- a/ipc/glue/SharedMemorySysV.h
-+++ b/ipc/glue/SharedMemorySysV.h
[email protected]@ -8,7 +8,7 @@
- #ifndef mozilla_ipc_SharedMemorySysV_h
- #define mozilla_ipc_SharedMemorySysV_h
- 
--#if (defined(OS_LINUX) && !defined(ANDROID)) || defined(OS_BSD)
-+#if (defined(OS_LINUX) && !defined(ANDROID)) || defined(OS_BSD) || defined(OS_SOLARIS)
- 
- // SysV shared memory isn't available on Windows, but we define the
- // following macro so that #ifdefs are clearer (compared to #ifdef
[email protected]@ -55,6 +55,9 @@
-   virtual ~SharedMemorySysV()
-   {
-     shmdt(mData);
-+#ifdef OS_SOLARIS    
-+    shmctl(mHandle, IPC_RMID, 0);
-+#endif    
-     mHandle = -1;
-     mData = nullptr;
-   }
[email protected]@ -94,7 +97,9 @@
- 
-     // Mark the handle as deleted so that, should this process go away, the
-     // segment is cleaned up.
-+#ifndef OS_SOLARIS
-     shmctl(mHandle, IPC_RMID, 0);
-+#endif
- 
-     mData = mem;
- 
[email protected]@ -145,6 +150,6 @@
- } // namespace ipc
- } // namespace mozilla
- 
--#endif // OS_LINUX
-+#endif // OS_LINUX || OS_SOLARIS
- 
- #endif // ifndef mozilla_ipc_SharedMemorySysV_h
-diff --git a/ipc/ipdl/test/cxx/Makefile.in b/ipc/ipdl/test/cxx/Makefile.in
---- a/ipc/ipdl/test/cxx/Makefile.in
-+++ b/ipc/ipdl/test/cxx/Makefile.in
[email protected]@ -9,6 +9,10 @@
-   TestBridgeSub \
-   $(NULL)
- 
-+ifeq ($(OS_ARCH),SunOS)
-+IPDLTESTS += TestSysVShmem
-+endif
-+
- IPDLTESTHDRS = $(addprefix $(srcdir)/,$(addsuffix .h,$(IPDLTESTS)))
- 
- TESTER_TEMPLATE := $(srcdir)/IPDLUnitTests.template.cpp
-diff --git a/ipc/ipdl/test/cxx/TestShutdown.cpp b/ipc/ipdl/test/cxx/TestShutdown.cpp
---- a/ipc/ipdl/test/cxx/TestShutdown.cpp
-+++ b/ipc/ipdl/test/cxx/TestShutdown.cpp
[email protected]@ -184,6 +184,8 @@
-         // detectors
-         _exit(0);
-     }
-+
-+    return false;
- }
- 
- void
-diff --git a/js/src/configure b/js/src/configure
---- a/js/src/configure
-+++ b/js/src/configure
[email protected]@ -8219,7 +8219,7 @@
- EOF
- 
-        CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
--       CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
-+       CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef -D_XOPEN_SOURCE=500 -D__EXTENSIONS__"
-        LDFLAGS="-xildoff $LDFLAGS"
-        if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
-            _SAVE_LDFLAGS=$LDFLAGS
-diff --git a/mfbt/Poison.cpp b/mfbt/Poison.cpp
---- a/mfbt/Poison.cpp
-+++ b/mfbt/Poison.cpp
[email protected]@ -25,6 +25,7 @@
- #  endif
- # endif
- #endif
-+extern "C" int madvise(caddr_t, size_t, int);
- 
- extern "C" {
- uintptr_t gMozillaPoisonValue;
[email protected]@ -129,7 +130,7 @@
- static bool
- ProbeRegion(uintptr_t aRegion, uintptr_t aSize)
- {
--  if (madvise(reinterpret_cast<void*>(aRegion), aSize, MADV_NORMAL)) {
-+  if (madvise(reinterpret_cast<char*>(aRegion), aSize, MADV_NORMAL)) {
-     return true;
-   } else {
-     return false;
-diff --git a/mfbt/tests/TestPoisonArea.cpp b/mfbt/tests/TestPoisonArea.cpp
---- a/mfbt/tests/TestPoisonArea.cpp
-+++ b/mfbt/tests/TestPoisonArea.cpp
[email protected]@ -103,6 +103,7 @@
- #include <sys/wait.h>
- 
- #include <sys/mman.h>
-+extern "C" int madvise(caddr_t, size_t, int);
- #ifndef MAP_ANON
- #ifdef MAP_ANONYMOUS
- #define MAP_ANON MAP_ANONYMOUS
-diff --git a/modules/libjar/nsZipArchive.cpp b/modules/libjar/nsZipArchive.cpp
---- a/modules/libjar/nsZipArchive.cpp
-+++ b/modules/libjar/nsZipArchive.cpp
[email protected]@ -40,7 +40,8 @@
-     #include <sys/stat.h>
-     #include <limits.h>
-     #include <unistd.h>
--#elif defined(XP_WIN)
-+extern "C" int madvise(caddr_t, size_t, int);
-+#elif defined(XP_WIN) || defined(XP_OS2)
-     #include <io.h>
- #endif
- 
[email protected]@ -612,7 +613,7 @@
-     uint32_t readaheadLength = xtolong(startp);
-     if (readaheadLength) {
- #if defined(XP_UNIX)
--      madvise(const_cast<uint8_t*>(startp), readaheadLength, MADV_WILLNEED);
-+      madvise((caddr_t)const_cast<uint8_t*>(startp), readaheadLength, MADV_WILLNEED);
- #elif defined(XP_WIN)
-       if (aFd) {
-         HANDLE hFile = (HANDLE) PR_FileDesc2NativeHandle(aFd);
-diff --git a/config/system-headers b/config/system-headers
---- a/config/system-headers
-+++ b/config/system-headers
[email protected]@ -1,16 +1,17 @@
- nspr.h
- plarena.h
- plarenas.h
- plbase64.h
- plerror.h
- plgetopt.h
- plhash.h
- plstr.h
-+port.h
- pratom.h
- prbit.h
- prclist.h
- prcmon.h
- prcountr.h
- prcpucfg.h
- prcvar.h
- prdtoa.h
[email protected]@ -1040,16 +1041,17 @@ sys/lwp.h
- sys/machine.h
- sys/mman.h
- sys/mmu.h
- sys/mount.h
- sys/mpctl.h
- sys/param.h
- sys/pda.h
- sys/poll.h
-+sys/port.h
- sys/ppc.h
- sys/prctl.h
- sys/priv.h
- sys/procfs.h
- sys/pstat.h
- sys/ptrace.h
- sys/queue.h
- sys/quota.h
-diff --git a/ipc/glue/MessageLink.cpp b/ipc/glue/MessageLink.cpp
---- a/ipc/glue/MessageLink.cpp
-+++ b/ipc/glue/MessageLink.cpp
[email protected]@ -350,7 +354,7 @@
-         mExistingListener = mTransport->set_listener(this);
- #ifdef DEBUG
-         if (mExistingListener) {
--            queue<Message> pending;
-+            std::queue<Message> pending;
-             mExistingListener->GetQueuedMessages(pending);
-             MOZ_ASSERT(pending.empty());
-         }
[email protected]@ -366,17 +366,17 @@ ProcessLink::OnChannelOpened()
-     /*assert*/mTransport->Connect();
- }
- 
- void
- ProcessLink::OnTakeConnectedChannel()
- {
-     AssertIOThread();
- 
--    queue<Message> pending;
-+    std::queue<Message> pending;
-     {
-         MonitorAutoLock lock(*mChan->mMonitor);
- 
-         mChan->mChannelState = ChannelConnected;
- 
-         mExistingListener = mTransport->set_listener(this);
-         if (mExistingListener) {
-             mExistingListener->GetQueuedMessages(pending);
--- a/components/desktop/thunderbird/patches/firefox-38-sparc-align.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-Adds asm("ta 6") which suppresses bus error caused by misalignment.
-
-diff --git a/js/xpconnect/src/XPCShellImpl.cpp b/js/xpconnect/src/XPCShellImpl.cpp
---- a/js/xpconnect/src/XPCShellImpl.cpp
-+++ b/js/xpconnect/src/XPCShellImpl.cpp
[email protected]@ -1320,16 +1320,22 @@ GetCurrentWorkingDirectory(nsAString& wo
-     return true;
- }
- 
- static JSSecurityCallbacks shellSecurityCallbacks;
- 
- int
- XRE_XPCShellMain(int argc, char** argv, char** envp)
- {
-+
-+#if defined (__GNUC__) && (defined(__sparc) || defined(__sparc__))
-+    // make unaligned memory access no crash
-+    asm ( "ta 6" );
-+#endif
-+
-     JSRuntime* rt;
-     JSContext* cx;
-     int result = 0;
-     nsresult rv;
- 
-     gErrFile = stderr;
-     gOutFile = stdout;
-     gInFile = stdin;
-diff --git a/memory/mozjemalloc/jemalloc.c b/memory/mozjemalloc/jemalloc.c
---- a/memory/mozjemalloc/jemalloc.c
-+++ b/memory/mozjemalloc/jemalloc.c
[email protected]@ -5551,16 +5551,22 @@ malloc_init(void)
- #endif
- 
- #if !defined(MOZ_MEMORY_WINDOWS)
- static
- #endif
- bool
- malloc_init_hard(void)
- {
-+
-+#if defined (__GNUC__) && (defined(__sparc) || defined(__sparc__))
-+    // make unaligned memory access no crash
-+    asm ( "ta 6" );
-+#endif
-+
- 	unsigned i;
- 	char buf[PATH_MAX + 1];
- 	const char *opts;
- 	long result;
- #ifndef MOZ_MEMORY_WINDOWS
- 	int linklen;
- #endif
- #ifdef MOZ_MEMORY_DARWIN
-diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
---- a/toolkit/xre/nsAppRunner.cpp
-+++ b/toolkit/xre/nsAppRunner.cpp
[email protected]@ -4255,6 +4255,11 @@
- int
- XREMain::XRE_main(int argc, char* argv[], const nsXREAppData* aAppData)
- {
-+#if defined (__GNUC__) && (defined(__sparc) || defined(__sparc__))
-+    // make unaligned memory access no crash
-+    asm ( "ta 6" );
-+#endif
-+
-   ScopedLogging log;
- 
- #if defined(MOZ_SANDBOX) && defined(XP_LINUX) && !defined(ANDROID)
--- a/components/desktop/thunderbird/patches/firefox-39-gc-memory.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-Remove unnecessary functions for memory.
-Do not plan to send upstream.
-
-diff --git a/js/src/gc/Memory.cpp b/js/src/gc/Memory.cpp
---- a/js/src/gc/Memory.cpp
-+++ b/js/src/gc/Memory.cpp
[email protected]@ -12,21 +12,16 @@
- #include "js/HeapAPI.h"
- #include "vm/Runtime.h"
- 
- #if defined(XP_WIN)
- 
- #include "jswin.h"
- #include <psapi.h>
- 
--#elif defined(SOLARIS)
--
--#include <sys/mman.h>
--#include <unistd.h>
--
- #elif defined(XP_UNIX)
- 
- #include <algorithm>
- #include <errno.h>
- #include <sys/mman.h>
- #include <sys/resource.h>
- #include <sys/stat.h>
- #include <sys/types.h>
[email protected]@ -346,85 +346,6 @@ DeallocateMappedContent(void* p, size_t
-     // TODO: Bug 988813 - Support memory mapped array buffer for Windows platform.
- }
- 
--#elif defined(SOLARIS)
--
--#ifndef MAP_NOSYNC
--# define MAP_NOSYNC 0
--#endif
--
--void
--InitMemorySubsystem()
--{
--    if (pageSize == 0)
--        pageSize = allocGranularity = size_t(sysconf(_SC_PAGESIZE));
--}
--
--void*
--MapAlignedPages(size_t size, size_t alignment)
--{
--    MOZ_ASSERT(size >= alignment);
--    MOZ_ASSERT(size % alignment == 0);
--    MOZ_ASSERT(size % pageSize == 0);
--    MOZ_ASSERT(alignment % allocGranularity == 0);
--
--    int prot = PROT_READ | PROT_WRITE;
--    int flags = MAP_PRIVATE | MAP_ANON | MAP_ALIGN | MAP_NOSYNC;
--
--    void* p = mmap((caddr_t)alignment, size, prot, flags, -1, 0);
--    if (p == MAP_FAILED)
--        return nullptr;
--    return p;
--}
--
--static void*
--MapAlignedPagesLastDitch(size_t size, size_t alignment)
--{
--    return nullptr;
--}
--
--void
--UnmapPages(void* p, size_t size)
--{
--    MOZ_ALWAYS_TRUE(0 == munmap((caddr_t)p, size));
--}
--
--bool
--MarkPagesUnused(void* p, size_t size)
--{
--    MOZ_ASSERT(OffsetFromAligned(p, pageSize) == 0);
--    return true;
--}
--
--bool
--MarkPagesInUse(void* p, size_t size)
--{
--    if (!DecommitEnabled())
--        return true;
--
--    MOZ_ASSERT(OffsetFromAligned(p, pageSize) == 0);
--    return true;
--}
--
--size_t
--GetPageFaultCount()
--{
--    return 0;
--}
--
--void*
--AllocateMappedContent(int fd, size_t offset, size_t length, size_t alignment)
--{
--    // Not implemented.
--    return nullptr;
--}
--
--// Deallocate mapped memory for object.
--void
--DeallocateMappedContent(void* p, size_t length)
--{
--    // Not implemented.
--}
--
- #elif defined(XP_UNIX)
- 
- void
[email protected]@ -599,17 +521,17 @@ UnmapPages(void* p, size_t size)
- 
- bool
- MarkPagesUnused(void* p, size_t size)
- {
-     if (!DecommitEnabled())
-         return false;
- 
-     MOZ_ASSERT(OffsetFromAligned(p, pageSize) == 0);
--    int result = madvise(p, size, MADV_DONTNEED);
-+    int result = madvise((caddr_t)p, size, MADV_DONTNEED);
-     return result != -1;
- }
- 
- bool
- MarkPagesInUse(void* p, size_t size)
- {
-     if (!DecommitEnabled())
-         return true;
--- a/components/desktop/thunderbird/patches/firefox-40-libstagefright.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-Do not use certain header files. We define bswap_16 ourselves.
-Do not plan to send upstream.
-
-diff --git a/media/libstagefright/moz.build b/media/libstagefright/moz.build
---- a/media/libstagefright/moz.build
-+++ b/media/libstagefright/moz.build
[email protected]@ -2,17 +2,17 @@
- # vim: set filetype=python:
- # 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/.
- 
- DEFINES['ANDROID_SMP'] = 0
- DEFINES['LOG_NDEBUG'] = 1
- 
--if CONFIG['OS_TARGET'] != 'WINNT':
-+if CONFIG['OS_TARGET'] != 'WINNT' and CONFIG['OS_TARGET'] != 'SunOS':
-    DEFINES['_GLIBCXX_OS_DEFINES'] = True
- 
- if CONFIG['OS_TARGET'] == 'WINNT':
-     if CONFIG['_MSC_VER']:
-         DEFINES['ssize_t'] = 'intptr_t'
-         DEFINES['off64_t'] = 'int64_t'
-         DEFINES['strcasecmp'] = 'stricmp'
-         DEFINES['strncasecmp'] = 'strnicmp'
--- a/components/desktop/thunderbird/patches/firefox-41-static-xul-components.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-Define variables differently for Solaris. 
-Do not plan to send upstream.
-
-diff --git a/toolkit/library/StaticXULComponentsEnd/StaticXULComponentsEnd.cpp b/toolkit/library/StaticXULComponentsEnd/StaticXULComponentsEnd.cpp
---- a/toolkit/library/StaticXULComponentsEnd/StaticXULComponentsEnd.cpp
-+++ b/toolkit/library/StaticXULComponentsEnd/StaticXULComponentsEnd.cpp
[email protected]@ -5,9 +5,10 @@
- #ifdef _MSC_VER
- /* Sections on Windows are in two parts, separated with $. When linking,
-  * sections with the same first part are all grouped, and ordered
-  * alphabetically with the second part as sort key. */
- #  pragma section(".kPStaticModules$Z", read)
- #  undef NSMODULE_SECTION
- #  define NSMODULE_SECTION __declspec(allocate(".kPStaticModules$Z"), dllexport)
- #endif
--NSMODULE_DEFN(end_kPStaticModules) = nullptr;
-+static const mozilla::Module kEndModule = { 0 };
-+NSMODULE_DEFN(end_kPStaticModules) = &kEndModule;
-diff --git a/toolkit/library/StaticXULComponentsStart.cpp b/toolkit/library/StaticXULComponentsStart.cpp
---- a/toolkit/library/StaticXULComponentsStart.cpp
-+++ b/toolkit/library/StaticXULComponentsStart.cpp
[email protected]@ -1,3 +1,4 @@
- #include "mozilla/Module.h"
- 
--NSMODULE_DEFN(start_kPStaticModules) = nullptr;
-+static const mozilla::Module kStartModule = { 0 };
-+NSMODULE_DEFN(start_kPStaticModules) = &kStartModule;
--- a/components/desktop/thunderbird/patches/firefox-43-xpcom.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-Solaris-specific patch. Adds if def(SOLARIS) case.
-Do not plan to send upstream.
-
-diff --git a/xpcom/base/nsUUIDGenerator.cpp b/xpcom/base/nsUUIDGenerator.cpp
---- a/xpcom/base/nsUUIDGenerator.cpp
-+++ b/xpcom/base/nsUUIDGenerator.cpp
[email protected]@ -11,17 +11,17 @@
- #include <CoreFoundation/CoreFoundation.h>
- #else
- #include <stdlib.h>
- #include "prrng.h"
- #endif
- 
- #include "nsUUIDGenerator.h"
- 
--#ifdef ANDROID
-+#if defined(ANDROID) || defined(SOLARIS)
- extern "C" NS_EXPORT void arc4random_buf(void*, size_t);
- #endif
- 
- using namespace mozilla;
- 
- NS_IMPL_ISUPPORTS(nsUUIDGenerator, nsIUUIDGenerator)
- 
- nsUUIDGenerator::nsUUIDGenerator()
--- a/components/desktop/thunderbird/patches/firefox-44-readahead.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-In-house patch for firefox to build with GNU compilers. 
-With GNU compiler, we have hunspell_fopen_hooks.h included 
-through mozilla-config.h.
-But we don't have an implementation for mozilla::ReadAheadFile().
-Do not plan to send upstream.
-
-diff --git a/xpcom/glue/FileUtils.cpp b/xpcom/glue/FileUtils.cpp
---- a/xpcom/glue/FileUtils.cpp
-+++ b/xpcom/glue/FileUtils.cpp
[email protected]@ -481,17 +481,17 @@ mozilla::ReadAheadFile(mozilla::pathstr_
-   }
-   if (fd == INVALID_HANDLE_VALUE) {
-     return;
-   }
-   ReadAhead(fd, aOffset, aCount);
-   if (!aOutFd) {
-     CloseHandle(fd);
-   }
--#elif defined(LINUX) && !defined(ANDROID) || defined(XP_MACOSX)
-+#elif defined(LINUX) && !defined(ANDROID) || defined(XP_MACOSX) || defined(SOLARIS)
-   if (!aFilePath) {
-     if (aOutFd) {
-       *aOutFd = -1;
-     }
-     return;
-   }
-   int fd = open(aFilePath, O_RDONLY);
-   if (aOutFd) {
--- a/components/desktop/thunderbird/patches/firefox-45-wifi-scanner.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-Convert variable int mac_as_int to char. 
-Do not plan to send upstream.
-
-diff --git a/netwerk/wifi/nsWifiScannerSolaris.cpp b/netwerk/wifi/nsWifiScannerSolaris.cpp
---- a/netwerk/wifi/nsWifiScannerSolaris.cpp
-+++ b/netwerk/wifi/nsWifiScannerSolaris.cpp
[email protected]@ -28,47 +28,52 @@ static val_strength_t strength_vals[] = 
-   { "good",      -68 },
-   { "very good", -40 },
-   { "excellent", -16 }
- };
- 
- static nsWifiAccessPoint *
- do_parse_str(char *bssid_str, char *essid_str, char *strength)
- {
--  unsigned char mac_as_int[6] = { 0 };
-+  unsigned int mac_as_int[6] = { 0 };
-+  unsigned char mac_as_byte[6] = { 0 };
-   sscanf(bssid_str, "%x:%x:%x:%x:%x:%x", &mac_as_int[0], &mac_as_int[1],
-          &mac_as_int[2], &mac_as_int[3], &mac_as_int[4], &mac_as_int[5]);
- 
-+  for (uint32_t i = 0; i < 6; i++) {
-+    mac_as_byte[i] = mac_as_int[i];
-+  }
-+
-   int signal = 0;
-   uint32_t strength_vals_count = sizeof(strength_vals) / sizeof (val_strength_t);
-   for (uint32_t i = 0; i < strength_vals_count; i++) {
-     if (!strncasecmp(strength, strength_vals[i].strength_name, DLADM_STRSIZE)) {
-       signal = strength_vals[i].signal_value;
-       break;
-     }
-   }
- 
-   nsWifiAccessPoint *ap = new nsWifiAccessPoint();
-   if (ap) {
--    ap->setMac(mac_as_int);
-+    ap->setMac(mac_as_byte);
-     ap->setSignal(signal);
-     ap->setSSID(essid_str, PL_strnlen(essid_str, DLADM_STRSIZE));
-   }
-   return ap;
- }
- 
- static void
- do_dladm(nsCOMArray<nsWifiAccessPoint> &accessPoints)
- {
-   GError *err = nullptr;
-   char *sout = nullptr;
-   char *serr = nullptr;
-   int exit_status = 0;
-   char * dladm_args[] = { "/usr/bin/pfexec", "/usr/sbin/dladm",
--                          "scan-wifi", "-p", "-o", "BSSID,ESSID,STRENGTH" };
-+                          "scan-wifi", "-p", "-o", "BSSID,ESSID,STRENGTH", 0 };
- 
-   gboolean rv = g_spawn_sync("/", dladm_args, nullptr, (GSpawnFlags)0, nullptr,
-                              nullptr, &sout, &serr, &exit_status, &err);
-   if (rv && !exit_status) {
-     char wlan[DLADM_SECTIONS][DLADM_STRSIZE+1];
-     uint32_t section = 0;
-     uint32_t sout_scan = 0;
-     uint32_t wlan_put = 0;
---- a/dom/system/NetworkGeolocationProvider.js	2015-09-13 14:24:44.290458254 +0800
-+++ b/dom/system/NetworkGeolocationProvider.js	2015-09-13 14:24:52.938673937 +0800
[email protected]@ -29,7 +29,7 @@
-    data and xhr it to the location server.
- */
- 
--var gLocationRequestTimeout = 5000;
-+var gLocationRequestTimeout = 30000;
- 
- var gWifiScanningEnabled = true;
- var gCellScanningEnabled = false;
--- a/components/desktop/thunderbird/patches/firefox-47-unreachable.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-In house patch, will not send upstream.
-ERR() function is already defined elsewhere. 
-
---- mozilla-esr38/gfx/angle/src/common/debug.h	2015-10-26 15:49:18.755193254 -0700
-+++ mozilla-esr38/gfx/angle/src/common/debug.h	2015-10-26 15:48:39.108802848 -0700
[email protected]@ -57,9 +57,9 @@ namespace gl
- 
- // A macro to output a function call and its arguments to the debugging log, in case of error.
- #if defined(ANGLE_TRACE_ENABLED)
--#define ERR(message, ...) gl::trace(false, gl::MESSAGE_ERR, "err: %s(%d): " message "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__)
-+#define FFERR(message, ...) gl::trace(false, gl::MESSAGE_ERR, "err: %s(%d): " message "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__)
- #else
--#define ERR(message, ...) (void(0))
-+#define FFERR(message, ...) (void(0))
- #endif
- 
- // A macro to log a performance event around a scope.
[email protected]@ -105,7 +105,7 @@ namespace gl
- #if !defined(NDEBUG)
- #define ASSERT(expression) { \
-     if(!(expression)) \
--        ERR("\t! Assert failed in %s(%d): "#expression"\n", __FUNCTION__, __LINE__); \
-+        FFERR("\t! Assert failed in %s(%d): "#expression"\n", __FUNCTION__, __LINE__); \
-         assert(expression); \
-     } ANGLE_EMPTY_STATEMENT
- #define UNUSED_ASSERTION_VARIABLE(variable)
[email protected]@ -144,11 +144,11 @@ namespace gl
- // A macro for code which is not expected to be reached under valid assumptions
- #if !defined(NDEBUG)
- #define UNREACHABLE() { \
--    ERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__); \
-+    FFERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__); \
-     assert(false); \
-     } ANGLE_EMPTY_STATEMENT
- #else
--    #define UNREACHABLE() ERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__)
-+    #define UNREACHABLE() FFERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__)
- #endif
- 
- #endif   // COMMON_DEBUG_H_
--- a/components/desktop/thunderbird/patches/firefox-48-donot-disable-locale-addon.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-By default, Firefox disables the installation of 3rd party add-ons, including
-language packs. We want to enable language packs by default, so set 
-this to enable add-ons that are bundled with Firefox but will still disable 
-third-party add-ons for security.
-Solaris specific patch, will not send upstream.
-
-diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
-index 5ef66c9..7dcd0f5 100644
---- a/browser/app/profile/firefox.js
-+++ b/browser/app/profile/firefox.js
[email protected]@ -61,7 +61,7 @@ pref("extensions.hotfix.certs.1.sha1Fingerprint", "F1:DB:F9:6A:7B:B8:04:FA:48:3C
- 
- // Disable add-ons that are not installed by the user in all scopes by default.
- // See the SCOPE constants in AddonManager.jsm for values to use here.
--pref("extensions.autoDisableScopes", 15);
-+pref("extensions.autoDisableScopes", 11);
- 
- // Dictionary download preference
- pref("browser.dictionaries.download.url", "https://addons.mozilla.org/%LOCALE%/firefox/dictionaries/");
--- a/components/desktop/thunderbird/patches/firefox-49-freebl-as.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-#
-# Building freebl should use the supplied top level compiler to drive the
-# assembler and not whichever gcc it happens to pick up.
-#
---- a/security/nss/lib/freebl/Makefile	Mon Dec 21 14:32:54 2015
-+++ b/security/nss/lib/freebl/Makefile	Sun Apr  3 18:03:44 2016
[email protected]@ -426,8 +426,8 @@
- else
-     # Solaris for non-sparc family CPUs
-     ifdef NS_USE_GCC
--	LD = gcc
--	AS = gcc
-+	LD = $(CC)
-+	AS = $(CC)
- 	ASFLAGS = -x assembler-with-cpp
-     endif
-     ifeq ($(USE_64),1)
--- a/components/desktop/thunderbird/patches/firefox-49-npapi.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-Needed to get flash plugin working. 
-
-diff --git a/dom/plugins/base/npapi.h b/dom/plugins/base/npapi.h
-index 0968651..238ffb3 100644
---- a/dom/plugins/base/npapi.h
-+++ b/dom/plugins/base/npapi.h
[email protected]@ -334,7 +334,7 @@ typedef enum {
-  *   gcc 3.x generated vtables on UNIX and OSX are incompatible with
-  *   previous compilers.
-  */
--#if (defined(XP_UNIX) && defined(__GNUC__) && (__GNUC__ >= 3))
-+#if (defined(XP_UNIX) && defined(__GNUC__) && (__GNUC__ >= 3) && !defined(OS_SOLARIS))
- #define _NP_ABI_MIXIN_FOR_GCC3 NP_ABI_GCC3_MASK
- #else
- #define _NP_ABI_MIXIN_FOR_GCC3 0
--- a/components/desktop/thunderbird/patches/firefox-50-arc4random.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,152 +0,0 @@
-ARC4RANDOM_EXPORT is defined as extern. Fixes issues in arc4random and libevent.
-Solaris specific changes, will not send upstream.
-
---- a/ipc/chromium/src/third_party/libevent/arc4random.c    2016-03-01 09:29:36.602447178 -0800
-+++ b/ipc/chromium/src/third_party/libevent/arc4random.c    2016-03-01 10:17:51.627857034 -0800
[email protected]@ -445,8 +445,8 @@ arc4random_stir(void)
- #endif
-
- #ifndef ARC4RANDOM_NOADDRANDOM
--ARC4RANDOM_EXPORT void
--arc4random_addrandom(const unsigned char *dat, int datlen)
-+extern void
-+arc4random_addrandom(uchar_t *dat, size_t datlen)
- {
-        int j;
-        _ARC4_LOCK();
[email protected]@ -477,7 +477,7 @@ arc4random(void)
- }
- #endif
-
--ARC4RANDOM_EXPORT void
-+extern void
- arc4random_buf(void *_buf, size_t n)
- {
-        unsigned char *buf = _buf;
---- a/config/system-headers	2015-11-03 11:34:17.000000000 +0100
-+++ b/config/system-headers	2015-11-09 03:34:24.577525000 +0100
[email protected]@ -1064,7 +1064,6 @@
- sys/stat.h
- sys/statvfs.h
- sys/syscall.h
--sys/sysctl.h
- sys/sysinfo.h
- sys/sysmp.h
- sys/syssgi.h
---- a/ipc/chromium/src/third_party/libevent/arc4random.c	2016-03-23 11:47:53.743867536 -0700
-+++ b/ipc/chromium/src/third_party/libevent/arc4random.c	2016-03-23 11:48:38.956865864 -0700
[email protected]@ -41,6 +41,10 @@
-  * RC4 is a registered trademark of RSA Laboratories.
-  */
- 
-+#if defined (OS_SOLARIS)
-+#undef _EVENT_HAVE_SYS_SYSCTL_H
-+#endif
-+
- #ifndef ARC4RANDOM_EXPORT
- #define ARC4RANDOM_EXPORT
- #endif
[email protected]@ -59,7 +61,7 @@
- #include <sys/param.h>
- #include <sys/time.h>
- #ifdef _EVENT_HAVE_SYS_SYSCTL_H
--#include <sys/sysctl.h>
-+;//#include <sys/sysctl.h>
- #endif
- #endif
- #include <limits.h>
---- a/ipc/chromium/moz.build	2016-03-28 13:41:06.878922929 -0700
-+++ b/ipc/chromium/moz.build	2016-03-28 13:42:04.555448660 -0700
[email protected]@ -161,6 +161,23 @@ if os_bsd or os_linux:
-             'src/base/message_pump_qt.cc',
-         ]
- 
-+if os_solaris:
-+    SOURCES += [
-+	'src/base/atomicops_internals_x86_gcc.cc',
-+	'src/base/idle_timer_none.cc',
-+	'src/base/process_util_linux.cc',
-+	'src/base/time_posix.cc',
-+    ]
-+    if CONFIG['MOZ_WIDGET_GTK']:
-+	SOURCES += [
-+            'src/base/message_pump_glib.cc',
-+	]
-+    if not CONFIG['MOZ_NATIVE_LIBEVENT']:
-+	SOURCES += [
-+            'src/third_party/libevent/devpoll.c',
-+	]
-+    LOCAL_INCLUDES += ['src/third_party/libevent/solaris']
-+
- ost = CONFIG['OS_TEST']
- if '86' not in ost and 'arm' not in ost and 'mips' not in ost:
-     SOURCES += [
-diff a/ipc/chromium/src/third_party/libeventcommon.mozbuild b/ipc/chromium/src/third_party/libeventcommon.mozbuild
---- a/ipc/chromium/src/third_party/libeventcommon.mozbuild	2015-11-03 11:34:14.000000000 +0100
-+++ b/ipc/chromium/src/third_party/libeventcommon.mozbuild	2015-11-09 03:34:24.579311000 +0100
[email protected]@ -9,6 +9,7 @@
- os_openbsd = 0
- os_bsd = 0
- os_linux = 0
-+os_solaris = 0
- 
- if CONFIG['OS_ARCH'] == 'WINNT':
-     os_win = 1
[email protected]@ -21,6 +22,9 @@ else:
-                                'NetBSD', 'OpenBSD']:
-         os_bsd = 1
-         libevent_include_suffix = 'bsd'
-+    elif CONFIG['OS_ARCH'] == 'SunOS':
-+        os_solaris = 1
-+        libevent_include_suffix = 'solaris'
-     else:
-         os_linux = 1
-         if CONFIG['OS_TARGET'] == 'Android':
-diff a/ipc/chromium/src/third_party/libevent/event.c b/ipc/chromium/src/third_party/libevent/event.c
---- a/ipc/chromium/src/third_party/libevent/event.c	2015-11-03 11:34:14.000000000 +0100
-+++ b/ipc/chromium/src/third_party/libevent/event.c	2015-11-09 03:34:24.485030000 +0100
[email protected]@ -70,7 +70,7 @@
- #include "util-internal.h"
- 
- #ifdef _EVENT_HAVE_EVENT_PORTS
--extern const struct eventop evportops;
-+//extern const struct eventop evportops;
- #endif
- #ifdef _EVENT_HAVE_SELECT
- extern const struct eventop selectops;
[email protected]@ -79,7 +79,7 @@ extern const struct eventop selectops;
- extern const struct eventop pollops;
- #endif
- #ifdef _EVENT_HAVE_EPOLL
--extern const struct eventop epollops;
-+//extern const struct eventop epollops;
- #endif
- #ifdef _EVENT_HAVE_WORKING_KQUEUE
- extern const struct eventop kqops;
[email protected]@ -94,13 +94,13 @@ extern const struct eventop win32ops;
- /* Array of backends in order of preference. */
- static const struct eventop *eventops[] = {
- #ifdef _EVENT_HAVE_EVENT_PORTS
--	&evportops,
-+	//&evportops,
- #endif
- #ifdef _EVENT_HAVE_WORKING_KQUEUE
- 	&kqops,
- #endif
- #ifdef _EVENT_HAVE_EPOLL
--	&epollops,
-+	//&epollops,
- #endif
- #ifdef _EVENT_HAVE_DEVPOLL
- 	&devpollops,
[email protected]@ -2883,8 +2883,8 @@
- #endif
- 	if (evsig_global_setup_locks_(enable_locks) < 0)
- 		return -1;
--	if (evutil_secure_rng_global_setup_locks_(enable_locks) < 0)
--		return -1;
-+//	if (evutil_secure_rng_global_setup_locks_(enable_locks) < 0)
-+//		return -1;
- 	return 0;
- }
- #endif
--- a/components/desktop/thunderbird/patches/firefox-51-atomicops.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,219 +0,0 @@
-Fixes issues in atomic operations. 
-Will not send upstream. 
- 
---- a/toolkit/components/protobuf/src/google/protobuf/stubs/atomicops_internals_solaris.h	2015-11-03 11:34:16.000000000 +0100
-+++ b/toolkit/components/protobuf/src/google/protobuf/stubs/atomicops_internals_solaris.h	2015-11-10 04:19:53.044083000 +0100
[email protected]@ -1,5 +1,4 @@
--// Copyright 2014 Google Inc. All rights reserved.
--// https://developers.google.com/protocol-buffers/
-+// Copyright 2013 Red Hat Inc.  All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
[email protected]@ -11,7 +10,7 @@
- // copyright notice, this list of conditions and the following disclaimer
- // in the documentation and/or other materials provided with the
- // distribution.
--//     * Neither the name of Google Inc. nor the names of its
-+//     * Neither the name of Red Hat Inc. nor the names of its
- // contributors may be used to endorse or promote products derived from
- // this software without specific prior written permission.
- //
[email protected]@ -29,10 +28,8 @@
- 
- // This file is an internal atomic implementation, use atomicops.h instead.
- 
--#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_SPARC_GCC_H_
--#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_SPARC_GCC_H_
--
--#include <atomic.h>
-+#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_GENERIC_GCC_H_
-+#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_GENERIC_GCC_H_
- 
- namespace google {
- namespace protobuf {
[email protected]@ -41,148 +38,100 @@
- inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr,
-                                          Atomic32 old_value,
-                                          Atomic32 new_value) {
--  return (Atomic32)atomic_cas_32((volatile uint32_t*)ptr, (uint32_t)old_value, (uint32_t)new_value);
-+  __atomic_compare_exchange_n(ptr, &old_value, new_value, true,
-+                              __ATOMIC_RELAXED, __ATOMIC_RELAXED);
-+  return old_value;
- }
- 
- inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr,
-                                          Atomic32 new_value) {
--  return (Atomic32)atomic_swap_32((volatile uint32_t*)ptr, (uint32_t)new_value);
-+  return __atomic_exchange_n(ptr, new_value, __ATOMIC_RELAXED);
- }
- 
- inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr,
-                                           Atomic32 increment) {
--  return (Atomic32)atomic_add_32_nv((volatile uint32_t*)ptr, (uint32_t)increment);
--}
--
--inline void MemoryBarrier(void) {
--	membar_producer();
--	membar_consumer();
-+  return __atomic_add_fetch(ptr, increment, __ATOMIC_RELAXED);
- }
- 
- inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr,
-                                         Atomic32 increment) {
--  MemoryBarrier();
--  Atomic32 ret = NoBarrier_AtomicIncrement(ptr, increment);
--  MemoryBarrier();
--
--  return ret;
-+  return __atomic_add_fetch(ptr, increment, __ATOMIC_SEQ_CST);
- }
- 
- inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
-                                        Atomic32 old_value,
-                                        Atomic32 new_value) {
--  Atomic32 ret = NoBarrier_CompareAndSwap(ptr, old_value, new_value);
--  MemoryBarrier();
--
--  return ret;
-+  __atomic_compare_exchange(ptr, &old_value, &new_value, true,
-+                            __ATOMIC_ACQUIRE, __ATOMIC_ACQUIRE);
-+  return old_value;
- }
- 
- inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr,
-                                        Atomic32 old_value,
-                                        Atomic32 new_value) {
--  MemoryBarrier();
--  return NoBarrier_CompareAndSwap(ptr, old_value, new_value);
-+  __atomic_compare_exchange_n(ptr, &old_value, new_value, true,
-+                              __ATOMIC_RELEASE, __ATOMIC_ACQUIRE);
-+  return old_value;
- }
- 
- inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) {
--  *ptr = value;
-+  __atomic_store_n(ptr, value, __ATOMIC_RELAXED);
-+}
-+
-+inline void MemoryBarrier() {
-+  __sync_synchronize();
- }
- 
- inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) {
--  *ptr = value;
--  membar_producer();
-+  __atomic_store_n(ptr, value, __ATOMIC_SEQ_CST);
- }
- 
- inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) {
--  membar_consumer();
--  *ptr = value;
-+  __atomic_store_n(ptr, value, __ATOMIC_RELEASE);
- }
- 
- inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) {
--  return *ptr;
-+  return __atomic_load_n(ptr, __ATOMIC_RELAXED);
- }
- 
- inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) {
--  Atomic32 val = *ptr;
--  membar_consumer();
--  return val;
-+  return __atomic_load_n(ptr, __ATOMIC_ACQUIRE);
- }
- 
- inline Atomic32 Release_Load(volatile const Atomic32* ptr) {
--  membar_producer();
--  return *ptr;
-+  return __atomic_load_n(ptr, __ATOMIC_SEQ_CST);
- }
- 
--#ifdef GOOGLE_PROTOBUF_ARCH_64_BIT
--inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr,
--                                         Atomic64 old_value,
--                                         Atomic64 new_value) {
--  return atomic_cas_64((volatile uint64_t*)ptr, (uint64_t)old_value, (uint64_t)new_value);
--}
-+#ifdef __LP64__
- 
--inline Atomic64 NoBarrier_AtomicExchange(volatile Atomic64* ptr, Atomic64 new_value) {
--  return atomic_swap_64((volatile uint64_t*)ptr, (uint64_t)new_value);
--}
--
--inline Atomic64 NoBarrier_AtomicIncrement(volatile Atomic64* ptr, Atomic64 increment) {
--  return atomic_add_64_nv((volatile uint64_t*)ptr, increment);
-+inline void Release_Store(volatile Atomic64* ptr, Atomic64 value) {
-+  __atomic_store_n(ptr, value, __ATOMIC_RELEASE);
- }
- 
--inline Atomic64 Barrier_AtomicIncrement(volatile Atomic64* ptr, Atomic64 increment) {
--  MemoryBarrier();
--  Atomic64 ret = atomic_add_64_nv((volatile uint64_t*)ptr, increment);
--  MemoryBarrier();
--  return ret;
-+inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) {
-+  return __atomic_load_n(ptr, __ATOMIC_ACQUIRE);
- }
- 
- inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr,
-                                        Atomic64 old_value,
-                                        Atomic64 new_value) {
--  Atomic64 ret = NoBarrier_CompareAndSwap(ptr, old_value, new_value);
--  MemoryBarrier();
--  return ret;
-+  __atomic_compare_exchange_n(ptr, &old_value, new_value, true,
-+                              __ATOMIC_ACQUIRE, __ATOMIC_ACQUIRE);
-+  return old_value;
- }
- 
--inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr,
-+inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr,
-                                        Atomic64 old_value,
-                                        Atomic64 new_value) {
--  MemoryBarrier();
--  return NoBarrier_CompareAndSwap(ptr, old_value, new_value);
--}
--
--inline void NoBarrier_Store(volatile Atomic64* ptr, Atomic64 value) {
--  *ptr = value;
--}
--
--inline void Acquire_Store(volatile Atomic64* ptr, Atomic64 value) {
--  *ptr = value;
--  membar_producer();
-+  __atomic_compare_exchange_n(ptr, &old_value, new_value, true,
-+                              __ATOMIC_RELAXED, __ATOMIC_RELAXED);
-+  return old_value;
- }
- 
--inline void Release_Store(volatile Atomic64* ptr, Atomic64 value) {
--  membar_consumer();
--  *ptr = value;
--}
--
--inline Atomic64 NoBarrier_Load(volatile const Atomic64* ptr) {
--  return *ptr;
--}
--
--inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) {
--  Atomic64 ret = *ptr;
--  membar_consumer();
--  return ret;
--}
--
--inline Atomic64 Release_Load(volatile const Atomic64* ptr) {
--  membar_producer();
--  return *ptr;
--}
--#endif
-+#endif // defined(__LP64__)
- 
- }  // namespace internal
- }  // namespace protobuf
- }  // namespace google
- 
--#endif  // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_SPARC_GCC_H_
--
-+#endif  // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_GENERIC_GCC_H_
--- a/components/desktop/thunderbird/patches/firefox-52-sincos.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-DS is defined elsewhere, as is HAVE_SINCOS. Will not send upstream.
-
---- a/js/src/jsmath.cpp    2016-03-22 13:29:37.873777320 -0700
-+++ b/js/src/jsmath.cpp    2016-03-22 13:29:55.750437374 -0700
[email protected]@ -919,7 +919,7 @@ js::math_sincos_uncached(double x, doubl
- {
- #if defined(__GLIBC__)
-     sincos(x, sin, cos);
--#elif defined(HAVE_SINCOS)
-+#elif defined(_HAVE_SINCOS)
-     __sincos(x, sin, cos);
- #else
-     *sin = js::math_sin_uncached(x);
---- a/dom/canvas/WebGLFormats.cpp	2016-03-22 12:40:33.085785762 -0700
-+++ b/dom/canvas/WebGLFormats.cpp	2016-03-22 12:40:59.650189892 -0700
[email protected]@ -156,7 +156,7 @@ AddFormatInfo(EffectiveFormat format, co
-         hasStencil = true;
-         break;
- 
--    case UnsizedFormat::DS:
-+    case UnsizedFormat::XDS:
-         hasDepth = true;
-         hasStencil = true;
-         break;
[email protected]@ -241,8 +241,8 @@ InitFormatInfo()
-     AddFormatInfo(FOO(DEPTH_COMPONENT16 ), 2, UnsizedFormat::D , false, ComponentType::NormUInt);
-     AddFormatInfo(FOO(DEPTH_COMPONENT24 ), 3, UnsizedFormat::D , false, ComponentType::NormUInt);
-     AddFormatInfo(FOO(DEPTH_COMPONENT32F), 4, UnsizedFormat::D , false, ComponentType::Float);
--    AddFormatInfo(FOO(DEPTH24_STENCIL8  ), 4, UnsizedFormat::DS, false, ComponentType::Special);
--    AddFormatInfo(FOO(DEPTH32F_STENCIL8 ), 5, UnsizedFormat::DS, false, ComponentType::Special);
-+    AddFormatInfo(FOO(DEPTH24_STENCIL8  ), 4, UnsizedFormat::XDS, false, ComponentType::Special);
-+    AddFormatInfo(FOO(DEPTH32F_STENCIL8 ), 5, UnsizedFormat::XDS, false, ComponentType::Special);
- 
-     // GLES 3.0.4, p205-206, "Required Renderbuffer Formats"
-     AddFormatInfo(FOO(STENCIL_INDEX8), 1, UnsizedFormat::S, false, ComponentType::UInt);
---- a/dom/canvas/WebGLFormats.h	2016-03-22 12:39:45.933021022 -0700
-+++ b/dom/canvas/WebGLFormats.h	2016-03-22 12:40:19.073659489 -0700
[email protected]@ -158,7 +158,7 @@ enum class UnsizedFormat : uint8_t {
-     A,
-     D,
-     S,
--    DS,
-+    XDS,
- };
- 
- // GLES 3.0.4 p114 Table 3.4, p240
--- a/components/desktop/thunderbird/patches/firefox-53-sparc-gfx-atomicops.patch	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-Fixes endian issue in GFX on sparc and fixes atomic operations. 
-Will not send upstream, sparc specific. 
-
-diff --git a/js/src/jit/AtomicOperations.h b/js/src/jit/AtomicOperations.h
---- a/js/src/jit/AtomicOperations.h
-+++ b/js/src/jit/AtomicOperations.h
[email protected]@ -297,17 +297,17 @@ AtomicOperations::isLockfree(int32_t siz
- #if defined(JS_CODEGEN_ARM)
- # include "jit/arm/AtomicOperations-arm.h"
- #elif defined(JS_CODEGEN_ARM64)
- # include "jit/arm64/AtomicOperations-arm64.h"
- #elif defined(JS_CODEGEN_MIPS32) || defined(JS_CODEGEN_MIPS64)
- # include "jit/mips-shared/AtomicOperations-mips-shared.h"
- #elif defined(__ppc64__) || defined(__PPC64_)       \
-     || defined(__ppc64le__) || defined(__PPC64LE__) \
--    || defined(__ppc__) || defined(__PPC__)
-+    || defined(__ppc__) || defined(__PPC__) || defined(__sparc)
- # include "jit/none/AtomicOperations-ppc.h"
- #elif defined(JS_CODEGEN_NONE)
- # include "jit/none/AtomicOperations-none.h"
- #elif defined(JS_CODEGEN_X86) || defined(JS_CODEGEN_X64)
- # include "jit/x86-shared/AtomicOperations-x86-shared.h"
- #else
- # error "Atomic operations must be defined for this platform"
- #endif
---- a/gfx/2d/Types.h    Tue May  3 14:20:54 2016
-+++ b/gfx/2d/Types.h    Tue May  3 13:43:00 2016
[email protected]@ -61,15 +61,8 @@
-   // The following values are endian-independent synonyms. The _UINT32 suffix
-   // indicates that the name reflects the layout when viewed as a uint32_t
-   // value.
--#if MOZ_LITTLE_ENDIAN
-   A8R8G8B8_UINT32 = B8G8R8A8,       // 0xAARRGGBB
-   X8R8G8B8_UINT32 = B8G8R8X8        // 0x00RRGGBB
--#elif MOZ_BIG_ENDIAN
--  A8R8G8B8_UINT32 = A8R8G8B8,       // 0xAARRGGBB
--  X8R8G8B8_UINT32 = X8R8G8B8        // 0x00RRGGBB
--#else
--# error "bad endianness"
--#endif
- };
-
- inline bool IsOpaque(SurfaceFormat aFormat)
--- a/components/desktop/thunderbird/test/results-32.master	Fri Sep 30 21:33:56 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-make[1]: Entering directory '$(@D)/js/src'
-../../dist/bin/run-mozilla.sh $(@D)/_virtualenv/bin/python -u $(SOURCE_DIR)/mozilla/js/src/jit-test/jit_test.py \
-        --no-slow --no-progress --format=automation --jitflags=all -j 2 -f \
-		 \
-		 \
-        ../../dist/bin/js 
-$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
-Stack:
-  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
-  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
-Exit code: 3
-FAIL - ctypes/conversion-native-function.js
-TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "")
-INFO exit-status     : 3
-INFO timed-out       : False
-INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
-INFO stderr         2> Stack:
-INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
-INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
-$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
-Stack:
-  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
-  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
-Exit code: 3
-FAIL - ctypes/conversion-native-function.js
-TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "--ion-eager --ion-offthread-compile=off")
-INFO exit-status     : 3
-INFO timed-out       : False
-INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
-INFO stderr         2> Stack:
-INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
-INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
-$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
-Stack:
-  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
-  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
-Exit code: 3
-FAIL - ctypes/conversion-native-function.js
-TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "--ion-eager --ion-offthread-compile=off --non-writable-jitcode --ion-check-range-analysis --ion-extra-checks --no-sse3 --no-threads")
-INFO exit-status     : 3
-INFO timed-out       : False
-INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
-INFO stderr         2> Stack:
-INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
-INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
-$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
-Stack:
-  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
-  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
-Exit code: 3
-FAIL - ctypes/conversion-native-function.js
-TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "--baseline-eager")
-INFO exit-status     : 3
-INFO timed-out       : False
-INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
-INFO stderr         2> Stack:
-INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
-INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
-$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
-Stack:
-  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
-  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
-Exit code: 3
-FAIL - ctypes/conversion-native-function.js
-TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "--baseline-eager --no-fpu")
-INFO exit-status     : 3
-INFO timed-out       : False
-INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
-INFO stderr         2> Stack:
-INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
-INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
-$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
-Stack:
-  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
-  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
-Exit code: 3
-FAIL - ctypes/conversion-native-function.js
-TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "--no-baseline --no-ion")
-INFO exit-status     : 3
-INFO timed-out       : False
-INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
-INFO stderr         2> Stack:
-INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
-INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
-FAILURES:
-    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
-    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --ion-eager --ion-offthread-compile=off -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
-    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --ion-extra-checks --non-writable-jitcode --ion-check-range-analysis --ion-offthread-compile=off --no-threads --ion-eager --no-sse3 -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
-    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --baseline-eager -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
-    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --baseline-eager --no-fpu -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
-    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --no-baseline --no-ion -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
-TIMEOUTS:
-Result summary:
-Passed: 29675
-Failed: 6
-Makefile:110: recipe for target 'check-jit-test' failed
-make[1]: *** [check-jit-test] Error 2
-make[1]: Leaving directory '$(@D)/js/src'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/desktop/thunderbird/test/results-i386.master	Thu Sep 22 15:38:45 2016 -0700
@@ -0,0 +1,97 @@
+make[1]: Entering directory '$(@D)/js/src'
+../../dist/bin/run-mozilla.sh $(@D)/_virtualenv/bin/python -u $(SOURCE_DIR)/mozilla/js/src/jit-test/jit_test.py \
+        --no-slow --no-progress --format=automation --jitflags=all -j 2 -f \
+		 \
+		 \
+        ../../dist/bin/js 
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+Exit code: 3
+FAIL - ctypes/conversion-native-function.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+Exit code: 3
+FAIL - ctypes/conversion-native-function.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "--ion-eager --ion-offthread-compile=off")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+Exit code: 3
+FAIL - ctypes/conversion-native-function.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "--ion-eager --ion-offthread-compile=off --non-writable-jitcode --ion-check-range-analysis --ion-extra-checks --no-sse3 --no-threads")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+Exit code: 3
+FAIL - ctypes/conversion-native-function.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "--baseline-eager")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+Exit code: 3
+FAIL - ctypes/conversion-native-function.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "--baseline-eager --no-fpu")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+Exit code: 3
+FAIL - ctypes/conversion-native-function.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "--no-baseline --no-ion")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+FAILURES:
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --ion-eager --ion-offthread-compile=off -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --ion-extra-checks --non-writable-jitcode --ion-check-range-analysis --ion-offthread-compile=off --no-threads --ion-eager --no-sse3 -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --baseline-eager -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --baseline-eager --no-fpu -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --no-baseline --no-ion -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
+TIMEOUTS:
+Result summary:
+Passed: 29681
+Failed: 6
+make[1]: *** [Makefile:110: check-jit-test] Error 2
+make[1]: Leaving directory '$(@D)/js/src'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/desktop/thunderbird/test/results-sparc.master	Thu Sep 22 15:38:45 2016 -0700
@@ -0,0 +1,781 @@
+make[1]: Entering directory '$(@D)/js/src'
+../../dist/bin/run-mozilla.sh $(@D)/_virtualenv/bin/python -u $(SOURCE_DIR)/mozilla/js/src/jit-test/jit_test.py \
+        --no-slow --no-progress --format=automation --jitflags=all -j 2 -f \
+		 \
+		 \
+        ../../dist/bin/js 
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1
+Exit code: 3
+FAIL - asm.js/testHeapAccess.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/asm.js/testHeapAccess.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127 (code 3, args "")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1
+Exit code: 3
+FAIL - asm.js/testHeapAccess.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/asm.js/testHeapAccess.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127 (code 3, args "--ion-eager --ion-offthread-compile=off --non-writable-jitcode --ion-check-range-analysis --ion-extra-checks --no-sse3 --no-threads")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1
+Exit code: 3
+FAIL - asm.js/testHeapAccess.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/asm.js/testHeapAccess.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127 (code 3, args "--ion-eager --ion-offthread-compile=off")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1
+Exit code: 3
+FAIL - asm.js/testHeapAccess.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/asm.js/testHeapAccess.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127 (code 3, args "--baseline-eager")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1
+Exit code: 3
+FAIL - asm.js/testHeapAccess.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/asm.js/testHeapAccess.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127 (code 3, args "--baseline-eager --no-fpu")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1
+Exit code: 3
+FAIL - asm.js/testHeapAccess.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/asm.js/testHeapAccess.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127 (code 3, args "--no-baseline --no-ion")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1
+Exit code: 3
+FAIL - asm.js/testHeapAccess.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/asm.js/testHeapAccess.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127 (code 3, args "--no-asmjs")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1 Error: Assertion failed: got 0, expected 127
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js:24:1
+Cannot find `BRDA:3,0,0,1` in the following Lcov result:
+ TN:Compartment_5fd1ebdc00
+SF:$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js line 60 > eval
+FN:1,top-level
+FNDA:1,top-level
+FNF:1
+FNH:1
+BRDA:3,0,0,0
+BRDA:3,0,1,-
+BRF:2
+BRH:1
+DA:2,1
+DA:3,1
+DA:4,0
+DA:5,1
+LF:4
+LH:3
+end_of_record
+
+In the following source:
+  //FN:$,top-level //FNDA:1,%
+  var l = ",".split(','); //DA:$,1
+  if (l.length == 3)      //DA:$,1 //BRDA:$,0,0,1 //BRDA:$,0,1,-
+    l.push('');           //DA:$,0
+  l.pop();                //DA:$,1
+  //FNF:1
+  //FNH:1
+  //LF:4
+  //LH:3
+  //BRF:2
+  //BRH:1
+
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:104:1
+Exit code: 3
+FAIL - coverage/simple.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/coverage/simple.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false (code 3, args "--code-coverage")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stdout          > Cannot find `BRDA:3,0,0,1` in the following Lcov result:
+INFO stdout          > TN:Compartment_5fd1ebdc00
+INFO stdout          > SF:$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js line 60 > eval
+INFO stdout          > FN:1,top-level
+INFO stdout          > FNDA:1,top-level
+INFO stdout          > FNF:1
+INFO stdout          > FNH:1
+INFO stdout          > BRDA:3,0,0,0
+INFO stdout          > BRDA:3,0,1,-
+INFO stdout          > BRF:2
+INFO stdout          > BRH:1
+INFO stdout          > DA:2,1
+INFO stdout          > DA:3,1
+INFO stdout          > DA:4,0
+INFO stdout          > DA:5,1
+INFO stdout          > LF:4
+INFO stdout          > LH:3
+INFO stdout          > end_of_record
+INFO stdout          > 
+INFO stdout          > In the following source:
+INFO stdout          > //FN:$,top-level //FNDA:1,%
+INFO stdout          > var l = ",".split(','); //DA:$,1
+INFO stdout          > if (l.length == 3)      //DA:$,1 //BRDA:$,0,0,1 //BRDA:$,0,1,-
+INFO stdout          > l.push('');           //DA:$,0
+INFO stdout          > l.pop();                //DA:$,1
+INFO stdout          > //FNF:1
+INFO stdout          > //FNH:1
+INFO stdout          > //LF:4
+INFO stdout          > //LH:3
+INFO stdout          > //BRF:2
+INFO stdout          > //BRH:1
+INFO stdout          > 
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:104:1
+Cannot find `BRDA:3,0,0,1` in the following Lcov result:
+ TN:Compartment_5fcccbdc00
+SF:$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js line 60 > eval
+FN:1,top-level
+FNDA:1,top-level
+FNF:1
+FNH:1
+BRDA:3,0,0,0
+BRDA:3,0,1,-
+BRF:2
+BRH:1
+DA:2,1
+DA:3,1
+DA:4,0
+DA:5,1
+LF:4
+LH:3
+end_of_record
+
+In the following source:
+  //FN:$,top-level //FNDA:1,%
+  var l = ",".split(','); //DA:$,1
+  if (l.length == 3)      //DA:$,1 //BRDA:$,0,0,1 //BRDA:$,0,1,-
+    l.push('');           //DA:$,0
+  l.pop();                //DA:$,1
+  //FNF:1
+  //FNH:1
+  //LF:4
+  //LH:3
+  //BRF:2
+  //BRH:1
+
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:104:1
+Exit code: 3
+FAIL - coverage/simple.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/coverage/simple.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false (code 3, args "--code-coverage --ion-eager --ion-offthread-compile=off")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stdout          > Cannot find `BRDA:3,0,0,1` in the following Lcov result:
+INFO stdout          > TN:Compartment_5fcccbdc00
+INFO stdout          > SF:$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js line 60 > eval
+INFO stdout          > FN:1,top-level
+INFO stdout          > FNDA:1,top-level
+INFO stdout          > FNF:1
+INFO stdout          > FNH:1
+INFO stdout          > BRDA:3,0,0,0
+INFO stdout          > BRDA:3,0,1,-
+INFO stdout          > BRF:2
+INFO stdout          > BRH:1
+INFO stdout          > DA:2,1
+INFO stdout          > DA:3,1
+INFO stdout          > DA:4,0
+INFO stdout          > DA:5,1
+INFO stdout          > LF:4
+INFO stdout          > LH:3
+INFO stdout          > end_of_record
+INFO stdout          > 
+INFO stdout          > In the following source:
+INFO stdout          > //FN:$,top-level //FNDA:1,%
+INFO stdout          > var l = ",".split(','); //DA:$,1
+INFO stdout          > if (l.length == 3)      //DA:$,1 //BRDA:$,0,0,1 //BRDA:$,0,1,-
+INFO stdout          > l.push('');           //DA:$,0
+INFO stdout          > l.pop();                //DA:$,1
+INFO stdout          > //FNF:1
+INFO stdout          > //FNH:1
+INFO stdout          > //LF:4
+INFO stdout          > //LH:3
+INFO stdout          > //BRF:2
+INFO stdout          > //BRH:1
+INFO stdout          > 
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:104:1
+Cannot find `BRDA:3,0,0,1` in the following Lcov result:
+ TN:Compartment_5fed207c00
+SF:$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js line 60 > eval
+FN:1,top-level
+FNDA:1,top-level
+FNF:1
+FNH:1
+BRDA:3,0,0,0
+BRDA:3,0,1,-
+BRF:2
+BRH:1
+DA:2,1
+DA:3,1
+DA:4,0
+DA:5,1
+LF:4
+LH:3
+end_of_record
+
+In the following source:
+  //FN:$,top-level //FNDA:1,%
+  var l = ",".split(','); //DA:$,1
+  if (l.length == 3)      //DA:$,1 //BRDA:$,0,0,1 //BRDA:$,0,1,-
+    l.push('');           //DA:$,0
+  l.pop();                //DA:$,1
+  //FNF:1
+  //FNH:1
+  //LF:4
+  //LH:3
+  //BRF:2
+  //BRH:1
+
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:104:1
+Exit code: 3
+FAIL - coverage/simple.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/coverage/simple.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false (code 3, args "--code-coverage --ion-eager --ion-offthread-compile=off --non-writable-jitcode --ion-check-range-analysis --ion-extra-checks --no-sse3 --no-threads")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stdout          > Cannot find `BRDA:3,0,0,1` in the following Lcov result:
+INFO stdout          > TN:Compartment_5fed207c00
+INFO stdout          > SF:$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js line 60 > eval
+INFO stdout          > FN:1,top-level
+INFO stdout          > FNDA:1,top-level
+INFO stdout          > FNF:1
+INFO stdout          > FNH:1
+INFO stdout          > BRDA:3,0,0,0
+INFO stdout          > BRDA:3,0,1,-
+INFO stdout          > BRF:2
+INFO stdout          > BRH:1
+INFO stdout          > DA:2,1
+INFO stdout          > DA:3,1
+INFO stdout          > DA:4,0
+INFO stdout          > DA:5,1
+INFO stdout          > LF:4
+INFO stdout          > LH:3
+INFO stdout          > end_of_record
+INFO stdout          > 
+INFO stdout          > In the following source:
+INFO stdout          > //FN:$,top-level //FNDA:1,%
+INFO stdout          > var l = ",".split(','); //DA:$,1
+INFO stdout          > if (l.length == 3)      //DA:$,1 //BRDA:$,0,0,1 //BRDA:$,0,1,-
+INFO stdout          > l.push('');           //DA:$,0
+INFO stdout          > l.pop();                //DA:$,1
+INFO stdout          > //FNF:1
+INFO stdout          > //FNH:1
+INFO stdout          > //LF:4
+INFO stdout          > //LH:3
+INFO stdout          > //BRF:2
+INFO stdout          > //BRH:1
+INFO stdout          > 
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:104:1
+Cannot find `BRDA:3,0,0,1` in the following Lcov result:
+ TN:Compartment_5fcfabdc00
+SF:$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js line 60 > eval
+FN:1,top-level
+FNDA:1,top-level
+FNF:1
+FNH:1
+BRDA:3,0,0,0
+BRDA:3,0,1,-
+BRF:2
+BRH:1
+DA:2,1
+DA:3,1
+DA:4,0
+DA:5,1
+LF:4
+LH:3
+end_of_record
+
+In the following source:
+  //FN:$,top-level //FNDA:1,%
+  var l = ",".split(','); //DA:$,1
+  if (l.length == 3)      //DA:$,1 //BRDA:$,0,0,1 //BRDA:$,0,1,-
+    l.push('');           //DA:$,0
+  l.pop();                //DA:$,1
+  //FNF:1
+  //FNH:1
+  //LF:4
+  //LH:3
+  //BRF:2
+  //BRH:1
+
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:104:1
+Exit code: 3
+FAIL - coverage/simple.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/coverage/simple.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false (code 3, args "--code-coverage --baseline-eager")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stdout          > Cannot find `BRDA:3,0,0,1` in the following Lcov result:
+INFO stdout          > TN:Compartment_5fcfabdc00
+INFO stdout          > SF:$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js line 60 > eval
+INFO stdout          > FN:1,top-level
+INFO stdout          > FNDA:1,top-level
+INFO stdout          > FNF:1
+INFO stdout          > FNH:1
+INFO stdout          > BRDA:3,0,0,0
+INFO stdout          > BRDA:3,0,1,-
+INFO stdout          > BRF:2
+INFO stdout          > BRH:1
+INFO stdout          > DA:2,1
+INFO stdout          > DA:3,1
+INFO stdout          > DA:4,0
+INFO stdout          > DA:5,1
+INFO stdout          > LF:4
+INFO stdout          > LH:3
+INFO stdout          > end_of_record
+INFO stdout          > 
+INFO stdout          > In the following source:
+INFO stdout          > //FN:$,top-level //FNDA:1,%
+INFO stdout          > var l = ",".split(','); //DA:$,1
+INFO stdout          > if (l.length == 3)      //DA:$,1 //BRDA:$,0,0,1 //BRDA:$,0,1,-
+INFO stdout          > l.push('');           //DA:$,0
+INFO stdout          > l.pop();                //DA:$,1
+INFO stdout          > //FNF:1
+INFO stdout          > //FNH:1
+INFO stdout          > //LF:4
+INFO stdout          > //LH:3
+INFO stdout          > //BRF:2
+INFO stdout          > //BRH:1
+INFO stdout          > 
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:104:1
+Cannot find `BRDA:3,0,0,1` in the following Lcov result:
+ TN:Compartment_5fcbebdc00
+SF:$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js line 60 > eval
+FN:1,top-level
+FNDA:1,top-level
+FNF:1
+FNH:1
+BRDA:3,0,0,0
+BRDA:3,0,1,-
+BRF:2
+BRH:1
+DA:2,1
+DA:3,1
+DA:4,0
+DA:5,1
+LF:4
+LH:3
+end_of_record
+
+In the following source:
+  //FN:$,top-level //FNDA:1,%
+  var l = ",".split(','); //DA:$,1
+  if (l.length == 3)      //DA:$,1 //BRDA:$,0,0,1 //BRDA:$,0,1,-
+    l.push('');           //DA:$,0
+  l.pop();                //DA:$,1
+  //FNF:1
+  //FNH:1
+  //LF:4
+  //LH:3
+  //BRF:2
+  //BRH:1
+
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:104:1
+Exit code: 3
+FAIL - coverage/simple.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/coverage/simple.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false (code 3, args "--code-coverage --baseline-eager --no-fpu")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stdout          > Cannot find `BRDA:3,0,0,1` in the following Lcov result:
+INFO stdout          > TN:Compartment_5fcbebdc00
+INFO stdout          > SF:$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js line 60 > eval
+INFO stdout          > FN:1,top-level
+INFO stdout          > FNDA:1,top-level
+INFO stdout          > FNF:1
+INFO stdout          > FNH:1
+INFO stdout          > BRDA:3,0,0,0
+INFO stdout          > BRDA:3,0,1,-
+INFO stdout          > BRF:2
+INFO stdout          > BRH:1
+INFO stdout          > DA:2,1
+INFO stdout          > DA:3,1
+INFO stdout          > DA:4,0
+INFO stdout          > DA:5,1
+INFO stdout          > LF:4
+INFO stdout          > LH:3
+INFO stdout          > end_of_record
+INFO stdout          > 
+INFO stdout          > In the following source:
+INFO stdout          > //FN:$,top-level //FNDA:1,%
+INFO stdout          > var l = ",".split(','); //DA:$,1
+INFO stdout          > if (l.length == 3)      //DA:$,1 //BRDA:$,0,0,1 //BRDA:$,0,1,-
+INFO stdout          > l.push('');           //DA:$,0
+INFO stdout          > l.pop();                //DA:$,1
+INFO stdout          > //FNF:1
+INFO stdout          > //FNH:1
+INFO stdout          > //LF:4
+INFO stdout          > //LH:3
+INFO stdout          > //BRF:2
+INFO stdout          > //BRH:1
+INFO stdout          > 
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:104:1
+Cannot find `BRDA:3,0,0,1` in the following Lcov result:
+ TN:Compartment_5fd10bdc00
+SF:$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js line 60 > eval
+FN:1,top-level
+FNDA:1,top-level
+FNF:1
+FNH:1
+BRDA:3,0,0,0
+BRDA:3,0,1,-
+BRF:2
+BRH:1
+DA:2,1
+DA:3,1
+DA:4,0
+DA:5,1
+LF:4
+LH:3
+end_of_record
+
+In the following source:
+  //FN:$,top-level //FNDA:1,%
+  var l = ",".split(','); //DA:$,1
+  if (l.length == 3)      //DA:$,1 //BRDA:$,0,0,1 //BRDA:$,0,1,-
+    l.push('');           //DA:$,0
+  l.pop();                //DA:$,1
+  //FNF:1
+  //FNH:1
+  //LF:4
+  //LH:3
+  //BRF:2
+  //BRH:1
+
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:104:1
+Exit code: 3
+FAIL - coverage/simple.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/coverage/simple.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false (code 3, args "--code-coverage --no-baseline --no-ion")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stdout          > Cannot find `BRDA:3,0,0,1` in the following Lcov result:
+INFO stdout          > TN:Compartment_5fd10bdc00
+INFO stdout          > SF:$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js line 60 > eval
+INFO stdout          > FN:1,top-level
+INFO stdout          > FNDA:1,top-level
+INFO stdout          > FNF:1
+INFO stdout          > FNH:1
+INFO stdout          > BRDA:3,0,0,0
+INFO stdout          > BRDA:3,0,1,-
+INFO stdout          > BRF:2
+INFO stdout          > BRH:1
+INFO stdout          > DA:2,1
+INFO stdout          > DA:3,1
+INFO stdout          > DA:4,0
+INFO stdout          > DA:5,1
+INFO stdout          > LF:4
+INFO stdout          > LH:3
+INFO stdout          > end_of_record
+INFO stdout          > 
+INFO stdout          > In the following source:
+INFO stdout          > //FN:$,top-level //FNDA:1,%
+INFO stdout          > var l = ",".split(','); //DA:$,1
+INFO stdout          > if (l.length == 3)      //DA:$,1 //BRDA:$,0,0,1 //BRDA:$,0,1,-
+INFO stdout          > l.push('');           //DA:$,0
+INFO stdout          > l.pop();                //DA:$,1
+INFO stdout          > //FNF:1
+INFO stdout          > //FNH:1
+INFO stdout          > //LF:4
+INFO stdout          > //LH:3
+INFO stdout          > //BRF:2
+INFO stdout          > //BRH:1
+INFO stdout          > 
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7 Error: Assertion failed: got true, expected false
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:69:7
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js:104:1
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+Exit code: 3
+FAIL - ctypes/conversion-native-function.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+Exit code: 3
+FAIL - ctypes/conversion-native-function.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "--ion-eager --ion-offthread-compile=off --non-writable-jitcode --ion-check-range-analysis --ion-extra-checks --no-sse3 --no-threads")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+Exit code: 3
+FAIL - ctypes/conversion-native-function.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "--ion-eager --ion-offthread-compile=off")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+Exit code: 3
+FAIL - ctypes/conversion-native-function.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "--baseline-eager")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+INFO stderr         2> Stack:
+INFO stderr         2> te[email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+Exit code: 3
+FAIL - ctypes/conversion-native-function.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "--baseline-eager --no-fpu")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+Stack:
+  [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+Exit code: 3
+FAIL - ctypes/conversion-native-function.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ctypes/conversion-native-function.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library (code 3, args "--no-baseline --no-ion")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14 Error: couldn't find function symbol in library
+INFO stderr         2> Stack:
+INFO stderr         2> [email protected]$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:15:14
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js:37:3
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1 Error: Assertion failed: got false, expected true
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1
+Exit code: 3
+FAIL - debug/Debugger-allowUnobservedAsmJS-02.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1 Error: Assertion failed: got false, expected true (code 3, args "")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1 Error: Assertion failed: got false, expected true
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1 Error: Assertion failed: got false, expected true
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1
+Exit code: 3
+FAIL - debug/Debugger-allowUnobservedAsmJS-02.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1 Error: Assertion failed: got false, expected true (code 3, args "--ion-eager --ion-offthread-compile=off")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1 Error: Assertion failed: got false, expected true
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1 Error: Assertion failed: got false, expected true
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1
+Exit code: 3
+FAIL - debug/Debugger-allowUnobservedAsmJS-02.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1 Error: Assertion failed: got false, expected true (code 3, args "--baseline-eager")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1 Error: Assertion failed: got false, expected true
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1 Error: Assertion failed: got false, expected true
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1
+Exit code: 3
+FAIL - debug/Debugger-allowUnobservedAsmJS-02.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1 Error: Assertion failed: got false, expected true (code 3, args "--baseline-eager --no-fpu")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1 Error: Assertion failed: got false, expected true
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1 Error: Assertion failed: got false, expected true
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1
+Exit code: 3
+FAIL - debug/Debugger-allowUnobservedAsmJS-02.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1 Error: Assertion failed: got false, expected true (code 3, args "--no-baseline --no-ion")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1 Error: Assertion failed: got false, expected true
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js:21:1
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5
+Exit code: 3
+FAIL - ion/bug909997.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ion/bug909997.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1 (code 3, args "")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5
+Exit code: 3
+FAIL - ion/bug909997.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ion/bug909997.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1 (code 3, args "--ion-eager --ion-offthread-compile=off --non-writable-jitcode --ion-check-range-analysis --ion-extra-checks --no-sse3 --no-threads")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5
+Exit code: 3
+FAIL - ion/bug909997.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ion/bug909997.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1 (code 3, args "--ion-eager --ion-offthread-compile=off")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5
+Exit code: 3
+FAIL - ion/bug909997.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ion/bug909997.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1 (code 3, args "--baseline-eager")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5
+Exit code: 3
+FAIL - ion/bug909997.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ion/bug909997.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1 (code 3, args "--baseline-eager --no-fpu")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5
+$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1
+Stack:
+  @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5
+Exit code: 3
+FAIL - ion/bug909997.js
+TEST-UNEXPECTED-FAIL | js/src/jit-test/tests/ion/bug909997.js | $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1 (code 3, args "--no-baseline --no-ion")
+INFO exit-status     : 3
+INFO timed-out       : False
+INFO stderr         2> $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5 Error: Assertion failed: got 0, expected 1
+INFO stderr         2> Stack:
+INFO stderr         2> @$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js:31:5
+FAILURES:
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --ion-extra-checks --non-writable-jitcode --ion-check-range-analysis --ion-offthread-compile=off --no-threads --ion-eager --no-sse3 -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --ion-eager --ion-offthread-compile=off -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --baseline-eager -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --baseline-eager --no-fpu -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --no-baseline --no-ion -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --no-asmjs -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/asm.js/testHeapAccess.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --code-coverage -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --ion-eager --ion-offthread-compile=off --code-coverage -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --ion-extra-checks --non-writable-jitcode --ion-check-range-analysis --ion-offthread-compile=off --no-threads --ion-eager --code-coverage --no-sse3 -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --baseline-eager --code-coverage -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --baseline-eager --no-fpu --code-coverage -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --no-baseline --no-ion --code-coverage -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/coverage/simple.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --ion-extra-checks --non-writable-jitcode --ion-check-range-analysis --ion-offthread-compile=off --no-threads --ion-eager --no-sse3 -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --ion-eager --ion-offthread-compile=off -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --baseline-eager -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --baseline-eager --no-fpu -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --no-baseline --no-ion -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ctypes/conversion-native-function.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --ion-eager --ion-offthread-compile=off -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --baseline-eager -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --baseline-eager --no-fpu -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --no-baseline --no-ion -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/debug/Debugger-allowUnobservedAsmJS-02.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --ion-extra-checks --non-writable-jitcode --ion-check-range-analysis --ion-offthread-compile=off --no-threads --ion-eager --no-sse3 -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --ion-eager --ion-offthread-compile=off -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --baseline-eager -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --baseline-eager --no-fpu -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js
+    $(@D)/dist/bin/js -f $(SOURCE_DIR)/mozilla/js/src/jit-test/lib/prologue.js --js-cache $(SOURCE_DIR)/mozilla/js/src/jit-test/.js-cache --no-baseline --no-ion -e "const platform='sunos5'; const libdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/lib/'; const scriptdir='$(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/'" -f $(SOURCE_DIR)/mozilla/js/src/jit-test/tests/ion/bug909997.js
+TIMEOUTS:
+Result summary:
+Passed: 29657
+Failed: 30
+make[1]: *** [Makefile:110: check-jit-test] Error 2
+make[1]: Leaving directory '$(@D)/js/src'