# HG changeset patch # User Stacy Yeh # Date 1456865813 28800 # Node ID 611b2d6efdfe46c05b096c6ef010b7897e58dbd0 # Parent 570ac9aab8b2510c78a117e9be0260dc3e58dff8 21602607 Need to move Firefox to 38.5.0 ESR branch to continue getting fixes 22757279 Update Thunderbird to version 38.5.0 22613259 thunderbird lightning extension is missing l10n after moved to userland 21133062 problem in TBIRD/MAILER diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/Makefile --- a/components/desktop/firefox/Makefile Tue Mar 01 10:33:35 2016 -0800 +++ b/components/desktop/firefox/Makefile Tue Mar 01 12:56:53 2016 -0800 @@ -31,20 +31,20 @@ include ../../../make-rules/shared-macros.mk COMPONENT_NAME = firefox -COMPONENT_VERSION = 31.8.0esr +COMPONENT_VERSION = 38.5.0esr COMPONENT_PROJECT_URL = http://www.mozilla.com/firefox -COMPONENT_SRC = mozilla-esr31 +COMPONENT_SRC = mozilla-esr38 COMPONENT_SRC_NAME = $(COMPONENT_NAME)-$(COMPONENT_VERSION) COMPONENT_ARCHIVE = $(COMPONENT_SRC_NAME).source.tar.bz2 COMPONENT_ARCHIVE_HASH = \ - sha256:4c14021637ba61690ac2b52eff31c9bb96e4a04d334bf934d33932c9c382c50c + sha256:2a1f90cfe390ab20be88fed38cb9f61a18281cfbee47505c67e0254d339cdb20 MOZILLA_FTP = http://ftp.mozilla.org/pub/mozilla.org/$(COMPONENT_NAME)/releases/$(COMPONENT_VERSION) COMPONENT_ARCHIVE_URL = $(MOZILLA_FTP)/source/$(COMPONENT_ARCHIVE) COMPONENT_BUGDB = firefox/browser -TPNO= 23616 +TPNO= 26828 -IPS_COMPONENT_VERSION = 31.8.0 +IPS_COMPONENT_VERSION = 38.5.0 # There are a set of .xpi files (as given in the LANG_LIST definition below) # that we need. These are available under: @@ -53,9 +53,9 @@ # a compressed tarball of them, and made that available locally for download. # Downloading them individually can be a problem because firefox/thunderbird # collide due to different files with identical .xpi names. -COMPONENT_ARCHIVE_1 = firefox-31.8.0esr-xpi.tar.gz +COMPONENT_ARCHIVE_1 = $(COMPONENT_SRC_NAME)-xpi.tar.gz COMPONENT_ARCHIVE_HASH_1 = \ - sha256:f4be660e98f4bfac9e8b1a5ba39f74dc201697fe857b4f7c5dd8f3204837df54 + sha256:1fe09d5540167cbda3029f4e02640498fbb98ad7b47cdb6b8872e6dcf522a3e1 COMPONENT_ARCHIVE_URL_1 = $(INTERNAL_ARCHIVE_MIRROR)/source-archives/$(COMPONENT_ARCHIVE_1) LANG_LIST = ar be bg ca cs da de el es-AR es-CL es-ES et fi \ @@ -101,15 +101,20 @@ echo "ac_add_options --enable-ipc" >> $(MOZCONFIG) ; \ echo "ac_add_options --enable-system-pixman" >> $(MOZCONFIG) ; \ echo "ac_add_options --enable-startup-notification" >> $(MOZCONFIG) ; \ - echo "ac_add_options --enable-dtrace" >> $(MOZCONFIG) ; + echo "ac_add_options --enable-dtrace" >> $(MOZCONFIG) ; \ + echo "ac_add_options --enable-replace-malloc" >> $(MOZCONFIG) ; -CXXFLAGS += -Wno-invalid-offsetof -fpermissive -CC += $(CC_BITS) -CXX += $(CC_BITS) - +CXXFLAGS += -Wno-invalid-offsetof -fpermissive +CC += $(CC_BITS) +CXX += $(CC_BITS) CONFIGURE_ENV += PKG_CONFIG_PATH=$(CONFIGURE_LIBDIR.$(BITS))/pkgconfig CONFIGURE_ENV += OS_DEFINES="-D__USE_LEGACY_PROTOTYPES__" +CONFIGURE_ENV += CXXFLAGS='-xlibmil -xlibmopt -lCrun -lCstd -features=tmplrefstatic,no%except -D_XOPEN_SOURCE=500 -D__EXTENSIONS__ -template=no%extdef' +# -L.../dist/lib needs to be set otherwise it will report missing libnss3.so, +# libssl3.so, etc, while linking. +CONFIGURE_ENV += LDFLAGS="-z ignore -z interpose -B nodirect -L$(BUILD_DIR_32)/dist/lib" + CONFIGURE_ENV += MOZCONFIG=$(MOZCONFIG) CONFIGURE_ENV += "CC=$(CC)" @@ -180,6 +185,7 @@ REQUIRED_PACKAGES += library/graphics/pixman REQUIRED_PACKAGES += library/libevent REQUIRED_PACKAGES += library/libffi +REQUIRED_PACKAGES += library/nspr REQUIRED_PACKAGES += library/zlib REQUIRED_PACKAGES += system/library REQUIRED_PACKAGES += system/library/fontconfig @@ -192,4 +198,4 @@ REQUIRED_PACKAGES += x11/library/libx11 REQUIRED_PACKAGES += x11/library/libxext REQUIRED_PACKAGES += x11/library/libxrender -REQUIRED_PACKAGES += x11/library/toolkit/libxt +REQUIRED_PACKAGES += x11/library/toolkit/libxt diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/firefox.license --- a/components/desktop/firefox/firefox.license Tue Mar 01 10:33:35 2016 -0800 +++ b/components/desktop/firefox/firefox.license Tue Mar 01 12:56:53 2016 -0800 @@ -1,5 +1,3 @@ -Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved. - Mozilla Public License 2.0 Android Open Source License ANGLE License @@ -408,7 +406,7 @@ Apple/Mozilla NPRuntime License This license applies to the file dom/plugins/base/npruntime.h. -Copyright ? 2004, Apple Computer, Inc. and The Mozilla Foundation. +Copyright © 2004, Apple Computer, Inc. and The Mozilla Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -484,7 +482,7 @@ 1987, 1988, 1989 Digital Equipment Corporation, Maynard, Massachusetts. 1998 Keith Packard 2003 Richard Henderson -Copyright ? +Copyright © Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without @@ -1004,7 +1002,7 @@ libnestegg License This license applies to certain files in the directory media/libnestegg. -Copyright ? 2010 Mozilla Foundation +Copyright © 2010 Mozilla Foundation Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above @@ -1020,7 +1018,7 @@ libsoundtouch License This license applies to certain files in the directory media/libsoundtouch/src/. -The SoundTouch Library Copyright ? Olli Parviainen 2001-2012 +The SoundTouch Library Copyright © Olli Parviainen 2001-2012 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -1263,7 +1261,7 @@ Unicode License This license applies to certain files in the directories intl/icu and js/src/vm. -Copyright ? 1991-2012 Unicode, Inc. All rights reserved. Distributed +Copyright © 1991-2012 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html. Permission is hereby granted, free of charge, to any person obtaining a diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/firefox.p5m --- a/components/desktop/firefox/firefox.p5m Tue Mar 01 10:33:35 2016 -0800 +++ b/components/desktop/firefox/firefox.p5m Tue Mar 01 12:56:53 2016 -0800 @@ -18,7 +18,7 @@ # # CDDL HEADER END # -# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. # # pkg.linted actions are needed to prevent bad RUNPATH lint errors. @@ -115,6 +115,9 @@ file path=usr/lib/firefox/firefox mode=0555 pkg.linted.userland.action001.3=true file path=usr/lib/firefox/firefox-bin mode=0555 \ pkg.linted.userland.action001.3=true +file path=usr/lib/firefox/gmp-clearkey/0.1/clearkey.info +file path=usr/lib/firefox/gmp-clearkey/0.1/libclearkey.so mode=0555 \ + pkg.linted.userland.action001.3=true file path=usr/lib/firefox/libfreebl3.chk variant.arch=i386 file path=usr/lib/firefox/libfreebl3.so com.oracle.elfsign=false \ pkg.linted.userland.action001.3=true variant.arch=i386 @@ -134,19 +137,18 @@ file path=usr/lib/firefox/libnssutil3.so pkg.linted.userland.action001.3=true file path=usr/lib/firefox/libplc4.so pkg.linted.userland.action001.3=true file path=usr/lib/firefox/libplds4.so pkg.linted.userland.action001.3=true +file path=usr/lib/firefox/libreplace_jemalloc.so \ + pkg.linted.userland.action001.3=true file path=usr/lib/firefox/libsmime3.so pkg.linted.userland.action001.3=true file path=usr/lib/firefox/libsoftokn3.chk file path=usr/lib/firefox/libsoftokn3.so com.oracle.elfsign=false \ pkg.depend.bypass-generate=.* pkg.linted.userland.action001.3=true file path=usr/lib/firefox/libssl3.so pkg.linted.userland.action001.3=true file path=usr/lib/firefox/libxul.so pkg.linted.userland.action001.3=true -file path=usr/lib/firefox/mozilla-xremote-client mode=0555 \ - pkg.linted.userland.action001.3=true file path=usr/lib/firefox/omni.ja file path=usr/lib/firefox/platform.ini file path=usr/lib/firefox/plugin-container mode=0555 \ pkg.linted.userland.action001.3=true -file path=usr/lib/firefox/precomplete file path=usr/lib/firefox/removed-files file path=usr/lib/firefox/run-mozilla.sh mode=0555 file path=usr/lib/firefox/webapprt-stub mode=0555 \ diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-00-locale.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-00-locale.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,14 @@ +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 +@@ -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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-01-cairo-perf.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-01-cairo-perf.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,34 @@ +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 +@@ -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; +@@ -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; diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-02-libnspr_flt4.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-02-libnspr_flt4.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,15 @@ +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 +@@ -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] diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-03-strcasestr.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-03-strcasestr.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,15 @@ +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 +@@ -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); diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-04-check_test.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-04-check_test.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,14 @@ +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 +@@ -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): diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-05-sqlite3-unix-excl.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-05-sqlite3-unix-excl.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,17 @@ +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 +@@ -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); + diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-06-hnjfile.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-06-hnjfile.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,15 @@ +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/hnjalloc.h b/intl/hyphenation/hnjalloc.h +--- a/intl/hyphenation/hnjalloc.h ++++ b/intl/hyphenation/hnjalloc.h +@@ -24,6 +24,7 @@ + */ + + #include /* ensure stdio.h is loaded before our macros */ ++#include + + #undef FILE + #define FILE hnjFile diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-07-nsMathUtils.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-07-nsMathUtils.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,15 @@ +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 +@@ -13,6 +13,7 @@ + #include + + #ifdef SOLARIS ++#include + #include + #endif + diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-08-skip_mozbuild_test.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-08-skip_mozbuild_test.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,25 @@ +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 +@@ -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 +@@ -477,5 +477,5 @@ + self.assertEquals(e.exception.output, ['hello world']) + + +-if __name__ == '__main__': +- main() ++#if __name__ == '__main__': ++# main() diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-09-gthread-dlopen.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-09-gthread-dlopen.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,15 @@ +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 +@@ -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"); diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-10-webaudio_math.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-10-webaudio_math.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,26 @@ +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 +@@ -8,6 +8,7 @@ + #define ThreeDPoint_h_ + + #include ++#include + #include + + 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 +@@ -27,6 +27,7 @@ + + #define _USE_MATH_DEFINES + #include ++#include + #include + + namespace WebCore { diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-11-donot-delay-stopping-realplayer.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-11-donot-delay-stopping-realplayer.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,27 @@ +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 +@@ -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") +@@ -2910,6 +2911,8 @@ + && !aInstanceOwner->MatchPluginName("XStandard plugin") + && !aInstanceOwner->MatchPluginName("CMISS Zinc Plugin") + #endif ++ && !aInstanceOwner->MatchPluginName("RealPlayer") ++ && !aInstanceOwner->MatchPluginName("Helix") + ) { + nsCOMPtr evt = + new nsStopPluginRunnable(aInstanceOwner, aContent); diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-12-package_warning.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-12-package_warning.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,17 @@ +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 +@@ -17,7 +17,7 @@ + + # Some files have been already bundled with xulrunner + ifndef MOZ_MULET +-MOZ_PKG_FATAL_WARNINGS = 1 ++# MOZ_PKG_FATAL_WARNINGS = 1 + endif + + DEFINES += -DMOZ_APP_NAME=$(MOZ_APP_NAME) -DPREF_DIR=$(PREF_DIR) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-13-LocalFileUnix.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-13-LocalFileUnix.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,15 @@ +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 +@@ -14,6 +14,7 @@ + #include + #include + #include ++#include + #include + #include + #include diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-14-uname.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-14-uname.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,15 @@ +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 +@@ -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; + } + diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-15-ion_AsmJS_x86.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-15-ion_AsmJS_x86.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,16 @@ +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 +@@ -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]) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-16-mftt_infinity.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-16-mftt_infinity.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,33 @@ +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 +@@ -33,6 +33,7 @@ + + #include + #include ++#include + + using namespace moz_decimal_utils; + +@@ -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) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-17-xpt-as-flag.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-17-xpt-as-flag.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,38 @@ +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/Makefile.in b/xpcom/reflect/xptcall/md/unix/Makefile.in +--- a/xpcom/reflect/xptcall/md/unix/Makefile.in ++++ b/xpcom/reflect/xptcall/md/unix/Makefile.in +@@ -98,6 +98,7 @@ + -e 's/^\(STUB_ENTRY\)(\([0-9][0-9]\))/\12\(\2\)/' \ + -e 's/^\(STUB_ENTRY\)(\([0-9][0-9][0-9]\))/\13\(\2\)/' \ + $(DIST)/include/xptcstubsdef.inc > $@ ++ASFLAGS += -I. + ifeq (x86_64,$(OS_TEST)) + ASFLAGS += -xarch=amd64 + endif +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 +@@ -68,6 +68,9 @@ + 'xptcstubs_gcc_x86_unix.cpp' + ] + else: ++ GENERATED_FILES = [ ++ 'xptcstubsdef_asm.solx86', ++ ] + SOURCES += [ + 'xptcinvoke_asm_x86_solaris_SUNW.s', + 'xptcinvoke_x86_solaris.cpp', +@@ -267,9 +270,6 @@ + ] + + if CONFIG['OS_ARCH'] == 'SunOS' and CONFIG['OS_TEST'].find('86') == -1: +- GENERATED_FILES = [ +- 'xptcstubsdef_asm.solx86', +- ] + if CONFIG['HAVE_64BIT_BUILD']: + SOURCES += [ + 'xptcinvoke_sparcv9_solaris.cpp', diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-18-libvpx_compile.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-18-libvpx_compile.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,56 @@ +Can probably send upstream. + +diff --git a/media/libvpx/Makefile.in b/media/libvpx/Makefile.in +--- a/media/libvpx/Makefile.in ++++ b/media/libvpx/Makefile.in +@@ -14,6 +14,10 @@ + ASFLAGS += -D__ANDROID__ + endif + ++ifeq ($(OS_TARGET),SunOS) ++ASFLAGS+=-DSOLARIS=1 ++endif ++ + ifdef VPX_ARM_ASM + # Building on an ARM platform with a supported assembler, include + # the optimized assembly in the build. +@@ -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 $@ -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 +@@ -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 +@@ -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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-19-cubeb.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-19-cubeb.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,547 @@ +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 +@@ -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) +@@ -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 +@@ -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 +@@ -0,0 +1,500 @@ ++/* ++ * Copyright (c) 2013 Ginn Chen ++ * ++ * This program is made available under an ISC-style license. See the ++ * accompanying file LICENSE for details. ++ */ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#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 ++}; diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-20-gfx.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-20-gfx.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,28 @@ +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 +@@ -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 +@@ -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 + #include + #endif + diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-21-mozconfig_loader_bash.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-21-mozconfig_loader_bash.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,12 @@ +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 +@@ -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/. diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-22-snappy.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-22-snappy.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,25 @@ +Defined Endians. +Can potentially go upstream. + +diff --git a/configure b/configure +--- a/configure ++++ b/configure +@@ -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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-23-skia_gpu.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-23-skia_gpu.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,20 @@ +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/trunk/include/gpu/GrTypes.h b/gfx/skia/trunk/include/gpu/GrTypes.h +--- a/gfx/skia/trunk/include/gpu/GrTypes.h ++++ b/gfx/skia/trunk/include/gpu/GrTypes.h +@@ -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) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-24-test.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-24-test.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,47 @@ +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 +@@ -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 +@@ -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(); + +@@ -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 +@@ -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()); + diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-25-rules_mk.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-25-rules_mk.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,15 @@ +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 +@@ -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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-26-jit-test-multi-processes.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-26-jit-test-multi-processes.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,16 @@ +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 +@@ -134,7 +134,7 @@ + + check-jit-test:: + $(JITTEST_ASAN_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) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-27-stacksize.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-27-stacksize.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,16 @@ +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 +@@ -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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-28-configure.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-28-configure.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,55 @@ +Shell translations. + +diff --git a/js/src/configure b/js/src/configure +--- a/js/src/configure ++++ b/js/src/configure +@@ -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. +@@ -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 +@@ -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 +@@ -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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-29-sparc-xptcall.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-29-sparc-xptcall.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,55 @@ +See Mozilla bug #1153707 - [JavaScript Error: "invalid 'in' operand +aLivemarkInfo"] when calling method: [mozIAsyncLivemarks::getLivemark]. +Has been sent upstream in the past but does not seem to have been accepted. + +diff --git a/js/xpconnect/src/XPCWrappedJSClass.cpp b/js/xpconnect/src/XPCWrappedJSClass.cpp +--- a/js/xpconnect/src/XPCWrappedJSClass.cpp ++++ b/js/xpconnect/src/XPCWrappedJSClass.cpp +@@ -1295,21 +1295,9 @@ + break; + } + +-// see bug #961488 +-#if (defined(XP_UNIX) && !defined(XP_MACOSX) && !defined(_AIX)) && \ +- ((defined(__sparc) && !defined(__sparcv9) && !defined(__sparcv9__)) || \ +- (defined(__powerpc__) && !defined (__powerpc64__))) +- if (type_tag == nsXPTType::T_JSVAL) { +- if (!XPCConvert::JSData2Native(*(void**)(&pv->val), val, type, +- ¶m_iid, nullptr)) +- break; +- } else +-#endif +- { +- if (!XPCConvert::JSData2Native(&pv->val, val, type, +- ¶m_iid, nullptr)) +- break; +- } ++ if (!XPCConvert::JSData2Native(&pv->val, val, type, ++ ¶m_iid, nullptr)) ++ break; + } + + // if any params were dependent, then we must iterate again to convert them. +diff --git a/xpcom/reflect/xptcall/md/unix/xptcstubs_sparc_solaris.cpp b/xpcom/reflect/xptcall/md/unix/xptcstubs_sparc_solaris.cpp +--- a/xpcom/reflect/xptcall/md/unix/xptcstubs_sparc_solaris.cpp ++++ b/xpcom/reflect/xptcall/md/unix/xptcstubs_sparc_solaris.cpp +@@ -52,13 +52,17 @@ + + if(param.IsOut() || !type.IsArithmetic()) + { +- dp->val.p = (void*) *ap; ++ if (type == nsXPTType::T_JSVAL) ++ dp->val.p = *((void**)*ap); ++ else ++ dp->val.p = (void*) *ap; ++ + continue; + } + // else + switch(type) + { +- case nsXPTType::T_I8 : dp->val.i8 = *((int32_t*) ap); break; ++ case nsXPTType::T_I8 : dp->val.i8 = *((int32_t*) ap); break; + case nsXPTType::T_I16 : dp->val.i16 = *((int32_t*) ap); break; + case nsXPTType::T_I32 : dp->val.i32 = *((int32_t*) ap); break; + case nsXPTType::T_DOUBLE : diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-30-other-buildissue.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-30-other-buildissue.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,104 @@ +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 +@@ -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 +@@ -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 +@@ -46,6 +46,10 @@ + #include "FIRFilter.h" + #include "cpu_detect.h" + ++#ifdef __sun ++#include ++#endif ++ + #ifdef _MSC_VER + #include + #define alloca _alloca +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 +@@ -80,6 +80,10 @@ + #include "RateTransposer.h" + #include "cpu_detect.h" + ++#ifdef __sun ++#include ++#endif ++ + #ifdef _MSC_VER + #include + #define alloca _alloca +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 +@@ -917,11 +917,16 @@ + 'android_app_version_name%': 'Developer Build', + 'android_app_version_code%': 0, + +- 'sas_dll_exists': '= 199901L) /* C99 */ ++#if defined(__STDC_VERSION__) && !defined(__cplusplus) && (__STDC_VERSION__ >= 199901L) /* C99 */ + /* "restrict" is a known keyword */ + #else + # define restrict /* Disable restrict */ diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-35-mozalloc.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-35-mozalloc.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,31 @@ +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 +@@ -208,6 +208,8 @@ + } + #endif + ++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 +@@ -63,7 +63,11 @@ + // Define abort() here, so that it is used instead of the system abort(). This + // lets us control the behavior when aborting, in order to get better results + // on *NIX platforms. See mozalloc_abort for details. ++#if defined(SOLARIS) ++void std::abort(void) ++#else + void abort(void) ++#endif + { + #ifdef MOZ_WIDGET_ANDROID + char msg[64] = {}; diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-36-xpopen.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-36-xpopen.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,15 @@ +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 +@@ -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' diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-37-ipc.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-37-ipc.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,2005 @@ +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 +@@ -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 +@@ -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) + { +@@ -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", "netsc@pe"); + #else +@@ -115,7 +115,7 @@ + string + UnmungePluginDsoPath(const string& munged) + { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_SOLARIS) + return ReplaceAll(munged, "netsc@pe", "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 +@@ -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"); + +@@ -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; +@@ -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); +@@ -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 +@@ -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/dom/plugins/ipc/PluginProcessParent.cpp b/dom/plugins/ipc/PluginProcessParent.cpp +--- a/dom/plugins/ipc/PluginProcessParent.cpp ++++ b/dom/plugins/ipc/PluginProcessParent.cpp +@@ -143,6 +143,9 @@ + else if (base::PROCESS_ARCH_ARM & pluginLibArchitectures & containerArchitectures) { + selectedArchitecture = base::PROCESS_ARCH_ARM; + } ++ else if (base::PROCESS_ARCH_SPARC & pluginLibArchitectures & containerArchitectures) { ++ selectedArchitecture = base::PROCESS_ARCH_SPARC; ++ } + else { + return false; + } +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 +@@ -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/moz.build b/ipc/chromium/moz.build +--- a/ipc/chromium/moz.build ++++ b/ipc/chromium/moz.build +@@ -205,17 +205,25 @@ + 'moc_message_pump_qt.cc', + ] + if not CONFIG['MOZ_NATIVE_LIBEVENT']: +- if CONFIG['OS_TARGET'] != 'Android': ++ if CONFIG['OS_TARGET'] != 'SunOS': ++ if CONFIG['OS_TARGET'] != 'Android': ++ SOURCES += [ ++ 'src/third_party/libevent/epoll_sub.c', ++ ] + SOURCES += [ +- 'src/third_party/libevent/epoll_sub.c', ++ 'src/third_party/libevent/epoll.c', + ] +- SOURCES += [ +- 'src/third_party/libevent/epoll.c', +- ] + if CONFIG['OS_TARGET'] == 'Android': + LOCAL_INCLUDES += ['src/third_party/libevent/android'] + else: +- LOCAL_INCLUDES += ['src/third_party/libevent/linux'] ++ if CONFIG['OS_TARGET'] != 'SunOS': ++ LOCAL_INCLUDES += ['src/third_party/libevent/linux'] ++ else: ++ LOCAL_INCLUDES += ['src/third_party/libevent/solaris'] ++ SOURCES += [ ++ 'src/third_party/libevent/devpoll.c', ++ 'src/third_party/libevent/evport.c', ++ ] + + if os_bsd: + SOURCES += [ +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 +@@ -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 +@@ -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. + } +@@ -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; +@@ -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) { +@@ -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. + } +@@ -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; +@@ -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 +@@ -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_.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 +@@ -12,7 +12,7 @@ + + #if defined(OS_WIN) + #include +-#elif defined(ANDROID) ++#elif defined(ANDROID) || defined(OS_SOLARIS) + #include + #elif defined(OS_POSIX) + #include +@@ -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* entries, ++ const FilePath& source, bool show_links); ++ ++ // The files in the current directory ++ std::vector 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 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 +@@ -8,7 +8,7 @@ + #include + #include + #include +-#ifndef ANDROID ++#if !defined(ANDROID) && !defined(OS_SOLARIS) + #include + #endif + #include +@@ -67,9 +67,34 @@ + if (!recursive) + return (rmdir(path_str) == 0); + +-#ifdef ANDROID ++#if defined(ANDROID) + // XXX Need ftsless impl for bionic + return false; ++#elif defined(OS_SOLARIS) ++ bool success = true; ++ std::stack directories; ++ directories.push(path.value()); ++ FileEnumerator traversal(path, true, static_cast( ++ FileEnumerator::FILES | FileEnumerator::DIRECTORIES | ++ FileEnumerator::SHOW_SYM_LINKS)); ++ for (FilePath current = traversal.Next(); success && !current.empty(); ++ current = traversal.Next()) { ++ FileEnumerator::FindInfo info; ++ traversal.GetFindInfo(&info); ++ ++ if (S_ISDIR(info.stat.st_mode)) ++ directories.push(current.value()); ++ else ++ success = (unlink(current.value().c_str()) == 0); ++ } ++ ++ while (success && !directories.empty()) { ++ FilePath dir = FilePath(directories.top()); ++ directories.pop(); ++ success = (rmdir(dir.value().c_str()) == 0); ++ } ++ ++ return success; + #else + bool success = true; + int ftsflags = FTS_PHYSICAL | FTS_NOSTAT; +@@ -140,14 +165,98 @@ + return false; + } + +-#ifdef ANDROID ++#if defined(ANDROID) + // XXX Need ftsless impl for bionic + return false; ++#elif defined(OS_SOLARIS) ++ // This function does not properly handle destinations within the source ++ FilePath real_to_path = to_path; ++ if (PathExists(real_to_path)) { ++ if (!AbsolutePath(&real_to_path)) ++ return false; ++ } else { ++ real_to_path = real_to_path.DirName(); ++ if (!AbsolutePath(&real_to_path)) ++ return false; ++ } ++ FilePath real_from_path = from_path; ++ if (!AbsolutePath(&real_from_path)) ++ return false; ++ if (real_to_path.value().size() >= real_from_path.value().size() && ++ real_to_path.value().compare(0, real_from_path.value().size(), ++ real_from_path.value()) == 0) ++ return false; ++ ++ bool success = true; ++ FileEnumerator::FILE_TYPE traverse_type = ++ static_cast(FileEnumerator::FILES | ++ FileEnumerator::SHOW_SYM_LINKS); ++ if (recursive) ++ traverse_type = static_cast( ++ traverse_type | FileEnumerator::DIRECTORIES); ++ FileEnumerator traversal(from_path, recursive, traverse_type); ++ ++ // We have to mimic windows behavior here. |to_path| may not exist yet, ++ // start the loop with |to_path|. ++ FileEnumerator::FindInfo info; ++ FilePath current = from_path; ++ if (stat(from_path.value().c_str(), &info.stat) < 0) { ++ CHROMIUM_LOG(ERROR) << "CopyDirectory() couldn't stat source directory: " << ++ from_path.value() << " errno = " << errno; ++ success = false; ++ } ++ struct stat to_path_stat; ++ FilePath from_path_base = from_path; ++ if (recursive && stat(to_path.value().c_str(), &to_path_stat) == 0 && ++ S_ISDIR(to_path_stat.st_mode)) { ++ // If the destination already exists and is a directory, then the ++ // top level of source needs to be copied. ++ from_path_base = from_path.DirName(); ++ } ++ ++ // The Windows version of this function assumes that non-recursive calls ++ // will always have a directory for from_path. ++ DCHECK(recursive || S_ISDIR(info.stat.st_mode)); ++ ++ while (success && !current.empty()) { ++ // current is the source path, including from_path, so paste ++ // the suffix after from_path onto to_path to create the target_path. ++ std::string suffix(¤t.value().c_str()[from_path_base.value().size()]); ++ // Strip the leading '/' (if any). ++ if (!suffix.empty()) { ++ DCHECK_EQ('/', suffix[0]); ++ suffix.erase(0, 1); ++ } ++ const FilePath target_path = to_path.Append(suffix); ++ ++ if (S_ISDIR(info.stat.st_mode)) { ++ if (mkdir(target_path.value().c_str(), info.stat.st_mode & 01777) != 0 && ++ errno != EEXIST) { ++ CHROMIUM_LOG(ERROR) << "CopyDirectory() couldn't create directory: " << ++ target_path.value() << " errno = " << errno; ++ success = false; ++ } ++ } else if (S_ISREG(info.stat.st_mode)) { ++ if (!CopyFile(current, target_path)) { ++ CHROMIUM_LOG(ERROR) << "CopyDirectory() couldn't create file: " << ++ target_path.value(); ++ success = false; ++ } ++ } else { ++ CHROMIUM_LOG(WARNING) << "CopyDirectory() skipping non-regular file: " << ++ current.value(); ++ } ++ ++ current = traversal.Next(); ++ traversal.GetFindInfo(&info); ++ } ++ ++ return success; + #else + char* dir_list[] = { top_dir, NULL }; + FTS* fts = fts_open(dir_list, FTS_PHYSICAL | FTS_NOSTAT, NULL); + if (!fts) { +- CHROMIUM_LOG(ERROR) << "fts_open failed: " << strerror(errno); ++ CHROMIUM_CHROMIUM_LOG(ERROR) << "fts_open failed: " << strerror(errno); + return false; + } + +@@ -203,11 +312,11 @@ + break; + case FTS_SL: // Symlink. + case FTS_SLNONE: // Symlink with broken target. +- CHROMIUM_LOG(WARNING) << "CopyDirectory() skipping symbolic link: " << ++ CHROMIUM_CHROMIUM_LOG(WARNING) << "CopyDirectory() skipping symbolic link: " << + ent->fts_path; + continue; + case FTS_DEFAULT: // Some other sort of file. +- CHROMIUM_LOG(WARNING) << "CopyDirectory() skipping file of unknown type: " << ++ CHROMIUM_CHROMIUM_LOG(WARNING) << "CopyDirectory() skipping file of unknown type: " << + ent->fts_path; + continue; + default: +@@ -227,7 +336,7 @@ + } + + if (error) { +- CHROMIUM_LOG(ERROR) << "CopyDirectory(): " << strerror(error); ++ CHROMIUM_CHROMIUM_LOG(ERROR) << "CopyDirectory(): " << strerror(error); + return false; + } + return true; +@@ -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 +@@ -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 entries; ++ if (!ReadDirectory(&entries, root_path_, file_type_ & SHOW_SYM_LINKS)) ++ continue; ++ ++ directory_entries_.clear(); ++ current_directory_entry_ = 0; ++ for (std::vector::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* 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 +@@ -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 + #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 +@@ -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 +@@ -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 +@@ -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 +@@ -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_; +@@ -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. +@@ -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 +@@ -6,6 +6,10 @@ + + #include + #include ++#if defined(OS_SOLARIS) ++#include ++#include ++#endif + #if defined(ANDROID) || defined(OS_POSIX) + #include + #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 +@@ -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 +@@ -22,7 +22,7 @@ + #elif defined(OS_POSIX) + #include + 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 + 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 +@@ -27,6 +27,12 @@ + #include + #endif + ++#if defined(OS_SOLARIS) ++#include ++#include ++#include ++#endif ++ + #if defined(OS_MACOSX) + namespace base { + void InitThreading(); +@@ -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) +@@ -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 +@@ -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 +@@ -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 +@@ -25,6 +25,10 @@ + #include + #endif + ++#if defined(OS_SOLARIS) ++#define NAME_MAX 14 ++#endif ++ + #include + #include + #include +@@ -71,7 +75,8 @@ + PROCESS_ARCH_I386 = 0x1, + PROCESS_ARCH_X86_64 = 0x2, + PROCESS_ARCH_PPC = 0x4, +- PROCESS_ARCH_ARM = 0x8 ++ PROCESS_ARCH_ARM = 0x8, ++ PROCESS_ARCH_SPARC = 0x10 + }; + + inline ProcessArchitecture GetCurrentProcessArchitecture() +@@ -85,6 +90,8 @@ + currentArchitecture = base::PROCESS_ARCH_PPC; + #elif defined(ARCH_CPU_ARMEL) + currentArchitecture = base::PROCESS_ARCH_ARM; ++#elif defined(ARCH_CPU_SPARC) ++ currentArchitecture = base::PROCESS_ARCH_SPARC; + #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 +@@ -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) +@@ -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 +@@ -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; + } + +@@ -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 +@@ -119,7 +119,7 @@ + + // static + std::string SysInfo::OperatingSystemName() { +- utsname info; ++ struct utsname info; + if (uname(&info) < 0) { + NOTREACHED(); + return ""; +@@ -129,7 +129,7 @@ + + // static + std::string SysInfo::OperatingSystemVersion() { +- utsname info; ++ struct utsname info; + if (uname(&info) < 0) { + NOTREACHED(); + return ""; +@@ -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 +@@ -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; +@@ -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 +@@ -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(×truct); + #else + if (is_local) +@@ -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; +@@ -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 +@@ -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 +@@ -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 +@@ -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 +@@ -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 +@@ -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 +@@ -4,6 +4,10 @@ + + #include "chrome/common/file_descriptor_set_posix.h" + ++#if defined(OS_SOLARIS) ++#include ++#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 +@@ -13,7 +13,7 @@ + + #if defined(OS_WIN) + #include +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_SOLARIS) + #include "chrome/common/x11_util.h" + #endif + +@@ -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 +@@ -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); +@@ -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 +@@ -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 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 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 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 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 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 header file. */ ++#define _EVENT_HAVE_NETDB_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef _EVENT_HAVE_NETINET_IN6_H */ ++ ++/* Define to 1 if you have the 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 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 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 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 */ ++#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 header file. */ ++#define _EVENT_HAVE_STDARG_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_STDDEF_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_STDINT_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_STDLIB_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_STRINGS_H 1 ++ ++/* Define to 1 if you have the 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 header file. */ ++#define _EVENT_HAVE_SYS_DEVPOLL_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef _EVENT_HAVE_SYS_EPOLL_H 1 */ ++ ++/* Define to 1 if you have the header file. */ ++/* #define _EVENT_HAVE_SYS_EVENTFD_H 1 */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef _EVENT_HAVE_SYS_EVENT_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_SYS_IOCTL_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_SYS_MMAN_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_SYS_PARAM_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_SYS_QUEUE_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_SYS_SELECT_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_SYS_SENDFILE_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_SYS_SOCKET_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_SYS_STAT_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef _EVENT_HAVE_SYS_SYSCTL_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_SYS_TIME_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_SYS_TYPES_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_SYS_UIO_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define _EVENT_HAVE_SYS_WAIT_H 1 ++ ++/* Define if TAILQ_FOREACH is defined in */ ++#define _EVENT_HAVE_TAILQFOREACH 1 ++ ++/* Define if timeradd is defined in */ ++#define _EVENT_HAVE_TIMERADD 1 ++ ++/* Define if timerclear is defined in */ ++#define _EVENT_HAVE_TIMERCLEAR 1 ++ ++/* Define if timercmp is defined in */ ++#define _EVENT_HAVE_TIMERCMP 1 ++ ++/* Define if timerisset is defined in */ ++#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 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 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 and . */ ++#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 does not define. */ ++/* #undef _EVENT_pid_t */ ++ ++/* Define to `unsigned int' if does not define. */ ++/* #undef _EVENT_size_t */ ++ ++/* Define to unsigned int if you dont have it */ ++/* #undef _EVENT_socklen_t */ ++ ++/* Define to `int' if 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 +@@ -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 + }; +@@ -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 +@@ -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 +@@ -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 +@@ -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)) +@@ -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 +@@ -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 +@@ -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 +@@ -55,6 +55,9 @@ + virtual ~SharedMemorySysV() + { + shmdt(mData); ++#ifdef OS_SOLARIS ++ shmctl(mHandle, IPC_RMID, 0); ++#endif + mHandle = -1; + mData = nullptr; + } +@@ -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; + +@@ -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 +@@ -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 +@@ -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 +@@ -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 +@@ -25,6 +25,7 @@ + # endif + # endif + #endif ++extern "C" int madvise(caddr_t, size_t, int); + + extern "C" { + uintptr_t gMozillaPoisonValue; +@@ -129,7 +130,7 @@ + static bool + ProbeRegion(uintptr_t aRegion, uintptr_t aSize) + { +- if (madvise(reinterpret_cast(aRegion), aSize, MADV_NORMAL)) { ++ if (madvise(reinterpret_cast(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 +@@ -103,6 +103,7 @@ + #include + + #include ++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 +@@ -40,7 +40,8 @@ + #include + #include + #include +-#elif defined(XP_WIN) ++extern "C" int madvise(caddr_t, size_t, int); ++#elif defined(XP_WIN) || defined(XP_OS2) + #include + #endif + +@@ -612,7 +613,7 @@ + uint32_t readaheadLength = xtolong(startp); + if (readaheadLength) { + #if defined(XP_UNIX) +- madvise(const_cast(startp), readaheadLength, MADV_WILLNEED); ++ madvise((caddr_t)const_cast(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 +@@ -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 +@@ -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 +@@ -338,17 +338,17 @@ ProcessLink::OnChannelOpened() + /*assert*/mTransport->Connect(); + } + + void + ProcessLink::OnTakeConnectedChannel() + { + AssertIOThread(); + +- queue pending; ++ std::queue pending; + { + MonitorAutoLock lock(*mChan->mMonitor); + + mChan->mChannelState = ChannelConnected; + + mExistingListener = mTransport->set_listener(this); + if (mExistingListener) { + mExistingListener->GetQueuedMessages(pending); diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-38-sparc-align.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-38-sparc-align.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,69 @@ +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 +@@ -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; + 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 +@@ -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 +@@ -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 ++ + char aLocal; + GeckoProfilerInitRAII profilerGuard(&aLocal); + diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-39-gc-memory.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-39-gc-memory.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,137 @@ +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 +@@ -12,21 +12,16 @@ + #include "js/HeapAPI.h" + #include "vm/Runtime.h" + + #if defined(XP_WIN) + + #include "jswin.h" + #include + +-#elif defined(SOLARIS) +- +-#include +-#include +- + #elif defined(XP_UNIX) + + #include + #include + #include + #include + #include + #include +@@ -288,89 +283,16 @@ AllocateMappedContent(int fd, size_t off + + // Deallocate mapped memory for object. + void + DeallocateMappedContent(void* p, size_t length) + { + // 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; +-} +- +-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 + InitMemorySubsystem() + { + if (pageSize == 0) + pageSize = allocGranularity = size_t(sysconf(_SC_PAGESIZE)); + } +@@ -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; diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-40-libstagefright.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-40-libstagefright.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,75 @@ +Do not use certain header files. We define bswap_16 ourselves. +Do not plan to send upstream. + +diff --git a/media/libstagefright/frameworks/av/media/libstagefright/id3/ID3.cpp b/media/libstagefright/frameworks/av/media/libstagefright/id3/ID3.cpp +--- a/media/libstagefright/frameworks/av/media/libstagefright/id3/ID3.cpp ++++ b/media/libstagefright/frameworks/av/media/libstagefright/id3/ID3.cpp +@@ -20,17 +20,23 @@ + #include + + #include "../include/ID3.h" + + #include + #include + #include + #include +-#include ++//#include ++ ++#ifndef bswap_16 ++# define bswap_16(p) \ ++ (((((uint16_t)(p)) & 0x00ff) << 8) | \ ++ (((uint16_t)(p)) >> 8)); ++#endif + + namespace stagefright { + + static const size_t kMaxMetadataSize = 3 * 1024 * 1024; + + struct MemorySource : public DataSource { + MemorySource(const uint8_t *data, size_t size) + : mData(data), +diff --git a/media/libstagefright/moz.build b/media/libstagefright/moz.build +--- a/media/libstagefright/moz.build ++++ b/media/libstagefright/moz.build +@@ -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' +diff --git a/media/libstagefright/system/core/include/cutils/properties.h b/media/libstagefright/system/core/include/cutils/properties.h +--- a/media/libstagefright/system/core/include/cutils/properties.h ++++ b/media/libstagefright/system/core/include/cutils/properties.h +@@ -12,17 +12,17 @@ + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + #ifndef __CUTILS_PROPERTIES_H + #define __CUTILS_PROPERTIES_H + +-#include ++//#include + #include + + #ifdef __cplusplus + extern "C" { + #endif + + /* System properties are *small* name value pairs managed by the + ** property service. If your data doesn't fit in the provided diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-41-static-xul-components.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-41-static-xul-components.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,27 @@ +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 +@@ -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 +@@ -1,3 +1,4 @@ + #include "mozilla/Module.h" + +-NSMODULE_DEFN(start_kPStaticModules) = nullptr; ++static const mozilla::Module kStartModule = { 0 }; ++NSMODULE_DEFN(start_kPStaticModules) = &kStartModule; diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-42-libxul.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-42-libxul.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,46 @@ +Solaris specific patches. +Do not plan to send upstream. + +diff --git a/toolkit/library/libxul.mk b/toolkit/library/libxul.mk +--- a/toolkit/library/libxul.mk ++++ b/toolkit/library/libxul.mk +@@ -32,16 +32,26 @@ endif + ifeq (Linux,$(OS_ARCH)) + # Create a GDB Python auto-load file alongside the libxul shared library in + # the build directory. + PP_TARGETS += LIBXUL_AUTOLOAD + LIBXUL_AUTOLOAD = $(topsrcdir)/toolkit/library/libxul.so-gdb.py.in + LIBXUL_AUTOLOAD_FLAGS := -Dtopsrcdir=$(abspath $(topsrcdir)) + endif + ++ifdef MOZ_MEMORY ++ifeq ($(OS_ARCH),SunOS) ++OS_LDFLAGS += $(LIBXUL_DIST)/lib/libmemory.a ++endif ++endif ++ ++ifeq ($(OS_ARCH),SunOS) ++OS_LDFLAGS += -lm -Wl,-z,defs ++endif ++ + # BFD ld doesn't create multiple PT_LOADs as usual when an unknown section + # exists. Using an implicit linker script to make it fold that section in + # .data.rel.ro makes it create multiple PT_LOADs. That implicit linker + # script however makes gold misbehave, first because it doesn't like that + # the linker script is given after crtbegin.o, and even past that, replaces + # the default section rules with those from the script instead of + # supplementing them. Which leads to a lib with a huge load of sections. + ifneq (OpenBSD,$(OS_TARGET)) +@@ -58,8 +68,12 @@ else + get_first_and_last = $(TOOLCHAIN_PREFIX)nm -g $1 | grep _NSModule$$ | grep -vw refptr | sort | sed -n 's/^.* _*\([^ ]*\)$$/\1/;1p;$$p' + endif + + LOCAL_CHECKS = test "$$($(get_first_and_last) | xargs echo)" != "start_kPStaticModules_NSModule end_kPStaticModules_NSModule" && echo "NSModules are not ordered appropriately" && exit 1 || exit 0 + + ifeq (Linux,$(OS_ARCH)) + LOCAL_CHECKS += ; test "$$($(TOOLCHAIN_PREFIX)readelf -l $1 | awk '$1 == "LOAD" { t += 1 } END { print t }')" -le 1 && echo "Only one PT_LOAD segment" && exit 1 || exit 0 + endif ++ ++ifeq (SunOS,$(OS_ARCH)) ++LOCAL_CHECKS += ; test "$$($(TOOLCHAIN_PREFIX)readelf -l $1 | awk '$1 == "LOAD" { t += 1 } END { print t }')" -le 1 && echo "Only one PT_LOAD segment" && exit 1 || exit 0 ++endif diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-43-xpcom.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-43-xpcom.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,25 @@ +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 +@@ -11,17 +11,17 @@ + #include + #else + #include + #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() diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-44-readahead.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-44-readahead.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,28 @@ +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 +@@ -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) { diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-45-wifi-scanner.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-45-wifi-scanner.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,73 @@ +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 +@@ -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 &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 +@@ -29,7 +29,7 @@ + data and xhr it to the location server. + */ + +-let gLocationRequestTimeout = 5000; ++let gLocationRequestTimeout = 30000; + + let gWifiScanningEnabled = true; + let gCellScanningEnabled = false; diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-46-dtrace.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-46-dtrace.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,58 @@ +See Mozilla bug #702179 - dtrace probes are not installed on Solaris with +static js lib. +dtrace will trim the function name (too long). +Do not plan to send upstream. + +diff -r abcf3e3a52d4 js/src/Makefile.in +--- a/js/src/Makefile.in Sat Sep 05 10:14:47 2015 +0800 ++++ b/js/src/Makefile.in Sun Sep 13 12:59:09 2015 +0800 +@@ -16,7 +16,6 @@ + + run_for_side_effects := $(shell echo 'MAKE: $(MAKE)') + +-DIST_INSTALL = 1 + NO_EXPAND_LIBS = 1 + + ifdef JS_HAS_CTYPES +diff -r abcf3e3a52d4 toolkit/library/libxul.mk +--- a/toolkit/library/libxul.mk Sat Sep 05 10:14:47 2015 +0800 ++++ b/toolkit/library/libxul.mk Sun Sep 13 12:59:09 2015 +0800 +@@ -44,7 +44,7 @@ + endif + + ifeq ($(OS_ARCH),SunOS) +-OS_LDFLAGS += -lm -Wl,-z,defs ++OS_LDFLAGS += -lm -lsendfile -Wl,-z,defs ../../js/src/js-dtrace.o + endif + + # BFD ld doesn't create multiple PT_LOADs as usual when an unknown section +diff -r abcf3e3a52d4 js/src/jsobj.cpp +--- a/js/src/jsobj.cpp Sat Sep 05 10:14:47 2015 +0800 ++++ b/js/src/jsobj.cpp Sun Sep 13 12:59:09 2015 +0800 +@@ -1233,6 +1233,8 @@ + !proto.toObject()->is(); + } + ++#pragma weak _ZN2js29NewObjectWithGivenTaggedProtoEPNS_16ExclusiveContextEPKNS_5ClassEN2JS6HandleINS_11TaggedProtoEEENS6_IP8JSObjectEENS_2gc = _ZN2js29NewObjectWithGivenTaggedProtoEPNS_16ExclusiveContextEPKNS_5ClassEN2JS6HandleINS_11TaggedProtoEEENS6_IP8JSObjectEENS_2gc9AllocKindENS_13NewObjectKindE ++ + JSObject* + js::NewObjectWithGivenTaggedProto(ExclusiveContext* cxArg, const Class* clasp, + Handle proto, HandleObject parentArg, +@@ -1386,6 +1388,8 @@ + !cxArg->asJSContext()->compartment()->hasObjectMetadataCallback(); + } + ++#pragma weak _ZN2js29NewObjectWithClassProtoCommonEPNS_16ExclusiveContextEPKNS_5ClassEN2JS6HandleIP8JSObjectEES9_NS_2gc9AllocKindENS_13NewOb = _ZN2js29NewObjectWithClassProtoCommonEPNS_16ExclusiveContextEPKNS_5ClassEN2JS6HandleIP8JSObjectEES9_NS_2gc9AllocKindENS_13NewObjectKindE ++ + JSObject* + js::NewObjectWithClassProtoCommon(ExclusiveContext* cxArg, const Class* clasp, + HandleObject protoArg, HandleObject maybeParent, +@@ -1465,6 +1469,8 @@ + * Create a plain object with the specified group. This bypasses getNewGroup to + * avoid losing creation site information for objects made by scripted 'new'. + */ ++ ++#pragma weak _ZN2js24NewObjectWithGroupCommonEP9JSContextN2JS6HandleIPNS_11ObjectGroupEEENS3_IP8JSObjectEENS_2gc9AllocKindENS_13NewObjectKin = _ZN2js24NewObjectWithGroupCommonEP9JSContextN2JS6HandleIPNS_11ObjectGroupEEENS3_IP8JSObjectEENS_2gc9AllocKindENS_13NewObjectKindE + JSObject* + js::NewObjectWithGroupCommon(JSContext* cx, HandleObjectGroup group, HandleObject parent, + gc::AllocKind allocKind, NewObjectKind newKind) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox-47-unreachable.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/firefox/patches/firefox-47-unreachable.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,60 @@ +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 +@@ -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_ENABLE_DEBUG_TRACE) || defined(ANGLE_ENABLE_DEBUG_ANNOTATIONS) +-#define ERR(message, ...) gl::trace(false, "err: %s(%d): " message "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__) ++#define FFERR(message, ...) gl::trace(false, "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. +@@ -77,7 +77,7 @@ namespace gl + #if !defined(NDEBUG) + #define ASSERT(expression) do { \ + 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); \ + } while(0) + #define UNUSED_ASSERTION_VARIABLE(variable) +@@ -116,11 +116,11 @@ namespace gl + // A macro for code which is not expected to be reached under valid assumptions + #if !defined(NDEBUG) + #define UNREACHABLE() do { \ +- ERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__); \ ++ FFERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__); \ + assert(false); \ + } while(0) + #else +- #define UNREACHABLE() ERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__) ++ #define UNREACHABLE() FFERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__) + #endif + + // A macro that determines whether an object has a given runtime type. +--- mozilla-esr38/gfx/angle/src/common/winrt/IInspectableNativeWindow.cpp 2015-10-26 15:51:25.857595462 -0700 ++++ mozilla-esr38/gfx/angle/src/common/winrt/IInspectableNativeWindow.cpp 2015-10-26 15:50:59.541429136 -0700 +@@ -44,7 +44,7 @@ bool NativeWindow::initialize() + } + else + { +- ERR("Invalid IInspectable EGLNativeWindowType detected. Valid IInspectables include ICoreWindow and IPropertySet"); ++ FFERR("Invalid IInspectable EGLNativeWindowType detected. Valid IInspectables include ICoreWindow and IPropertySet"); + } + + return false; +@@ -127,7 +127,7 @@ bool isEGLConfiguredPropertySet(EGLNativ + // considered invalid. + if (SUCCEEDED(result) && !hasEglNativeWindowPropertyKey) + { +- ERR("Could not find EGLNativeWindowTypeProperty in IPropertySet. Valid EGLNativeWindowTypeProperty values include ICoreWindow"); ++ FFERR("Could not find EGLNativeWindowTypeProperty in IPropertySet. Valid EGLNativeWindowTypeProperty values include ICoreWindow"); + return false; + } + diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox100-39-cairo-perf.patch --- a/components/desktop/firefox/patches/firefox100-39-cairo-perf.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +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. - ---- mozilla-esr31/gfx/cairo/cairo/src/cairo-xlib-surface.c.orig 2015-06-04 17:42:51.419088049 -0700 -+++ mozilla-esr31/gfx/cairo/cairo/src/cairo-xlib-surface.c 2015-06-04 17:42:51.424665839 -0700 -@@ -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; -@@ -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; diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox12-00-libnspr_flt4.patch --- a/components/desktop/firefox/patches/firefox12-00-libnspr_flt4.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -This adds a library necessary for sparc. -This will probably not be sent upstream because it would be difficult to -add a sparc-only ifdef condition for this. - ---- mozilla-esr31/browser/installer/package-manifest.in.orig 2015-06-04 17:42:52.445166224 -0700 -+++ mozilla-esr31/browser/installer/package-manifest.in 2015-06-04 17:42:52.450333944 -0700 -@@ -741,6 +741,7 @@ - bin/libfreebl_32fpu_3.so - bin/libfreebl_32int_3.so - bin/libfreebl_32int64_3.so -+bin/cpu/sparcv8plus/libnspr_flt4.so - #endif - - ; [Updater] diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox16-48-sparc-lea.patch --- a/components/desktop/firefox/patches/firefox16-48-sparc-lea.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -Implements PolyIC for sparc. -This is going away in the future so no need to send upstream. - ---- mozilla-esr31/js/src/assembler/assembler/MacroAssemblerSparc.h.orig 2015-06-04 17:42:51.582947696 -0700 -+++ mozilla-esr31/js/src/assembler/assembler/MacroAssemblerSparc.h 2015-06-04 17:42:51.585565407 -0700 -@@ -1005,9 +1005,12 @@ - - void lea(BaseIndex address, RegisterID dest) - { -- // lea only used by PolyIC. -- // PolyIC is not enabled for sparc now. -- ASSERT(0); -+ move(address.index, dest); -+ if (address.scale != 0) -+ lshift32(Imm32(address.scale), dest); -+ if (address.offset) -+ add32(Imm32(address.offset), dest); -+ add32(address.base, dest); - } - - void add32(Imm32 imm, AbsoluteAddress address) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox18-93-libffi-sparc.patch --- a/components/desktop/firefox/patches/firefox18-93-libffi-sparc.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -This is already upstream in libffi, but not yet in Mozilla. - ---- mozilla-esr31/js/src/ctypes/libffi/src/sparc/ffi.c.orig 2015-06-04 17:42:52.335127713 -0700 -+++ mozilla-esr31/js/src/ctypes/libffi/src/sparc/ffi.c 2015-06-04 17:42:52.343504239 -0700 -@@ -406,8 +406,50 @@ - /* We don't yet support calling 32bit code from 64bit */ - FFI_ASSERT(0); - #else -- ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, -- cif->flags, rvalue, fn); -+ if (rvalue && (cif->rtype->type == FFI_TYPE_STRUCT -+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+ || cif->flags == FFI_TYPE_LONGDOUBLE -+#endif -+ )) -+ { -+ /* For v8, we need an "unimp" with size of returning struct */ -+ /* behind "call", so we alloc some executable space for it. */ -+ /* l7 is used, we need to make sure v8.S doesn't use %l7. */ -+ unsigned int *call_struct = NULL; -+ ffi_closure_alloc(32, &call_struct); -+ if (call_struct) -+ { -+ unsigned long f = (unsigned long)fn; -+ call_struct[0] = 0xae10001f; /* mov %i7, %l7 */ -+ call_struct[1] = 0xbe10000f; /* mov %o7, %i7 */ -+ call_struct[2] = 0x03000000 | f >> 10; /* sethi %hi(fn), %g1 */ -+ call_struct[3] = 0x9fc06000 | (f & 0x3ff); /* jmp %g1+%lo(fn), %o7 */ -+ call_struct[4] = 0x01000000; /* nop */ -+ if (cif->rtype->size < 0x7f) -+ call_struct[5] = cif->rtype->size; /* unimp */ -+ else -+ call_struct[5] = 0x01000000; /* nop */ -+ call_struct[6] = 0x81c7e008; /* ret */ -+ call_struct[7] = 0xbe100017; /* mov %l7, %i7 */ -+ asm volatile ("iflush %0; iflush %0+8; iflush %0+16; iflush %0+24" : : -+ "r" (call_struct) : "memory"); -+ /* SPARC v8 requires 5 instructions for flush to be visible */ -+ asm volatile ("nop; nop; nop; nop; nop"); -+ ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, -+ cif->flags, rvalue, call_struct); -+ ffi_closure_free(call_struct); -+ } -+ else -+ { -+ ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, -+ cif->flags, rvalue, fn); -+ } -+ } -+ else -+ { -+ ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, -+ cif->flags, rvalue, fn); -+ } - #endif - break; - case FFI_V9: -@@ -468,13 +510,13 @@ - closure->fun = fun; - closure->user_data = user_data; - -- /* Flush the Icache. FIXME: alignment isn't certain, assume 8 bytes */ -+ /* Flush the Icache. closure is 8 bytes aligned */ - #ifdef SPARC64 -- asm volatile ("flush %0" : : "r" (closure) : "memory"); -- asm volatile ("flush %0" : : "r" (((char *) closure) + 8) : "memory"); -+ asm volatile ("flush %0; flush %0+8" : : "r" (closure) : "memory"); - #else -- asm volatile ("iflush %0" : : "r" (closure) : "memory"); -- asm volatile ("iflush %0" : : "r" (((char *) closure) + 8) : "memory"); -+ asm volatile ("iflush %0; iflush %0+8" : : "r" (closure) : "memory"); -+ /* SPARC v8 requires 5 instructions for flush to be visible */ -+ asm volatile ("nop; nop; nop; nop; nop"); - #endif - - return FFI_OK; ---- mozilla-esr31/js/src/ctypes/libffi/configure.orig 2015-06-04 17:42:52.338127066 -0700 -+++ mozilla-esr31/js/src/ctypes/libffi/configure 2015-06-04 17:42:52.344846571 -0700 -@@ -12425,7 +12425,7 @@ - - case "$target" in - # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages -- *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*) -+ *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-*-solaris*) - - $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h - diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox20-24-stackwalk_compile.patch --- a/components/desktop/firefox/patches/firefox20-24-stackwalk_compile.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -Adds an sp argument for the load_address() function. The sp argument is used -in the NS_WalkStackCallback() function. This is to match a new argument -that was added in the function for other platforms. -See Mozilla bug #766579. -Need more followup to fully understand. - ---- mozilla-esr31/xpcom/base/nsStackWalk.cpp.orig 2015-06-04 17:42:51.321202120 -0700 -+++ mozilla-esr31/xpcom/base/nsStackWalk.cpp 2015-06-04 17:42:51.326394782 -0700 -@@ -891,7 +891,7 @@ - #include - #include - --static int load_address ( void * pc, void * arg ); -+static int load_address ( void * pc, void * sp, void * arg ); - static struct bucket * newbucket ( void * pc ); - static struct frame * cs_getmyframeptr ( void ); - static void cs_walk_stack ( void * (*read_func)(char * address), -@@ -966,7 +966,7 @@ - - - static int --load_address(void * pc, void * arg) -+load_address(void * pc, void * sp, void * arg ) - { - static struct bucket table[2048]; - static mutex_t lock; -@@ -988,7 +988,7 @@ - if (ptr->next) { - mutex_unlock(&lock); - } else { -- (args->callback)(pc, args->closure); -+ (args->callback)(pc, NULL, args->closure); - args->numFrames++; - if (args->maxFrames != 0 && args->numFrames == args->maxFrames) - stop = 1; // causes us to stop getting frames diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox20-46-strcasestr.patch --- a/components/desktop/firefox/patches/firefox20-46-strcasestr.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -The strcasestr function is not available in Solaris 10, so this replaces it -with an alternate function. This is not necessary for Solaris 12+. -The 'uname' part is necessary because the uname() function returns a -non-negative value. - ---- mozilla-esr31/widget/xpwidgets/GfxInfoX11.cpp.orig 2015-06-04 17:42:51.546213832 -0700 -+++ mozilla-esr31/widget/xpwidgets/GfxInfoX11.cpp 2015-06-04 17:42:51.548646551 -0700 -@@ -12,6 +12,7 @@ - #include - #include "nsCRTGlue.h" - #include "prenv.h" -+#include "plstr.h" - - #include "GfxInfoX11.h" - -@@ -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); -@@ -210,13 +211,13 @@ - // with Mesa, the version string contains "Mesa major.minor" and that's all the version information we get: - // there is no actual driver version info. - whereToReadVersionNumbers = Mesa_in_version_string + strlen("Mesa"); -- if (strcasestr(mVendor.get(), "nouveau")) -+ if (PL_strcasestr(mVendor.get(), "nouveau")) - mIsNouveau = true; -- if (strcasestr(mRenderer.get(), "intel")) // yes, intel is in the renderer string -+ if (PL_strcasestr(mRenderer.get(), "intel")) // yes, intel is in the renderer string - mIsIntel = true; -- if (strcasestr(mRenderer.get(), "llvmpipe")) -+ if (PL_strcasestr(mRenderer.get(), "llvmpipe")) - mIsLlvmpipe = true; -- if (strcasestr(mRenderer.get(), "software rasterizer")) -+ if (PL_strcasestr(mRenderer.get(), "software rasterizer")) - mIsOldSwrast = true; - } else if (strstr(mVendor.get(), "NVIDIA Corporation")) { - mIsNVIDIA = true; diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox20-52-check_test.patch --- a/components/desktop/firefox/patches/firefox20-52-check_test.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -This patch is for testing. Potential for sending upstream. - ---- mozilla-esr31/testing/runcppunittests.py.orig 2015-06-04 17:42:51.633983468 -0700 -+++ mozilla-esr31/testing/runcppunittests.py 2015-06-04 17:42:51.638876910 -0700 -@@ -80,6 +80,8 @@ - pathvar = "" - if mozinfo.os == "linux": - pathvar = "LD_LIBRARY_PATH" -+ if mozinfo.os == "unix": -+ pathvar = "LD_LIBRARY_PATH" - elif mozinfo.os == "mac": - pathvar = "DYLD_LIBRARY_PATH" - elif mozinfo.os == "win": diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox20-82-sqlite3-unix-excl.patch --- a/components/desktop/firefox/patches/firefox20-82-sqlite3-unix-excl.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +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. -Needs further investigation, will probably be difficult to send upstream. - ---- mozilla-esr31/browser/app/profile/firefox.js.orig 2015-06-04 17:42:52.206758105 -0700 -+++ mozilla-esr31/browser/app/profile/firefox.js 2015-06-04 17:42:52.212124280 -0700 -@@ -1022,6 +1022,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); - diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox21-49-hnjfile.patch --- a/components/desktop/firefox/patches/firefox21-49-hnjfile.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -This allows us to access some function from wchar.h that other platforms -can get from stdio.h. -Potentially send upstream with an ifdef Solaris statement. - ---- mozilla-esr31/intl/hyphenation/src/hnjalloc.h.orig 2015-06-04 17:42:51.598696275 -0700 -+++ mozilla-esr31/intl/hyphenation/src/hnjalloc.h 2015-06-04 17:42:51.603672670 -0700 -@@ -24,6 +24,7 @@ - */ - - #include /* ensure stdio.h is loaded before our macros */ -+#include - - #undef FILE - #define FILE hnjFile diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox21-50-nsMathUtils.patch --- a/components/desktop/firefox/patches/firefox21-50-nsMathUtils.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -This allows us to get some function from math.h that other platforms are -getting from ieeefp.h. -Easy to send upstream since it already has ifdef statement. - ---- mozilla-esr31/xpcom/ds/nsMathUtils.h.orig 2015-06-04 17:42:51.616409449 -0700 -+++ mozilla-esr31/xpcom/ds/nsMathUtils.h 2015-06-04 17:42:51.621339786 -0700 -@@ -13,6 +13,7 @@ - #include - - #ifdef SOLARIS -+#include - #include - #endif - diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox22-76-skip_mozbuild_test.patch --- a/components/desktop/firefox/patches/firefox22-76-skip_mozbuild_test.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -For testing. Runs the test from a different environment than the Mozilla -default. Needs further investigation. - ---- mozilla-esr31/python/mozbuild/mozbuild/test/test_mozconfig.py.orig 2015-06-04 17:42:52.122873933 -0700 -+++ mozilla-esr31/python/mozbuild/mozbuild/test/test_mozconfig.py 2015-06-04 17:42:52.133296079 -0700 -@@ -477,5 +477,5 @@ - self.assertEquals(e.exception.output, ['hello world']) - - --if __name__ == '__main__': -- main() -+#if __name__ == '__main__': -+# main() ---- mozilla-esr31/python/mozbuild/mozbuild/test/test_base.py.orig 2015-06-04 17:42:52.128263022 -0700 -+++ mozilla-esr31/python/mozbuild/mozbuild/test/test_base.py 2015-06-04 17:42:52.133425656 -0700 -@@ -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 -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox22-79-gthread-dlopen.patch --- a/components/desktop/firefox/patches/firefox22-79-gthread-dlopen.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -See Mozilla bug #675585 - crash [@ g_slice_free1] when run firefox-bin --no-remote -process-updates. Needs further investigation. - ---- mozilla-esr31/xpcom/glue/standalone/nsXPCOMGlue.cpp.orig 2015-06-04 17:42:52.147539933 -0700 -+++ mozilla-esr31/xpcom/glue/standalone/nsXPCOMGlue.cpp 2015-06-04 17:42:52.152710273 -0700 -@@ -418,6 +418,8 @@ - } - } - -+ static void* gthreadso = dlopen("libgthread-2.0.so.0", RTLD_GLOBAL | RTLD_LAZY); -+ - GetFrozenFunctionsFunc sym = - (GetFrozenFunctionsFunc) GetSymbol(sTop->libHandle, LEADING_UNDERSCORE "NS_GetFrozenFunctions"); - diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox25-07-webaudio_math.patch --- a/components/desktop/firefox/patches/firefox25-07-webaudio_math.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -This allows us to get some function from math.h that other platforms are -getting elsewhere. -Can send upstream with ifdef Solaris statement. - ---- mozilla-esr31/content/media/webaudio/blink/DenormalDisabler.h.orig 2015-06-04 17:42:51.279492311 -0700 -+++ mozilla-esr31/content/media/webaudio/blink/DenormalDisabler.h 2015-06-04 17:42:51.288558769 -0700 -@@ -27,6 +27,7 @@ - - #define _USE_MATH_DEFINES - #include -+#include - #include - - namespace WebCore { ---- mozilla-esr31/content/media/webaudio/ThreeDPoint.h.orig 2015-06-04 17:42:51.286104792 -0700 -+++ mozilla-esr31/content/media/webaudio/ThreeDPoint.h 2015-06-04 17:42:51.288664521 -0700 -@@ -8,6 +8,7 @@ - #define ThreeDPoint_h_ - - #include -+#include - #include - - namespace mozilla { diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox26-06-donot-delay-stopping-realplayer.patch --- a/components/desktop/firefox/patches/firefox26-06-donot-delay-stopping-realplayer.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +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. - ---- mozilla-esr31/content/base/src/nsObjectLoadingContent.cpp.orig 2015-06-04 17:42:51.184423172 -0700 -+++ mozilla-esr31/content/base/src/nsObjectLoadingContent.cpp 2015-06-04 17:42:51.208745161 -0700 -@@ -2744,7 +2744,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") -@@ -2752,6 +2753,8 @@ - && !aInstanceOwner->MatchPluginName("XStandard plugin") - && !aInstanceOwner->MatchPluginName("CMISS Zinc Plugin") - #endif -+ && !aInstanceOwner->MatchPluginName("RealPlayer") -+ && !aInstanceOwner->MatchPluginName("Helix") - ) { - nsCOMPtr evt = - new nsStopPluginRunnable(aInstanceOwner, aContent); diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox26-36-package_warning.patch --- a/components/desktop/firefox/patches/firefox26-36-package_warning.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +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. - ---- mozilla-esr31/browser/installer/Makefile.in.orig 2015-06-04 17:42:51.400825465 -0700 -+++ mozilla-esr31/browser/installer/Makefile.in 2015-06-04 17:42:51.405890984 -0700 -@@ -12,7 +12,7 @@ - MOZ_PKG_MANIFEST_P = $(srcdir)/package-manifest.in - # Some files have been already bundled with xulrunner - ifndef SYSTEM_LIBXUL --MOZ_PKG_FATAL_WARNINGS = 1 -+#MOZ_PKG_FATAL_WARNINGS = 1 - endif - - DEFINES += -DAB_CD=$(AB_CD) -DMOZ_APP_NAME=$(MOZ_APP_NAME) -DPREF_DIR=$(PREF_DIR) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox26-99-LocalFileUnix.patch --- a/components/desktop/firefox/patches/firefox26-99-LocalFileUnix.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +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. - ---- mozilla-esr31/xpcom/io/nsLocalFileUnix.cpp.orig 2015-06-04 17:42:52.429921172 -0700 -+++ mozilla-esr31/xpcom/io/nsLocalFileUnix.cpp 2015-06-04 17:42:52.432611314 -0700 -@@ -13,6 +13,7 @@ - #include - #include - #include -+#include - #include - #include - #include diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox27-206-build-config.patch --- a/components/desktop/firefox/patches/firefox27-206-build-config.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -This is used for Sun Studio because the depend files are different. -Can potentially remove this patch, but need to investigate to see when -link_deps is run. - ---- mozilla-esr31/python/mozbuild/mozbuild/action/link_deps.py.orig 2015-06-04 17:42:52.548434964 -0700 -+++ mozilla-esr31/python/mozbuild/mozbuild/action/link_deps.py 2015-06-04 17:42:52.553642029 -0700 -@@ -129,9 +129,9 @@ - if deps: - deps = list(self.normpaths(deps)) - for t in self.normpaths(rule.targets()): -- if t in self._targets: -- raise Exception('Found target %s in %s and %s' -- % (t, self._targets[t][0], depfile)) -+# if t in self._targets: -+# raise Exception('Found target %s in %s and %s' -+# % (t, self._targets[t][0], depfile)) - self._targets[t] = (depfile, deps) - - def dump(self, fh, removal_guard=True): -@@ -216,7 +216,8 @@ - group=group, - abspaths=opts.abspaths) - for f in opts.dependency_files: -- linker.add_dependencies(open(f)) -+ if os.path.isfile(f): -+ linker.add_dependencies(open(f)) - - if opts.output: - out = open(opts.output, 'w') diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox27-47-uname.patch --- a/components/desktop/firefox/patches/firefox27-47-uname.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -The uname() function on Solaris can return a non-negative value. - ---- mozilla-esr31/toolkit/components/startup/nsUserInfoUnix.cpp.orig 2015-06-04 17:42:51.565111934 -0700 -+++ mozilla-esr31/toolkit/components/startup/nsUserInfoUnix.cpp 2015-06-04 17:42:51.567398410 -0700 -@@ -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; - } - diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox27-67-ion_AsmJS_x86.patch --- a/components/desktop/firefox/patches/firefox27-67-ion_AsmJS_x86.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -REG_EIP is already defined elsewhere for Linux. - ---- mozilla-esr31/js/src/jit/AsmJSSignalHandlers.cpp.orig 2015-06-04 17:42:51.702781399 -0700 -+++ mozilla-esr31/js/src/jit/AsmJSSignalHandlers.cpp 2015-06-04 17:42:51.707794331 -0700 -@@ -58,6 +58,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]) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox27-80-mftt_infinity.patch --- a/components/desktop/firefox/patches/firefox27-80-mftt_infinity.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +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. - ---- mozilla-esr31/mfbt/decimal/Decimal.cpp.orig 2015-06-04 17:42:52.191270749 -0700 -+++ mozilla-esr31/mfbt/decimal/Decimal.cpp 2015-06-04 17:42:52.193703088 -0700 -@@ -33,6 +33,7 @@ - - #include - #include -+#include - - using namespace moz_decimal_utils; - -@@ -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) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox28-217-xpt-as-flag.patch --- a/components/desktop/firefox/patches/firefox28-217-xpt-as-flag.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +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. - ---- mozilla-esr31/xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig 2015-06-04 17:42:52.626316900 -0700 -+++ mozilla-esr31/xpcom/reflect/xptcall/src/md/unix/Makefile.in 2015-06-04 17:42:52.636686080 -0700 -@@ -98,6 +98,7 @@ - -e 's/^\(STUB_ENTRY\)(\([0-9][0-9]\))/\12\(\2\)/' \ - -e 's/^\(STUB_ENTRY\)(\([0-9][0-9][0-9]\))/\13\(\2\)/' \ - $(DIST)/include/xptcstubsdef.inc > $@ -+ASFLAGS += -I. - ifeq (x86_64,$(OS_TEST)) - ASFLAGS += -xarch=amd64 - endif ---- mozilla-esr31/xpcom/reflect/xptcall/src/md/unix/moz.build.orig 2015-06-04 17:42:52.631590433 -0700 -+++ mozilla-esr31/xpcom/reflect/xptcall/src/md/unix/moz.build 2015-06-04 17:42:52.636848564 -0700 -@@ -74,6 +74,9 @@ - 'xptcstubs_gcc_x86_unix.cpp' - ] - else: -+ GENERATED_FILES = [ -+ 'xptcstubsdef_asm.solx86', -+ ] - SOURCES += [ - 'xptcinvoke_asm_x86_solaris_SUNW.s', - 'xptcinvoke_x86_solaris.cpp', -@@ -273,9 +276,6 @@ - ] - - if CONFIG['OS_ARCH'] == 'SunOS' and CONFIG['OS_TEST'].find('86') == -1: -- GENERATED_FILES = [ -- 'xptcstubsdef_asm.solx86', -- ] - if CONFIG['HAVE_64BIT_OS']: - SOURCES += [ - 'xptcinvoke_sparcv9_solaris.cpp', diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox28-88-libvpx_compile.patch --- a/components/desktop/firefox/patches/firefox28-88-libvpx_compile.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -Can probably send upstream. - ---- mozilla-esr31/media/libvpx/Makefile.in.orig 2015-06-04 17:42:52.225216512 -0700 -+++ mozilla-esr31/media/libvpx/Makefile.in 2015-06-04 17:42:52.235644957 -0700 -@@ -8,6 +8,10 @@ - AS_DASH_C_FLAG=$(VPX_DASH_C_FLAG) - ASM_SUFFIX=$(VPX_ASM_SUFFIX) - -+ifeq ($(OS_TARGET),SunOS) -+ASFLAGS+=-DSOLARIS=1 -+endif -+ - ifdef VPX_ARM_ASM - # Building on an ARM platform with a supported assembler, include - # the optimized assembly in the build. -@@ -115,7 +119,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 $@ -c $(patsubst -xO[45],-xO3,$(COMPILE_CFLAGS)) $< ---- mozilla-esr31/media/libvpx/vpx_ports/x86_abi_support.asm.orig 2015-06-04 17:42:52.233318593 -0700 -+++ mozilla-esr31/media/libvpx/vpx_ports/x86_abi_support.asm 2015-06-04 17:42:52.235792816 -0700 -@@ -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 -@@ -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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox28-90-cubeb.patch --- a/components/desktop/firefox/patches/firefox28-90-cubeb.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,543 +0,0 @@ -For SunAudio audio playback. We need to investigate whether we care about -this or whether we are just going to support PulseAudio. - ---- mozilla-esr31/media/libcubeb/src/cubeb.c.orig 2015-06-04 17:42:52.252769663 -0700 -+++ mozilla-esr31/media/libcubeb/src/cubeb.c 2015-06-04 17:42:52.260965308 -0700 -@@ -54,6 +54,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) -@@ -120,6 +123,9 @@ - #if defined(USE_AUDIOTRACK) - audiotrack_init, - #endif -+#if defined(USE_SUN) -+ sunaudio_init, -+#endif - }; - int i; - ---- mozilla-esr31/media/libcubeb/src/cubeb_sun.c.orig 1969-12-31 16:00:00.000000000 -0800 -+++ mozilla-esr31/media/libcubeb/src/cubeb_sun.c 2015-06-04 17:42:52.261184916 -0700 -@@ -0,0 +1,500 @@ -+/* -+ * Copyright (c) 2013 Ginn Chen -+ * -+ * This program is made available under an ISC-style license. See the -+ * accompanying file LICENSE for details. -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#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 -+}; ---- mozilla-esr31/media/libcubeb/src/moz.build.orig 2015-06-04 17:42:52.255965962 -0700 -+++ mozilla-esr31/media/libcubeb/src/moz.build 2015-06-04 17:42:52.261292681 -0700 -@@ -30,6 +30,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 -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox28-96-MediaDecoder.patch --- a/components/desktop/firefox/patches/firefox28-96-MediaDecoder.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -Casts the value to an int since abs() only takes an integer argument. -May want to change this so that we use labs() instead of abs(). - ---- mozilla-esr31/content/media/MediaDecoderStateMachine.cpp.orig 2015-06-04 17:42:52.361303668 -0700 -+++ mozilla-esr31/content/media/MediaDecoderStateMachine.cpp 2015-06-04 17:42:52.366561967 -0700 -@@ -1227,7 +1227,7 @@ - AssertCurrentThreadInMonitor(); - int64_t duration = GetDuration(); - if (aDuration != duration && -- abs(aDuration - duration) > ESTIMATED_DURATION_FUZZ_FACTOR_USECS) { -+ abs((int)(aDuration - duration)) > ESTIMATED_DURATION_FUZZ_FACTOR_USECS) { - SetDuration(aDuration); - nsCOMPtr event = - NS_NewRunnableMethod(mDecoder, &MediaDecoder::DurationChanged); diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox29-214-gfx.patch --- a/components/desktop/firefox/patches/firefox29-214-gfx.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -May be compiler specific. Can potentially send upstream with an ifdef Solaris -statement. -Investigate whether the emmintrin.h part is necessary. - ---- mozilla-esr31/gfx/2d/FilterProcessingSIMD-inl.h.orig 2015-06-04 17:42:52.586368339 -0700 -+++ mozilla-esr31/gfx/2d/FilterProcessingSIMD-inl.h 2015-06-04 17:42:52.594507633 -0700 -@@ -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)); ---- mozilla-esr31/gfx/2d/SIMD.h.orig 2015-06-04 17:42:52.591921342 -0700 -+++ mozilla-esr31/gfx/2d/SIMD.h 2015-06-04 17:42:52.594674555 -0700 -@@ -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 - #include - #endif - diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox29-313-mozconfig_loader_bash.patch --- a/components/desktop/firefox/patches/firefox29-313-mozconfig_loader_bash.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -This patch is needed because the default shell on Solaris 10 has issues. -The default shell on S11 and S12 is ksh93, which would probably work. If -so, then this patch can be removed. This needs to be investigated further. - ---- mozilla-esr31/python/mozbuild/mozbuild/mozconfig_loader.orig 2015-06-04 17:42:52.695582248 -0700 -+++ mozilla-esr31/python/mozbuild/mozbuild/mozconfig_loader 2015-06-04 17:42:52.698042560 -0700 -@@ -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/. diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox29-45-snappy.patch --- a/components/desktop/firefox/patches/firefox29-45-snappy.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -Solaris studio doesn't use __i386__ and __x86_64__ defined, instead uses -alternate definitions. -If we use GCC, we may not need this part of the patch. -The second part of the patch defined Endians. -Needs to go upstream. - ---- mozilla-esr31/other-licenses/snappy/src/snappy-stubs-internal.h.orig 2015-06-04 17:42:51.512176985 -0700 -+++ mozilla-esr31/other-licenses/snappy/src/snappy-stubs-internal.h 2015-06-04 17:42:51.521372882 -0700 -@@ -178,7 +178,7 @@ - - // Potentially unaligned loads and stores. - --#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) -+#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) || defined(__i386) || defined(__x86_64) - - #define UNALIGNED_LOAD16(_p) (*reinterpret_cast(_p)) - #define UNALIGNED_LOAD32(_p) (*reinterpret_cast(_p)) ---- mozilla-esr31//configure.orig 2015-06-04 17:42:51.515409215 -0700 -+++ mozilla-esr31//configure 2015-06-04 17:42:51.524041156 -0700 -@@ -9660,6 +9660,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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox30-05-skia_gpu.patch --- a/components/desktop/firefox/patches/firefox30-05-skia_gpu.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +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. - ---- mozilla-esr31/gfx/skia/trunk/include/gpu/GrTypes.h.orig 2015-06-04 17:42:51.134028157 -0700 -+++ mozilla-esr31/gfx/skia/trunk/include/gpu/GrTypes.h 2015-06-04 17:42:51.145109963 -0700 -@@ -285,9 +285,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) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox30-205-test.patch --- a/components/desktop/firefox/patches/firefox30-205-test.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -For testing. Commented out some tests that are known not to work on Solaris. -Can probably be removed. - -The if(workerThreadCount)... part is already fixed upstream. - ---- mozilla-esr31/docshell/test/unit/test_bug414201_jfif.js.orig 2015-06-04 17:42:52.485074716 -0700 -+++ mozilla-esr31/docshell/test/unit/test_bug414201_jfif.js 2015-06-04 17:42:52.509205432 -0700 -@@ -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); - } - } ---- mozilla-esr31/dom/tests/unit/test_geolocation_provider.js.orig 2015-06-04 17:42:52.490462853 -0700 -+++ mozilla-esr31/dom/tests/unit/test_geolocation_provider.js 2015-06-04 17:42:52.509339704 -0700 -@@ -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(); - -@@ -89,4 +90,5 @@ - - geolocation = Cc["@mozilla.org/geolocation;1"].getService(Ci.nsISupports); - watchID = geolocation.watchPosition(successCallback, errorCallback); -+*/ - } ---- mozilla-esr31/gfx/tests/gtest/TestLayers.cpp.orig 2015-06-04 17:42:52.495808015 -0700 -+++ mozilla-esr31/gfx/tests/gtest/TestLayers.cpp 2015-06-04 17:42:52.509475929 -0700 -@@ -85,7 +85,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()); - ---- mozilla-esr31/js/src/jit-test/tests/basic/offThreadCompileScript-02.js.orig 2015-06-04 17:42:52.501230839 -0700 -+++ mozilla-esr31/js/src/jit-test/tests/basic/offThreadCompileScript-02.js 2015-06-04 17:42:52.509576725 -0700 -@@ -1,5 +1,8 @@ - // Test offThreadCompileScript option handling. - -+if (workerThreadCount() === 0) -+ quit(0); -+ - offThreadCompileScript('Error()'); - assertEq(!!runOffThreadScript().stack.match(/^@:1:1\n/), true); - diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox30-29-rules_mk.patch --- a/components/desktop/firefox/patches/firefox30-29-rules_mk.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -Needs further investigation to see if this can be removed. -The ninstall... function is not callable for some reason, so we need to copy -the definition when using install_cmd. - ---- mozilla-esr31/config/rules.mk.orig 2015-06-04 17:42:51.342231683 -0700 -+++ mozilla-esr31/config/rules.mk 2015-06-04 17:42:51.344729049 -0700 -@@ -1429,7 +1429,7 @@ - nsinstall_is_usable = $(if $(wildcard $(DIST)/bin/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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox30-61-skia-endian.patch --- a/components/desktop/firefox/patches/firefox30-61-skia-endian.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -Already exists upstream. - ---- mozilla-esr31/gfx/skia/trunk/include/core/SkPreConfig.h.orig 2015-06-04 17:42:51.687614279 -0700 -+++ mozilla-esr31/gfx/skia/trunk/include/core/SkPreConfig.h 2015-06-04 17:42:51.689910035 -0700 -@@ -93,7 +93,7 @@ - - #if !defined(SK_CPU_BENDIAN) && !defined(SK_CPU_LENDIAN) - #if defined (__ppc__) || defined(__PPC__) || defined(__ppc64__) \ -- || defined(__PPC64__) -+ || defined(__PPC64__) || defined(__sparc) || defined(__sparc__) - #define SK_CPU_BENDIAN - #else - #define SK_CPU_LENDIAN diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox31-01-locale.patch --- a/components/desktop/firefox/patches/firefox31-01-locale.patch Tue Mar 01 10:33:35 2016 -0800 +++ /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-esr31/modules/libpref/src/init/all.js.orig 2015-02-18 16:39:16.189950136 +0530 -+++ mozilla-esr31/modules/libpref/src/init/all.js 2015-02-18 16:40:56.002524458 +0530 -@@ -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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox31-03-g11n-nav-lang.patch --- a/components/desktop/firefox/patches/firefox31-03-g11n-nav-lang.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -This fixes Mozilla bug#285267 - navigator.language js property doesn't reflect -browser default language. It appears that this patch was previously -proposed upstream but not accepted. (https://bugzilla.mozilla.org/show_bug.cgi?id=285267) - -diff --git a/browser/locales/en-US/firefox-l10n.js b/browser/locales/en-US/firefox-l10n.js -index e9027aa..10bdcdb 100644 ---- a/browser/locales/en-US/firefox-l10n.js -+++ b/browser/locales/en-US/firefox-l10n.js -@@ -36,4 +36,4 @@ - - #filter substitution - --pref("general.useragent.locale", "@AB_CD@"); -+pref("general.useragent.locale", "chrome://global/locale/intl.properties"); diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox31-13-jit-test-multi-processes.patch --- a/components/desktop/firefox/patches/firefox31-13-jit-test-multi-processes.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +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). - ---- mozilla-esr31/js/src/Makefile.in.orig 2015-06-04 17:42:51.305891808 -0700 -+++ mozilla-esr31/js/src/Makefile.in 2015-06-04 17:42:51.308235809 -0700 -@@ -152,7 +152,7 @@ - - check-jit-test:: - $(JITTEST_ASAN_ENV) $(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON) -u $(srcdir)/jit-test/jit_test.py \ -- --no-slow --no-progress --tinderbox --tbpl $(JITTEST_VALGRIND_FLAG) \ -+ --no-slow --no-progress --tinderbox --tbpl -j 2 -f $(JITTEST_VALGRIND_FLAG) \ - $(DIST)/bin/$(JS_SHELL_NAME)$(BIN_SUFFIX) - - check:: check-style diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox31-199-stacksize.patch --- a/components/desktop/firefox/patches/firefox31-199-stacksize.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -For sparc. Our function frame is very big, so on sparc we need more stack size. -Potentially send upstream. - ---- mozilla-esr31/js/src/jsapi.cpp.orig 2015-06-04 17:42:52.465842609 -0700 -+++ mozilla-esr31/js/src/jsapi.cpp 2015-06-04 17:42:52.468887397 -0700 -@@ -2120,6 +2120,9 @@ - static void - SetNativeStackQuota(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 (rt->nativeStackBase) - RecomputeStackLimit(rt, kind); diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox31-30-configure.patch --- a/components/desktop/firefox/patches/firefox31-30-configure.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -Shell translations. Should probably be removed. - ---- mozilla-esr31/js/src/configure.orig 2015-06-04 17:42:51.357938258 -0700 -+++ mozilla-esr31/js/src/configure 2015-06-04 17:42:51.371806503 -0700 -@@ -1291,7 +1291,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. -@@ -4342,7 +4342,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 -@@ -8861,12 +8861,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 -@@ -15668,7 +15668,8 @@ - _CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - case "$host" in - *-mingw*) -- _CONFIG_SHELL=$(cd $(dirname $_CONFIG_SHELL); pwd -W)/$(basename $_CONFIG_SHELL) -+ tmp_DIRNAME=`dirname "$_CONFIG_SHELL"` -+ _CONFIG_SHELL=`(cd $tmp_DIRNAME; pwd -W)`/`(basename $_CONFIG_SHELL)` - if test ! -e "$_CONFIG_SHELL" -a -e "${_CONFIG_SHELL}.exe"; then - _CONFIG_SHELL="${_CONFIG_SHELL}.exe" - fi -@@ -15793,7 +15794,8 @@ - _CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - case "$host" in - *-mingw*) -- _CONFIG_SHELL=$(cd $(dirname $_CONFIG_SHELL); pwd -W)/$(basename $_CONFIG_SHELL) -+ tmp_DIRNAME=`dirname "$_CONFIG_SHELL"` -+ _CONFIG_SHELL=`(cd $tmp_DIRNAME; pwd -W)`/`(basename $_CONFIG_SHELL)` - if test ! -e "$_CONFIG_SHELL" -a -e "${_CONFIG_SHELL}.exe"; then - _CONFIG_SHELL="${_CONFIG_SHELL}.exe" - fi -@@ -16044,7 +16046,8 @@ - _CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - case "$host" in - *-mingw*) -- _CONFIG_SHELL=$(cd $(dirname $_CONFIG_SHELL); pwd -W)/$(basename $_CONFIG_SHELL) -+ tmp_DIRNAME=`dirname "$_CONFIG_SHELL"` -+ _CONFIG_SHELL=`(cd $tmp_DIRNAME; pwd -W)`/`(basename $_CONFIG_SHELL)` - if test ! -e "$_CONFIG_SHELL" -a -e "${_CONFIG_SHELL}.exe"; then - _CONFIG_SHELL="${_CONFIG_SHELL}.exe" - fi -@@ -16613,9 +16616,12 @@ - - chmod +x $CONFIG_STATUS - 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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox31-317-sparc-xptcall.patch --- a/components/desktop/firefox/patches/firefox31-317-sparc-xptcall.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -See Mozilla bug #1153707 - [JavaScript Error: "invalid 'in' operand -aLivemarkInfo"] when calling method: [mozIAsyncLivemarks::getLivemark]. -This is already upstream in version 38. - ---- mozilla-esr31/xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc_solaris.cpp.orig 2015-06-04 17:42:52.730766562 -0700 -+++ mozilla-esr31/xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc_solaris.cpp 2015-06-04 17:42:52.738654394 -0700 -@@ -52,13 +52,17 @@ - - if(param.IsOut() || !type.IsArithmetic()) - { -- dp->val.p = (void*) *ap; -+ if (type == nsXPTType::T_JSVAL) -+ dp->val.p = *((void**)*ap); -+ else -+ dp->val.p = (void*) *ap; -+ - continue; - } - // else - switch(type) - { -- case nsXPTType::T_I8 : dp->val.i8 = *((int32_t*) ap); break; -+ case nsXPTType::T_I8 : dp->val.i8 = *((int32_t*) ap); break; - case nsXPTType::T_I16 : dp->val.i16 = *((int32_t*) ap); break; - case nsXPTType::T_I32 : dp->val.i32 = *((int32_t*) ap); break; - case nsXPTType::T_DOUBLE : ---- mozilla-esr31/js/xpconnect/src/XPCWrappedJSClass.cpp.orig 2015-06-04 17:42:52.736217989 -0700 -+++ mozilla-esr31/js/xpconnect/src/XPCWrappedJSClass.cpp 2015-06-04 17:42:52.739152339 -0700 -@@ -1357,21 +1357,9 @@ - break; - } - --// see bug #961488 --#if (defined(XP_UNIX) && !defined(XP_MACOSX) && !defined(_AIX)) && \ -- ((defined(__sparc) && !defined(__sparcv9) && !defined(__sparcv9__)) || \ -- (defined(__powerpc__) && !defined (__powerpc64__))) -- if (type_tag == nsXPTType::T_JSVAL) { -- if (!XPCConvert::JSData2Native(*(void**)(&pv->val), val, type, -- !param.IsDipper(), ¶m_iid, nullptr)) -- break; -- } else --#endif -- { -- if (!XPCConvert::JSData2Native(&pv->val, val, type, -- !param.IsDipper(), ¶m_iid, nullptr)) -- break; -- } -+ if (!XPCConvert::JSData2Native(&pv->val, val, type, -+ !param.IsDipper(), ¶m_iid, nullptr)) -+ break; - } - - // if any params were dependent, then we must iterate again to convert them. diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox31-401-other-buildissue.patch --- a/components/desktop/firefox/patches/firefox31-401-other-buildissue.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +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. - ---- mozilla-esr31/build/gyp.mozbuild.orig 2015-06-04 17:42:52.755839292 -0700 -+++ mozilla-esr31/build/gyp.mozbuild 2015-06-04 17:42:52.861350941 -0700 -@@ -38,6 +38,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, - # Creates AEC internal sample dump files in current directory ---- mozilla-esr31/memory/mozalloc/VolatileBufferFallback.cpp.orig 2015-06-04 17:42:52.788896719 -0700 -+++ mozilla-esr31/memory/mozalloc/VolatileBufferFallback.cpp 2015-06-04 17:42:52.862173467 -0700 -@@ -8,7 +8,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 { ---- mozilla-esr31/media/libsoundtouch/src/FIRFilter.cpp.orig 2015-06-04 17:42:52.816481996 -0700 -+++ mozilla-esr31/media/libsoundtouch/src/FIRFilter.cpp 2015-06-04 17:42:52.863552954 -0700 -@@ -46,6 +46,10 @@ - #include "FIRFilter.h" - #include "cpu_detect.h" - -+#ifdef __sun -+#include -+#endif -+ - #ifdef _MSC_VER - #include - #define alloca _alloca ---- mozilla-esr31/media/libsoundtouch/src/SoundTouch.cpp.orig 2015-06-04 17:42:52.821942936 -0700 -+++ mozilla-esr31/media/libsoundtouch/src/SoundTouch.cpp 2015-06-04 17:42:52.863676152 -0700 -@@ -80,6 +80,10 @@ - #include "RateTransposer.h" - #include "cpu_detect.h" - -+#ifdef __sun -+#include -+#endif -+ - #ifdef _MSC_VER - #include - #define alloca _alloca ---- mozilla-esr31/media/webrtc/trunk/build/common.gypi.orig 2015-06-04 17:42:52.827866736 -0700 -+++ mozilla-esr31/media/webrtc/trunk/build/common.gypi 2015-06-04 17:42:52.864152685 -0700 -@@ -917,11 +917,16 @@ - 'android_app_version_name%': 'Developer Build', - 'android_app_version_code%': 0, - -- 'sas_dll_exists': '> 8) & 0xff00) | ((allCharacters >> 24) & 0xff); -+ ignoreCaseMask = (ignoreCaseMask << 24) | ((ignoreCaseMask << 8) & 0xff0000) | -+ ((ignoreCaseMask >> 8) & 0xff00) | ((ignoreCaseMask >> 24) & 0xff); -+ } else { -+ allCharacters = (allCharacters << 16) | ((allCharacters >> 16) & 0xffff); -+ ignoreCaseMask = (ignoreCaseMask << 16) | ((ignoreCaseMask >> 16) & 0xffff); -+ } -+#endif -+ - if (m_charSize == Char8) { - switch (numberCharacters) { - case 1: diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox31-69-ipcv2.patch --- a/components/desktop/firefox/patches/firefox31-69-ipcv2.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2115 +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. - ---- mozilla-esr31//configure.orig 2015-06-04 17:42:51.721170546 -0700 -+++ mozilla-esr31//configure 2015-06-04 17:42:52.022280764 -0700 -@@ -9675,7 +9675,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" ---- mozilla-esr31/dom/plugins/ipc/PluginMessageUtils.cpp.orig 2015-06-04 17:42:51.729961817 -0700 -+++ mozilla-esr31/dom/plugins/ipc/PluginMessageUtils.cpp 2015-06-04 17:42:52.022446816 -0700 -@@ -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) - { -@@ -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", "netsc@pe"); - #else -@@ -115,7 +115,7 @@ - string - UnmungePluginDsoPath(const string& munged) - { --#if defined(OS_LINUX) -+#if defined(OS_LINUX) || defined(OS_SOLARIS) - return ReplaceAll(munged, "netsc@pe", "netscape"); - #else - return munged; ---- mozilla-esr31/dom/plugins/ipc/PluginModuleChild.cpp.orig 2015-06-04 17:42:51.732749854 -0700 -+++ mozilla-esr31/dom/plugins/ipc/PluginModuleChild.cpp 2015-06-04 17:42:52.022749494 -0700 -@@ -207,7 +207,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"); - -@@ -238,9 +238,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; -@@ -1837,7 +1839,7 @@ - PLUGIN_LOG_DEBUG_METHOD; - AssertPluginThread(); - --#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); -@@ -1866,7 +1868,7 @@ - SendBackUpXResources(FileDescriptor(xSocketFd)); - #endif - --#if defined(OS_LINUX) || defined(OS_BSD) -+#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS) - *_retval = mInitializeFunc(&sBrowserFuncs, &mFunctions); - return true; - #elif defined(OS_WIN) || defined(OS_MACOSX) ---- mozilla-esr31/dom/plugins/ipc/PluginModuleChild.h.orig 2015-06-04 17:42:51.740779458 -0700 -+++ mozilla-esr31/dom/plugins/ipc/PluginModuleChild.h 2015-06-04 17:42:52.022883746 -0700 -@@ -319,7 +319,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; ---- mozilla-esr31/dom/plugins/ipc/PluginModuleParent.h.orig 2015-06-04 17:42:51.746067316 -0700 -+++ mozilla-esr31/dom/plugins/ipc/PluginModuleParent.h 2015-06-04 17:42:52.023009056 -0700 -@@ -203,7 +203,7 @@ - - // Implement the module-level functions from NPAPI; these are - // normally resolved directly from the DSO. --#ifdef OS_LINUX -+#if defined(OS_LINUX) || defined(OS_SOLARIS) - NPError NP_Initialize(const NPNetscapeFuncs* npnIface, - NPPluginFuncs* nppIface); - #else ---- mozilla-esr31/dom/plugins/ipc/PluginProcessParent.cpp.orig 2015-06-04 17:42:51.751413278 -0700 -+++ mozilla-esr31/dom/plugins/ipc/PluginProcessParent.cpp 2015-06-04 17:42:52.023117720 -0700 -@@ -68,6 +68,9 @@ - else if (base::PROCESS_ARCH_ARM & pluginLibArchitectures & containerArchitectures) { - selectedArchitecture = base::PROCESS_ARCH_ARM; - } -+ else if (base::PROCESS_ARCH_SPARC & pluginLibArchitectures & containerArchitectures) { -+ selectedArchitecture = base::PROCESS_ARCH_SPARC; -+ } - else { - return false; - } ---- mozilla-esr31/ipc/chromium/chromium-config.mozbuild.orig 2015-06-04 17:42:51.762667985 -0700 -+++ mozilla-esr31/ipc/chromium/chromium-config.mozbuild 2015-06-04 17:42:52.023331021 -0700 -@@ -41,6 +41,9 @@ - if CONFIG['OS_ARCH'] == 'Darwin': - DEFINES['OS_MACOSX'] = 1 - -+ elif CONFIG['OS_ARCH'] == 'SunOS': -+ DEFINES['OS_SOLARIS'] = 1 -+ - elif CONFIG['OS_ARCH'] == 'DragonFly': - OS_LIBS += [ '$(call EXPAND_LIBNAME,kvm)' ] - DEFINES.update({ ---- mozilla-esr31/ipc/chromium/moz.build.orig 2015-06-04 17:42:51.765444586 -0700 -+++ mozilla-esr31/ipc/chromium/moz.build 2015-06-04 17:42:52.023499565 -0700 -@@ -230,17 +230,25 @@ - 'moc_message_pump_qt.cc', - ] - if not CONFIG['MOZ_NATIVE_LIBEVENT']: -- if CONFIG['OS_TARGET'] != 'Android': -+ if CONFIG['OS_TARGET'] != 'SunOS': -+ if CONFIG['OS_TARGET'] != 'Android': -+ SOURCES += [ -+ 'src/third_party/libevent/epoll_sub.c', -+ ] - SOURCES += [ -- 'src/third_party/libevent/epoll_sub.c', -+ 'src/third_party/libevent/epoll.c', - ] -- SOURCES += [ -- 'src/third_party/libevent/epoll.c', -- ] - if CONFIG['OS_TARGET'] == 'Android': - LOCAL_INCLUDES += ['src/third_party/libevent/android'] - else: -- LOCAL_INCLUDES += ['src/third_party/libevent/linux'] -+ if CONFIG['OS_TARGET'] != 'SunOS': -+ LOCAL_INCLUDES += ['src/third_party/libevent/linux'] -+ else: -+ LOCAL_INCLUDES += ['src/third_party/libevent/solaris'] -+ SOURCES += [ -+ 'src/third_party/libevent/devpoll.c', -+ 'src/third_party/libevent/evport.c', -+ ] - - if os_bsd: - SOURCES += [ ---- mozilla-esr31/ipc/chromium/src/base/atomicops_internals_x86_gcc.cc.orig 2015-06-04 17:42:51.779492901 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/atomicops_internals_x86_gcc.cc 2015-06-04 17:42:52.023724795 -0700 -@@ -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" \ ---- mozilla-esr31/ipc/chromium/src/base/atomicops_internals_x86_gcc.h.orig 2015-06-04 17:42:51.785051435 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/atomicops_internals_x86_gcc.h 2015-06-04 17:42:52.023927132 -0700 -@@ -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. - } -@@ -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; -@@ -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) { -@@ -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. - } -@@ -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; -@@ -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) { ---- mozilla-esr31/ipc/chromium/src/base/base_paths.h.orig 2015-06-04 17:42:51.790740170 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/base_paths.h 2015-06-04 17:42:52.024028774 -0700 -@@ -13,7 +13,7 @@ - #include "base/base_paths_win.h" - #elif defined(OS_MACOSX) - #include "base/base_paths_mac.h" --#elif defined(OS_LINUX) || defined(OS_BSD) -+#elif defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS) - #include "base/base_paths_linux.h" - #endif - #include "base/path_service.h" ---- mozilla-esr31/ipc/chromium/src/base/base_paths_linux.cc.orig 2015-06-04 17:42:51.796070387 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/base_paths_linux.cc 2015-06-04 17:42:52.024134065 -0700 -@@ -21,11 +21,19 @@ - case base::FILE_EXE: - case base::FILE_MODULE: { // TODO(evanm): is this correct? - char bin_dir[PATH_MAX + 1]; -+#ifdef OS_SOLARIS -+ if (!(realpath(getexecname(), bin_dir) && bin_dir[0] != '[')) { -+ NOTREACHED() << "Unable to get exec name."; -+ return false; -+ } -+ int bin_dir_size = strlen(bin_dir); -+#else - int bin_dir_size = readlink("/proc/self/exe", bin_dir, PATH_MAX); - if (bin_dir_size < 0 || bin_dir_size > PATH_MAX) { - NOTREACHED() << "Unable to resolve /proc/self/exe."; - return false; - } -+#endif - bin_dir[bin_dir_size] = 0; - *result = FilePath(bin_dir); - return true; ---- mozilla-esr31/ipc/chromium/src/base/debug_util_posix.cc.orig 2015-06-04 17:42:51.806726871 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/debug_util_posix.cc 2015-06-04 17:42:52.024415350 -0700 -@@ -110,7 +110,7 @@ - return being_debugged; - } - --#elif defined(OS_LINUX) -+#elif defined(OS_LINUX) || defined(OS_SOLARIS) - - // We can look in /proc/self/status for TracerPid. We are likely used in crash - // handling, so we are careful not to use the heap or have side effects. -@@ -145,7 +145,7 @@ - return pid_index < status.size() && status[pid_index] != '0'; - } - --#endif // OS_LINUX -+#endif // OS_LINUX || OS_SOLARIS - - // static - void DebugUtil::BreakDebugger() { ---- mozilla-esr31/ipc/chromium/src/base/file_util.cc.orig 2015-06-04 17:42:51.817383612 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/file_util.cc 2015-06-04 17:42:52.024645830 -0700 -@@ -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_.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 ---- mozilla-esr31/ipc/chromium/src/base/file_util.h.orig 2015-06-04 17:42:51.822731946 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/file_util.h 2015-06-04 17:42:52.024795816 -0700 -@@ -12,7 +12,7 @@ - - #if defined(OS_WIN) - #include --#elif defined(ANDROID) -+#elif defined(ANDROID) || defined(OS_SOLARIS) - #include - #elif defined(OS_POSIX) - #include -@@ -241,6 +241,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* entries, -+ const FilePath& source, bool show_links); -+ -+ // The files in the current directory -+ std::vector 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 pending_paths_; -+ -+ DISALLOW_COPY_AND_ASSIGN(FileEnumerator); -+}; -+#endif -+ - } // namespace file_util - - #endif // BASE_FILE_UTIL_H_ ---- mozilla-esr31/ipc/chromium/src/base/file_util_posix.cc.orig 2015-06-04 17:42:51.828082851 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/file_util_posix.cc 2015-06-04 17:42:52.025067753 -0700 -@@ -8,7 +8,7 @@ - #include - #include - #include --#ifndef ANDROID -+#if !defined(ANDROID) && !defined(OS_SOLARIS) - #include - #endif - #include -@@ -67,9 +67,34 @@ - if (!recursive) - return (rmdir(path_str) == 0); - --#ifdef ANDROID -+#if defined(ANDROID) - // XXX Need ftsless impl for bionic - return false; -+#elif defined(OS_SOLARIS) -+ bool success = true; -+ std::stack directories; -+ directories.push(path.value()); -+ FileEnumerator traversal(path, true, static_cast( -+ FileEnumerator::FILES | FileEnumerator::DIRECTORIES | -+ FileEnumerator::SHOW_SYM_LINKS)); -+ for (FilePath current = traversal.Next(); success && !current.empty(); -+ current = traversal.Next()) { -+ FileEnumerator::FindInfo info; -+ traversal.GetFindInfo(&info); -+ -+ if (S_ISDIR(info.stat.st_mode)) -+ directories.push(current.value()); -+ else -+ success = (unlink(current.value().c_str()) == 0); -+ } -+ -+ while (success && !directories.empty()) { -+ FilePath dir = FilePath(directories.top()); -+ directories.pop(); -+ success = (rmdir(dir.value().c_str()) == 0); -+ } -+ -+ return success; - #else - bool success = true; - int ftsflags = FTS_PHYSICAL | FTS_NOSTAT; -@@ -140,14 +165,98 @@ - return false; - } - --#ifdef ANDROID -+#if defined(ANDROID) - // XXX Need ftsless impl for bionic - return false; -+#elif defined(OS_SOLARIS) -+ // This function does not properly handle destinations within the source -+ FilePath real_to_path = to_path; -+ if (PathExists(real_to_path)) { -+ if (!AbsolutePath(&real_to_path)) -+ return false; -+ } else { -+ real_to_path = real_to_path.DirName(); -+ if (!AbsolutePath(&real_to_path)) -+ return false; -+ } -+ FilePath real_from_path = from_path; -+ if (!AbsolutePath(&real_from_path)) -+ return false; -+ if (real_to_path.value().size() >= real_from_path.value().size() && -+ real_to_path.value().compare(0, real_from_path.value().size(), -+ real_from_path.value()) == 0) -+ return false; -+ -+ bool success = true; -+ FileEnumerator::FILE_TYPE traverse_type = -+ static_cast(FileEnumerator::FILES | -+ FileEnumerator::SHOW_SYM_LINKS); -+ if (recursive) -+ traverse_type = static_cast( -+ traverse_type | FileEnumerator::DIRECTORIES); -+ FileEnumerator traversal(from_path, recursive, traverse_type); -+ -+ // We have to mimic windows behavior here. |to_path| may not exist yet, -+ // start the loop with |to_path|. -+ FileEnumerator::FindInfo info; -+ FilePath current = from_path; -+ if (stat(from_path.value().c_str(), &info.stat) < 0) { -+ CHROMIUM_LOG(ERROR) << "CopyDirectory() couldn't stat source directory: " << -+ from_path.value() << " errno = " << errno; -+ success = false; -+ } -+ struct stat to_path_stat; -+ FilePath from_path_base = from_path; -+ if (recursive && stat(to_path.value().c_str(), &to_path_stat) == 0 && -+ S_ISDIR(to_path_stat.st_mode)) { -+ // If the destination already exists and is a directory, then the -+ // top level of source needs to be copied. -+ from_path_base = from_path.DirName(); -+ } -+ -+ // The Windows version of this function assumes that non-recursive calls -+ // will always have a directory for from_path. -+ DCHECK(recursive || S_ISDIR(info.stat.st_mode)); -+ -+ while (success && !current.empty()) { -+ // current is the source path, including from_path, so paste -+ // the suffix after from_path onto to_path to create the target_path. -+ std::string suffix(¤t.value().c_str()[from_path_base.value().size()]); -+ // Strip the leading '/' (if any). -+ if (!suffix.empty()) { -+ DCHECK_EQ('/', suffix[0]); -+ suffix.erase(0, 1); -+ } -+ const FilePath target_path = to_path.Append(suffix); -+ -+ if (S_ISDIR(info.stat.st_mode)) { -+ if (mkdir(target_path.value().c_str(), info.stat.st_mode & 01777) != 0 && -+ errno != EEXIST) { -+ CHROMIUM_LOG(ERROR) << "CopyDirectory() couldn't create directory: " << -+ target_path.value() << " errno = " << errno; -+ success = false; -+ } -+ } else if (S_ISREG(info.stat.st_mode)) { -+ if (!CopyFile(current, target_path)) { -+ CHROMIUM_LOG(ERROR) << "CopyDirectory() couldn't create file: " << -+ target_path.value(); -+ success = false; -+ } -+ } else { -+ CHROMIUM_LOG(WARNING) << "CopyDirectory() skipping non-regular file: " << -+ current.value(); -+ } -+ -+ current = traversal.Next(); -+ traversal.GetFindInfo(&info); -+ } -+ -+ return success; - #else - char* dir_list[] = { top_dir, NULL }; - FTS* fts = fts_open(dir_list, FTS_PHYSICAL | FTS_NOSTAT, NULL); - if (!fts) { -- CHROMIUM_LOG(ERROR) << "fts_open failed: " << strerror(errno); -+ CHROMIUM_CHROMIUM_LOG(ERROR) << "fts_open failed: " << strerror(errno); - return false; - } - -@@ -203,11 +312,11 @@ - break; - case FTS_SL: // Symlink. - case FTS_SLNONE: // Symlink with broken target. -- CHROMIUM_LOG(WARNING) << "CopyDirectory() skipping symbolic link: " << -+ CHROMIUM_CHROMIUM_LOG(WARNING) << "CopyDirectory() skipping symbolic link: " << - ent->fts_path; - continue; - case FTS_DEFAULT: // Some other sort of file. -- CHROMIUM_LOG(WARNING) << "CopyDirectory() skipping file of unknown type: " << -+ CHROMIUM_CHROMIUM_LOG(WARNING) << "CopyDirectory() skipping file of unknown type: " << - ent->fts_path; - continue; - default: -@@ -227,7 +336,7 @@ - } - - if (error) { -- CHROMIUM_LOG(ERROR) << "CopyDirectory(): " << strerror(error); -+ CHROMIUM_CHROMIUM_LOG(ERROR) << "CopyDirectory(): " << strerror(error); - return false; - } - return true; -@@ -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 -@@ -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 entries; -+ if (!ReadDirectory(&entries, root_path_, file_type_ & SHOW_SYM_LINKS)) -+ continue; -+ -+ directory_entries_.clear(); -+ current_directory_entry_ = 0; -+ for (std::vector::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* 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 ---- mozilla-esr31/ipc/chromium/src/base/idle_timer.cc.orig 2015-06-04 17:42:51.839092878 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/idle_timer.cc 2015-06-04 17:42:52.025292118 -0700 -@@ -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 - #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 -@@ -54,7 +54,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() { ---- mozilla-esr31/ipc/chromium/src/base/message_loop.cc.orig 2015-06-04 17:42:51.844404204 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/message_loop.cc 2015-06-04 17:42:52.025433046 -0700 -@@ -20,7 +20,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 -@@ -140,9 +140,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 { ---- mozilla-esr31/ipc/chromium/src/base/message_pump_glib.cc.orig 2015-06-04 17:42:51.849699822 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/message_pump_glib.cc 2015-06-04 17:42:52.025576630 -0700 -@@ -131,6 +131,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_; -@@ -237,10 +243,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. -@@ -304,6 +309,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!"; - } ---- mozilla-esr31/ipc/chromium/src/base/message_pump_libevent.cc.orig 2015-06-04 17:42:51.855133081 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/message_pump_libevent.cc 2015-06-04 17:42:52.025700484 -0700 -@@ -6,6 +6,10 @@ - - #include - #include -+#if defined(OS_SOLARIS) -+#include -+#include -+#endif - #if defined(ANDROID) || defined(OS_POSIX) - #include - #endif ---- mozilla-esr31/ipc/chromium/src/base/observer_list.h.orig 2015-06-04 17:42:51.860470602 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/observer_list.h 2015-06-04 17:42:52.025805253 -0700 -@@ -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); - } ---- mozilla-esr31/ipc/chromium/src/base/path_service.cc.orig 2015-06-04 17:42:51.865762507 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/path_service.cc 2015-06-04 17:42:52.025978038 -0700 -@@ -24,7 +24,7 @@ - bool PathProviderWin(int key, FilePath* result); - #elif defined(OS_MACOSX) - bool PathProviderMac(int key, FilePath* result); --#elif defined(OS_LINUX) -+#elif defined(OS_LINUX) || defined(OS_SOLARIS) - bool PathProviderLinux(int key, FilePath* result); - #endif - } -@@ -80,7 +80,7 @@ - }; - #endif - --#if defined(OS_LINUX) -+#if defined(OS_LINUX) || defined(OS_SOLARIS) - static Provider base_provider_linux = { - base::PathProviderLinux, - &base_provider, -@@ -92,6 +92,17 @@ - }; - #endif - -+#if 0//defined(OS_SOLARIS) -+static Provider base_provider_posix = { -+ base::PathProviderPosix, -+ &base_provider, -+#ifndef NDEBUG -+ 0, -+ 0, -+#endif -+ true -+}; -+#endif - - struct PathData { - Lock lock; -@@ -104,7 +115,7 @@ - providers = &base_provider_win; - #elif defined(OS_MACOSX) - providers = &base_provider_mac; --#elif defined(OS_LINUX) -+#elif defined(OS_LINUX) || defined(OS_SOLARIS) - providers = &base_provider_linux; - #endif - } -@@ -206,6 +217,24 @@ - return path_data->overrides.find(key) != path_data->overrides.end(); - } - -+#ifdef OS_SOLARIS -+bool PathService::Override(int key, const FilePath& path) { -+ PathData* path_data = GetPathData(); -+ DCHECK(path_data); -+ DCHECK(key > base::DIR_CURRENT) << "invalid path key"; -+ -+ FilePath file_path = path; -+ -+ // make sure the directory exists: -+ if (!file_util::CreateDirectory(file_path)) -+ return false; -+ -+ AutoLock scoped_lock(path_data->lock); -+ path_data->cache[key] = file_path; -+ path_data->overrides.insert(key); -+ return true; -+} -+#else - bool PathService::Override(int key, const std::wstring& path) { - PathData* path_data = GetPathData(); - DCHECK(path_data); -@@ -231,8 +260,13 @@ - path_data->overrides.insert(key); - return true; - } -+#endif - -+#ifdef OS_SOLARIS -+bool PathService::SetCurrentDirectory(const FilePath& current_directory) { -+#else - bool PathService::SetCurrentDirectory(const std::wstring& current_directory) { -+#endif - return file_util::SetCurrentDirectory(current_directory); - } - ---- mozilla-esr31/ipc/chromium/src/base/path_service.h.orig 2015-06-04 17:42:51.871131068 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/path_service.h 2015-06-04 17:42:52.026081564 -0700 -@@ -48,13 +48,21 @@ - // - // WARNING: Consumers of PathService::Get may expect paths to be constant - // over the lifetime of the app, so this method should be used with caution. -+#ifdef OS_SOLARIS -+ static bool Override(int key, const FilePath& path); -+#else - static bool Override(int key, const std::wstring& path); -+#endif - - // Return whether a path was overridden. - static bool IsOverridden(int key); - - // Sets the current directory. -+#ifdef OS_SOLARIS -+ static bool SetCurrentDirectory(const FilePath& current_directory); -+#else - static bool SetCurrentDirectory(const std::wstring& current_directory); -+#endif - - // To extend the set of supported keys, you can register a path provider, - // which is just a function mirroring PathService::Get. The ProviderFunc ---- mozilla-esr31/ipc/chromium/src/base/platform_thread.h.orig 2015-06-04 17:42:51.876432809 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/platform_thread.h 2015-06-04 17:42:52.026181532 -0700 -@@ -22,7 +22,7 @@ - #elif defined(OS_POSIX) - #include - 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 - typedef pid_t PlatformThreadId; - #elif defined(OS_BSD) ---- mozilla-esr31/ipc/chromium/src/base/platform_thread_posix.cc.orig 2015-06-04 17:42:51.881741384 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/platform_thread_posix.cc 2015-06-04 17:42:52.026320376 -0700 -@@ -27,6 +27,12 @@ - #include - #endif - -+#if defined(OS_SOLARIS) -+#include -+#include -+#include -+#endif -+ - #if defined(OS_MACOSX) - namespace base { - void InitThreading(); -@@ -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) -@@ -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 -@@ -116,6 +125,7 @@ - pthread_set_name_np(pthread_self(), name); - #else - #endif -+#endif // !OS_SOLARIS - } - #endif // !OS_MACOSX - ---- mozilla-esr31/ipc/chromium/src/base/port.h.orig 2015-06-04 17:42:51.887028405 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/port.h 2015-06-04 17:42:52.026427782 -0700 -@@ -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 - ---- mozilla-esr31/ipc/chromium/src/base/process_util.h.orig 2015-06-04 17:42:51.892333219 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/process_util.h 2015-06-04 17:42:52.026584078 -0700 -@@ -13,7 +13,7 @@ - #if defined(OS_WIN) - #include - #include --#elif defined(OS_LINUX) || defined(__GLIBC__) -+#elif defined(OS_LINUX) || defined(OS_SOLARIS) || defined(__GLIBC__) - #include - #include - #include -@@ -21,6 +21,10 @@ - #include - #endif - -+#if defined(OS_SOLARIS) -+#define NAME_MAX 14 -+#endif -+ - #include - #include - #include -@@ -62,7 +66,8 @@ - PROCESS_ARCH_I386 = 0x1, - PROCESS_ARCH_X86_64 = 0x2, - PROCESS_ARCH_PPC = 0x4, -- PROCESS_ARCH_ARM = 0x8 -+ PROCESS_ARCH_ARM = 0x8, -+ PROCESS_ARCH_SPARC = 0x10 - }; - - inline ProcessArchitecture GetCurrentProcessArchitecture() -@@ -76,6 +81,8 @@ - currentArchitecture = base::PROCESS_ARCH_PPC; - #elif defined(ARCH_CPU_ARMEL) - currentArchitecture = base::PROCESS_ARCH_ARM; -+#elif defined(ARCH_CPU_SPARC) -+ currentArchitecture = base::PROCESS_ARCH_SPARC; - #endif - return currentArchitecture; - } -@@ -249,7 +256,7 @@ - #if defined(OS_WIN) - HANDLE snapshot_; - bool started_iteration_; --#elif defined(OS_LINUX) || defined(__GLIBC__) -+#elif defined(OS_LINUX) || defined(OS_SOLARIS) || defined(__GLIBC__) - DIR *procfs_dir_; - #elif defined(OS_BSD) - std::vector content; ---- mozilla-esr31/ipc/chromium/src/base/process_util_posix.cc.orig 2015-06-04 17:42:51.897626965 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/process_util_posix.cc 2015-06-04 17:42:52.026710300 -0700 -@@ -110,7 +110,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) -@@ -202,7 +202,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"; ---- mozilla-esr31/ipc/chromium/src/base/shared_memory_posix.cc.orig 2015-06-04 17:42:51.902973938 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/shared_memory_posix.cc 2015-06-04 17:42:52.026834474 -0700 -@@ -124,9 +124,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; - } - -@@ -246,7 +252,7 @@ - if (memory_ == NULL) - return false; - -- munmap(memory_, max_size_); -+ munmap((caddr_t)memory_, max_size_); - memory_ = NULL; - max_size_ = 0; - return true; ---- mozilla-esr31/ipc/chromium/src/base/sys_info_posix.cc.orig 2015-06-04 17:42:51.929533186 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/sys_info_posix.cc 2015-06-04 17:42:52.027419274 -0700 -@@ -119,7 +119,7 @@ - - // static - std::string SysInfo::OperatingSystemName() { -- utsname info; -+ struct utsname info; - if (uname(&info) < 0) { - NOTREACHED(); - return ""; -@@ -129,7 +129,7 @@ - - // static - std::string SysInfo::OperatingSystemVersion() { -- utsname info; -+ struct utsname info; - if (uname(&info) < 0) { - NOTREACHED(); - return ""; -@@ -139,7 +139,7 @@ - - // static - std::string SysInfo::CPUArchitecture() { -- utsname info; -+ struct utsname info; - if (uname(&info) < 0) { - NOTREACHED(); - return ""; ---- mozilla-esr31/ipc/chromium/src/base/time.h.orig 2015-06-04 17:42:51.935020865 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/time.h 2015-06-04 17:42:52.027549556 -0700 -@@ -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; -@@ -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); ---- mozilla-esr31/ipc/chromium/src/base/time_posix.cc.orig 2015-06-04 17:42:51.940371366 -0700 -+++ mozilla-esr31/ipc/chromium/src/base/time_posix.cc 2015-06-04 17:42:52.027684078 -0700 -@@ -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(×truct); - #else - if (is_local) -@@ -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; -@@ -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 ---- mozilla-esr31/ipc/chromium/src/build/build_config.h.orig 2015-06-04 17:42:51.945838858 -0700 -+++ mozilla-esr31/ipc/chromium/src/build/build_config.h 2015-06-04 17:42:52.027834010 -0700 -@@ -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 -@@ -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 -@@ -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 -@@ -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 -@@ -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(__mips__) ---- mozilla-esr31/ipc/chromium/src/chrome/common/file_descriptor_set_posix.cc.orig 2015-06-04 17:42:51.951499640 -0700 -+++ mozilla-esr31/ipc/chromium/src/chrome/common/file_descriptor_set_posix.cc 2015-06-04 17:42:52.027937295 -0700 -@@ -4,6 +4,10 @@ - - #include "chrome/common/file_descriptor_set_posix.h" - -+#if defined(OS_SOLARIS) -+#include -+#endif -+ - #include "base/eintr_wrapper.h" - #include "base/logging.h" - ---- mozilla-esr31/ipc/chromium/src/chrome/common/ipc_channel_posix.h.orig 2015-06-04 17:42:51.956835709 -0700 -+++ mozilla-esr31/ipc/chromium/src/chrome/common/ipc_channel_posix.h 2015-06-04 17:42:52.028050266 -0700 -@@ -111,7 +111,7 @@ - }; - - // This is a control message buffer large enough to hold kMaxReadFDs --#if defined(OS_MACOSX) || defined(OS_NETBSD) -+#if defined(OS_MACOSX) || defined(OS_NETBSD) || defined(OS_SOLARIS) - // TODO(agl): OSX appears to have non-constant CMSG macros! - char input_cmsg_buf_[1024]; - #else ---- mozilla-esr31/ipc/chromium/src/chrome/common/transport_dib.h.orig 2015-06-04 17:42:51.962135898 -0700 -+++ mozilla-esr31/ipc/chromium/src/chrome/common/transport_dib.h 2015-06-04 17:42:52.028183580 -0700 -@@ -13,7 +13,7 @@ - - #if defined(OS_WIN) - #include --#elif defined(OS_LINUX) -+#elif defined(OS_LINUX) || defined(OS_SOLARIS) - #include "chrome/common/x11_util.h" - #endif - -@@ -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 -@@ -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); -@@ -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 ---- mozilla-esr31/ipc/chromium/src/third_party/libevent/solaris/event2/event-config.h.orig 1969-12-31 16:00:00.000000000 -0800 -+++ mozilla-esr31/ipc/chromium/src/third_party/libevent/solaris/event2/event-config.h 2015-06-04 17:42:52.028377621 -0700 -@@ -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 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 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 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 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 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 header file. */ -+#define _EVENT_HAVE_NETDB_H 1 -+ -+/* Define to 1 if you have the header file. */ -+/* #undef _EVENT_HAVE_NETINET_IN6_H */ -+ -+/* Define to 1 if you have the 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 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 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 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 */ -+#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 header file. */ -+#define _EVENT_HAVE_STDARG_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_STDDEF_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_STDINT_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_STDLIB_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_STRINGS_H 1 -+ -+/* Define to 1 if you have the 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 header file. */ -+#define _EVENT_HAVE_SYS_DEVPOLL_H 1 -+ -+/* Define to 1 if you have the header file. */ -+/* #undef _EVENT_HAVE_SYS_EPOLL_H 1 */ -+ -+/* Define to 1 if you have the header file. */ -+/* #define _EVENT_HAVE_SYS_EVENTFD_H 1 */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef _EVENT_HAVE_SYS_EVENT_H */ -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_IOCTL_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_MMAN_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_PARAM_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_QUEUE_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_SELECT_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_SENDFILE_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_SOCKET_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_STAT_H 1 -+ -+/* Define to 1 if you have the header file. */ -+/* #undef _EVENT_HAVE_SYS_SYSCTL_H */ -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_TIME_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_TYPES_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_UIO_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_WAIT_H 1 -+ -+/* Define if TAILQ_FOREACH is defined in */ -+#define _EVENT_HAVE_TAILQFOREACH 1 -+ -+/* Define if timeradd is defined in */ -+#define _EVENT_HAVE_TIMERADD 1 -+ -+/* Define if timerclear is defined in */ -+#define _EVENT_HAVE_TIMERCLEAR 1 -+ -+/* Define if timercmp is defined in */ -+#define _EVENT_HAVE_TIMERCMP 1 -+ -+/* Define if timerisset is defined in */ -+#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 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 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 and . */ -+#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 does not define. */ -+/* #undef _EVENT_pid_t */ -+ -+/* Define to `unsigned int' if does not define. */ -+/* #undef _EVENT_size_t */ -+ -+/* Define to unsigned int if you dont have it */ -+/* #undef _EVENT_socklen_t */ -+ -+/* Define to `int' if does not define. */ -+/* #undef _EVENT_ssize_t */ -+ -+#endif /* event2/event-config.h */ ---- mozilla-esr31/ipc/glue/BrowserProcessSubThread.cpp.orig 2015-06-04 17:42:51.968125755 -0700 -+++ mozilla-esr31/ipc/glue/BrowserProcessSubThread.cpp 2015-06-04 17:42:52.028493604 -0700 -@@ -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 - }; -@@ -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 - }; ---- mozilla-esr31/ipc/glue/BrowserProcessSubThread.h.orig 2015-06-04 17:42:51.973476461 -0700 -+++ mozilla-esr31/ipc/glue/BrowserProcessSubThread.h 2015-06-04 17:42:52.028585516 -0700 -@@ -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. ---- mozilla-esr31/ipc/glue/GeckoChildProcessHost.cpp.orig 2015-06-04 17:42:51.978784250 -0700 -+++ mozilla-esr31/ipc/glue/GeckoChildProcessHost.cpp 2015-06-04 17:42:52.028760031 -0700 -@@ -548,12 +548,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 -@@ -671,7 +674,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)) -@@ -687,7 +690,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 -@@ -706,6 +709,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); - ---- mozilla-esr31/ipc/glue/SharedMemorySysV.h.orig 2015-06-04 17:42:51.984117091 -0700 -+++ mozilla-esr31/ipc/glue/SharedMemorySysV.h 2015-06-04 17:42:52.028880854 -0700 -@@ -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 -@@ -55,6 +55,9 @@ - virtual ~SharedMemorySysV() - { - shmdt(mData); -+#ifdef OS_SOLARIS -+ shmctl(mHandle, IPC_RMID, 0); -+#endif - mHandle = -1; - mData = nullptr; - } -@@ -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; - -@@ -145,6 +150,6 @@ - } // namespace ipc - } // namespace mozilla - --#endif // OS_LINUX -+#endif // OS_LINUX || OS_SOLARIS - - #endif // ifndef mozilla_ipc_SharedMemorySysV_h ---- mozilla-esr31/ipc/ipdl/test/cxx/Makefile.in.orig 2015-06-04 17:42:51.989770256 -0700 -+++ mozilla-esr31/ipc/ipdl/test/cxx/Makefile.in 2015-06-04 17:42:52.028974010 -0700 -@@ -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 ---- mozilla-esr31/ipc/ipdl/test/cxx/TestShutdown.cpp.orig 2015-06-04 17:42:51.995172293 -0700 -+++ mozilla-esr31/ipc/ipdl/test/cxx/TestShutdown.cpp 2015-06-04 17:42:52.029072732 -0700 -@@ -184,6 +184,8 @@ - // detectors - _exit(0); - } -+ -+ return false; - } - - void ---- mozilla-esr31/js/src/configure.orig 2015-06-04 17:42:52.000916637 -0700 -+++ mozilla-esr31/js/src/configure 2015-06-04 17:42:52.030137803 -0700 -@@ -8283,7 +8283,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 ---- mozilla-esr31/mfbt/Poison.cpp.orig 2015-06-04 17:42:52.006353842 -0700 -+++ mozilla-esr31/mfbt/Poison.cpp 2015-06-04 17:42:52.030249726 -0700 -@@ -25,6 +25,7 @@ - # endif - # endif - #endif -+extern "C" int madvise(caddr_t, size_t, int); - - extern "C" { - uintptr_t gMozillaPoisonValue; -@@ -125,7 +126,7 @@ - static bool - ProbeRegion(uintptr_t region, uintptr_t size) - { -- if (madvise(reinterpret_cast(region), size, MADV_NORMAL)) { -+ if (madvise(reinterpret_cast(region), size, MADV_NORMAL)) { - return true; - } else { - return false; ---- mozilla-esr31/mfbt/tests/TestPoisonArea.cpp.orig 2015-06-04 17:42:52.011890810 -0700 -+++ mozilla-esr31/mfbt/tests/TestPoisonArea.cpp 2015-06-04 17:42:52.030377829 -0700 -@@ -104,6 +104,7 @@ - #include - - #include -+extern "C" int madvise(caddr_t, size_t, int); - #ifndef MAP_ANON - #ifdef MAP_ANONYMOUS - #define MAP_ANON MAP_ANONYMOUS -@@ -261,7 +262,7 @@ - static bool - ProbeRegion(uintptr_t page) - { -- if (madvise(reinterpret_cast(page), PAGESIZE, MADV_NORMAL)) { -+ if (madvise(reinterpret_cast(page), PAGESIZE, MADV_NORMAL)) { - return true; - } else { - return false; ---- mozilla-esr31/modules/libjar/nsZipArchive.cpp.orig 2015-06-04 17:42:52.017442262 -0700 -+++ mozilla-esr31/modules/libjar/nsZipArchive.cpp 2015-06-04 17:42:52.030536960 -0700 -@@ -40,7 +40,8 @@ - #include - #include - #include --#elif defined(XP_WIN) -+extern "C" int madvise(caddr_t, size_t, int); -+#elif defined(XP_WIN) || defined(XP_OS2) - #include - #endif - -@@ -596,7 +597,7 @@ - uint32_t readaheadLength = xtolong(startp); - if (readaheadLength) { - #if defined(XP_UNIX) -- madvise(const_cast(startp), readaheadLength, MADV_WILLNEED); -+ madvise((caddr_t)const_cast(startp), readaheadLength, MADV_WILLNEED); - #elif defined(XP_WIN) - if (aFd) { - HANDLE hFile = (HANDLE) PR_FileDesc2NativeHandle(aFd); diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox31-92-dtrace.patch --- a/components/desktop/firefox/patches/firefox31-92-dtrace.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -See Mozilla bug #702179 - dtrace probes are not installed on Solaris with -static js lib. -We haven't enabled dtrace. dtrace will trim the function name (too long). - ---- mozilla-esr31//configure.orig 2015-06-04 17:42:52.277140630 -0700 -+++ mozilla-esr31//configure 2015-06-04 17:42:52.307036479 -0700 -@@ -6472,7 +6472,7 @@ - MOZ_PNG_CFLAGS="-I$_objdir/dist/include" # needed for freetype compilation - MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/media/libpng)' - --MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(LIBXUL_DIST)/lib)' -+MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(DEPTH)/js/src)' - MOZ_JS_SHARED_LIBS='$(call EXPAND_LIBNAME_PATH,mozjs,$(LIBXUL_DIST)/lib)' - MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib' - XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/bin)' ---- mozilla-esr31/js/src/Makefile.in.orig 2015-06-04 17:42:52.285669989 -0700 -+++ mozilla-esr31/js/src/Makefile.in 2015-06-04 17:42:52.307164501 -0700 -@@ -20,7 +20,6 @@ - STATIC_LIBRARY_NAME = js_static - LIBS = $(NSPR_LIBS) - --DIST_INSTALL = 1 - - ifdef JS_STANDALONE - SHARED_LIBRARY_LIBS += $(call EXPAND_LIBNAME_PATH,mfbt,$(DEPTH)/mfbt) ---- mozilla-esr31/js/src/jsobj.cpp.orig 2015-06-04 17:42:52.291238156 -0700 -+++ mozilla-esr31/js/src/jsobj.cpp 2015-06-04 17:42:52.307610718 -0700 -@@ -1324,6 +1324,8 @@ - return fill(entry, clasp, proto.raw(), kind, obj); - } - -+#pragma weak _ZN2js23NewObjectWithGivenProtoEPNS_16ExclusiveContextEPKNS_5ClassENS_11TaggedProtoEP8JSObjectNS_2gc9AllocKindENS_13NewObjectKi = _ZN2js23NewObjectWithGivenProtoEPNS_16ExclusiveContextEPKNS_5ClassENS_11TaggedProtoEP8JSObjectNS_2gc9AllocKindENS_13NewObjectKindE -+ - JSObject* - js::NewObjectWithGivenProto(ExclusiveContext* cxArg, const js::Class* clasp, - js::TaggedProto protoArg, JSObject* parentArg, ---- mozilla-esr31/js/src/vm/Interpreter.cpp.orig 2015-06-04 17:42:52.296891616 -0700 -+++ mozilla-esr31/js/src/vm/Interpreter.cpp 2015-06-04 17:42:52.307913120 -0700 -@@ -603,6 +603,8 @@ - return Invoke(cx, ObjectValue(*obj), fval, argc, argv, rval); - } - -+#pragma weak "__1cCjsNExecuteKernel6FpnJJSContext_nCJSGHandle4CpnIJSScript___rnIJSObject_rkn0CFValue_n0ALExecuteType_n0AQAbstractFramePtr_p9A" = "__1cCjsNExecuteKernel6FpnJJSContext_nCJSGHandle4CpnIJSScript___rnIJSObject_rkn0CFValue_n0ALExecuteType_n0AQAbstractFramePtr_p9A_b_" -+ - bool - js::ExecuteKernel(JSContext* cx, HandleScript script, JSObject& scopeChainArg, const Value& thisv, - ExecuteType type, AbstractFramePtr evalInFrame, Value* result) ---- mozilla-esr31/js/src/vm/OldDebugAPI.cpp.orig 2015-06-04 17:42:52.302287919 -0700 -+++ mozilla-esr31/js/src/vm/OldDebugAPI.cpp 2015-06-04 17:42:52.308077570 -0700 -@@ -237,6 +237,8 @@ - return true; - } - -+#pragma weak "__1cMJS_ClearTrap6FpnJJSContext_pnIJSScript_pCppF134pnCJSFValue_6_nMJSTrapStatus_7_v_" = "__1cMJS_ClearTrap6FpnJJSContext_pnIJSScript_pCppF134pnCJSFValue_6_nMJSTrapStatus_p6_v_" -+ - JS_PUBLIC_API(void) - JS_ClearTrap(JSContext* cx, JSScript* script, jsbytecode* pc, - JSTrapHandler* handlerp, jsval* closurep) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox31-97-ycbcr2.patch --- a/components/desktop/firefox/patches/firefox31-97-ycbcr2.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -For studio. We can remove if we don't care about studio. - -EMMS() is not in sparc. - ---- mozilla-esr31/gfx/ycbcr/chromium_types.h.orig 2015-06-04 17:42:52.382798534 -0700 -+++ mozilla-esr31/gfx/ycbcr/chromium_types.h 2015-06-04 17:42:52.407116949 -0700 -@@ -10,7 +10,7 @@ - // On Windows, protypes.h is #included, which defines these types. This sucks! - #ifndef PROTYPES_H - typedef uint8_t uint8; --typedef int8_t int8; -+//typedef int8_t int8; - typedef int16_t int16; - typedef uint16_t uint16; - typedef uint32_t uint32; ---- mozilla-esr31/gfx/ycbcr/moz.build.orig 2015-06-04 17:42:52.388097037 -0700 -+++ mozilla-esr31/gfx/ycbcr/moz.build 2015-06-04 17:42:52.407236264 -0700 -@@ -34,7 +34,8 @@ - ] - else: - SOURCES += ['yuv_convert_mmx.cpp'] -- SOURCES['yuv_convert_mmx.cpp'].flags += CONFIG['MMX_FLAGS'] -+ if CONFIG['GNU_CC']: -+ SOURCES['yuv_convert_mmx.cpp'].flags += CONFIG['MMX_FLAGS'] - - if CONFIG['_MSC_VER']: - if CONFIG['OS_TEST'] == 'x86_64': ---- mozilla-esr31/gfx/ycbcr/yuv_convert.cpp.orig 2015-06-04 17:42:52.393413194 -0700 -+++ mozilla-esr31/gfx/ycbcr/yuv_convert.cpp 2015-06-04 17:42:52.407392523 -0700 -@@ -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 -@@ -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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox31-gnu-105-lz4-restrict-keyword.patch --- a/components/desktop/firefox/patches/firefox31-gnu-105-lz4-restrict-keyword.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +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 - ---- mozilla-esr31/mfbt/lz4.c.orig 2015-06-04 11:17:03.957437771 -0700 -+++ mozilla-esr31/mfbt/lz4.c 2015-06-04 11:17:03.963371797 -0700 -@@ -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 */ diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox31-gnu-125-mozalloc.patch --- a/components/desktop/firefox/patches/firefox31-gnu-125-mozalloc.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -Correctly define malloc_usable_size - -Get correct abort() function definition for Solaris. - ---- mozilla-esr31/memory/mozalloc/mozalloc.cpp.orig 2015-06-04 11:10:38.830585129 -0700 -+++ mozilla-esr31/memory/mozalloc/mozalloc.cpp 2015-06-04 11:10:38.830522608 -0700 -@@ -200,6 +200,8 @@ - } - #endif // if defined(HAVE_VALLOC) - -+extern "C" size_t malloc_usable_size(const void *ptr); -+ - size_t - moz_malloc_usable_size(void *ptr) - { ---- mozilla-esr31/memory/mozalloc/mozalloc_abort.cpp.orig 2015-06-04 11:10:38.830454359 -0700 -+++ mozilla-esr31/memory/mozalloc/mozalloc_abort.cpp 2015-06-04 11:10:38.830381114 -0700 -@@ -34,7 +34,11 @@ - // Define abort() here, so that it is used instead of the system abort(). This - // lets us control the behavior when aborting, in order to get better results - // on *NIX platforms. See mozalloc_abort for details. -+#if defined(SOLARIS) -+void std::abort(void) -+#else - void abort(void) -+#endif - { - mozalloc_abort("Redirecting call to abort() to mozalloc_abort\n"); - } diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox31-gnu-130-xopen.patch --- a/components/desktop/firefox/patches/firefox31-gnu-130-xopen.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -Prevent: -error: #error "Compiler or options invalid for pre-UNIX 03 X/Open applications and pre-2001 POSIX applications - ---- mozilla-esr31/media/libpng/pngpriv.h.orig 2015-06-04 13:00:52.516503541 -0700 -+++ mozilla-esr31/media/libpng/pngpriv.h 2015-06-04 13:00:52.515657420 -0700 -@@ -39,6 +39,8 @@ - */ - #define _POSIX_SOURCE 1 /* Just the POSIX 1003.1 and C89 APIs */ - -+#define _XOPEN_SOURCE 600 -+ - #ifndef PNG_VERSION_INFO_ONLY - /* Standard library headers not required by png.h: */ - # include diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox31-gnu-ReadAheadFile.patch --- a/components/desktop/firefox/patches/firefox31-gnu-ReadAheadFile.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +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(). - -diff --git a/xpcom/glue/FileUtils.cpp b/xpcom/glue/FileUtils.cpp ---- a/xpcom/glue/FileUtils.cpp -+++ b/xpcom/glue/FileUtils.cpp -@@ -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) { diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/patches/firefox31-sparc-ta-6.patch --- a/components/desktop/firefox/patches/firefox31-sparc-ta-6.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +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 -@@ -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; - 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 -@@ -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 -@@ -4016,16 +4016,22 @@ XREMain::XRE_mainRun() - } - - /* - * XRE_main - A class based main entry point used by most platforms. - */ - 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 -+ - char aLocal; - GeckoProfilerInitRAII profilerGuard(&aLocal); - PROFILER_LABEL("Startup", "XRE_Main"); - - mozilla::IOInterposerInit ioInterposerGuard; - - nsresult rv = NS_OK; - diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/firefox/test/results-32.master --- a/components/desktop/firefox/test/results-32.master Tue Mar 01 10:33:35 2016 -0800 +++ b/components/desktop/firefox/test/results-32.master Tue Mar 01 12:56:53 2016 -0800 @@ -1,9 +1,11 @@ -make[1]: Entering directory `$(@D)/js/src' +make[1]: Entering directory '$(@D)/js/src' ../../dist/bin/run-mozilla.sh $(@D)/_virtualenv/bin/python -u $(SOURCE_DIR)/js/src/jit-test/jit_test.py \ - --no-slow --no-progress --tinderbox --tbpl -j 2 -f \ + --no-slow --no-progress --format=automation --jitflags=all -j 2 -f \ + \ + \ ../../dist/bin/js PASSED ALL Result summary: -Passed: 24660 +Passed: 27334 Failed: 0 -make[1]: Leaving directory `$(@D)/js/src' +make[1]: Leaving directory '$(@D)/js/src' diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/Makefile --- a/components/desktop/thunderbird/Makefile Tue Mar 01 10:33:35 2016 -0800 +++ b/components/desktop/thunderbird/Makefile Tue Mar 01 12:56:53 2016 -0800 @@ -31,35 +31,50 @@ include ../../../make-rules/shared-macros.mk COMPONENT_NAME= thunderbird -COMPONENT_VERSION= 31.6.0 +COMPONENT_VERSION= 38.5.0 COMPONENT_PROJECT_URL= http://www.mozilla.com/thunderbird -COMPONENT_SRC= comm-esr31 +COMPONENT_SRC= comm-esr38 COMPONENT_SRC_NAME = $(COMPONENT_NAME)-$(COMPONENT_VERSION) COMPONENT_ARCHIVE= $(COMPONENT_SRC_NAME).source.tar.bz2 COMPONENT_ARCHIVE_HASH= \ - sha256:ccbf8cbb740bc1b30ecf4fe39aab226607f9a41e23a07e994c508a90e8b70508 + sha256:7da187d4d5df17b1457bd93b584f78f5e41d2094f87c14e74ee9d8064de25d0d MOZILLA_FTP = http://ftp.mozilla.org/pub/mozilla.org/$(COMPONENT_NAME)/releases/$(COMPONENT_VERSION) COMPONENT_ARCHIVE_URL= $(MOZILLA_FTP)/source/$(COMPONENT_ARCHIVE) COMPONENT_BUGDB= tbird/mailer -TPNO= 22326 +TPNO= 26829 + +LIGHTNING_VERSION= lightning-4.0.5 # There are a set of .xpi files (as given in the LANG_LIST definition below) # that we need. These are available under: # http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/31.6.0/linux-i686/xpi/ +# https://ftp.mozilla.org/pub/calendar/lightning/candidates/4.0.5-candidates/build1/linux-i686/ # We could download and unpack them individually, but instead I've created # a compressed tarball of them, and made that available locally for download. # Downloading them individually can be a problem because firefox/thunderbird # collide due to different files with identical .xpi names. -COMPONENT_ARCHIVE_1 = thunderbird-31.6.0-xpi.tar.gz +COMPONENT_ARCHIVE_1 = $(COMPONENT_SRC_NAME)-xpi.tar.gz COMPONENT_ARCHIVE_HASH_1 = \ - sha256:80e9cc4b152d75f5c3887c01ad1767680aff5ca7c3aee87254bdc1574590b95e + sha256:eeb85b3e5ef7a97abff831f3aa895c2034cb8f039bb3383dba3a5f495e1fe93f COMPONENT_ARCHIVE_URL_1 = $(INTERNAL_ARCHIVE_MIRROR)/source-archives/$(COMPONENT_ARCHIVE_1) +COMPONENT_ARCHIVE_2 = $(LIGHTNING_VERSION)-xpi.tar.gz +COMPONENT_ARCHIVE_HASH_2 = \ + sha256:96f263984b1e939215a614dea21fda479eb4babf1574141728b9dbf273067893 +COMPONENT_ARCHIVE_URL_2 = $(INTERNAL_ARCHIVE_MIRROR)/source-archives/$(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 +# Firefox and Thunderbird share the same firefox*.patch patches. Copy these +# patches from the Firefox patches directory, except for patches 42 and 46, +# which don't get applied in Thunderbird. +COMPONENT_POST_UNPACK_ACTION += \ + rm -f patches/firefox*.patch ; \ + cp ../firefox/patches/*.patch patches/ ; \ + rm -f patches/firefox*42*.patch patches/firefox*46*.patch; include $(WS_MAKE_RULES)/prep.mk include $(WS_MAKE_RULES)/configure.mk @@ -81,6 +96,7 @@ COMPONENT_PRE_CONFIGURE_ACTION += \ echo "mk_add_options BUILD_OFFICIAL=1" > $(MOZCONFIG) ; \ echo "mk_add_options MOZILLA_OFFICIAL=1" >> $(MOZCONFIG) ; \ + echo "ac_add_options --enable-application=mail" >> $(MOZCONFIG) ; \ echo "ac_add_options --prefix=/usr" >> $(MOZCONFIG) ; \ echo "ac_add_options --libdir=/usr/lib" >> $(MOZCONFIG) ; \ echo "ac_add_options --mandir=/usr/share/man" >> $(MOZCONFIG) ; \ @@ -115,7 +131,9 @@ CONFIGURE_ENV += PKG_CONFIG_PATH=$(CONFIGURE_LIBDIR.$(BITS))/pkgconfig CONFIGURE_ENV += OS_DEFINES="-D__USE_LEGACY_PROTOTYPES__" -CONFIGURE_ENV += LDFLAGS="-z ignore" +# -L.../dist/bin needs to be set otherwise it will report missing libnss3.so, +# libssl3.so, etc, while linking. +CONFIGURE_ENV += LDFLAGS="-z ignore -z interpose -B nodirect -L$(BUILD_DIR_32)/dist/lib" CONFIGURE_ENV += MOZCONFIG=$(MOZCONFIG) CONFIGURE_ENV += "CC=$(CC)" @@ -132,25 +150,34 @@ CONFIGURE_OPTIONS = --prefix=$(CONFIGURE_PREFIX) CONFIGURE_OPTIONS += --mandir=$(CONFIGURE_MANDIR) +COMPONENT_POST_CONFIGURE_ACTION += \ + $(CP) $(MOZCONFIG) $(COMPONENT_SRC)/mozconfig + COMPONENT_POST_BUILD_ACTION = \ (cd $(@D)/mail/installer ; $(ENV) $(COMPONENT_BUILD_ENV) \ $(GMAKE) $(COMPONENT_BUILD_ARGS) $(COMPONENT_BUILD_TARGETS)) -COMPONENT_POST_INSTALL_ACTION += \ - $(CP) $(BUILD_DIR_32)/mozilla/dist/thunderbird/precomplete \ - $(PROTOUSRLIBDIR)/thunderbird-$(COMPONENT_VERSION)/precomplete ; +# Path to lightning extension directory +LIGHTNING_EXT_DIR = \ + $(PROTOUSRLIBDIR)/thunderbird-$(COMPONENT_VERSION)/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103} COMPONENT_POST_INSTALL_ACTION += \ - $(CP) -r $(BUILD_DIR_32)/mozilla/dist/bin/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103} \ - $(PROTOUSRLIBDIR)/thunderbird-$(COMPONENT_VERSION)/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103} ; + $(CP) -r $(BUILD_DIR_32)/dist/bin/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103} \ + $(LIGHTNING_EXT_DIR) ; COMPONENT_POST_INSTALL_ACTION += \ $(RM) -rf xpi ; \ /usr/bin/tar xvf $(COMPONENT_ARCHIVE_1) > /dev/null 2>&1 ; \ + /usr/bin/tar xvf $(COMPONENT_ARCHIVE_2) > /dev/null 2>&1 ; \ list1='$(LANG_LIST)' ; for f in $$list1 ; do \ $(CP) xpi/$$f.xpi \ $(PROTOUSRLIBDIR)/thunderbird-$(COMPONENT_VERSION)/extensions/langpack-$$f@thunderbird.mozilla.org.xpi ; \ - done ; + unzip xpi-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 ; LIB_LIST.i386 = LIB_LIST.sparc = $(PROTOUSRLIBDIR)/thunderbird-devel-$(COMPONENT_VERSION)/sdk/lib/cpu/sparcv8plus/libnspr_flt4.so @@ -164,11 +191,13 @@ ASLR_MODE = $(ASLR_ENABLE) -COMPONENT_TEST_DIR = $(@D)/mozilla/js/src +COMPONENT_TEST_DIR = $(@D)/js/src COMPONENT_TEST_TARGETS=check-jit-test COMPONENT_TEST_TRANSFORMS += \ '-e "/\(^TEST-PASS\).*/d" ' +$(SOURCE_DIR)/.patched-firefox38-%: GPATCH_FLAGS += -d $(@D)/mozilla + configure: $(CONFIGURE_32) build: $(BUILD_32) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox100-39-cairo-perf.patch --- a/components/desktop/thunderbird/patches/firefox100-39-cairo-perf.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +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. ---- comm-esr31/mozilla/gfx/cairo/cairo/src/cairo-xlib-surface.c.orig 2015-06-04 17:42:51.419088049 -0700 -+++ comm-esr31/mozilla/gfx/cairo/cairo/src/cairo-xlib-surface.c 2015-06-04 17:42:51.424665839 -0700 -@@ -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; -@@ -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; diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox12-00-libnspr_flt4.patch --- a/components/desktop/thunderbird/patches/firefox12-00-libnspr_flt4.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -This adds a library necessary for sparc. -This will probably not be sent upstream because it would be difficult to -add a sparc-only ifdef condition for this. - ---- comm-esr31/mozilla/browser/installer/package-manifest.in.orig 2015-06-04 17:42:52.445166224 -0700 -+++ comm-esr31/mozilla/browser/installer/package-manifest.in 2015-06-04 17:42:52.450333944 -0700 -@@ -741,6 +741,7 @@ - bin/libfreebl_32fpu_3.so - bin/libfreebl_32int_3.so - bin/libfreebl_32int64_3.so -+bin/cpu/sparcv8plus/libnspr_flt4.so - #endif - - ; [Updater] diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox16-48-sparc-lea.patch --- a/components/desktop/thunderbird/patches/firefox16-48-sparc-lea.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -Implements PolyIC for sparc. -This is going away in the future so no need to send upstream. - ---- comm-esr31/mozilla/js/src/assembler/assembler/MacroAssemblerSparc.h.orig 2015-06-04 17:42:51.582947696 -0700 -+++ comm-esr31/mozilla/js/src/assembler/assembler/MacroAssemblerSparc.h 2015-06-04 17:42:51.585565407 -0700 -@@ -1005,9 +1005,12 @@ - - void lea(BaseIndex address, RegisterID dest) - { -- // lea only used by PolyIC. -- // PolyIC is not enabled for sparc now. -- ASSERT(0); -+ move(address.index, dest); -+ if (address.scale != 0) -+ lshift32(Imm32(address.scale), dest); -+ if (address.offset) -+ add32(Imm32(address.offset), dest); -+ add32(address.base, dest); - } - - void add32(Imm32 imm, AbsoluteAddress address) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox18-93-libffi-sparc.patch --- a/components/desktop/thunderbird/patches/firefox18-93-libffi-sparc.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -This is already upstream in libffi, but not yet in Mozilla. - ---- comm-esr31/mozilla/js/src/ctypes/libffi/src/sparc/ffi.c.orig 2015-06-04 17:42:52.335127713 -0700 -+++ comm-esr31/mozilla/js/src/ctypes/libffi/src/sparc/ffi.c 2015-06-04 17:42:52.343504239 -0700 -@@ -406,8 +406,50 @@ - /* We don't yet support calling 32bit code from 64bit */ - FFI_ASSERT(0); - #else -- ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, -- cif->flags, rvalue, fn); -+ if (rvalue && (cif->rtype->type == FFI_TYPE_STRUCT -+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+ || cif->flags == FFI_TYPE_LONGDOUBLE -+#endif -+ )) -+ { -+ /* For v8, we need an "unimp" with size of returning struct */ -+ /* behind "call", so we alloc some executable space for it. */ -+ /* l7 is used, we need to make sure v8.S doesn't use %l7. */ -+ unsigned int *call_struct = NULL; -+ ffi_closure_alloc(32, &call_struct); -+ if (call_struct) -+ { -+ unsigned long f = (unsigned long)fn; -+ call_struct[0] = 0xae10001f; /* mov %i7, %l7 */ -+ call_struct[1] = 0xbe10000f; /* mov %o7, %i7 */ -+ call_struct[2] = 0x03000000 | f >> 10; /* sethi %hi(fn), %g1 */ -+ call_struct[3] = 0x9fc06000 | (f & 0x3ff); /* jmp %g1+%lo(fn), %o7 */ -+ call_struct[4] = 0x01000000; /* nop */ -+ if (cif->rtype->size < 0x7f) -+ call_struct[5] = cif->rtype->size; /* unimp */ -+ else -+ call_struct[5] = 0x01000000; /* nop */ -+ call_struct[6] = 0x81c7e008; /* ret */ -+ call_struct[7] = 0xbe100017; /* mov %l7, %i7 */ -+ asm volatile ("iflush %0; iflush %0+8; iflush %0+16; iflush %0+24" : : -+ "r" (call_struct) : "memory"); -+ /* SPARC v8 requires 5 instructions for flush to be visible */ -+ asm volatile ("nop; nop; nop; nop; nop"); -+ ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, -+ cif->flags, rvalue, call_struct); -+ ffi_closure_free(call_struct); -+ } -+ else -+ { -+ ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, -+ cif->flags, rvalue, fn); -+ } -+ } -+ else -+ { -+ ffi_call_v8(ffi_prep_args_v8, &ecif, cif->bytes, -+ cif->flags, rvalue, fn); -+ } - #endif - break; - case FFI_V9: -@@ -468,13 +510,13 @@ - closure->fun = fun; - closure->user_data = user_data; - -- /* Flush the Icache. FIXME: alignment isn't certain, assume 8 bytes */ -+ /* Flush the Icache. closure is 8 bytes aligned */ - #ifdef SPARC64 -- asm volatile ("flush %0" : : "r" (closure) : "memory"); -- asm volatile ("flush %0" : : "r" (((char *) closure) + 8) : "memory"); -+ asm volatile ("flush %0; flush %0+8" : : "r" (closure) : "memory"); - #else -- asm volatile ("iflush %0" : : "r" (closure) : "memory"); -- asm volatile ("iflush %0" : : "r" (((char *) closure) + 8) : "memory"); -+ asm volatile ("iflush %0; iflush %0+8" : : "r" (closure) : "memory"); -+ /* SPARC v8 requires 5 instructions for flush to be visible */ -+ asm volatile ("nop; nop; nop; nop; nop"); - #endif - - return FFI_OK; ---- comm-esr31/mozilla/js/src/ctypes/libffi/configure.orig 2015-06-04 17:42:52.338127066 -0700 -+++ comm-esr31/mozilla/js/src/ctypes/libffi/configure 2015-06-04 17:42:52.344846571 -0700 -@@ -12425,7 +12425,7 @@ - - case "$target" in - # Darwin 10 (OSX 10.6) and beyond allocate non-executable pages -- *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*) -+ *-apple-darwin1* | *-*-freebsd* | *-*-openbsd* | *-*-solaris*) - - $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h - diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox20-24-stackwalk_compile.patch --- a/components/desktop/thunderbird/patches/firefox20-24-stackwalk_compile.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -Adds an sp argument for the load_address() function. The sp argument is used -in the NS_WalkStackCallback() function. This is to match a new argument -that was added in the function for other platforms. -See Mozilla bug #766579. -Need more followup to fully understand. - ---- comm-esr31/mozilla/xpcom/base/nsStackWalk.cpp.orig 2015-06-04 17:42:51.321202120 -0700 -+++ comm-esr31/mozilla/xpcom/base/nsStackWalk.cpp 2015-06-04 17:42:51.326394782 -0700 -@@ -891,7 +891,7 @@ - #include - #include - --static int load_address ( void * pc, void * arg ); -+static int load_address ( void * pc, void * sp, void * arg ); - static struct bucket * newbucket ( void * pc ); - static struct frame * cs_getmyframeptr ( void ); - static void cs_walk_stack ( void * (*read_func)(char * address), -@@ -966,7 +966,7 @@ - - - static int --load_address(void * pc, void * arg) -+load_address(void * pc, void * sp, void * arg ) - { - static struct bucket table[2048]; - static mutex_t lock; -@@ -988,7 +988,7 @@ - if (ptr->next) { - mutex_unlock(&lock); - } else { -- (args->callback)(pc, args->closure); -+ (args->callback)(pc, NULL, args->closure); - args->numFrames++; - if (args->maxFrames != 0 && args->numFrames == args->maxFrames) - stop = 1; // causes us to stop getting frames diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox20-46-strcasestr.patch --- a/components/desktop/thunderbird/patches/firefox20-46-strcasestr.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -The strcasestr function is not available in Solaris 10, so this replaces it -with an alternate function. This is not necessary for Solaris 12+. -The 'uname' part is necessary because the uname() function returns a -non-negative value. - ---- comm-esr31/mozilla/widget/xpwidgets/GfxInfoX11.cpp.orig 2015-06-04 17:42:51.546213832 -0700 -+++ comm-esr31/mozilla/widget/xpwidgets/GfxInfoX11.cpp 2015-06-04 17:42:51.548646551 -0700 -@@ -12,6 +12,7 @@ - #include - #include "nsCRTGlue.h" - #include "prenv.h" -+#include "plstr.h" - - #include "GfxInfoX11.h" - -@@ -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); -@@ -210,13 +211,13 @@ - // with Mesa, the version string contains "Mesa major.minor" and that's all the version information we get: - // there is no actual driver version info. - whereToReadVersionNumbers = Mesa_in_version_string + strlen("Mesa"); -- if (strcasestr(mVendor.get(), "nouveau")) -+ if (PL_strcasestr(mVendor.get(), "nouveau")) - mIsNouveau = true; -- if (strcasestr(mRenderer.get(), "intel")) // yes, intel is in the renderer string -+ if (PL_strcasestr(mRenderer.get(), "intel")) // yes, intel is in the renderer string - mIsIntel = true; -- if (strcasestr(mRenderer.get(), "llvmpipe")) -+ if (PL_strcasestr(mRenderer.get(), "llvmpipe")) - mIsLlvmpipe = true; -- if (strcasestr(mRenderer.get(), "software rasterizer")) -+ if (PL_strcasestr(mRenderer.get(), "software rasterizer")) - mIsOldSwrast = true; - } else if (strstr(mVendor.get(), "NVIDIA Corporation")) { - mIsNVIDIA = true; diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox20-52-check_test.patch --- a/components/desktop/thunderbird/patches/firefox20-52-check_test.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -This patch is for testing. Potential for sending upstream. - ---- comm-esr31/mozilla/testing/runcppunittests.py.orig 2015-06-04 17:42:51.633983468 -0700 -+++ comm-esr31/mozilla/testing/runcppunittests.py 2015-06-04 17:42:51.638876910 -0700 -@@ -80,6 +80,8 @@ - pathvar = "" - if mozinfo.os == "linux": - pathvar = "LD_LIBRARY_PATH" -+ if mozinfo.os == "unix": -+ pathvar = "LD_LIBRARY_PATH" - elif mozinfo.os == "mac": - pathvar = "DYLD_LIBRARY_PATH" - elif mozinfo.os == "win": diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox20-82-sqlite3-unix-excl.patch --- a/components/desktop/thunderbird/patches/firefox20-82-sqlite3-unix-excl.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +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. -Needs further investigation, will probably be difficult to send upstream. - ---- comm-esr31/mozilla/browser/app/profile/firefox.js.orig 2015-06-04 17:42:52.206758105 -0700 -+++ comm-esr31/mozilla/browser/app/profile/firefox.js 2015-06-04 17:42:52.212124280 -0700 -@@ -1022,6 +1022,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); - diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox21-49-hnjfile.patch --- a/components/desktop/thunderbird/patches/firefox21-49-hnjfile.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -This allows us to access some function from wchar.h that other platforms -can get from stdio.h. -Potentially send upstream with an ifdef Solaris statement. - ---- comm-esr31/mozilla/intl/hyphenation/src/hnjalloc.h.orig 2015-06-04 17:42:51.598696275 -0700 -+++ comm-esr31/mozilla/intl/hyphenation/src/hnjalloc.h 2015-06-04 17:42:51.603672670 -0700 -@@ -24,6 +24,7 @@ - */ - - #include /* ensure stdio.h is loaded before our macros */ -+#include - - #undef FILE - #define FILE hnjFile diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox21-50-nsMathUtils.patch --- a/components/desktop/thunderbird/patches/firefox21-50-nsMathUtils.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -This allows us to get some function from math.h that other platforms are -getting from ieeefp.h. -Easy to send upstream since it already has ifdef statement. - ---- comm-esr31/mozilla/xpcom/ds/nsMathUtils.h.orig 2015-06-04 17:42:51.616409449 -0700 -+++ comm-esr31/mozilla/xpcom/ds/nsMathUtils.h 2015-06-04 17:42:51.621339786 -0700 -@@ -13,6 +13,7 @@ - #include - - #ifdef SOLARIS -+#include - #include - #endif - diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox22-76-skip_mozbuild_test.patch --- a/components/desktop/thunderbird/patches/firefox22-76-skip_mozbuild_test.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -For testing. Runs the test from a different environment than the Mozilla -default. Needs further investigation. - ---- comm-esr31/mozilla/python/mozbuild/mozbuild/test/test_mozconfig.py.orig 2015-06-04 17:42:52.122873933 -0700 -+++ comm-esr31/mozilla/python/mozbuild/mozbuild/test/test_mozconfig.py 2015-06-04 17:42:52.133296079 -0700 -@@ -477,5 +477,5 @@ - self.assertEquals(e.exception.output, ['hello world']) - - --if __name__ == '__main__': -- main() -+#if __name__ == '__main__': -+# main() ---- comm-esr31/mozilla/python/mozbuild/mozbuild/test/test_base.py.orig 2015-06-04 17:42:52.128263022 -0700 -+++ comm-esr31/mozilla/python/mozbuild/mozbuild/test/test_base.py 2015-06-04 17:42:52.133425656 -0700 -@@ -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 -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox22-79-gthread-dlopen.patch --- a/components/desktop/thunderbird/patches/firefox22-79-gthread-dlopen.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ ---- comm-esr31/mozilla/xpcom/glue/standalone/nsXPCOMGlue.cpp.orig 2015-06-04 17:42:52.147539933 -0700 -+++ comm-esr31/mozilla/xpcom/glue/standalone/nsXPCOMGlue.cpp 2015-06-04 17:42:52.152710273 -0700 -@@ -418,6 +418,8 @@ - } - } - -+ static void* gthreadso = dlopen("libgthread-2.0.so.0", RTLD_GLOBAL | RTLD_LAZY); -+ - GetFrozenFunctionsFunc sym = - (GetFrozenFunctionsFunc) GetSymbol(sTop->libHandle, LEADING_UNDERSCORE "NS_GetFrozenFunctions"); - diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox25-07-webaudio_math.patch --- a/components/desktop/thunderbird/patches/firefox25-07-webaudio_math.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ ---- comm-esr31/mozilla/content/media/webaudio/blink/DenormalDisabler.h.orig 2015-06-04 17:42:51.279492311 -0700 -+++ comm-esr31/mozilla/content/media/webaudio/blink/DenormalDisabler.h 2015-06-04 17:42:51.288558769 -0700 -@@ -27,6 +27,7 @@ - - #define _USE_MATH_DEFINES - #include -+#include - #include - - namespace WebCore { ---- comm-esr31/mozilla/content/media/webaudio/ThreeDPoint.h.orig 2015-06-04 17:42:51.286104792 -0700 -+++ comm-esr31/mozilla/content/media/webaudio/ThreeDPoint.h 2015-06-04 17:42:51.288664521 -0700 -@@ -8,6 +8,7 @@ - #define ThreeDPoint_h_ - - #include -+#include - #include - - namespace mozilla { diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox26-06-donot-delay-stopping-realplayer.patch --- a/components/desktop/thunderbird/patches/firefox26-06-donot-delay-stopping-realplayer.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +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. - ---- comm-esr31/mozilla/content/base/src/nsObjectLoadingContent.cpp.orig 2015-06-04 17:42:51.184423172 -0700 -+++ comm-esr31/mozilla/content/base/src/nsObjectLoadingContent.cpp 2015-06-04 17:42:51.208745161 -0700 -@@ -2744,7 +2744,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") -@@ -2752,6 +2753,8 @@ - && !aInstanceOwner->MatchPluginName("XStandard plugin") - && !aInstanceOwner->MatchPluginName("CMISS Zinc Plugin") - #endif -+ && !aInstanceOwner->MatchPluginName("RealPlayer") -+ && !aInstanceOwner->MatchPluginName("Helix") - ) { - nsCOMPtr evt = - new nsStopPluginRunnable(aInstanceOwner, aContent); diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox26-36-package_warning.patch --- a/components/desktop/thunderbird/patches/firefox26-36-package_warning.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +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. - ---- comm-esr31/mozilla/browser/installer/Makefile.in.orig 2015-06-04 17:42:51.400825465 -0700 -+++ comm-esr31/mozilla/browser/installer/Makefile.in 2015-06-04 17:42:51.405890984 -0700 -@@ -12,7 +12,7 @@ - MOZ_PKG_MANIFEST_P = $(srcdir)/package-manifest.in - # Some files have been already bundled with xulrunner - ifndef SYSTEM_LIBXUL --MOZ_PKG_FATAL_WARNINGS = 1 -+#MOZ_PKG_FATAL_WARNINGS = 1 - endif - - DEFINES += -DAB_CD=$(AB_CD) -DMOZ_APP_NAME=$(MOZ_APP_NAME) -DPREF_DIR=$(PREF_DIR) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox26-99-LocalFileUnix.patch --- a/components/desktop/thunderbird/patches/firefox26-99-LocalFileUnix.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +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. - ---- comm-esr31/mozilla/xpcom/io/nsLocalFileUnix.cpp.orig 2015-06-04 17:42:52.429921172 -0700 -+++ comm-esr31/mozilla/xpcom/io/nsLocalFileUnix.cpp 2015-06-04 17:42:52.432611314 -0700 -@@ -13,6 +13,7 @@ - #include - #include - #include -+#include - #include - #include - #include diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox27-206-build-config.patch --- a/components/desktop/thunderbird/patches/firefox27-206-build-config.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -This is used for Sun Studio because the depend files are different. -Can potentially remove this patch, but need to investigate to see when -link_deps is run. - ---- comm-esr31/mozilla/python/mozbuild/mozbuild/action/link_deps.py.orig 2015-06-04 17:42:52.548434964 -0700 -+++ comm-esr31/mozilla/python/mozbuild/mozbuild/action/link_deps.py 2015-06-04 17:42:52.553642029 -0700 -@@ -129,9 +129,9 @@ - if deps: - deps = list(self.normpaths(deps)) - for t in self.normpaths(rule.targets()): -- if t in self._targets: -- raise Exception('Found target %s in %s and %s' -- % (t, self._targets[t][0], depfile)) -+# if t in self._targets: -+# raise Exception('Found target %s in %s and %s' -+# % (t, self._targets[t][0], depfile)) - self._targets[t] = (depfile, deps) - - def dump(self, fh, removal_guard=True): -@@ -216,7 +216,8 @@ - group=group, - abspaths=opts.abspaths) - for f in opts.dependency_files: -- linker.add_dependencies(open(f)) -+ if os.path.isfile(f): -+ linker.add_dependencies(open(f)) - - if opts.output: - out = open(opts.output, 'w') diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox27-47-uname.patch --- a/components/desktop/thunderbird/patches/firefox27-47-uname.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -The uname() function on Solaris can return a non-negative value. - ---- comm-esr31/mozilla/toolkit/components/startup/nsUserInfoUnix.cpp.orig 2015-06-04 17:42:51.565111934 -0700 -+++ comm-esr31/mozilla/toolkit/components/startup/nsUserInfoUnix.cpp 2015-06-04 17:42:51.567398410 -0700 -@@ -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; - } - diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox27-67-ion_AsmJS_x86.patch --- a/components/desktop/thunderbird/patches/firefox27-67-ion_AsmJS_x86.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -REG_EIP is already defined elsewhere for Linux. - ---- comm-esr31/mozilla/js/src/jit/AsmJSSignalHandlers.cpp.orig 2015-06-04 17:42:51.702781399 -0700 -+++ comm-esr31/mozilla/js/src/jit/AsmJSSignalHandlers.cpp 2015-06-04 17:42:51.707794331 -0700 -@@ -58,6 +58,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]) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox27-80-mftt_infinity.patch --- a/components/desktop/thunderbird/patches/firefox27-80-mftt_infinity.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +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. - ---- comm-esr31/mozilla/mfbt/decimal/Decimal.cpp.orig 2015-06-04 17:42:52.191270749 -0700 -+++ comm-esr31/mozilla/mfbt/decimal/Decimal.cpp 2015-06-04 17:42:52.193703088 -0700 -@@ -33,6 +33,7 @@ - - #include - #include -+#include - - using namespace moz_decimal_utils; - -@@ -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) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox28-217-xpt-as-flag.patch --- a/components/desktop/thunderbird/patches/firefox28-217-xpt-as-flag.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +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. - ---- comm-esr31/mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig 2015-06-04 17:42:52.626316900 -0700 -+++ comm-esr31/mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in 2015-06-04 17:42:52.636686080 -0700 -@@ -98,6 +98,7 @@ - -e 's/^\(STUB_ENTRY\)(\([0-9][0-9]\))/\12\(\2\)/' \ - -e 's/^\(STUB_ENTRY\)(\([0-9][0-9][0-9]\))/\13\(\2\)/' \ - $(DIST)/include/xptcstubsdef.inc > $@ -+ASFLAGS += -I. - ifeq (x86_64,$(OS_TEST)) - ASFLAGS += -xarch=amd64 - endif ---- comm-esr31/mozilla/xpcom/reflect/xptcall/src/md/unix/moz.build.orig 2015-06-04 17:42:52.631590433 -0700 -+++ comm-esr31/mozilla/xpcom/reflect/xptcall/src/md/unix/moz.build 2015-06-04 17:42:52.636848564 -0700 -@@ -74,6 +74,9 @@ - 'xptcstubs_gcc_x86_unix.cpp' - ] - else: -+ GENERATED_FILES = [ -+ 'xptcstubsdef_asm.solx86', -+ ] - SOURCES += [ - 'xptcinvoke_asm_x86_solaris_SUNW.s', - 'xptcinvoke_x86_solaris.cpp', -@@ -273,9 +276,6 @@ - ] - - if CONFIG['OS_ARCH'] == 'SunOS' and CONFIG['OS_TEST'].find('86') == -1: -- GENERATED_FILES = [ -- 'xptcstubsdef_asm.solx86', -- ] - if CONFIG['HAVE_64BIT_OS']: - SOURCES += [ - 'xptcinvoke_sparcv9_solaris.cpp', diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox28-88-libvpx_compile.patch --- a/components/desktop/thunderbird/patches/firefox28-88-libvpx_compile.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -Can probably send upstream. - ---- comm-esr31/mozilla/media/libvpx/Makefile.in.orig 2015-06-04 17:42:52.225216512 -0700 -+++ comm-esr31/mozilla/media/libvpx/Makefile.in 2015-06-04 17:42:52.235644957 -0700 -@@ -8,6 +8,10 @@ - AS_DASH_C_FLAG=$(VPX_DASH_C_FLAG) - ASM_SUFFIX=$(VPX_ASM_SUFFIX) - -+ifeq ($(OS_TARGET),SunOS) -+ASFLAGS+=-DSOLARIS=1 -+endif -+ - ifdef VPX_ARM_ASM - # Building on an ARM platform with a supported assembler, include - # the optimized assembly in the build. -@@ -115,7 +119,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 $@ -c $(patsubst -xO[45],-xO3,$(COMPILE_CFLAGS)) $< ---- comm-esr31/mozilla/media/libvpx/vpx_ports/x86_abi_support.asm.orig 2015-06-04 17:42:52.233318593 -0700 -+++ comm-esr31/mozilla/media/libvpx/vpx_ports/x86_abi_support.asm 2015-06-04 17:42:52.235792816 -0700 -@@ -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 -@@ -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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox28-90-cubeb.patch --- a/components/desktop/thunderbird/patches/firefox28-90-cubeb.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,543 +0,0 @@ -For SunAudio audio playback. We need to investigate whether we care about -this or whether we are just going to support PulseAudio. - ---- comm-esr31/mozilla/media/libcubeb/src/cubeb.c.orig 2015-06-04 17:42:52.252769663 -0700 -+++ comm-esr31/mozilla/media/libcubeb/src/cubeb.c 2015-06-04 17:42:52.260965308 -0700 -@@ -54,6 +54,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) -@@ -120,6 +123,9 @@ - #if defined(USE_AUDIOTRACK) - audiotrack_init, - #endif -+#if defined(USE_SUN) -+ sunaudio_init, -+#endif - }; - int i; - ---- comm-esr31/mozilla/media/libcubeb/src/cubeb_sun.c.orig 1969-12-31 16:00:00.000000000 -0800 -+++ comm-esr31/mozilla/media/libcubeb/src/cubeb_sun.c 2015-06-04 17:42:52.261184916 -0700 -@@ -0,0 +1,500 @@ -+/* -+ * Copyright (c) 2013 Ginn Chen -+ * -+ * This program is made available under an ISC-style license. See the -+ * accompanying file LICENSE for details. -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#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 -+}; ---- comm-esr31/mozilla/media/libcubeb/src/moz.build.orig 2015-06-04 17:42:52.255965962 -0700 -+++ comm-esr31/mozilla/media/libcubeb/src/moz.build 2015-06-04 17:42:52.261292681 -0700 -@@ -30,6 +30,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 -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox28-96-MediaDecoder.patch --- a/components/desktop/thunderbird/patches/firefox28-96-MediaDecoder.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -Casts the value to an int since abs() only takes an integer argument. -May want to change this so that we use labs() instead of abs(). - ---- comm-esr31/mozilla/content/media/MediaDecoderStateMachine.cpp.orig 2015-06-04 17:42:52.361303668 -0700 -+++ comm-esr31/mozilla/content/media/MediaDecoderStateMachine.cpp 2015-06-04 17:42:52.366561967 -0700 -@@ -1227,7 +1227,7 @@ - AssertCurrentThreadInMonitor(); - int64_t duration = GetDuration(); - if (aDuration != duration && -- abs(aDuration - duration) > ESTIMATED_DURATION_FUZZ_FACTOR_USECS) { -+ abs((int)(aDuration - duration)) > ESTIMATED_DURATION_FUZZ_FACTOR_USECS) { - SetDuration(aDuration); - nsCOMPtr event = - NS_NewRunnableMethod(mDecoder, &MediaDecoder::DurationChanged); diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox29-214-gfx.patch --- a/components/desktop/thunderbird/patches/firefox29-214-gfx.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -May be compiler specific. Can potentially send upstream with an ifdef Solaris -statement. -Investigate whether the emmintrin.h part is necessary. - ---- comm-esr31/mozilla/gfx/2d/FilterProcessingSIMD-inl.h.orig 2015-06-04 17:42:52.586368339 -0700 -+++ comm-esr31/mozilla/gfx/2d/FilterProcessingSIMD-inl.h 2015-06-04 17:42:52.594507633 -0700 -@@ -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)); ---- comm-esr31/mozilla/gfx/2d/SIMD.h.orig 2015-06-04 17:42:52.591921342 -0700 -+++ comm-esr31/mozilla/gfx/2d/SIMD.h 2015-06-04 17:42:52.594674555 -0700 -@@ -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 - #include - #endif - diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox29-313-mozconfig_loader_bash.patch --- a/components/desktop/thunderbird/patches/firefox29-313-mozconfig_loader_bash.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -This patch is needed because the default shell on Solaris 10 has issues. -The default shell on S11 and S12 is ksh93, which would probably work. If -so, then this patch can be removed. This needs to be investigated further. - ---- comm-esr31/mozilla/python/mozbuild/mozbuild/mozconfig_loader.orig 2015-06-04 17:42:52.695582248 -0700 -+++ comm-esr31/mozilla/python/mozbuild/mozbuild/mozconfig_loader 2015-06-04 17:42:52.698042560 -0700 -@@ -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/. diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox29-45-snappy.patch --- a/components/desktop/thunderbird/patches/firefox29-45-snappy.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -Solaris studio doesn't use __i386__ and __x86_64__ defined, instead uses -alternate definitions. -If we use GCC, we may not need this part of the patch. -The second part of the patch defined Endians. -Needs to go upstream. - ---- comm-esr31/mozilla/other-licenses/snappy/src/snappy-stubs-internal.h.orig 2015-06-04 17:42:51.512176985 -0700 -+++ comm-esr31/mozilla/other-licenses/snappy/src/snappy-stubs-internal.h 2015-06-04 17:42:51.521372882 -0700 -@@ -178,7 +178,7 @@ - - // Potentially unaligned loads and stores. - --#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) -+#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) || defined(__i386) || defined(__x86_64) - - #define UNALIGNED_LOAD16(_p) (*reinterpret_cast(_p)) - #define UNALIGNED_LOAD32(_p) (*reinterpret_cast(_p)) ---- comm-esr31/mozilla//configure.orig 2015-06-04 17:42:51.515409215 -0700 -+++ comm-esr31/mozilla//configure 2015-06-04 17:42:51.524041156 -0700 -@@ -9660,6 +9660,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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox30-05-skia_gpu.patch --- a/components/desktop/thunderbird/patches/firefox30-05-skia_gpu.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +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. - ---- comm-esr31/mozilla/gfx/skia/trunk/include/gpu/GrTypes.h.orig 2015-06-04 17:42:51.134028157 -0700 -+++ comm-esr31/mozilla/gfx/skia/trunk/include/gpu/GrTypes.h 2015-06-04 17:42:51.145109963 -0700 -@@ -285,9 +285,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) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox30-205-test.patch --- a/components/desktop/thunderbird/patches/firefox30-205-test.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -For testing. Commented out some tests that are known not to work on Solaris. -Can probably be removed. - -The if(workerThreadCount)... part is already fixed upstream. - ---- comm-esr31/mozilla/docshell/test/unit/test_bug414201_jfif.js.orig 2015-06-04 17:42:52.485074716 -0700 -+++ comm-esr31/mozilla/docshell/test/unit/test_bug414201_jfif.js 2015-06-04 17:42:52.509205432 -0700 -@@ -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); - } - } ---- comm-esr31/mozilla/dom/tests/unit/test_geolocation_provider.js.orig 2015-06-04 17:42:52.490462853 -0700 -+++ comm-esr31/mozilla/dom/tests/unit/test_geolocation_provider.js 2015-06-04 17:42:52.509339704 -0700 -@@ -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(); - -@@ -89,4 +90,5 @@ - - geolocation = Cc["@mozilla.org/geolocation;1"].getService(Ci.nsISupports); - watchID = geolocation.watchPosition(successCallback, errorCallback); -+*/ - } ---- comm-esr31/mozilla/gfx/tests/gtest/TestLayers.cpp.orig 2015-06-04 17:42:52.495808015 -0700 -+++ comm-esr31/mozilla/gfx/tests/gtest/TestLayers.cpp 2015-06-04 17:42:52.509475929 -0700 -@@ -85,7 +85,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()); - ---- comm-esr31/mozilla/js/src/jit-test/tests/basic/offThreadCompileScript-02.js.orig 2015-06-04 17:42:52.501230839 -0700 -+++ comm-esr31/mozilla/js/src/jit-test/tests/basic/offThreadCompileScript-02.js 2015-06-04 17:42:52.509576725 -0700 -@@ -1,5 +1,8 @@ - // Test offThreadCompileScript option handling. - -+if (workerThreadCount() === 0) -+ quit(0); -+ - offThreadCompileScript('Error()'); - assertEq(!!runOffThreadScript().stack.match(/^@:1:1\n/), true); - ---- comm-esr31/mozilla/js/src/jsapi-tests/Makefile.in.orig 2015-06-04 17:42:52.506525433 -0700 -+++ comm-esr31/mozilla/js/src/jsapi-tests/Makefile.in 2015-06-04 17:42:52.509669788 -0700 -@@ -24,5 +24,12 @@ - - include $(topsrcdir)/config/rules.mk - -+ifdef SOLARIS_SUNPRO_CXX -+testIsAboutToBeFinalized.o: testIsAboutToBeFinalized.cpp Makefile.in -+ $(REPORT_BUILD) -+ @$(MAKE_DEPS_AUTO_CXX) -+ $(CXX) -o $@ -c $(COMPILE_CXXFLAGS) -xinline=no%__1cSNativeFrameCleaner6F_v_ $< -+endif -+ - check:: - $(wildcard $(RUN_TEST_PROGRAM)) $(DIST)/bin/jsapi-tests$(BIN_SUFFIX) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox30-29-rules_mk.patch --- a/components/desktop/thunderbird/patches/firefox30-29-rules_mk.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -Needs further investigation to see if this can be removed. -The ninstall... function is not callable for some reason, so we need to copy -the definition when using install_cmd. - ---- comm-esr31/mozilla/config/rules.mk.orig 2015-06-04 17:42:51.342231683 -0700 -+++ comm-esr31/mozilla/config/rules.mk 2015-06-04 17:42:51.344729049 -0700 -@@ -1429,7 +1429,7 @@ - nsinstall_is_usable = $(if $(wildcard $(DIST)/bin/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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox30-61-skia-endian.patch --- a/components/desktop/thunderbird/patches/firefox30-61-skia-endian.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -Already exists upstream. - ---- comm-esr31/mozilla/gfx/skia/trunk/include/core/SkPreConfig.h.orig 2015-06-04 17:42:51.687614279 -0700 -+++ comm-esr31/mozilla/gfx/skia/trunk/include/core/SkPreConfig.h 2015-06-04 17:42:51.689910035 -0700 -@@ -93,7 +93,7 @@ - - #if !defined(SK_CPU_BENDIAN) && !defined(SK_CPU_LENDIAN) - #if defined (__ppc__) || defined(__PPC__) || defined(__ppc64__) \ -- || defined(__PPC64__) -+ || defined(__PPC64__) || defined(__sparc) || defined(__sparc__) - #define SK_CPU_BENDIAN - #else - #define SK_CPU_LENDIAN diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox31-13-jit-test-multi-processes.patch --- a/components/desktop/thunderbird/patches/firefox31-13-jit-test-multi-processes.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +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). - ---- comm-esr31/mozilla/js/src/Makefile.in.orig 2015-06-04 17:42:51.305891808 -0700 -+++ comm-esr31/mozilla/js/src/Makefile.in 2015-06-04 17:42:51.308235809 -0700 -@@ -152,7 +152,7 @@ - - check-jit-test:: - $(JITTEST_ASAN_ENV) $(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON) -u $(srcdir)/jit-test/jit_test.py \ -- --no-slow --no-progress --tinderbox --tbpl $(JITTEST_VALGRIND_FLAG) \ -+ --no-slow --no-progress --tinderbox --tbpl -j 2 -f $(JITTEST_VALGRIND_FLAG) \ - $(DIST)/bin/$(JS_SHELL_NAME)$(BIN_SUFFIX) - - check:: check-style diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox31-199-stacksize.patch --- a/components/desktop/thunderbird/patches/firefox31-199-stacksize.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -For sparc. Our function frame is very big, so on sparc we need more stack size. -Potentially send upstream. - ---- comm-esr31/mozilla/js/src/jsapi.cpp.orig 2015-06-04 17:42:52.465842609 -0700 -+++ comm-esr31/mozilla/js/src/jsapi.cpp 2015-06-04 17:42:52.468887397 -0700 -@@ -2120,6 +2120,9 @@ - static void - SetNativeStackQuota(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 (rt->nativeStackBase) - RecomputeStackLimit(rt, kind); diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox31-30-configure.patch --- a/components/desktop/thunderbird/patches/firefox31-30-configure.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -Shell translations. Should probably be removed. - ---- comm-esr31/mozilla/js/src/configure.orig 2015-06-04 17:42:51.357938258 -0700 -+++ comm-esr31/mozilla/js/src/configure 2015-06-04 17:42:51.371806503 -0700 -@@ -1291,7 +1291,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. -@@ -4342,7 +4342,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 -@@ -8861,12 +8861,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 -@@ -15668,7 +15668,8 @@ - _CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - case "$host" in - *-mingw*) -- _CONFIG_SHELL=$(cd $(dirname $_CONFIG_SHELL); pwd -W)/$(basename $_CONFIG_SHELL) -+ tmp_DIRNAME=`dirname "$_CONFIG_SHELL"` -+ _CONFIG_SHELL=`(cd $tmp_DIRNAME; pwd -W)`/`(basename $_CONFIG_SHELL)` - if test ! -e "$_CONFIG_SHELL" -a -e "${_CONFIG_SHELL}.exe"; then - _CONFIG_SHELL="${_CONFIG_SHELL}.exe" - fi -@@ -15793,7 +15794,8 @@ - _CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - case "$host" in - *-mingw*) -- _CONFIG_SHELL=$(cd $(dirname $_CONFIG_SHELL); pwd -W)/$(basename $_CONFIG_SHELL) -+ tmp_DIRNAME=`dirname "$_CONFIG_SHELL"` -+ _CONFIG_SHELL=`(cd $tmp_DIRNAME; pwd -W)`/`(basename $_CONFIG_SHELL)` - if test ! -e "$_CONFIG_SHELL" -a -e "${_CONFIG_SHELL}.exe"; then - _CONFIG_SHELL="${_CONFIG_SHELL}.exe" - fi -@@ -16044,7 +16046,8 @@ - _CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - case "$host" in - *-mingw*) -- _CONFIG_SHELL=$(cd $(dirname $_CONFIG_SHELL); pwd -W)/$(basename $_CONFIG_SHELL) -+ tmp_DIRNAME=`dirname "$_CONFIG_SHELL"` -+ _CONFIG_SHELL=`(cd $tmp_DIRNAME; pwd -W)`/`(basename $_CONFIG_SHELL)` - if test ! -e "$_CONFIG_SHELL" -a -e "${_CONFIG_SHELL}.exe"; then - _CONFIG_SHELL="${_CONFIG_SHELL}.exe" - fi -@@ -16613,9 +16616,12 @@ - - chmod +x $CONFIG_STATUS - 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 ---- comm-esr31/mozilla//configure.orig 2015-06-04 17:42:51.364590724 -0700 -+++ comm-esr31/mozilla//configure 2015-06-04 17:42:51.374256343 -0700 -@@ -29426,9 +29426,9 @@ - if test "$SOLARIS_SUNPRO_CC"; then - # Always use gcc for libffi on Solaris - if test ! "$HAVE_64BIT_OS"; then -- ac_configure_args="$ac_configure_args CC=gcc CFLAGS=-m32 LD= LDFLAGS=" -+ ac_configure_args="$ac_configure_args CC=gcc AR=ar CFLAGS=-m32 LD= LDFLAGS=" - else -- ac_configure_args="$ac_configure_args CC=gcc CFLAGS=-m64 LD= LDFLAGS=" -+ ac_configure_args="$ac_configure_args CC=gcc AR=ar CFLAGS=-m64 LD= LDFLAGS=" - fi - fi - if test "$AIX_IBM_XLC"; then diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox31-317-sparc-xptcall.patch --- a/components/desktop/thunderbird/patches/firefox31-317-sparc-xptcall.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -See Mozilla bug #1153707 - [JavaScript Error: "invalid 'in' operand -aLivemarkInfo"] when calling method: [mozIAsyncLivemarks::getLivemark]. -This is already upstream in version 38. - ---- comm-esr31/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc_solaris.cpp.orig 2015-06-04 17:42:52.730766562 -0700 -+++ comm-esr31/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc_solaris.cpp 2015-06-04 17:42:52.738654394 -0700 -@@ -52,13 +52,17 @@ - - if(param.IsOut() || !type.IsArithmetic()) - { -- dp->val.p = (void*) *ap; -+ if (type == nsXPTType::T_JSVAL) -+ dp->val.p = *((void**)*ap); -+ else -+ dp->val.p = (void*) *ap; -+ - continue; - } - // else - switch(type) - { -- case nsXPTType::T_I8 : dp->val.i8 = *((int32_t*) ap); break; -+ case nsXPTType::T_I8 : dp->val.i8 = *((int32_t*) ap); break; - case nsXPTType::T_I16 : dp->val.i16 = *((int32_t*) ap); break; - case nsXPTType::T_I32 : dp->val.i32 = *((int32_t*) ap); break; - case nsXPTType::T_DOUBLE : ---- comm-esr31/mozilla/js/xpconnect/src/XPCWrappedJSClass.cpp.orig 2015-06-04 17:42:52.736217989 -0700 -+++ comm-esr31/mozilla/js/xpconnect/src/XPCWrappedJSClass.cpp 2015-06-04 17:42:52.739152339 -0700 -@@ -1357,21 +1357,9 @@ - break; - } - --// see bug #961488 --#if (defined(XP_UNIX) && !defined(XP_MACOSX) && !defined(_AIX)) && \ -- ((defined(__sparc) && !defined(__sparcv9) && !defined(__sparcv9__)) || \ -- (defined(__powerpc__) && !defined (__powerpc64__))) -- if (type_tag == nsXPTType::T_JSVAL) { -- if (!XPCConvert::JSData2Native(*(void**)(&pv->val), val, type, -- !param.IsDipper(), ¶m_iid, nullptr)) -- break; -- } else --#endif -- { -- if (!XPCConvert::JSData2Native(&pv->val, val, type, -- !param.IsDipper(), ¶m_iid, nullptr)) -- break; -- } -+ if (!XPCConvert::JSData2Native(&pv->val, val, type, -+ !param.IsDipper(), ¶m_iid, nullptr)) -+ break; - } - - // if any params were dependent, then we must iterate again to convert them. diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox31-401-other-buildissue.patch --- a/components/desktop/thunderbird/patches/firefox31-401-other-buildissue.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +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. - ---- comm-esr31/mozilla/build/gyp.mozbuild.orig 2015-06-04 17:42:52.755839292 -0700 -+++ comm-esr31/mozilla/build/gyp.mozbuild 2015-06-04 17:42:52.861350941 -0700 -@@ -38,6 +38,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, - # Creates AEC internal sample dump files in current directory ---- comm-esr31/mozilla/memory/mozalloc/VolatileBufferFallback.cpp.orig 2015-06-04 17:42:52.788896719 -0700 -+++ comm-esr31/mozilla/memory/mozalloc/VolatileBufferFallback.cpp 2015-06-04 17:42:52.862173467 -0700 -@@ -8,7 +8,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 { ---- comm-esr31/mozilla/media/libsoundtouch/src/FIRFilter.cpp.orig 2015-06-04 17:42:52.816481996 -0700 -+++ comm-esr31/mozilla/media/libsoundtouch/src/FIRFilter.cpp 2015-06-04 17:42:52.863552954 -0700 -@@ -46,6 +46,10 @@ - #include "FIRFilter.h" - #include "cpu_detect.h" - -+#ifdef __sun -+#include -+#endif -+ - #ifdef _MSC_VER - #include - #define alloca _alloca ---- comm-esr31/mozilla/media/libsoundtouch/src/SoundTouch.cpp.orig 2015-06-04 17:42:52.821942936 -0700 -+++ comm-esr31/mozilla/media/libsoundtouch/src/SoundTouch.cpp 2015-06-04 17:42:52.863676152 -0700 -@@ -80,6 +80,10 @@ - #include "RateTransposer.h" - #include "cpu_detect.h" - -+#ifdef __sun -+#include -+#endif -+ - #ifdef _MSC_VER - #include - #define alloca _alloca ---- comm-esr31/mozilla/media/webrtc/trunk/build/common.gypi.orig 2015-06-04 17:42:52.827866736 -0700 -+++ comm-esr31/mozilla/media/webrtc/trunk/build/common.gypi 2015-06-04 17:42:52.864152685 -0700 -@@ -917,11 +917,16 @@ - 'android_app_version_name%': 'Developer Build', - 'android_app_version_code%': 0, - -- 'sas_dll_exists': '> 8) & 0xff00) | ((allCharacters >> 24) & 0xff); -+ ignoreCaseMask = (ignoreCaseMask << 24) | ((ignoreCaseMask << 8) & 0xff0000) | -+ ((ignoreCaseMask >> 8) & 0xff00) | ((ignoreCaseMask >> 24) & 0xff); -+ } else { -+ allCharacters = (allCharacters << 16) | ((allCharacters >> 16) & 0xffff); -+ ignoreCaseMask = (ignoreCaseMask << 16) | ((ignoreCaseMask >> 16) & 0xffff); -+ } -+#endif -+ - if (m_charSize == Char8) { - switch (numberCharacters) { - case 1: diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox31-69-ipcv2.patch --- a/components/desktop/thunderbird/patches/firefox31-69-ipcv2.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2345 +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. - ---- comm-esr31/mozilla//configure.orig 2015-06-04 17:42:51.721170546 -0700 -+++ comm-esr31/mozilla//configure 2015-06-04 17:42:52.022280764 -0700 -@@ -9675,7 +9675,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" ---- comm-esr31/mozilla/dom/plugins/ipc/PluginMessageUtils.cpp.orig 2015-06-04 17:42:51.729961817 -0700 -+++ comm-esr31/mozilla/dom/plugins/ipc/PluginMessageUtils.cpp 2015-06-04 17:42:52.022446816 -0700 -@@ -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) - { -@@ -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", "netsc@pe"); - #else -@@ -115,7 +115,7 @@ - string - UnmungePluginDsoPath(const string& munged) - { --#if defined(OS_LINUX) -+#if defined(OS_LINUX) || defined(OS_SOLARIS) - return ReplaceAll(munged, "netsc@pe", "netscape"); - #else - return munged; ---- comm-esr31/mozilla/dom/plugins/ipc/PluginModuleChild.cpp.orig 2015-06-04 17:42:51.732749854 -0700 -+++ comm-esr31/mozilla/dom/plugins/ipc/PluginModuleChild.cpp 2015-06-04 17:42:52.022749494 -0700 -@@ -207,7 +207,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"); - -@@ -238,9 +238,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; -@@ -1837,7 +1839,7 @@ - PLUGIN_LOG_DEBUG_METHOD; - AssertPluginThread(); - --#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); -@@ -1866,7 +1868,7 @@ - SendBackUpXResources(FileDescriptor(xSocketFd)); - #endif - --#if defined(OS_LINUX) || defined(OS_BSD) -+#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS) - *_retval = mInitializeFunc(&sBrowserFuncs, &mFunctions); - return true; - #elif defined(OS_WIN) || defined(OS_MACOSX) ---- comm-esr31/mozilla/dom/plugins/ipc/PluginModuleChild.h.orig 2015-06-04 17:42:51.740779458 -0700 -+++ comm-esr31/mozilla/dom/plugins/ipc/PluginModuleChild.h 2015-06-04 17:42:52.022883746 -0700 -@@ -319,7 +319,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; ---- comm-esr31/mozilla/dom/plugins/ipc/PluginModuleParent.h.orig 2015-06-04 17:42:51.746067316 -0700 -+++ comm-esr31/mozilla/dom/plugins/ipc/PluginModuleParent.h 2015-06-04 17:42:52.023009056 -0700 -@@ -203,7 +203,7 @@ - - // Implement the module-level functions from NPAPI; these are - // normally resolved directly from the DSO. --#ifdef OS_LINUX -+#if defined(OS_LINUX) || defined(OS_SOLARIS) - NPError NP_Initialize(const NPNetscapeFuncs* npnIface, - NPPluginFuncs* nppIface); - #else ---- comm-esr31/mozilla/dom/plugins/ipc/PluginProcessParent.cpp.orig 2015-06-04 17:42:51.751413278 -0700 -+++ comm-esr31/mozilla/dom/plugins/ipc/PluginProcessParent.cpp 2015-06-04 17:42:52.023117720 -0700 -@@ -68,6 +68,9 @@ - else if (base::PROCESS_ARCH_ARM & pluginLibArchitectures & containerArchitectures) { - selectedArchitecture = base::PROCESS_ARCH_ARM; - } -+ else if (base::PROCESS_ARCH_SPARC & pluginLibArchitectures & containerArchitectures) { -+ selectedArchitecture = base::PROCESS_ARCH_SPARC; -+ } - else { - return false; - } ---- comm-esr31/mozilla/ipc/chromium/Makefile.in.orig 2015-06-04 17:42:51.757175197 -0700 -+++ comm-esr31/mozilla/ipc/chromium/Makefile.in 2015-06-04 17:42:52.023226892 -0700 -@@ -4,7 +4,9 @@ - - OS_CXXFLAGS := $(filter-out -fshort-wchar,$(OS_CXXFLAGS)) - -+ifndef SOLARIS_SUNPRO_CC - ACDEFINES = -+endif - - ifndef MOZ_NATIVE_LIBEVENT # { - vpath %.c \ ---- comm-esr31/mozilla/ipc/chromium/chromium-config.mozbuild.orig 2015-06-04 17:42:51.762667985 -0700 -+++ comm-esr31/mozilla/ipc/chromium/chromium-config.mozbuild 2015-06-04 17:42:52.023331021 -0700 -@@ -41,6 +41,9 @@ - if CONFIG['OS_ARCH'] == 'Darwin': - DEFINES['OS_MACOSX'] = 1 - -+ elif CONFIG['OS_ARCH'] == 'SunOS': -+ DEFINES['OS_SOLARIS'] = 1 -+ - elif CONFIG['OS_ARCH'] == 'DragonFly': - OS_LIBS += [ '$(call EXPAND_LIBNAME,kvm)' ] - DEFINES.update({ ---- comm-esr31/mozilla/ipc/chromium/moz.build.orig 2015-06-04 17:42:51.765444586 -0700 -+++ comm-esr31/mozilla/ipc/chromium/moz.build 2015-06-04 17:42:52.023499565 -0700 -@@ -230,17 +230,25 @@ - 'moc_message_pump_qt.cc', - ] - if not CONFIG['MOZ_NATIVE_LIBEVENT']: -- if CONFIG['OS_TARGET'] != 'Android': -+ if CONFIG['OS_TARGET'] != 'SunOS': -+ if CONFIG['OS_TARGET'] != 'Android': -+ SOURCES += [ -+ 'src/third_party/libevent/epoll_sub.c', -+ ] - SOURCES += [ -- 'src/third_party/libevent/epoll_sub.c', -+ 'src/third_party/libevent/epoll.c', - ] -- SOURCES += [ -- 'src/third_party/libevent/epoll.c', -- ] - if CONFIG['OS_TARGET'] == 'Android': - LOCAL_INCLUDES += ['src/third_party/libevent/android'] - else: -- LOCAL_INCLUDES += ['src/third_party/libevent/linux'] -+ if CONFIG['OS_TARGET'] != 'SunOS': -+ LOCAL_INCLUDES += ['src/third_party/libevent/linux'] -+ else: -+ LOCAL_INCLUDES += ['src/third_party/libevent/solaris'] -+ SOURCES += [ -+ 'src/third_party/libevent/devpoll.c', -+ 'src/third_party/libevent/evport.c', -+ ] - - if os_bsd: - SOURCES += [ ---- comm-esr31/mozilla/ipc/chromium/src/base/atomicops.h.orig 2015-06-04 17:42:51.773913952 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/atomicops.h 2015-06-04 17:42:52.023614155 -0700 -@@ -138,6 +138,10 @@ - #include "base/atomicops_internals_x86_macosx.h" - #elif defined(COMPILER_GCC) && defined(ARCH_CPU_X86_FAMILY) - #include "base/atomicops_internals_x86_gcc.h" -+#elif defined(COMPILER_SUNPRO) && defined(ARCH_CPU_X86_FAMILY) -+#define __asm__ asm -+#define __volatile__ volatile -+#include "base/atomicops_internals_x86_gcc.h" - #elif defined(COMPILER_GCC) && defined(ARCH_CPU_ARM_FAMILY) - #include "base/atomicops_internals_arm_gcc.h" - #elif defined(COMPILER_GCC) && defined(ARCH_CPU_MIPS) ---- comm-esr31/mozilla/ipc/chromium/src/base/atomicops_internals_x86_gcc.cc.orig 2015-06-04 17:42:51.779492901 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/atomicops_internals_x86_gcc.cc 2015-06-04 17:42:52.023724795 -0700 -@@ -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" \ ---- comm-esr31/mozilla/ipc/chromium/src/base/atomicops_internals_x86_gcc.h.orig 2015-06-04 17:42:51.785051435 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/atomicops_internals_x86_gcc.h 2015-06-04 17:42:52.023927132 -0700 -@@ -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. - } -@@ -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; -@@ -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) { -@@ -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. - } -@@ -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; -@@ -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) { ---- comm-esr31/mozilla/ipc/chromium/src/base/base_paths.h.orig 2015-06-04 17:42:51.790740170 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/base_paths.h 2015-06-04 17:42:52.024028774 -0700 -@@ -13,7 +13,7 @@ - #include "base/base_paths_win.h" - #elif defined(OS_MACOSX) - #include "base/base_paths_mac.h" --#elif defined(OS_LINUX) || defined(OS_BSD) -+#elif defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS) - #include "base/base_paths_linux.h" - #endif - #include "base/path_service.h" ---- comm-esr31/mozilla/ipc/chromium/src/base/base_paths_linux.cc.orig 2015-06-04 17:42:51.796070387 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/base_paths_linux.cc 2015-06-04 17:42:52.024134065 -0700 -@@ -21,11 +21,19 @@ - case base::FILE_EXE: - case base::FILE_MODULE: { // TODO(evanm): is this correct? - char bin_dir[PATH_MAX + 1]; -+#ifdef OS_SOLARIS -+ if (!(realpath(getexecname(), bin_dir) && bin_dir[0] != '[')) { -+ NOTREACHED() << "Unable to get exec name."; -+ return false; -+ } -+ int bin_dir_size = strlen(bin_dir); -+#else - int bin_dir_size = readlink("/proc/self/exe", bin_dir, PATH_MAX); - if (bin_dir_size < 0 || bin_dir_size > PATH_MAX) { - NOTREACHED() << "Unable to resolve /proc/self/exe."; - return false; - } -+#endif - bin_dir[bin_dir_size] = 0; - *result = FilePath(bin_dir); - return true; ---- comm-esr31/mozilla/ipc/chromium/src/base/basictypes.h.orig 2015-06-04 17:42:51.801414416 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/basictypes.h 2015-06-04 17:42:52.024290833 -0700 -@@ -35,9 +35,15 @@ - - // Platform- and hardware-dependent printf specifiers - # if defined(OS_POSIX) -+# if defined(COMPILER_SUNPRO) -+# define PRId64L L"I64d" -+# define PRIu64L L"I64u" -+# define PRIx64L L"I64x" -+# else - # define PRId64L "I64d" - # define PRIu64L "I64u" - # define PRIx64L "I64x" -+# endif - # elif defined(OS_WIN) - # define PRId64L L"I64d" - # define PRIu64L L"I64u" -@@ -77,6 +83,7 @@ - // This template function declaration is used in defining arraysize. - // Note that the function doesn't need an implementation, as we only - // use its type. -+#if !defined(COMPILER_SUNPRO) || __SUNPRO_CC >= 0x5100 - template - char (&ArraySizeHelper(T (&array)[N]))[N]; - -@@ -89,6 +96,7 @@ - #endif - - #define arraysize(array) (sizeof(ArraySizeHelper(array))) -+#endif - - // ARRAYSIZE_UNSAFE performs essentially the same calculation as arraysize, - // but can be used on anonymous types or types defined inside -@@ -131,6 +139,9 @@ - ((sizeof(a) / sizeof(*(a))) / \ - static_cast(!(sizeof(a) % sizeof(*(a))))) - -+#if defined(COMPILER_SUNPRO) && __SUNPRO_CC < 0x5100 -+#define arraysize(array) (ARRAYSIZE_UNSAFE(array)) -+#endif - - // Use implicit_cast as a safe version of static_cast or const_cast - // for upcasting in the type hierarchy (i.e. casting a pointer to Foo ---- comm-esr31/mozilla/ipc/chromium/src/base/debug_util_posix.cc.orig 2015-06-04 17:42:51.806726871 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/debug_util_posix.cc 2015-06-04 17:42:52.024415350 -0700 -@@ -110,7 +110,7 @@ - return being_debugged; - } - --#elif defined(OS_LINUX) -+#elif defined(OS_LINUX) || defined(OS_SOLARIS) - - // We can look in /proc/self/status for TracerPid. We are likely used in crash - // handling, so we are careful not to use the heap or have side effects. -@@ -145,13 +145,17 @@ - return pid_index < status.size() && status[pid_index] != '0'; - } - --#endif // OS_LINUX -+#endif // OS_LINUX || OS_SOLARIS - - // static - void DebugUtil::BreakDebugger() { - #if defined(ARCH_CPU_X86_FAMILY) -+#if defined(COMPILER_SUNPRO) -+ asm ("int $3"); -+#else - asm ("int3"); - #endif -+#endif - } - - StackTrace::StackTrace() { ---- comm-esr31/mozilla/ipc/chromium/src/base/eintr_wrapper.h.orig 2015-06-04 17:42:51.812077951 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/eintr_wrapper.h 2015-06-04 17:42:52.024531694 -0700 -@@ -16,6 +16,7 @@ - - #include - -+#ifndef COMPILER_SUNPRO - #define HANDLE_EINTR(x) ({ \ - typeof(x) __eintr_result__; \ - do { \ -@@ -23,6 +24,15 @@ - } while (__eintr_result__ == -1 && errno == EINTR); \ - __eintr_result__;\ - }) -+#else -+#define HANDLE_EINTR(x) ({ \ -+ ssize_t __eintr_result__; \ -+ do { \ -+ __eintr_result__ = x; \ -+ } while (__eintr_result__ == -1 && errno == EINTR); \ -+ __eintr_result__;\ -+}) -+#endif - - #else - ---- comm-esr31/mozilla/ipc/chromium/src/base/file_util.cc.orig 2015-06-04 17:42:51.817383612 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/file_util.cc 2015-06-04 17:42:52.024645830 -0700 -@@ -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_.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 ---- comm-esr31/mozilla/ipc/chromium/src/base/file_util.h.orig 2015-06-04 17:42:51.822731946 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/file_util.h 2015-06-04 17:42:52.024795816 -0700 -@@ -12,7 +12,7 @@ - - #if defined(OS_WIN) - #include --#elif defined(ANDROID) -+#elif defined(ANDROID) || defined(OS_SOLARIS) - #include - #elif defined(OS_POSIX) - #include -@@ -241,6 +241,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* entries, -+ const FilePath& source, bool show_links); -+ -+ // The files in the current directory -+ std::vector 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 pending_paths_; -+ -+ DISALLOW_COPY_AND_ASSIGN(FileEnumerator); -+}; -+#endif -+ - } // namespace file_util - - #endif // BASE_FILE_UTIL_H_ ---- comm-esr31/mozilla/ipc/chromium/src/base/file_util_posix.cc.orig 2015-06-04 17:42:51.828082851 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/file_util_posix.cc 2015-06-04 17:42:52.025067753 -0700 -@@ -8,7 +8,7 @@ - #include - #include - #include --#ifndef ANDROID -+#if !defined(ANDROID) && !defined(OS_SOLARIS) - #include - #endif - #include -@@ -67,9 +67,34 @@ - if (!recursive) - return (rmdir(path_str) == 0); - --#ifdef ANDROID -+#if defined(ANDROID) - // XXX Need ftsless impl for bionic - return false; -+#elif defined(OS_SOLARIS) -+ bool success = true; -+ std::stack directories; -+ directories.push(path.value()); -+ FileEnumerator traversal(path, true, static_cast( -+ FileEnumerator::FILES | FileEnumerator::DIRECTORIES | -+ FileEnumerator::SHOW_SYM_LINKS)); -+ for (FilePath current = traversal.Next(); success && !current.empty(); -+ current = traversal.Next()) { -+ FileEnumerator::FindInfo info; -+ traversal.GetFindInfo(&info); -+ -+ if (S_ISDIR(info.stat.st_mode)) -+ directories.push(current.value()); -+ else -+ success = (unlink(current.value().c_str()) == 0); -+ } -+ -+ while (success && !directories.empty()) { -+ FilePath dir = FilePath(directories.top()); -+ directories.pop(); -+ success = (rmdir(dir.value().c_str()) == 0); -+ } -+ -+ return success; - #else - bool success = true; - int ftsflags = FTS_PHYSICAL | FTS_NOSTAT; -@@ -140,14 +165,98 @@ - return false; - } - --#ifdef ANDROID -+#if defined(ANDROID) - // XXX Need ftsless impl for bionic - return false; -+#elif defined(OS_SOLARIS) -+ // This function does not properly handle destinations within the source -+ FilePath real_to_path = to_path; -+ if (PathExists(real_to_path)) { -+ if (!AbsolutePath(&real_to_path)) -+ return false; -+ } else { -+ real_to_path = real_to_path.DirName(); -+ if (!AbsolutePath(&real_to_path)) -+ return false; -+ } -+ FilePath real_from_path = from_path; -+ if (!AbsolutePath(&real_from_path)) -+ return false; -+ if (real_to_path.value().size() >= real_from_path.value().size() && -+ real_to_path.value().compare(0, real_from_path.value().size(), -+ real_from_path.value()) == 0) -+ return false; -+ -+ bool success = true; -+ FileEnumerator::FILE_TYPE traverse_type = -+ static_cast(FileEnumerator::FILES | -+ FileEnumerator::SHOW_SYM_LINKS); -+ if (recursive) -+ traverse_type = static_cast( -+ traverse_type | FileEnumerator::DIRECTORIES); -+ FileEnumerator traversal(from_path, recursive, traverse_type); -+ -+ // We have to mimic windows behavior here. |to_path| may not exist yet, -+ // start the loop with |to_path|. -+ FileEnumerator::FindInfo info; -+ FilePath current = from_path; -+ if (stat(from_path.value().c_str(), &info.stat) < 0) { -+ CHROMIUM_LOG(ERROR) << "CopyDirectory() couldn't stat source directory: " << -+ from_path.value() << " errno = " << errno; -+ success = false; -+ } -+ struct stat to_path_stat; -+ FilePath from_path_base = from_path; -+ if (recursive && stat(to_path.value().c_str(), &to_path_stat) == 0 && -+ S_ISDIR(to_path_stat.st_mode)) { -+ // If the destination already exists and is a directory, then the -+ // top level of source needs to be copied. -+ from_path_base = from_path.DirName(); -+ } -+ -+ // The Windows version of this function assumes that non-recursive calls -+ // will always have a directory for from_path. -+ DCHECK(recursive || S_ISDIR(info.stat.st_mode)); -+ -+ while (success && !current.empty()) { -+ // current is the source path, including from_path, so paste -+ // the suffix after from_path onto to_path to create the target_path. -+ std::string suffix(¤t.value().c_str()[from_path_base.value().size()]); -+ // Strip the leading '/' (if any). -+ if (!suffix.empty()) { -+ DCHECK_EQ('/', suffix[0]); -+ suffix.erase(0, 1); -+ } -+ const FilePath target_path = to_path.Append(suffix); -+ -+ if (S_ISDIR(info.stat.st_mode)) { -+ if (mkdir(target_path.value().c_str(), info.stat.st_mode & 01777) != 0 && -+ errno != EEXIST) { -+ CHROMIUM_LOG(ERROR) << "CopyDirectory() couldn't create directory: " << -+ target_path.value() << " errno = " << errno; -+ success = false; -+ } -+ } else if (S_ISREG(info.stat.st_mode)) { -+ if (!CopyFile(current, target_path)) { -+ CHROMIUM_LOG(ERROR) << "CopyDirectory() couldn't create file: " << -+ target_path.value(); -+ success = false; -+ } -+ } else { -+ CHROMIUM_LOG(WARNING) << "CopyDirectory() skipping non-regular file: " << -+ current.value(); -+ } -+ -+ current = traversal.Next(); -+ traversal.GetFindInfo(&info); -+ } -+ -+ return success; - #else - char* dir_list[] = { top_dir, NULL }; - FTS* fts = fts_open(dir_list, FTS_PHYSICAL | FTS_NOSTAT, NULL); - if (!fts) { -- CHROMIUM_LOG(ERROR) << "fts_open failed: " << strerror(errno); -+ CHROMIUM_CHROMIUM_LOG(ERROR) << "fts_open failed: " << strerror(errno); - return false; - } - -@@ -203,11 +312,11 @@ - break; - case FTS_SL: // Symlink. - case FTS_SLNONE: // Symlink with broken target. -- CHROMIUM_LOG(WARNING) << "CopyDirectory() skipping symbolic link: " << -+ CHROMIUM_CHROMIUM_LOG(WARNING) << "CopyDirectory() skipping symbolic link: " << - ent->fts_path; - continue; - case FTS_DEFAULT: // Some other sort of file. -- CHROMIUM_LOG(WARNING) << "CopyDirectory() skipping file of unknown type: " << -+ CHROMIUM_CHROMIUM_LOG(WARNING) << "CopyDirectory() skipping file of unknown type: " << - ent->fts_path; - continue; - default: -@@ -227,7 +336,7 @@ - } - - if (error) { -- CHROMIUM_LOG(ERROR) << "CopyDirectory(): " << strerror(error); -+ CHROMIUM_CHROMIUM_LOG(ERROR) << "CopyDirectory(): " << strerror(error); - return false; - } - return true; -@@ -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 -@@ -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 entries; -+ if (!ReadDirectory(&entries, root_path_, file_type_ & SHOW_SYM_LINKS)) -+ continue; -+ -+ directory_entries_.clear(); -+ current_directory_entry_ = 0; -+ for (std::vector::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* 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 ---- comm-esr31/mozilla/ipc/chromium/src/base/hash_tables.h.orig 2015-06-04 17:42:51.833802483 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/hash_tables.h 2015-06-04 17:42:52.025172080 -0700 -@@ -31,6 +31,15 @@ - using stdext::hash_set; - #endif - } -+#elif defined(COMPILER_SUNPRO) -+#include -+#include -+namespace base { -+using std::map; -+using std::set; -+} -+#define hash_map map -+#define hash_set set - #elif defined(COMPILER_GCC) - // This is a hack to disable the gcc 4.4 warning about hash_map and hash_set - // being deprecated. We can get rid of this when we upgrade to VS2008 and we ---- comm-esr31/mozilla/ipc/chromium/src/base/idle_timer.cc.orig 2015-06-04 17:42:51.839092878 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/idle_timer.cc 2015-06-04 17:42:52.025292118 -0700 -@@ -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 - #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 -@@ -54,7 +54,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() { ---- comm-esr31/mozilla/ipc/chromium/src/base/message_loop.cc.orig 2015-06-04 17:42:51.844404204 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/message_loop.cc 2015-06-04 17:42:52.025433046 -0700 -@@ -20,7 +20,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 -@@ -140,9 +140,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 { ---- comm-esr31/mozilla/ipc/chromium/src/base/message_pump_glib.cc.orig 2015-06-04 17:42:51.849699822 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/message_pump_glib.cc 2015-06-04 17:42:52.025576630 -0700 -@@ -131,6 +131,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_; -@@ -237,10 +243,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. -@@ -304,6 +309,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!"; - } ---- comm-esr31/mozilla/ipc/chromium/src/base/message_pump_libevent.cc.orig 2015-06-04 17:42:51.855133081 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/message_pump_libevent.cc 2015-06-04 17:42:52.025700484 -0700 -@@ -6,6 +6,10 @@ - - #include - #include -+#if defined(OS_SOLARIS) -+#include -+#include -+#endif - #if defined(ANDROID) || defined(OS_POSIX) - #include - #endif ---- comm-esr31/mozilla/ipc/chromium/src/base/observer_list.h.orig 2015-06-04 17:42:51.860470602 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/observer_list.h 2015-06-04 17:42:52.025805253 -0700 -@@ -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); - } ---- comm-esr31/mozilla/ipc/chromium/src/base/path_service.cc.orig 2015-06-04 17:42:51.865762507 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/path_service.cc 2015-06-04 17:42:52.025978038 -0700 -@@ -24,7 +24,7 @@ - bool PathProviderWin(int key, FilePath* result); - #elif defined(OS_MACOSX) - bool PathProviderMac(int key, FilePath* result); --#elif defined(OS_LINUX) -+#elif defined(OS_LINUX) || defined(OS_SOLARIS) - bool PathProviderLinux(int key, FilePath* result); - #endif - } -@@ -80,7 +80,7 @@ - }; - #endif - --#if defined(OS_LINUX) -+#if defined(OS_LINUX) || defined(OS_SOLARIS) - static Provider base_provider_linux = { - base::PathProviderLinux, - &base_provider, -@@ -92,6 +92,17 @@ - }; - #endif - -+#if 0//defined(OS_SOLARIS) -+static Provider base_provider_posix = { -+ base::PathProviderPosix, -+ &base_provider, -+#ifndef NDEBUG -+ 0, -+ 0, -+#endif -+ true -+}; -+#endif - - struct PathData { - Lock lock; -@@ -104,7 +115,7 @@ - providers = &base_provider_win; - #elif defined(OS_MACOSX) - providers = &base_provider_mac; --#elif defined(OS_LINUX) -+#elif defined(OS_LINUX) || defined(OS_SOLARIS) - providers = &base_provider_linux; - #endif - } -@@ -206,6 +217,24 @@ - return path_data->overrides.find(key) != path_data->overrides.end(); - } - -+#ifdef OS_SOLARIS -+bool PathService::Override(int key, const FilePath& path) { -+ PathData* path_data = GetPathData(); -+ DCHECK(path_data); -+ DCHECK(key > base::DIR_CURRENT) << "invalid path key"; -+ -+ FilePath file_path = path; -+ -+ // make sure the directory exists: -+ if (!file_util::CreateDirectory(file_path)) -+ return false; -+ -+ AutoLock scoped_lock(path_data->lock); -+ path_data->cache[key] = file_path; -+ path_data->overrides.insert(key); -+ return true; -+} -+#else - bool PathService::Override(int key, const std::wstring& path) { - PathData* path_data = GetPathData(); - DCHECK(path_data); -@@ -231,8 +260,13 @@ - path_data->overrides.insert(key); - return true; - } -+#endif - -+#ifdef OS_SOLARIS -+bool PathService::SetCurrentDirectory(const FilePath& current_directory) { -+#else - bool PathService::SetCurrentDirectory(const std::wstring& current_directory) { -+#endif - return file_util::SetCurrentDirectory(current_directory); - } - ---- comm-esr31/mozilla/ipc/chromium/src/base/path_service.h.orig 2015-06-04 17:42:51.871131068 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/path_service.h 2015-06-04 17:42:52.026081564 -0700 -@@ -48,13 +48,21 @@ - // - // WARNING: Consumers of PathService::Get may expect paths to be constant - // over the lifetime of the app, so this method should be used with caution. -+#ifdef OS_SOLARIS -+ static bool Override(int key, const FilePath& path); -+#else - static bool Override(int key, const std::wstring& path); -+#endif - - // Return whether a path was overridden. - static bool IsOverridden(int key); - - // Sets the current directory. -+#ifdef OS_SOLARIS -+ static bool SetCurrentDirectory(const FilePath& current_directory); -+#else - static bool SetCurrentDirectory(const std::wstring& current_directory); -+#endif - - // To extend the set of supported keys, you can register a path provider, - // which is just a function mirroring PathService::Get. The ProviderFunc ---- comm-esr31/mozilla/ipc/chromium/src/base/platform_thread.h.orig 2015-06-04 17:42:51.876432809 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/platform_thread.h 2015-06-04 17:42:52.026181532 -0700 -@@ -22,7 +22,7 @@ - #elif defined(OS_POSIX) - #include - 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 - typedef pid_t PlatformThreadId; - #elif defined(OS_BSD) ---- comm-esr31/mozilla/ipc/chromium/src/base/platform_thread_posix.cc.orig 2015-06-04 17:42:51.881741384 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/platform_thread_posix.cc 2015-06-04 17:42:52.026320376 -0700 -@@ -27,6 +27,12 @@ - #include - #endif - -+#if defined(OS_SOLARIS) -+#include -+#include -+#include -+#endif -+ - #if defined(OS_MACOSX) - namespace base { - void InitThreading(); -@@ -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) -@@ -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 -@@ -116,6 +125,7 @@ - pthread_set_name_np(pthread_self(), name); - #else - #endif -+#endif // !OS_SOLARIS - } - #endif // !OS_MACOSX - ---- comm-esr31/mozilla/ipc/chromium/src/base/port.h.orig 2015-06-04 17:42:51.887028405 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/port.h 2015-06-04 17:42:52.026427782 -0700 -@@ -45,7 +45,7 @@ - // use va_list as ref args to a function, as above, breaks some machines. - # if defined(COMPILER_GCC) - # define base_va_copy(_a, _b) ::va_copy(_a, _b) --# elif defined(COMPILER_MSVC) -+# elif defined(COMPILER_MSVC) || defined(COMPILER_SUNPRO) - # define base_va_copy(_a, _b) (_a = _b) - # else - # error No va_copy for your compiler -@@ -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 - ---- comm-esr31/mozilla/ipc/chromium/src/base/process_util.h.orig 2015-06-04 17:42:51.892333219 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/process_util.h 2015-06-04 17:42:52.026584078 -0700 -@@ -13,7 +13,7 @@ - #if defined(OS_WIN) - #include - #include --#elif defined(OS_LINUX) || defined(__GLIBC__) -+#elif defined(OS_LINUX) || defined(OS_SOLARIS) || defined(__GLIBC__) - #include - #include - #include -@@ -21,6 +21,10 @@ - #include - #endif - -+#if defined(OS_SOLARIS) -+#define NAME_MAX 14 -+#endif -+ - #include - #include - #include -@@ -62,7 +66,8 @@ - PROCESS_ARCH_I386 = 0x1, - PROCESS_ARCH_X86_64 = 0x2, - PROCESS_ARCH_PPC = 0x4, -- PROCESS_ARCH_ARM = 0x8 -+ PROCESS_ARCH_ARM = 0x8, -+ PROCESS_ARCH_SPARC = 0x10 - }; - - inline ProcessArchitecture GetCurrentProcessArchitecture() -@@ -76,6 +81,8 @@ - currentArchitecture = base::PROCESS_ARCH_PPC; - #elif defined(ARCH_CPU_ARMEL) - currentArchitecture = base::PROCESS_ARCH_ARM; -+#elif defined(ARCH_CPU_SPARC) -+ currentArchitecture = base::PROCESS_ARCH_SPARC; - #endif - return currentArchitecture; - } -@@ -249,7 +256,7 @@ - #if defined(OS_WIN) - HANDLE snapshot_; - bool started_iteration_; --#elif defined(OS_LINUX) || defined(__GLIBC__) -+#elif defined(OS_LINUX) || defined(OS_SOLARIS) || defined(__GLIBC__) - DIR *procfs_dir_; - #elif defined(OS_BSD) - std::vector content; ---- comm-esr31/mozilla/ipc/chromium/src/base/process_util_posix.cc.orig 2015-06-04 17:42:51.897626965 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/process_util_posix.cc 2015-06-04 17:42:52.026710300 -0700 -@@ -110,7 +110,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) -@@ -202,7 +202,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"; ---- comm-esr31/mozilla/ipc/chromium/src/base/shared_memory_posix.cc.orig 2015-06-04 17:42:51.902973938 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/shared_memory_posix.cc 2015-06-04 17:42:52.026834474 -0700 -@@ -124,9 +124,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; - } - -@@ -246,7 +252,7 @@ - if (memory_ == NULL) - return false; - -- munmap(memory_, max_size_); -+ munmap((caddr_t)memory_, max_size_); - memory_ = NULL; - max_size_ = 0; - return true; ---- comm-esr31/mozilla/ipc/chromium/src/base/stack_container.h.orig 2015-06-04 17:42:51.908286276 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/stack_container.h 2015-06-04 17:42:52.026945124 -0700 -@@ -96,12 +96,17 @@ - // and the size requested fits. Otherwise, fall through to the standard - // allocator. - pointer allocate(size_type n, void* hint = 0) { -+#ifdef COMPILER_SUNPRO -+ if (source_ != NULL && !source_->used_stack_buffer_ -+ && (n/sizeof(T)) <= stack_capacity) { -+#else - if (source_ != NULL && !source_->used_stack_buffer_ - && n <= stack_capacity) { -+#endif - source_->used_stack_buffer_ = true; - return source_->stack_buffer(); - } else { -- return std::allocator::allocate(n, hint); -+ return (pointer)std::allocator::allocate(n, hint); - } - } - ---- comm-esr31/mozilla/ipc/chromium/src/base/string16.h.orig 2015-06-04 17:42:51.913634746 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/string16.h 2015-06-04 17:42:52.027048241 -0700 -@@ -162,7 +162,9 @@ - // - // TODO(mark): File this bug with Apple and update this note with a bug number. - -+#ifndef COMPILER_SUNPRO - extern template class std::basic_string; -+#endif - - typedef std::basic_string string16; - ---- comm-esr31/mozilla/ipc/chromium/src/base/string_piece.h.orig 2015-06-04 17:42:51.918913848 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/string_piece.h 2015-06-04 17:42:52.027154192 -0700 -@@ -113,8 +113,13 @@ - static const size_type npos; - typedef const char* const_iterator; - typedef const char* iterator; -+#ifdef COMPILER_SUNPRO -+ typedef std::reverse_iterator const_reverse_iterator; -+ typedef std::reverse_iterator reverse_iterator; -+#else - typedef std::reverse_iterator const_reverse_iterator; - typedef std::reverse_iterator reverse_iterator; -+#endif - iterator begin() const { return ptr_; } - iterator end() const { return ptr_ + length_; } - const_reverse_iterator rbegin() const { ---- comm-esr31/mozilla/ipc/chromium/src/base/string_util.cc.orig 2015-06-04 17:42:51.924232478 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/string_util.cc 2015-06-04 17:42:52.027298248 -0700 -@@ -324,22 +324,46 @@ - - std::string WideToASCII(const std::wstring& wide) { - DCHECK(IsStringASCII(wide)); -+#ifdef COMPILER_SUNPRO -+ std::string str(wide.length(), ' '); -+ std::copy(wide.begin(), wide.end(), str.begin()); -+ return str; -+#else - return std::string(wide.begin(), wide.end()); -+#endif - } - - std::wstring ASCIIToWide(const std::string& ascii) { - DCHECK(IsStringASCII(ascii)); -+#ifdef COMPILER_SUNPRO -+ std::wstring wstr(ascii.length(), L' '); -+ std::copy(ascii.begin(), ascii.end(), wstr.begin()); -+ return wstr; -+#else - return std::wstring(ascii.begin(), ascii.end()); -+#endif - } - - std::string UTF16ToASCII(const string16& utf16) { - DCHECK(IsStringASCII(utf16)); -+#ifdef COMPILER_SUNPRO -+ std::string str(utf16.length(), ' '); -+ std::copy(utf16.begin(), utf16.end(), str.begin()); -+ return str; -+#else - return std::string(utf16.begin(), utf16.end()); -+#endif - } - - string16 ASCIIToUTF16(const std::string& ascii) { - DCHECK(IsStringASCII(ascii)); -+#ifdef COMPILER_SUNPRO -+ string16 str(ascii.length(), ' '); -+ std::copy(ascii.begin(), ascii.end(), str.begin()); -+ return str; -+#else - return string16(ascii.begin(), ascii.end()); -+#endif - } - - template ---- comm-esr31/mozilla/ipc/chromium/src/base/sys_info_posix.cc.orig 2015-06-04 17:42:51.929533186 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/sys_info_posix.cc 2015-06-04 17:42:52.027419274 -0700 -@@ -119,7 +119,7 @@ - - // static - std::string SysInfo::OperatingSystemName() { -- utsname info; -+ struct utsname info; - if (uname(&info) < 0) { - NOTREACHED(); - return ""; -@@ -129,7 +129,7 @@ - - // static - std::string SysInfo::OperatingSystemVersion() { -- utsname info; -+ struct utsname info; - if (uname(&info) < 0) { - NOTREACHED(); - return ""; -@@ -139,7 +139,7 @@ - - // static - std::string SysInfo::CPUArchitecture() { -- utsname info; -+ struct utsname info; - if (uname(&info) < 0) { - NOTREACHED(); - return ""; ---- comm-esr31/mozilla/ipc/chromium/src/base/time.h.orig 2015-06-04 17:42:51.935020865 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/time.h 2015-06-04 17:42:52.027549556 -0700 -@@ -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; -@@ -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); ---- comm-esr31/mozilla/ipc/chromium/src/base/time_posix.cc.orig 2015-06-04 17:42:51.940371366 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/base/time_posix.cc 2015-06-04 17:42:52.027684078 -0700 -@@ -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(×truct); - #else - if (is_local) -@@ -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; -@@ -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 ---- comm-esr31/mozilla/ipc/chromium/src/build/build_config.h.orig 2015-06-04 17:42:51.945838858 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/build/build_config.h 2015-06-04 17:42:52.027834010 -0700 -@@ -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 -@@ -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 -@@ -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 -@@ -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 -@@ -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(__mips__) ---- comm-esr31/mozilla/ipc/chromium/src/chrome/common/file_descriptor_set_posix.cc.orig 2015-06-04 17:42:51.951499640 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/chrome/common/file_descriptor_set_posix.cc 2015-06-04 17:42:52.027937295 -0700 -@@ -4,6 +4,10 @@ - - #include "chrome/common/file_descriptor_set_posix.h" - -+#if defined(OS_SOLARIS) -+#include -+#endif -+ - #include "base/eintr_wrapper.h" - #include "base/logging.h" - ---- comm-esr31/mozilla/ipc/chromium/src/chrome/common/ipc_channel_posix.h.orig 2015-06-04 17:42:51.956835709 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/chrome/common/ipc_channel_posix.h 2015-06-04 17:42:52.028050266 -0700 -@@ -111,7 +111,7 @@ - }; - - // This is a control message buffer large enough to hold kMaxReadFDs --#if defined(OS_MACOSX) || defined(OS_NETBSD) -+#if defined(OS_MACOSX) || defined(OS_NETBSD) || defined(OS_SOLARIS) - // TODO(agl): OSX appears to have non-constant CMSG macros! - char input_cmsg_buf_[1024]; - #else ---- comm-esr31/mozilla/ipc/chromium/src/chrome/common/transport_dib.h.orig 2015-06-04 17:42:51.962135898 -0700 -+++ comm-esr31/mozilla/ipc/chromium/src/chrome/common/transport_dib.h 2015-06-04 17:42:52.028183580 -0700 -@@ -13,7 +13,7 @@ - - #if defined(OS_WIN) - #include --#elif defined(OS_LINUX) -+#elif defined(OS_LINUX) || defined(OS_SOLARIS) - #include "chrome/common/x11_util.h" - #endif - -@@ -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 -@@ -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); -@@ -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 ---- comm-esr31/mozilla/ipc/chromium/src/third_party/libevent/solaris/event2/event-config.h.orig 1969-12-31 16:00:00.000000000 -0800 -+++ comm-esr31/mozilla/ipc/chromium/src/third_party/libevent/solaris/event2/event-config.h 2015-06-04 17:42:52.028377621 -0700 -@@ -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 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 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 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 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 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 header file. */ -+#define _EVENT_HAVE_NETDB_H 1 -+ -+/* Define to 1 if you have the header file. */ -+/* #undef _EVENT_HAVE_NETINET_IN6_H */ -+ -+/* Define to 1 if you have the 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 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 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 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 */ -+#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 header file. */ -+#define _EVENT_HAVE_STDARG_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_STDDEF_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_STDINT_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_STDLIB_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_STRINGS_H 1 -+ -+/* Define to 1 if you have the 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 header file. */ -+#define _EVENT_HAVE_SYS_DEVPOLL_H 1 -+ -+/* Define to 1 if you have the header file. */ -+/* #undef _EVENT_HAVE_SYS_EPOLL_H 1 */ -+ -+/* Define to 1 if you have the header file. */ -+/* #define _EVENT_HAVE_SYS_EVENTFD_H 1 */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef _EVENT_HAVE_SYS_EVENT_H */ -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_IOCTL_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_MMAN_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_PARAM_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_QUEUE_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_SELECT_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_SENDFILE_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_SOCKET_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_STAT_H 1 -+ -+/* Define to 1 if you have the header file. */ -+/* #undef _EVENT_HAVE_SYS_SYSCTL_H */ -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_TIME_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_TYPES_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_UIO_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define _EVENT_HAVE_SYS_WAIT_H 1 -+ -+/* Define if TAILQ_FOREACH is defined in */ -+#define _EVENT_HAVE_TAILQFOREACH 1 -+ -+/* Define if timeradd is defined in */ -+#define _EVENT_HAVE_TIMERADD 1 -+ -+/* Define if timerclear is defined in */ -+#define _EVENT_HAVE_TIMERCLEAR 1 -+ -+/* Define if timercmp is defined in */ -+#define _EVENT_HAVE_TIMERCMP 1 -+ -+/* Define if timerisset is defined in */ -+#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 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 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 and . */ -+#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 does not define. */ -+/* #undef _EVENT_pid_t */ -+ -+/* Define to `unsigned int' if does not define. */ -+/* #undef _EVENT_size_t */ -+ -+/* Define to unsigned int if you dont have it */ -+/* #undef _EVENT_socklen_t */ -+ -+/* Define to `int' if does not define. */ -+/* #undef _EVENT_ssize_t */ -+ -+#endif /* event2/event-config.h */ ---- comm-esr31/mozilla/ipc/glue/BrowserProcessSubThread.cpp.orig 2015-06-04 17:42:51.968125755 -0700 -+++ comm-esr31/mozilla/ipc/glue/BrowserProcessSubThread.cpp 2015-06-04 17:42:52.028493604 -0700 -@@ -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 - }; -@@ -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 - }; ---- comm-esr31/mozilla/ipc/glue/BrowserProcessSubThread.h.orig 2015-06-04 17:42:51.973476461 -0700 -+++ comm-esr31/mozilla/ipc/glue/BrowserProcessSubThread.h 2015-06-04 17:42:52.028585516 -0700 -@@ -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. ---- comm-esr31/mozilla/ipc/glue/GeckoChildProcessHost.cpp.orig 2015-06-04 17:42:51.978784250 -0700 -+++ comm-esr31/mozilla/ipc/glue/GeckoChildProcessHost.cpp 2015-06-04 17:42:52.028760031 -0700 -@@ -548,12 +548,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 -@@ -671,7 +674,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)) -@@ -687,7 +690,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 -@@ -706,6 +709,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); - ---- comm-esr31/mozilla/ipc/glue/SharedMemorySysV.h.orig 2015-06-04 17:42:51.984117091 -0700 -+++ comm-esr31/mozilla/ipc/glue/SharedMemorySysV.h 2015-06-04 17:42:52.028880854 -0700 -@@ -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 -@@ -55,6 +55,9 @@ - virtual ~SharedMemorySysV() - { - shmdt(mData); -+#ifdef OS_SOLARIS -+ shmctl(mHandle, IPC_RMID, 0); -+#endif - mHandle = -1; - mData = nullptr; - } -@@ -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; - -@@ -145,6 +150,6 @@ - } // namespace ipc - } // namespace mozilla - --#endif // OS_LINUX -+#endif // OS_LINUX || OS_SOLARIS - - #endif // ifndef mozilla_ipc_SharedMemorySysV_h ---- comm-esr31/mozilla/ipc/ipdl/test/cxx/Makefile.in.orig 2015-06-04 17:42:51.989770256 -0700 -+++ comm-esr31/mozilla/ipc/ipdl/test/cxx/Makefile.in 2015-06-04 17:42:52.028974010 -0700 -@@ -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 ---- comm-esr31/mozilla/ipc/ipdl/test/cxx/TestShutdown.cpp.orig 2015-06-04 17:42:51.995172293 -0700 -+++ comm-esr31/mozilla/ipc/ipdl/test/cxx/TestShutdown.cpp 2015-06-04 17:42:52.029072732 -0700 -@@ -184,6 +184,8 @@ - // detectors - _exit(0); - } -+ -+ return false; - } - - void ---- comm-esr31/mozilla/js/src/configure.orig 2015-06-04 17:42:52.000916637 -0700 -+++ comm-esr31/mozilla/js/src/configure 2015-06-04 17:42:52.030137803 -0700 -@@ -8283,7 +8283,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 ---- comm-esr31/mozilla/mfbt/Poison.cpp.orig 2015-06-04 17:42:52.006353842 -0700 -+++ comm-esr31/mozilla/mfbt/Poison.cpp 2015-06-04 17:42:52.030249726 -0700 -@@ -25,6 +25,7 @@ - # endif - # endif - #endif -+extern "C" int madvise(caddr_t, size_t, int); - - extern "C" { - uintptr_t gMozillaPoisonValue; -@@ -125,7 +126,7 @@ - static bool - ProbeRegion(uintptr_t region, uintptr_t size) - { -- if (madvise(reinterpret_cast(region), size, MADV_NORMAL)) { -+ if (madvise(reinterpret_cast(region), size, MADV_NORMAL)) { - return true; - } else { - return false; ---- comm-esr31/mozilla/mfbt/tests/TestPoisonArea.cpp.orig 2015-06-04 17:42:52.011890810 -0700 -+++ comm-esr31/mozilla/mfbt/tests/TestPoisonArea.cpp 2015-06-04 17:42:52.030377829 -0700 -@@ -104,6 +104,7 @@ - #include - - #include -+extern "C" int madvise(caddr_t, size_t, int); - #ifndef MAP_ANON - #ifdef MAP_ANONYMOUS - #define MAP_ANON MAP_ANONYMOUS -@@ -261,7 +262,7 @@ - static bool - ProbeRegion(uintptr_t page) - { -- if (madvise(reinterpret_cast(page), PAGESIZE, MADV_NORMAL)) { -+ if (madvise(reinterpret_cast(page), PAGESIZE, MADV_NORMAL)) { - return true; - } else { - return false; ---- comm-esr31/mozilla/modules/libjar/nsZipArchive.cpp.orig 2015-06-04 17:42:52.017442262 -0700 -+++ comm-esr31/mozilla/modules/libjar/nsZipArchive.cpp 2015-06-04 17:42:52.030536960 -0700 -@@ -40,7 +40,8 @@ - #include - #include - #include --#elif defined(XP_WIN) -+extern "C" int madvise(caddr_t, size_t, int); -+#elif defined(XP_WIN) || defined(XP_OS2) - #include - #endif - -@@ -596,7 +597,7 @@ - uint32_t readaheadLength = xtolong(startp); - if (readaheadLength) { - #if defined(XP_UNIX) -- madvise(const_cast(startp), readaheadLength, MADV_WILLNEED); -+ madvise((caddr_t)const_cast(startp), readaheadLength, MADV_WILLNEED); - #elif defined(XP_WIN) - if (aFd) { - HANDLE hFile = (HANDLE) PR_FileDesc2NativeHandle(aFd); diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox31-92-dtrace.patch --- a/components/desktop/thunderbird/patches/firefox31-92-dtrace.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -See Mozilla bug #702179 - dtrace probes are not installed on Solaris with -static js lib. -We haven't enabled dtrace. dtrace will trim the function name (too long). - ---- comm-esr31/mozilla//configure.orig 2015-06-04 17:42:52.277140630 -0700 -+++ comm-esr31/mozilla//configure 2015-06-04 17:42:52.307036479 -0700 -@@ -6472,7 +6472,7 @@ - MOZ_PNG_CFLAGS="-I$_objdir/dist/include" # needed for freetype compilation - MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/media/libpng)' - --MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(LIBXUL_DIST)/lib)' -+MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(DEPTH)/js/src)' - MOZ_JS_SHARED_LIBS='$(call EXPAND_LIBNAME_PATH,mozjs,$(LIBXUL_DIST)/lib)' - MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib' - XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/bin)' ---- comm-esr31/mozilla/js/src/Makefile.in.orig 2015-06-04 17:42:52.285669989 -0700 -+++ comm-esr31/mozilla/js/src/Makefile.in 2015-06-04 17:42:52.307164501 -0700 -@@ -20,7 +20,6 @@ - STATIC_LIBRARY_NAME = js_static - LIBS = $(NSPR_LIBS) - --DIST_INSTALL = 1 - - ifdef JS_STANDALONE - SHARED_LIBRARY_LIBS += $(call EXPAND_LIBNAME_PATH,mfbt,$(DEPTH)/mfbt) ---- comm-esr31/mozilla/js/src/jsobj.cpp.orig 2015-06-04 17:42:52.291238156 -0700 -+++ comm-esr31/mozilla/js/src/jsobj.cpp 2015-06-04 17:42:52.307610718 -0700 -@@ -1324,6 +1324,8 @@ - return fill(entry, clasp, proto.raw(), kind, obj); - } - -+#pragma weak "__1cCjsXNewObjectWithGivenProto6Fpn0AQExclusiveContext_pkn0AFClass_n0ALTaggedProto_pnIJSObject_n0ACgcJAllocKind_n0ANNewObjectKi" = "__1cCjsXNewObjectWithGivenProto6Fpn0AQExclusiveContext_pkn0AFClass_n0ALTaggedProto_pnIJSObject_n0ACgcJAllocKind_n0ANNewObjectKind__8_" -+ - JSObject* - js::NewObjectWithGivenProto(ExclusiveContext* cxArg, const js::Class* clasp, - js::TaggedProto protoArg, JSObject* parentArg, ---- comm-esr31/mozilla/js/src/vm/Interpreter.cpp.orig 2015-06-04 17:42:52.296891616 -0700 -+++ comm-esr31/mozilla/js/src/vm/Interpreter.cpp 2015-06-04 17:42:52.307913120 -0700 -@@ -603,6 +603,8 @@ - return Invoke(cx, ObjectValue(*obj), fval, argc, argv, rval); - } - -+#pragma weak "__1cCjsNExecuteKernel6FpnJJSContext_nCJSGHandle4CpnIJSScript___rnIJSObject_rkn0CFValue_n0ALExecuteType_n0AQAbstractFramePtr_p9A" = "__1cCjsNExecuteKernel6FpnJJSContext_nCJSGHandle4CpnIJSScript___rnIJSObject_rkn0CFValue_n0ALExecuteType_n0AQAbstractFramePtr_p9A_b_" -+ - bool - js::ExecuteKernel(JSContext* cx, HandleScript script, JSObject& scopeChainArg, const Value& thisv, - ExecuteType type, AbstractFramePtr evalInFrame, Value* result) ---- comm-esr31/mozilla/js/src/vm/OldDebugAPI.cpp.orig 2015-06-04 17:42:52.302287919 -0700 -+++ comm-esr31/mozilla/js/src/vm/OldDebugAPI.cpp 2015-06-04 17:42:52.308077570 -0700 -@@ -237,6 +237,8 @@ - return true; - } - -+#pragma weak "__1cMJS_ClearTrap6FpnJJSContext_pnIJSScript_pCppF134pnCJSFValue_6_nMJSTrapStatus_7_v_" = "__1cMJS_ClearTrap6FpnJJSContext_pnIJSScript_pCppF134pnCJSFValue_6_nMJSTrapStatus_p6_v_" -+ - JS_PUBLIC_API(void) - JS_ClearTrap(JSContext* cx, JSScript* script, jsbytecode* pc, - JSTrapHandler* handlerp, jsval* closurep) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox31-97-ycbcr2.patch --- a/components/desktop/thunderbird/patches/firefox31-97-ycbcr2.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,710 +0,0 @@ -For studio. We can remove if we don't care about studio. - -EMMS() is not in sparc. - ---- comm-esr31/mozilla/gfx/ycbcr/chromium_types.h.orig 2015-06-04 17:42:52.382798534 -0700 -+++ comm-esr31/mozilla/gfx/ycbcr/chromium_types.h 2015-06-04 17:42:52.407116949 -0700 -@@ -10,7 +10,7 @@ - // On Windows, protypes.h is #included, which defines these types. This sucks! - #ifndef PROTYPES_H - typedef uint8_t uint8; --typedef int8_t int8; -+//typedef int8_t int8; - typedef int16_t int16; - typedef uint16_t uint16; - typedef uint32_t uint32; ---- comm-esr31/mozilla/gfx/ycbcr/moz.build.orig 2015-06-04 17:42:52.388097037 -0700 -+++ comm-esr31/mozilla/gfx/ycbcr/moz.build 2015-06-04 17:42:52.407236264 -0700 -@@ -34,7 +34,10 @@ - ] - else: - SOURCES += ['yuv_convert_mmx.cpp'] -- SOURCES['yuv_convert_mmx.cpp'].flags += CONFIG['MMX_FLAGS'] -+ if CONFIG['GNU_CC']: -+ SOURCES['yuv_convert_mmx.cpp'].flags += CONFIG['MMX_FLAGS'] -+ if CONFIG['SOLARIS_SUNPRO_CXX']: -+ SOURCES['yuv_convert_mmx.cpp'].flags += ['-xarch=sse', '-xO4'] - - if CONFIG['_MSC_VER']: - if CONFIG['OS_TEST'] == 'x86_64': -@@ -56,6 +59,8 @@ - SOURCES += [ - 'yuv_row_posix.cpp', - ] -+ if CONFIG['SOLARIS_SUNPRO_CXX']: -+ SOURCES['yuv_row_posix.cpp'].flags += ['$(srcdir)/yuv_row_posix.il'] - else: - SOURCES += [ - 'yuv_row_other.cpp', ---- comm-esr31/mozilla/gfx/ycbcr/yuv_convert.cpp.orig 2015-06-04 17:42:52.393413194 -0700 -+++ comm-esr31/mozilla/gfx/ycbcr/yuv_convert.cpp 2015-06-04 17:42:52.407392523 -0700 -@@ -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 -@@ -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 ---- comm-esr31/mozilla/gfx/ycbcr/yuv_row_posix.cpp.orig 2015-06-04 17:42:52.398714978 -0700 -+++ comm-esr31/mozilla/gfx/ycbcr/yuv_row_posix.cpp 2015-06-04 17:42:52.407629998 -0700 -@@ -258,7 +258,7 @@ - ); - } - --#elif defined(MOZILLA_MAY_SUPPORT_SSE) && defined(ARCH_CPU_X86_32) && !defined(__PIC__) -+#elif defined(MOZILLA_MAY_SUPPORT_SSE) && defined(ARCH_CPU_X86_32) && !defined(__PIC__) && !defined(__SUNPRO_CC) - - // PIC version is slower because less registers are available, so - // non-PIC is used on platforms where it is possible. -@@ -564,7 +564,7 @@ - width, source_dx); - } - --#elif defined(MOZILLA_MAY_SUPPORT_SSE) && defined(ARCH_CPU_X86_32) && defined(__PIC__) -+#elif defined(MOZILLA_MAY_SUPPORT_SSE) && defined(ARCH_CPU_X86_32) && defined(__PIC__) && !defined(__SUNPRO_CC) - - void PICConvertYUVToRGB32Row_SSE(const uint8* y_buf, - const uint8* u_buf, -@@ -884,6 +884,128 @@ - - LinearScaleYUVToRGB32Row_C(y_buf, u_buf, v_buf, rgb_buf, width, source_dx); - } -+ -+#elif defined(MOZILLA_MAY_SUPPORT_SSE) && defined(ARCH_CPU_X86_32) && defined(__SUNPRO_CC) -+ -+void FastConvertYUVToRGB32Row_IL(const uint8* y_buf, -+ const uint8* u_buf, -+ const uint8* v_buf, -+ uint8* rgb_buf, -+ int width); -+ -+void FastConvertYUVToRGB32Row(const uint8* y_buf, -+ const uint8* u_buf, -+ const uint8* v_buf, -+ uint8* rgb_buf, -+ int width) { -+ if (mozilla::supports_sse()) { -+ FastConvertYUVToRGB32Row_IL(y_buf, u_buf, v_buf, rgb_buf, width); -+ return; -+ } -+ -+ FastConvertYUVToRGB32Row_C(y_buf, u_buf, v_buf, rgb_buf, width, 1); -+} -+ -+void ScaleYUVToRGB32Row_IL(const uint8* y_buf, -+ const uint8* u_buf, -+ const uint8* v_buf, -+ uint8* rgb_buf, -+ int width, -+ int source_dx); -+ -+void ScaleYUVToRGB32Row(const uint8* y_buf, -+ const uint8* u_buf, -+ const uint8* v_buf, -+ uint8* rgb_buf, -+ int width, -+ int source_dx) { -+ if (mozilla::supports_sse()) { -+ ScaleYUVToRGB32Row_IL(y_buf, u_buf, v_buf, rgb_buf, -+ width, source_dx); -+ return; -+ } -+ -+ ScaleYUVToRGB32Row_C(y_buf, u_buf, v_buf, rgb_buf, -+ width, source_dx); -+} -+ -+void LinearScaleYUVToRGB32Row_IL(const uint8* y_buf, -+ const uint8* u_buf, -+ const uint8* v_buf, -+ uint8* rgb_buf, -+ int width, -+ int source_dx); -+ -+void LinearScaleYUVToRGB32Row(const uint8* y_buf, -+ const uint8* u_buf, -+ const uint8* v_buf, -+ uint8* rgb_buf, -+ int width, -+ int source_dx) { -+ if (mozilla::supports_sse()) { -+ LinearScaleYUVToRGB32Row_IL(y_buf, u_buf, v_buf, rgb_buf, -+ width, source_dx); -+ return; -+ } -+ -+ LinearScaleYUVToRGB32Row_C(y_buf, u_buf, v_buf, rgb_buf, -+ width, source_dx); -+} -+ -+/* -+void PICConvertYUVToRGB32Row(const uint8* y_buf, -+ const uint8* u_buf, -+ const uint8* v_buf, -+ uint8* rgb_buf, -+ int width, -+ int16 *kCoefficientsRgbY); -+ -+void FastConvertYUVToRGB32Row(const uint8* y_buf, -+ const uint8* u_buf, -+ const uint8* v_buf, -+ uint8* rgb_buf, -+ int width) { -+ PICConvertYUVToRGB32Row(y_buf, u_buf, v_buf, rgb_buf, width, -+ &kCoefficientsRgbY[0][0]); -+} -+ -+void PICScaleYUVToRGB32Row(const uint8* y_buf, -+ const uint8* u_buf, -+ const uint8* v_buf, -+ uint8* rgb_buf, -+ int width, -+ int source_dx, -+ int16 *kCoefficientsRgbY); -+ -+void ScaleYUVToRGB32Row(const uint8* y_buf, -+ const uint8* u_buf, -+ const uint8* v_buf, -+ uint8* rgb_buf, -+ int width, -+ int source_dx) { -+ PICScaleYUVToRGB32Row(y_buf, u_buf, v_buf, rgb_buf, width, source_dx, -+ &kCoefficientsRgbY[0][0]); -+} -+ -+void PICLinearScaleYUVToRGB32Row(const uint8* y_buf, -+ const uint8* u_buf, -+ const uint8* v_buf, -+ uint8* rgb_buf, -+ int width, -+ int source_dx, -+ int16 *kCoefficientsRgbY); -+ -+void LinearScaleYUVToRGB32Row(const uint8* y_buf, -+ const uint8* u_buf, -+ const uint8* v_buf, -+ uint8* rgb_buf, -+ int width, -+ int source_dx) { -+ PICLinearScaleYUVToRGB32Row(y_buf, u_buf, v_buf, rgb_buf, width, source_dx, -+ &kCoefficientsRgbY[0][0]); -+} -+*/ -+ - #else - void FastConvertYUVToRGB32Row(const uint8* y_buf, - const uint8* u_buf, ---- comm-esr31/mozilla/gfx/ycbcr/yuv_row_posix.il.orig 1969-12-31 16:00:00.000000000 -0800 -+++ comm-esr31/mozilla/gfx/ycbcr/yuv_row_posix.il 2015-06-04 17:42:52.407800139 -0700 -@@ -0,0 +1,480 @@ -+/ void FastConvertYUVToRGB32Row_IL(const uint8* y_buf, -+/ const uint8* u_buf, -+/ const uint8* v_buf, -+/ uint8* rgb_buf, -+/ int width); -+ .inline FastConvertYUVToRGB32Row_IL, 20 -+ pusha -+ mov 0x20(%esp),%edx -+ mov 0x24(%esp),%edi -+ mov 0x28(%esp),%esi -+ mov 0x2c(%esp),%ebp -+ mov 0x30(%esp),%ecx -+ jmp 1f -+ -+0: -+ movzbl (%edi),%eax -+ add $0x1,%edi -+ movzbl (%esi),%ebx -+ add $0x1,%esi -+ movq kCoefficientsRgbY+2048(,%eax,8),%mm0 -+ movzbl (%edx),%eax -+ paddsw kCoefficientsRgbY+4096(,%ebx,8),%mm0 -+ movzbl 0x1(%edx),%ebx -+ movq kCoefficientsRgbY(,%eax,8),%mm1 -+ add $0x2,%edx -+ movq kCoefficientsRgbY(,%ebx,8),%mm2 -+ paddsw %mm0,%mm1 -+ paddsw %mm0,%mm2 -+ psraw $0x6,%mm1 -+ psraw $0x6,%mm2 -+ packuswb %mm2,%mm1 -+ movntq %mm1,0x0(%ebp) -+ add $0x8,%ebp -+1: -+ sub $0x2,%ecx -+ jns 0b -+ -+ and $0x1,%ecx -+ je 2f -+ -+ movzbl (%edi),%eax -+ movq kCoefficientsRgbY+2048(,%eax,8),%mm0 -+ movzbl (%esi),%eax -+ paddsw kCoefficientsRgbY+4096(,%eax,8),%mm0 -+ movzbl (%edx),%eax -+ movq kCoefficientsRgbY(,%eax,8),%mm1 -+ paddsw %mm0,%mm1 -+ psraw $0x6,%mm1 -+ packuswb %mm1,%mm1 -+ movd %mm1,0x0(%ebp) -+2: -+ popa -+ .end -+ -+/ void ScaleYUVToRGB32Row_IL(const uint8* y_buf, -+/ const uint8* u_buf, -+/ const uint8* v_buf, -+/ uint8* rgb_buf, -+/ int width, -+/ int source_dx); -+ .inline ScaleYUVToRGB32Row_IL, 24 -+ pusha -+ mov 0x20(%esp),%edx -+ mov 0x24(%esp),%edi -+ mov 0x28(%esp),%esi -+ mov 0x2c(%esp),%ebp -+ mov 0x30(%esp),%ecx -+ xor %ebx,%ebx -+ jmp 1f -+ -+0: -+ mov %ebx,%eax -+ sar $0x11,%eax -+ movzbl (%edi,%eax,1),%eax -+ movq kCoefficientsRgbY+2048(,%eax,8),%mm0 -+ mov %ebx,%eax -+ sar $0x11,%eax -+ movzbl (%esi,%eax,1),%eax -+ paddsw kCoefficientsRgbY+4096(,%eax,8),%mm0 -+ mov %ebx,%eax -+ add 0x34(%esp),%ebx -+ sar $0x10,%eax -+ movzbl (%edx,%eax,1),%eax -+ movq kCoefficientsRgbY(,%eax,8),%mm1 -+ mov %ebx,%eax -+ add 0x34(%esp),%ebx -+ sar $0x10,%eax -+ movzbl (%edx,%eax,1),%eax -+ movq kCoefficientsRgbY(,%eax,8),%mm2 -+ paddsw %mm0,%mm1 -+ paddsw %mm0,%mm2 -+ psraw $0x6,%mm1 -+ psraw $0x6,%mm2 -+ packuswb %mm2,%mm1 -+ movntq %mm1,0x0(%ebp) -+ add $0x8,%ebp -+1: -+ sub $0x2,%ecx -+ jns 0b -+ -+ and $0x1,%ecx -+ je 2f -+ -+ mov %ebx,%eax -+ sar $0x11,%eax -+ movzbl (%edi,%eax,1),%eax -+ movq kCoefficientsRgbY+2048(,%eax,8),%mm0 -+ mov %ebx,%eax -+ sar $0x11,%eax -+ movzbl (%esi,%eax,1),%eax -+ paddsw kCoefficientsRgbY+4096(,%eax,8),%mm0 -+ mov %ebx,%eax -+ sar $0x10,%eax -+ movzbl (%edx,%eax,1),%eax -+ movq kCoefficientsRgbY(,%eax,8),%mm1 -+ paddsw %mm0,%mm1 -+ psraw $0x6,%mm1 -+ packuswb %mm1,%mm1 -+ movd %mm1,0x0(%ebp) -+ -+2: -+ popa -+ .end -+ -+/ void LinearScaleYUVToRGB32Row_IL(const uint8* y_buf, -+/ const uint8* u_buf, -+/ const uint8* v_buf, -+/ uint8* rgb_buf, -+/ int width, -+/ int source_dx); -+ .inline LinearScaleYUVToRGB32Row_IL, 24 -+ pusha -+ mov 0x20(%esp),%edx -+ mov 0x24(%esp),%edi -+ mov 0x2c(%esp),%ebp -+ -+ / source_width = width * source_dx + ebx -+ mov 0x30(%esp), %ecx -+ imull 0x34(%esp), %ecx -+ mov %ecx, 0x30(%esp) -+ -+ mov 0x34(%esp), %ecx -+ xor %ebx,%ebx -+ / x = 0 -+ cmp $0x20000,%ecx -+ / if source_dx >= 2.0 -+ jl 1f -+ mov $0x8000,%ebx -+ / x = 0.5 for 1/2 or less -+ jmp 1f -+ -+0: -+ mov %ebx,%eax -+ sar $0x11,%eax -+ -+ movzbl (%edi,%eax,1),%ecx -+ movzbl 1(%edi,%eax,1),%esi -+ mov %ebx,%eax -+ andl $0x1fffe, %eax -+ imul %eax, %esi -+ xorl $0x1fffe, %eax -+ imul %eax, %ecx -+ addl %esi, %ecx -+ shrl $17, %ecx -+ movq kCoefficientsRgbY+2048(,%ecx,8),%mm0 -+ -+ mov 0x28(%esp),%esi -+ mov %ebx,%eax -+ sar $0x11,%eax -+ -+ movzbl (%esi,%eax,1),%ecx -+ movzbl 1(%esi,%eax,1),%esi -+ mov %ebx,%eax -+ andl $0x1fffe, %eax -+ imul %eax, %esi -+ xorl $0x1fffe, %eax -+ imul %eax, %ecx -+ addl %esi, %ecx -+ shrl $17, %ecx -+ paddsw kCoefficientsRgbY+4096(,%ecx,8),%mm0 -+ -+ mov %ebx,%eax -+ sar $0x10,%eax -+ movzbl (%edx,%eax,1),%ecx -+ movzbl 1(%edx,%eax,1),%esi -+ mov %ebx,%eax -+ add 0x34(%esp),%ebx -+ andl $0xffff, %eax -+ imul %eax, %esi -+ xorl $0xffff, %eax -+ imul %eax, %ecx -+ addl %esi, %ecx -+ shrl $16, %ecx -+ movq kCoefficientsRgbY(,%ecx,8),%mm1 -+ -+ cmp 0x30(%esp), %ebx -+ jge 2f -+ -+ mov %ebx,%eax -+ sar $0x10,%eax -+ movzbl (%edx,%eax,1),%ecx -+ movzbl 1(%edx,%eax,1),%esi -+ mov %ebx,%eax -+ add 0x34(%esp),%ebx -+ andl $0xffff, %eax -+ imul %eax, %esi -+ xorl $0xffff, %eax -+ imul %eax, %ecx -+ addl %esi, %ecx -+ shrl $16, %ecx -+ movq kCoefficientsRgbY(,%ecx,8),%mm2 -+ -+ paddsw %mm0,%mm1 -+ paddsw %mm0,%mm2 -+ psraw $0x6,%mm1 -+ psraw $0x6,%mm2 -+ packuswb %mm2,%mm1 -+ movntq %mm1,0x0(%ebp) -+ add $0x8,%ebp -+ -+1: -+ cmp 0x30(%esp), %ebx -+ jl 0b -+ jmp 3f -+ -+2: -+ paddsw %mm0, %mm1 -+ psraw $6, %mm1 -+ packuswb %mm1, %mm1 -+ movd %mm1, (%ebp) -+ -+3: -+ popa -+ .end -+ -+/ void PICConvertYUVToRGB32Row(const uint8* y_buf, -+/ const uint8* u_buf, -+/ const uint8* v_buf, -+/ uint8* rgb_buf, -+/ int width, -+/ int16 *kCoefficientsRgbY); -+ -+ .inline PICConvertYUVToRGB32Row, 24 -+ pusha -+ mov 0x20(%esp),%edx -+ mov 0x24(%esp),%edi -+ mov 0x28(%esp),%esi -+ mov 0x2c(%esp),%ebp -+ mov 0x34(%esp),%ecx -+ -+ jmp 1f -+ -+0: -+ movzbl (%edi),%eax -+ add $0x1,%edi -+ movzbl (%esi),%ebx -+ add $0x1,%esi -+ movq 2048(%ecx,%eax,8),%mm0 -+ movzbl (%edx),%eax -+ paddsw 4096(%ecx,%ebx,8),%mm0 -+ movzbl 0x1(%edx),%ebx -+ movq 0(%ecx,%eax,8),%mm1 -+ add $0x2,%edx -+ movq 0(%ecx,%ebx,8),%mm2 -+ paddsw %mm0,%mm1 -+ paddsw %mm0,%mm2 -+ psraw $0x6,%mm1 -+ psraw $0x6,%mm2 -+ packuswb %mm2,%mm1 -+ movntq %mm1,0x0(%ebp) -+ add $0x8,%ebp -+1: -+ subl $0x2,0x30(%esp) -+ jns 0b -+ -+ andl $0x1,0x30(%esp) -+ je 2f -+ -+ movzbl (%edi),%eax -+ movq 2048(%ecx,%eax,8),%mm0 -+ movzbl (%esi),%eax -+ paddsw 4096(%ecx,%eax,8),%mm0 -+ movzbl (%edx),%eax -+ movq 0(%ecx,%eax,8),%mm1 -+ paddsw %mm0,%mm1 -+ psraw $0x6,%mm1 -+ packuswb %mm1,%mm1 -+ movd %mm1,0x0(%ebp) -+2: -+ popa -+ .end -+ -+ -+/ void PICScaleYUVToRGB32Row(const uint8* y_buf, -+/ const uint8* u_buf, -+/ const uint8* v_buf, -+/ uint8* rgb_buf, -+/ int width, -+/ int source_dx, -+/ int16 *kCoefficientsRgbY); -+ -+ .inline PICScaleYUVToRGB32Row, 28 -+ pusha -+ mov 0x20(%esp),%edx -+ mov 0x24(%esp),%edi -+ mov 0x28(%esp),%esi -+ mov 0x2c(%esp),%ebp -+ mov 0x38(%esp),%ecx -+ xor %ebx,%ebx -+ jmp 1f -+ -+0: -+ mov %ebx,%eax -+ sar $0x11,%eax -+ movzbl (%edi,%eax,1),%eax -+ movq 2048(%ecx,%eax,8),%mm0 -+ mov %ebx,%eax -+ sar $0x11,%eax -+ movzbl (%esi,%eax,1),%eax -+ paddsw 4096(%ecx,%eax,8),%mm0 -+ mov %ebx,%eax -+ add 0x34(%esp),%ebx -+ sar $0x10,%eax -+ movzbl (%edx,%eax,1),%eax -+ movq 0(%ecx,%eax,8),%mm1 -+ mov %ebx,%eax -+ add 0x34(%esp),%ebx -+ sar $0x10,%eax -+ movzbl (%edx,%eax,1),%eax -+ movq 0(%ecx,%eax,8),%mm2 -+ paddsw %mm0,%mm1 -+ paddsw %mm0,%mm2 -+ psraw $0x6,%mm1 -+ psraw $0x6,%mm2 -+ packuswb %mm2,%mm1 -+ movntq %mm1,0x0(%ebp) -+ add $0x8,%ebp -+1: -+ subl $0x2,0x30(%esp) -+ jns 0b -+ -+ andl $0x1,0x30(%esp) -+ je 2f -+ -+ mov %ebx,%eax -+ sar $0x11,%eax -+ movzbl (%edi,%eax,1),%eax -+ movq 2048(%ecx,%eax,8),%mm0 -+ mov %ebx,%eax -+ sar $0x11,%eax -+ movzbl (%esi,%eax,1),%eax -+ paddsw 4096(%ecx,%eax,8),%mm0 -+ mov %ebx,%eax -+ sar $0x10,%eax -+ movzbl (%edx,%eax,1),%eax -+ movq 0(%ecx,%eax,8),%mm1 -+ paddsw %mm0,%mm1 -+ psraw $0x6,%mm1 -+ packuswb %mm1,%mm1 -+ movd %mm1,0x0(%ebp) -+ -+2: -+ popa -+ .end -+ -+ -+/ void PICLinearScaleYUVToRGB32Row(const uint8* y_buf, -+/ const uint8* u_buf, -+/ const uint8* v_buf, -+/ uint8* rgb_buf, -+/ int width, -+/ int source_dx, -+/ int16 *kCoefficientsRgbY); -+ .inline PICLinearScaleYUVToRGB32Row, 28 -+ pusha -+ mov 0x20(%esp),%edx -+ mov 0x2c(%esp),%ebp -+ mov 0x30(%esp),%ecx -+ mov 0x38(%esp),%edi -+ xor %ebx,%ebx -+ -+ / source_width = width * source_dx + ebx -+ mov 0x30(%esp), %ecx -+ imull 0x34(%esp), %ecx -+ mov %ecx, 0x30(%esp) -+ -+ mov 0x34(%esp), %ecx -+ xor %ebx,%ebx -+ / x = 0 -+ cmp $0x20000,%ecx -+ / if source_dx >= 2.0 -+ jl 1f -+ mov $0x8000,%ebx -+ / x = 0.5 for 1/2 or less -+ jmp 1f -+ -+0: -+ mov 0x24(%esp),%esi -+ mov %ebx,%eax -+ sar $0x11,%eax -+ -+ movzbl (%esi,%eax,1),%ecx -+ movzbl 1(%esi,%eax,1),%esi -+ mov %ebx,%eax -+ andl $0x1fffe, %eax -+ imul %eax, %esi -+ xorl $0x1fffe, %eax -+ imul %eax, %ecx -+ addl %esi, %ecx -+ shrl $17, %ecx -+ movq 2048(%edi,%ecx,8),%mm0 -+ -+ mov 0x28(%esp),%esi -+ mov %ebx,%eax -+ sar $0x11,%eax -+ -+ movzbl (%esi,%eax,1),%ecx -+ movzbl 1(%esi,%eax,1),%esi -+ mov %ebx,%eax -+ andl $0x1fffe, %eax -+ imul %eax, %esi -+ xorl $0x1fffe, %eax -+ imul %eax, %ecx -+ addl %esi, %ecx -+ shrl $17, %ecx -+ paddsw 4096(%edi,%ecx,8),%mm0 -+ -+ mov %ebx,%eax -+ sar $0x10,%eax -+ movzbl (%edx,%eax,1),%ecx -+ movzbl 1(%edx,%eax,1),%esi -+ mov %ebx,%eax -+ add 0x34(%esp),%ebx -+ andl $0xffff, %eax -+ imul %eax, %esi -+ xorl $0xffff, %eax -+ imul %eax, %ecx -+ addl %esi, %ecx -+ shrl $16, %ecx -+ movq (%edi,%ecx,8),%mm1 -+ -+ cmp 0x30(%esp), %ebx -+ jge 2f -+ -+ mov %ebx,%eax -+ sar $0x10,%eax -+ movzbl (%edx,%eax,1),%ecx -+ movzbl 1(%edx,%eax,1),%esi -+ mov %ebx,%eax -+ add 0x34(%esp),%ebx -+ andl $0xffff, %eax -+ imul %eax, %esi -+ xorl $0xffff, %eax -+ imul %eax, %ecx -+ addl %esi, %ecx -+ shrl $16, %ecx -+ movq (%edi,%ecx,8),%mm2 -+ -+ paddsw %mm0,%mm1 -+ paddsw %mm0,%mm2 -+ psraw $0x6,%mm1 -+ psraw $0x6,%mm2 -+ packuswb %mm2,%mm1 -+ movntq %mm1,0x0(%ebp) -+ add $0x8,%ebp -+ -+1: -+ cmp %ebx, 0x30(%esp) -+ jg 0b -+ jmp 3f -+ -+2: -+ paddsw %mm0, %mm1 -+ psraw $6, %mm1 -+ packuswb %mm1, %mm1 -+ movd %mm1, (%ebp) -+ -+3: -+ popa -+ .end ---- comm-esr31/mozilla/gfx/ycbcr/yuv_row_table.cpp.orig 2015-06-04 17:42:52.404795308 -0700 -+++ comm-esr31/mozilla/gfx/ycbcr/yuv_row_table.cpp 2015-06-04 17:42:52.407911124 -0700 -@@ -226,6 +226,10 @@ - RGBV(0xFC), RGBV(0xFD), RGBV(0xFE), RGBV(0xFF), - }; - -+#ifdef __SUNPRO_CC -+#pragma align 16 (kCoefficientsRgbY) -+#endif -+ - #undef RGBY - #undef RGBU - #undef RGBV diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox31-gnu-105-lz4-restrict-keyword.patch --- a/components/desktop/thunderbird/patches/firefox31-gnu-105-lz4-restrict-keyword.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +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 - ---- comm-esr31/mozilla/mfbt/lz4.c.orig 2015-06-04 11:17:03.957437771 -0700 -+++ comm-esr31/mozilla/mfbt/lz4.c 2015-06-04 11:17:03.963371797 -0700 -@@ -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 */ diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox31-gnu-125-mozalloc.patch --- a/components/desktop/thunderbird/patches/firefox31-gnu-125-mozalloc.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -Correctly define malloc_usable_size - -Get correct abort() function definition for Solaris. - ---- comm-esr31/mozilla/memory/mozalloc/mozalloc.cpp.orig 2015-06-04 11:10:38.830585129 -0700 -+++ comm-esr31/mozilla/memory/mozalloc/mozalloc.cpp 2015-06-04 11:10:38.830522608 -0700 -@@ -200,6 +200,8 @@ - } - #endif // if defined(HAVE_VALLOC) - -+extern "C" size_t malloc_usable_size(const void *ptr); -+ - size_t - moz_malloc_usable_size(void *ptr) - { ---- comm-esr31/mozilla/memory/mozalloc/mozalloc_abort.cpp.orig 2015-06-04 11:10:38.830454359 -0700 -+++ comm-esr31/mozilla/memory/mozalloc/mozalloc_abort.cpp 2015-06-04 11:10:38.830381114 -0700 -@@ -34,7 +34,11 @@ - // Define abort() here, so that it is used instead of the system abort(). This - // lets us control the behavior when aborting, in order to get better results - // on *NIX platforms. See mozalloc_abort for details. -+#if defined(SOLARIS) -+void std::abort(void) -+#else - void abort(void) -+#endif - { - mozalloc_abort("Redirecting call to abort() to mozalloc_abort\n"); - } diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox31-gnu-130-xopen.patch --- a/components/desktop/thunderbird/patches/firefox31-gnu-130-xopen.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -Prevent: -error: #error "Compiler or options invalid for pre-UNIX 03 X/Open applications and pre-2001 POSIX applications - ---- comm-esr31/mozilla/media/libpng/pngpriv.h.orig 2015-06-04 13:00:52.516503541 -0700 -+++ comm-esr31/mozilla/media/libpng/pngpriv.h 2015-06-04 13:00:52.515657420 -0700 -@@ -39,6 +39,8 @@ - */ - #define _POSIX_SOURCE 1 /* Just the POSIX 1003.1 and C89 APIs */ - -+#define _XOPEN_SOURCE 600 -+ - #ifndef PNG_VERSION_INFO_ONLY - /* Standard library headers not required by png.h: */ - # include diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/firefox31-sparc-ta-6.patch --- a/components/desktop/thunderbird/patches/firefox31-sparc-ta-6.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +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/mozilla/js/xpconnect/src/XPCShellImpl.cpp -+++ b/mozilla/js/xpconnect/src/XPCShellImpl.cpp -@@ -1325,6 +1325,12 @@ - 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; -diff --git a/memory/mozjemalloc/jemalloc.c b/memory/mozjemalloc/jemalloc.c ---- a/mozilla/memory/mozjemalloc/jemalloc.c -+++ b/mozilla/memory/mozjemalloc/jemalloc.c -@@ -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/mozilla/toolkit/xre/nsAppRunner.cpp -+++ b/mozilla/toolkit/xre/nsAppRunner.cpp -@@ -4016,16 +4016,22 @@ XREMain::XRE_mainRun() - } - - /* - * XRE_main - A class based main entry point used by most platforms. - */ - 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 -+ - char aLocal; - GeckoProfilerInitRAII profilerGuard(&aLocal); - PROFILER_LABEL("Startup", "XRE_Main"); - - mozilla::IOInterposerInit ioInterposerGuard; - - nsresult rv = NS_OK; - diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird-01-libnspr_flt4.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/thunderbird/patches/thunderbird-01-libnspr_flt4.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,12 @@ +Fix for sparc. +This should be investigated for sending upstream. +--- a/mail/installer/package-manifest.in ++++ b/mail/installer/package-manifest.in +@@ -564,6 +564,7 @@ + @BINPATH@/@DLL_PREFIX@freebl_32fpu_3@DLL_SUFFIX@ + @BINPATH@/@DLL_PREFIX@freebl_32int_3@DLL_SUFFIX@ + @BINPATH@/@DLL_PREFIX@freebl_32int64_3@DLL_SUFFIX@ ++@BINPATH@/cpu/sparcv8plus/@DLL_PREFIX@nspr_flt4@DLL_SUFFIX@ + #endif + + ; core platform files diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird-01-locale.patch --- a/components/desktop/thunderbird/patches/thunderbird-01-locale.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -Fix for Solaris. -This should be investigated for sending upstream. ---- comm-esr31/mozilla/modules/libpref/src/init/all.js.orig 2015-05-12 17:14:34.265046236 +0530 -+++ comm-esr31/mozilla/modules/libpref/src/init/all.js 2015-05-12 17:15:06.016089289 +0530 -@@ -1462,7 +1462,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 diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird-02-sqlite3-unix-excl.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/thunderbird/patches/thunderbird-02-sqlite3-unix-excl.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,14 @@ +Without this home directories hosted on NFS cause performance issues. +This should be investigated if this is still needed. +--- a/mail/app/profile/all-thunderbird.js 2013-02-20 16:25:20.562753000 +0800 ++++ b/mail/app/profile/all-thunderbird.js 2013-02-20 16:27:17.785465000 +0800 +@@ -248,6 +248,9 @@ + pref("accessibility.typeaheadfind.linksonly", false); + pref("accessibility.typeaheadfind.flashBar", 1); + ++// Whether profile is on NFS ++pref("storage.nfs_filesystem", true); ++ + pref("mail.close_message_window.on_delete", false); + + // Number of lines of To/CC/BCC address headers to show before "more" diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird-03-package-warning.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/thunderbird/patches/thunderbird-03-package-warning.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,13 @@ +Fix for Solaris. +This should be investigated for sending upstream. +--- a/mail/installer/Makefile.in Fri Apr 12 10:02:00 2013 ++++ b/mail/installer/Makefile.in Fri Apr 12 10:02:20 2013 +@@ -16,7 +16,7 @@ + MOZ_PKG_MANIFEST_P = $(srcdir)/package-manifest.in + # Some files have been already bundled with xulrunner + ifndef SYSTEM_LIBXUL +-MOZ_PKG_FATAL_WARNINGS = 1 ++# MOZ_PKG_FATAL_WARNINGS = 1 + endif + + MOZ_NONLOCALIZED_PKG_LIST = \ diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird-04-dup-ctime-def-removal.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/thunderbird/patches/thunderbird-04-dup-ctime-def-removal.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,29 @@ +In S12, ctime_r only takes 2 arguments. Fix for Solaris. +In S11, ctime_r still takes 3 arguments. We should eventually look into +modifying this patch with an ifdef for SOLARIS_11 since this will not work +on S11. +This should be investigated for sending upstream. + +--- comm-esr38/ldap/sdks/c-sdk/ldap/libraries/libldap/tmplout.c.orig 2015-04-15 14:18:18.428844179 +0530 ++++ comm-esr38/ldap/sdks/c-sdk/ldap/libraries/libldap/tmplout.c 2015-04-15 14:20:02.153860191 +0530 +@@ -48,11 +48,6 @@ + #endif + + +-/* This is totally lame, since it should be coming from time.h, but isn't. */ +-#if defined(SOLARIS) +-char *ctime_r(const time_t *, char *, int); +-#endif +- + static int do_entry2text( LDAP *ld, char *buf, char *base, LDAPMessage *entry, + struct ldap_disptmpl *tmpl, char **defattrs, char ***defvals, + writeptype writeproc, void *writeparm, char *eol, int rdncount, +@@ -962,7 +957,7 @@ time2text( char *ldtimestr, int dateonly + } + + gmttime = gtime( &t ); +- timestr = NSLDAPI_CTIME( &gmttime, buf, sizeof(buf) ); ++ timestr = ctime_r( &gmttime, buf); + + timestr[ strlen( timestr ) - 1 ] = zone; /* replace trailing newline */ + if ( dateonly ) { diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird-05-update-packaging.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/thunderbird/patches/thunderbird-05-update-packaging.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,13 @@ +Fix for building on Solaris. +This should be investigated for sending upstream. + +--- comm-esr38/mozilla/moz.build.orig 2015-04-19 15:26:14.440822480 +0530 ++++ comm-esr38/mozilla/moz.build 2015-04-19 15:26:27.097957297 +0530 +@@ -16,7 +16,6 @@ add_tier_dir('base', ['config', 'python' + if not CONFIG['JS_STANDALONE']: + CONFIGURE_SUBST_FILES += [ + 'mozilla-config.h', +- 'tools/update-packaging/Makefile', + ] + + add_tier_dir('base', ['build', 'probes']) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird-06-enable-extensions.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/thunderbird/patches/thunderbird-06-enable-extensions.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,15 @@ +Fix for Solaris. +This should be investigated for sending upstream. + +diff -r 727595a78622 mail/app/profile/all-thunderbird.js +--- a/mail/app/profile/all-thunderbird.js Fri Nov 04 22:12:51 2011 +0000 ++++ b/mail/app/profile/all-thunderbird.js Wed Nov 09 16:30:30 2011 +0800 +@@ -138,7 +138,7 @@ + // Disable add-ons installed into the shared user and shared system areas by + // default. This does not include the application directory. See the SCOPE + // constants in AddonManager.jsm for values to use here +-pref("extensions.autoDisableScopes", 15); ++pref("extensions.autoDisableScopes", 11); + + // Preferences for AMO integration + pref("extensions.getAddons.cache.enabled", true); diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird-07-ldap.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/desktop/thunderbird/patches/thunderbird-07-ldap.patch Tue Mar 01 12:56:53 2016 -0800 @@ -0,0 +1,34 @@ +Add necessary flags for DSO_LDOPTS. +Do not plan to send upstream. + +--- a/ldap/sdks/c-sdk/config/SunOS5.mk 2015-10-13 23:37:03.388273000 +0800 ++++ b/ldap/sdks/c-sdk/config/SunOS5.mk 2015-10-13 23:37:18.652330000 +0800 +@@ -217,5 +217,5 @@ + ifeq ($(OS_TEST),sun4u) + ULTRASPARC_LIBRARY = ultrasparc + ULTRASPARC_FILTER_LIBRARY = libatomic.so +-DSO_LDOPTS += -f $(ULTRASPARC_FILTER_LIBRARY) ++DSO_LDOPTS += -Wl,-f -Wl,$(ULTRASPARC_FILTER_LIBRARY) + endif +--- a/ldap/sdks/c-sdk/configure 2015-10-14 06:51:22.319008000 +0800 ++++ b/ldap/sdks/c-sdk/configure 2015-10-14 06:52:01.010674000 +0800 +@@ -5600,7 +5600,7 @@ + if test -z "$USE_64"; then + ULTRASPARC_LIBRARY=ultrasparc + ULTRASPARC_FILTER_LIBRARY=libatomic.so +- DSO_LDOPTS="$DSO_LDOPTS -f "'$(ULTRASPARC_FILTER_LIBRARY)' ++ DSO_LDOPTS="$DSO_LDOPTS -Wl,-f -Wl,"'$(ULTRASPARC_FILTER_LIBRARY)' + fi + fi + ;; +--- a/ldap/sdks/c-sdk/configure Wed Oct 14 23:38:04 2015 ++++ b/ldap/sdks/c-sdk/configure Wed Oct 14 23:38:47 2015 +@@ -5503,7 +5503,7 @@ + CXX="$CXX -m64" + fi + LD='$(CC)' +- DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)' ++ DSO_LDOPTS='-shared -Wl,-h -Wl,$(notdir $@)' + DSO_CFLAGS=-fPIC + CFLAGS="$CFLAGS -Wall" + CXXFLAGS="$CXXFLAGS -Wall" diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird-31-gnu-ReadAheadFile.patch --- a/components/desktop/thunderbird/patches/thunderbird-31-gnu-ReadAheadFile.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -Patch to fix an issue where the Thunderbird dictionary was not -being read and words were incorrectly showing up as misspelled -on Solaris when Thunderbird is built with the GNU compilers. - -diff --git a/mozilla/xpcom/glue/FileUtils.cpp b/mozilla/xpcom/glue/FileUtils.cpp ---- a/mozilla/xpcom/glue/FileUtils.cpp -+++ b/mozilla/xpcom/glue/FileUtils.cpp -@@ -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) { diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird12-00-libnspr_flt4.patch --- a/components/desktop/thunderbird/patches/thunderbird12-00-libnspr_flt4.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -Fix for sparc. -This should be investigated for sending upstream. ---- a/mail/installer/package-manifest.in -+++ b/mail/installer/package-manifest.in -@@ -564,6 +564,7 @@ - @BINPATH@/@DLL_PREFIX@freebl_32fpu_3@DLL_SUFFIX@ - @BINPATH@/@DLL_PREFIX@freebl_32int_3@DLL_SUFFIX@ - @BINPATH@/@DLL_PREFIX@freebl_32int64_3@DLL_SUFFIX@ -+@BINPATH@/cpu/sparcv8plus/@DLL_PREFIX@nspr_flt4@DLL_SUFFIX@ - #endif - - ; core platform files diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird17-jemalloc_linkage.patch --- a/components/desktop/thunderbird/patches/thunderbird17-jemalloc_linkage.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -Fix for building on Solaris. -This should be investigated for sending upstream. ---- a/mail/app/Makefile.in Mon Jan 16 15:54:09 2012 -+++ b/mail/app/Makefile.in Mon Jan 16 15:55:33 2012 -@@ -113,6 +113,12 @@ - endif - endif - -+ifdef MOZ_MEMORY -+ifeq ($(OS_ARCH),SunOS) -+LIBS += $(LIBXUL_LIBS) -+endif -+endif -+ - # This switches $(INSTALL) to copy mode, like $(SYSINSTALL), so things that - # shouldn't get 755 perms need $(IFLAGS1) for either way of calling nsinstall. - NSDISTMODE = copy diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird20-78-sqlite3-unix-excl.patch --- a/components/desktop/thunderbird/patches/thunderbird20-78-sqlite3-unix-excl.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -Without this home directories hosted on NFS cause performance issues. -This should be investigated if this is still needed. ---- a/mail/app/profile/all-thunderbird.js 2013-02-20 16:25:20.562753000 +0800 -+++ b/mail/app/profile/all-thunderbird.js 2013-02-20 16:27:17.785465000 +0800 -@@ -248,6 +248,9 @@ - pref("accessibility.typeaheadfind.linksonly", false); - pref("accessibility.typeaheadfind.flashBar", 1); - -+// Whether profile is on NFS -+pref("storage.nfs_filesystem", true); -+ - pref("mail.close_message_window.on_delete", false); - - // Number of lines of To/CC/BCC address headers to show before "more" diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird21-103-package-warning.patch --- a/components/desktop/thunderbird/patches/thunderbird21-103-package-warning.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -Fix for Solaris. -This should be investigated for sending upstream. ---- a/mail/installer/Makefile.in Fri Apr 12 10:02:00 2013 -+++ b/mail/installer/Makefile.in Fri Apr 12 10:02:20 2013 -@@ -16,7 +16,7 @@ - MOZ_PKG_MANIFEST_P = $(srcdir)/package-manifest.in - # Some files have been already bundled with xulrunner - ifndef SYSTEM_LIBXUL --MOZ_PKG_FATAL_WARNINGS = 1 -+# MOZ_PKG_FATAL_WARNINGS = 1 - endif - - MOZ_NONLOCALIZED_PKG_LIST = \ diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird31-41-updateurl.patch --- a/components/desktop/thunderbird/patches/thunderbird31-41-updateurl.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -This should be investigated to see if this is needed in future versions. - ---- a/mail/app/profile/all-thunderbird.js Sat Nov 14 01:41:46 2009 -+++ b/mail/app/profile/all-thunderbird.js Sat Nov 14 01:45:16 2009 -@@ -85,9 +85,13 @@ pref("app.update.certs.1.commonName", "a - - pref("app.update.certs.2.issuerName", "CN=Thawte SSL CA,O=\"Thawte, Inc.\",C=US"); - pref("app.update.certs.2.commonName", "aus4.mozilla.org"); -+pref("app.update.certs.3.issuerName", "OU=Equifax Secure Certificate Authority,O=Equifax,C=US"); -+pref("app.update.certs.3.commonName", "aus2-community.mozilla.org"); -+pref("app.update.certs.4.issuerName", "CN=GeoTrust SSL CA,O=\"GeoTrust, Inc.\",C=US"); -+pref("app.update.certs.4.commonName", "aus2-community.mozilla.org"); - - // Whether or not app updates are enabled --pref("app.update.enabled", true); -+pref("app.update.enabled", false); - - // This preference turns on app.update.mode and allows automatic download and - // install to take place. We use a separate boolean toggle for this to make -@@ -113,7 +117,7 @@ pref("app.update.silent", false); - pref("app.update.staging.enabled", true); - - // Update service URL: --pref("app.update.url", "https://aus4.mozilla.org/update/3/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml"); -+pref("app.update.url", "https://aus2-community.mozilla.org/update/3/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml"); - - // URL user can browse to manually if for some reason all update installation - // attempts fail. diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird31-501-dup-ctime-def-removal.patch --- a/components/desktop/thunderbird/patches/thunderbird31-501-dup-ctime-def-removal.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -Fix for Solaris. -This should be investigated for sending upstream. - ---- comm-esr31/ldap/sdks/c-sdk/ldap/libraries/libldap/tmplout.c.orig 2015-04-15 14:18:18.428844179 +0530 -+++ comm-esr31/ldap/sdks/c-sdk/ldap/libraries/libldap/tmplout.c 2015-04-15 14:20:02.153860191 +0530 -@@ -48,11 +48,6 @@ - #endif - - --/* This is totally lame, since it should be coming from time.h, but isn't. */ --#if defined(SOLARIS) --char *ctime_r(const time_t *, char *, int); --#endif -- - static int do_entry2text( LDAP *ld, char *buf, char *base, LDAPMessage *entry, - struct ldap_disptmpl *tmpl, char **defattrs, char ***defvals, - writeptype writeproc, void *writeparm, char *eol, int rdncount, -@@ -962,7 +957,7 @@ time2text( char *ldtimestr, int dateonly - } - - gmttime = gtime( &t ); -- timestr = NSLDAPI_CTIME( &gmttime, buf, sizeof(buf) ); -+ timestr = ctime_r( &gmttime, buf); - - timestr[ strlen( timestr ) - 1 ] = zone; /* replace trailing newline */ - if ( dateonly ) { diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird31-502-update-packaging.patch --- a/components/desktop/thunderbird/patches/thunderbird31-502-update-packaging.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -Fix for building on Solaris. -This should be investigated for sending upstream. - ---- comm-esr31/mozilla/moz.build.orig 2015-04-19 15:26:14.440822480 +0530 -+++ comm-esr31/mozilla/moz.build 2015-04-19 15:26:27.097957297 +0530 -@@ -16,7 +16,6 @@ add_tier_dir('base', ['config', 'python' - if not CONFIG['JS_STANDALONE']: - CONFIGURE_SUBST_FILES += [ - 'mozilla-config.h', -- 'tools/update-packaging/Makefile', - ] - - add_tier_dir('base', ['build', 'probes']) diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird31-503-append-ffssi2-symbol.patch --- a/components/desktop/thunderbird/patches/thunderbird31-503-append-ffssi2-symbol.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -SPARC architecture specific patch. Probably cannot send upstream. - ---- comm-esr31/mozilla/js/src/ctypes/libffi/src/closures.c.orig 2015-05-07 22:39:07.816379536 +0530 -+++ comm-esr31/mozilla/js/src/ctypes/libffi/src/closures.c 2015-05-07 22:39:42.088095728 +0530 -@@ -608,3 +608,12 @@ ffi_closure_free (void *ptr) - - # endif /* ! FFI_MMAP_EXEC_WRIT */ - #endif /* FFI_CLOSURES */ -+ -+#ifdef __sparc -+#include -+int -+__ffssi2 (int x) -+{ -+ffs (x); -+} -+#endif diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird31-504-append-pulseaudio-symbols.patch --- a/components/desktop/thunderbird/patches/thunderbird31-504-append-pulseaudio-symbols.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -SPARC architecture specific patch. Probably cannot send upstream. - ---- comm-esr31/mozilla/media/libcubeb/src/cubeb_pulse.c.orig 2015-03-30 22:18:12.000000000 +0530 -+++ comm-esr31/mozilla/media/libcubeb/src/cubeb_pulse.c 2015-05-08 17:54:35.369052446 +0530 -@@ -13,6 +13,11 @@ - #include "cubeb/cubeb.h" - #include "cubeb-internal.h" - -+#ifdef __sparc -+#define pa_nop() do {} while (0) -+#define MAX_ALLOC_SIZE (1024*1024*96) -+#define pa_assert(expr) pa_nop() -+#endif - #ifdef DISABLE_LIBPULSE_DLOPEN - #define WRAP(x) x - #else -@@ -675,3 +678,47 @@ static struct cubeb_ops const pulse_ops - .stream_get_position = pulse_stream_get_position, - .stream_get_latency = pulse_stream_get_latency - }; -+ -+#ifdef __sparc -+void* pa_xmalloc0(size_t size) { -+ void *p; -+ pa_assert(size > 0); -+ pa_assert(size < MAX_ALLOC_SIZE); -+ -+ if (!(p = calloc(1, size))) -+ exit(1); -+ -+ return p; -+} -+ -+void *pa_xrealloc(void *ptr, size_t size) { -+ void *p; -+ pa_assert(size > 0); -+ pa_assert(size < MAX_ALLOC_SIZE); -+ -+ if (!(p = realloc(ptr, size))) -+ exit(1); -+ return p; -+} -+ -+void* pa_xmalloc(size_t size) { -+ void *p; -+ pa_assert(size > 0); -+ pa_assert(size < MAX_ALLOC_SIZE); -+ -+ if (!(p = malloc(size))) -+ exit(1); -+ -+ return p; -+} -+ -+void* pa_xmemdup(const void *p, size_t l) { -+ if (!p) -+ return NULL; -+ else { -+ char *r = pa_xmalloc(l); -+ memcpy(r, p, l); -+ return r; -+ } -+} -+#endif diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird31-508-lightning-l10-build-all.patch --- a/components/desktop/thunderbird/patches/thunderbird31-508-lightning-l10-build-all.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -Fix for Solaris. -This should be investigated for sending upstream. - ---- comm-esr31/calendar/lightning/lightning-packager.mk.orig 2015-07-03 13:58:00.219762666 +0530 -+++ comm-esr31/calendar/lightning/lightning-packager.mk 2015-07-03 16:18:28.846829012 +0530 -@@ -133,7 +133,8 @@ repack-stage-all: $(XPI_STAGE_PATH)/$(XP - langpack-all: AB_CD=all - langpack-all: L10N_XPI_NAME=$(XPI_NAME)-all - langpack-all: L10N_XPI_PKGNAME=$(subst .$(AB_CD),,$(XPI_PKGNAME)) --langpack-all: recreate-platformini repack-stage-all $(addprefix libs-,$(call apposlocales,calendar)) -+#langpack-all: recreate-platformini repack-stage-all $(addprefix libs-,$(call apposlocales,calendar)) -+langpack-all: recreate-platformini repack-stage-all $(addprefix libs-,$(shell awk '{ if ($$2 == "" || $$2 == "$(SHORTOS)") { print $$1 } }' $(topsrcdir)/calendar/locales/shipped-locales)) - @echo "Done packaging" - - # Actual locale packaging targets. If L10N_XPI_NAME is set, then use it. diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird31-509-enable-extensions.patch --- a/components/desktop/thunderbird/patches/thunderbird31-509-enable-extensions.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -Fix for Solaris. -This should be investigated for sending upstream. - -diff -r 727595a78622 mail/app/profile/all-thunderbird.js ---- a/mail/app/profile/all-thunderbird.js Fri Nov 04 22:12:51 2011 +0000 -+++ b/mail/app/profile/all-thunderbird.js Wed Nov 09 16:30:30 2011 +0800 -@@ -138,7 +138,7 @@ - // Disable add-ons installed into the shared user and shared system areas by - // default. This does not include the application directory. See the SCOPE - // constants in AddonManager.jsm for values to use here --pref("extensions.autoDisableScopes", 15); -+pref("extensions.autoDisableScopes", 11); - - // Preferences for AMO integration - pref("extensions.getAddons.cache.enabled", true); diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/patches/thunderbird31-99-mozfind.patch --- a/components/desktop/thunderbird/patches/thunderbird31-99-mozfind.patch Tue Mar 01 10:33:35 2016 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -Fix for Solaris. -This should be investigated for sending upstream. - ---- a/configure Thu Aug 30 12:03:48 2012 -+++ b/configure Thu Aug 30 12:04:13 2012 -@@ -1309,7 +1309,7 @@ - # Make the config.status file executable - chmod +x $CONFIG_STATUS - --_SUBDIR_CONFIG_ARGS="$ac_configure_args --with-intl-api" -+_SUBDIR_CONFIG_ARGS="$ac_configure_args" - if test -n "$UNIFY_DIST"; then - # Make --with-unify-dist point to the right path - _SUBDIR_CONFIG_ARGS="$_SUBDIR_CONFIG_ARGS --with-unify-dist=$UNIFY_DIST" diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/test/results-32.master --- a/components/desktop/thunderbird/test/results-32.master Tue Mar 01 10:33:35 2016 -0800 +++ b/components/desktop/thunderbird/test/results-32.master Tue Mar 01 12:56:53 2016 -0800 @@ -1,9 +1,11 @@ -make[1]: Entering directory `$(@D)/mozilla/js/src' -../../dist/bin/run-mozilla.sh $(@D)/mozilla/_virtualenv/bin/python -u $(SOURCE_DIR)/mozilla/js/src/jit-test/jit_test.py \ - --no-slow --no-progress --tinderbox --tbpl -j 2 -f \ +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 PASSED ALL Result summary: -Passed: 24660 +Passed: 27334 Failed: 0 -make[1]: Leaving directory `$(@D)/mozilla/js/src' +make[1]: Leaving directory '$(@D)/js/src' diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/thunderbird-lightning.p5m --- a/components/desktop/thunderbird/thunderbird-lightning.p5m Tue Mar 01 10:33:35 2016 -0800 +++ b/components/desktop/thunderbird/thunderbird-lightning.p5m Tue Mar 01 12:56:53 2016 -0800 @@ -20,7 +20,7 @@ # # -# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. # \ @@ -38,7 +38,11 @@ set name=info.upstream-url value=$(COMPONENT_PROJECT_URL) set name=org.opensolaris.arc-caseid value=PSARC/2013/071 set name=org.opensolaris.consolidation value=$(CONSOLIDATION) -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/application.ini +file path=usr/lib/thunderbird/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png +file path=usr/lib/thunderbird/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon64.png +file path=usr/lib/thunderbird/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/.mkdir.done +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/app.ini file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarm.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmMonitor.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calAlarmService.js @@ -57,6 +61,8 @@ file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calFreeBusyService.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calHtmlExport.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService-worker.js +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calICSService.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsImportExport.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calIcsParser.js @@ -86,11 +92,1133 @@ file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekInfoService.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calWeekPrinter.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome.manifest -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US.jar +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/.mkdir.done +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ar/locale/ar/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-bg/locale/bg/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ca/locale/ca/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-cs/locale/cs/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-da/locale/da/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-de/locale/de/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-el/locale/el/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-en-US/locale/en-US/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-AR/locale/es-AR/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-es-ES/locale/es-ES/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-et/locale/et/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-eu/locale/eu/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fi/locale/fi/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-fr/locale/fr/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-gl/locale/gl/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-he/locale/he/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-hu/locale/hu/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-id/locale/id/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-is/locale/is/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-it/locale/it/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ja/locale/ja/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ko/locale/ko/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-lt/locale/lt/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nb-NO/locale/nb-NO/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nl/locale/nl/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-nn-NO/locale/nn-NO/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pa-IN/locale/pa-IN/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pl/locale/pl/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-BR/locale/pt-BR/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-pt-PT/locale/pt-PT/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ro/locale/ro/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-ru/locale/ru/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sk/locale/sk/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sl/locale/sl/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sq/locale/sq/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-sv-SE/locale/sv-SE/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-tr/locale/tr/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-uk/locale/uk/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-CN/locale/zh-CN/calendar/wcap.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/calendar-alarms.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/calendar-event-dialog-attendees.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/calendar-event-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/calendar-event-dialog.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/calendar-extract.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/calendar-invitations-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/calendar-occurrence-prompt.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/calendar-occurrence-prompt.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/calendar-subscriptions-dialog.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/calendar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/calendar.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/calendarCreation.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/calendarCreation.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/categories.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/dateFormat.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/dialogs/calendar-event-dialog-reminder.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/global.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/menuOverlay.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/migration.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/migration.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/preferences/alarms.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/preferences/categories.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/preferences/general.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/preferences/preferences.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/preferences/views.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/provider-uninstall.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/timezones.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar-zh-TW/locale/zh-TW/calendar/wcap.properties file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/WindowsNTToZoneInfoTZId.properties file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/agenda-listbox.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/agenda-listbox.xml -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/calApplicationUtils.js +file \ + path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/calApplicationUtils.js \ + mode=0555 file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/calFilter.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/calUtils.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/calendar-alarm-dialog.js @@ -166,7 +1294,9 @@ file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/calendar-views.xml file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/calendar-views.xul file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/calendarCreation.js -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/calendarCreation.xul +file \ + path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/calendarCreation.xul \ + mode=0555 file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/chooseCalendarDialog.xul file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/datetimepickers/datetimepickers.css file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/datetimepickers/datetimepickers.xml @@ -180,8 +1310,6 @@ file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/preferences/editCategory.xul file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/preferences/general.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/preferences/general.xul -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/preferences/timezones.js -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/preferences/timezones.xul file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/preferences/views.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/preferences/views.xul file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/calendar/content/calendar/publish.js @@ -200,7 +1328,126 @@ file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/icons/default/calendar-event-summary-dialog.png file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/icons/default/calendar-task-dialog.png file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/icons/default/calendar-task-summary-dialog.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-en-US.jar +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ar/locale/ar/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ar/locale/ar/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ar/locale/ar/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-bg/locale/bg/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-bg/locale/bg/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-bg/locale/bg/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ca/locale/ca/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ca/locale/ca/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ca/locale/ca/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-cs/locale/cs/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-cs/locale/cs/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-cs/locale/cs/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-da/locale/da/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-da/locale/da/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-da/locale/da/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-de/locale/de/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-de/locale/de/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-de/locale/de/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-el/locale/el/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-el/locale/el/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-el/locale/el/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-en-US/locale/en-US/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-en-US/locale/en-US/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-en-US/locale/en-US/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-es-AR/locale/es-AR/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-es-AR/locale/es-AR/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-es-AR/locale/es-AR/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-es-ES/locale/es-ES/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-es-ES/locale/es-ES/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-es-ES/locale/es-ES/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-et/locale/et/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-et/locale/et/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-et/locale/et/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-eu/locale/eu/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-eu/locale/eu/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-eu/locale/eu/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-fi/locale/fi/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-fi/locale/fi/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-fi/locale/fi/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-fr/locale/fr/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-fr/locale/fr/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-fr/locale/fr/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-gl/locale/gl/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-gl/locale/gl/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-gl/locale/gl/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-he/locale/he/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-he/locale/he/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-he/locale/he/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-hu/locale/hu/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-hu/locale/hu/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-hu/locale/hu/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-id/locale/id/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-id/locale/id/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-id/locale/id/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-is/locale/is/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-is/locale/is/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-is/locale/is/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-it/locale/it/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-it/locale/it/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-it/locale/it/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ja/locale/ja/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ja/locale/ja/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ja/locale/ja/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ko/locale/ko/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ko/locale/ko/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ko/locale/ko/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-lt/locale/lt/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-lt/locale/lt/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-lt/locale/lt/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-nb-NO/locale/nb-NO/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-nb-NO/locale/nb-NO/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-nb-NO/locale/nb-NO/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-nl/locale/nl/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-nl/locale/nl/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-nl/locale/nl/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-nn-NO/locale/nn-NO/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-nn-NO/locale/nn-NO/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-nn-NO/locale/nn-NO/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-pa-IN/locale/pa-IN/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-pa-IN/locale/pa-IN/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-pa-IN/locale/pa-IN/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-pl/locale/pl/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-pl/locale/pl/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-pl/locale/pl/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-pt-BR/locale/pt-BR/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-pt-BR/locale/pt-BR/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-pt-BR/locale/pt-BR/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-pt-PT/locale/pt-PT/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-pt-PT/locale/pt-PT/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-pt-PT/locale/pt-PT/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ro/locale/ro/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ro/locale/ro/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ro/locale/ro/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ru/locale/ru/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ru/locale/ru/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-ru/locale/ru/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-sk/locale/sk/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-sk/locale/sk/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-sk/locale/sk/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-sl/locale/sl/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-sl/locale/sl/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-sl/locale/sl/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-sq/locale/sq/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-sq/locale/sq/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-sq/locale/sq/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-sv-SE/locale/sv-SE/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-sv-SE/locale/sv-SE/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-sv-SE/locale/sv-SE/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-tr/locale/tr/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-tr/locale/tr/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-tr/locale/tr/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-uk/locale/uk/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-uk/locale/uk/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-uk/locale/uk/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-zh-CN/locale/zh-CN/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-zh-CN/locale/zh-CN/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-zh-CN/locale/zh-CN/lightning/lightning.properties +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-zh-TW/locale/zh-TW/lightning/lightning-toolbar.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-zh-TW/locale/zh-TW/lightning/lightning.dtd +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning-zh-TW/locale/zh-TW/lightning/lightning.properties file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning/content/lightning/imip-bar-overlay.xul file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning/content/lightning/imip-bar.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/lightning/content/lightning/lightning-calendar-creation.js @@ -254,6 +1501,7 @@ file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/common/today-pane.css file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/common/widgets/calendar-widgets.css file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/common/widgets/drag-center.svg +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/common/widgets/minimonth.css file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/common/widgets/nav-arrow.svg file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/common/widgets/nav-today-hov.svg file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/common/widgets/nav-today.svg @@ -305,111 +1553,6 @@ file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/linux/lightning/lightning-widgets.css file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/linux/lightning/lightning.css file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/linux/lightning/suite-accountCentral.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/cal-icon24.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/cal-icon32.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-alarm-dialog.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-alarms.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-attendees.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-creation-wizard.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-daypicker.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-event-dialog-attendees.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-event-dialog-toolbar-small.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-event-dialog-toolbar.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-event-dialog.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-invitations-dialog-button-images.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-invitations-dialog-list-images.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-invitations-dialog.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-management.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-occurrence-prompt.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-occurrence-prompt.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-printing.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-properties-dialog.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-providerUninstall-dialog.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-subscriptions-dialog.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-task-tree.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-task-view.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-timezone-highlighter.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-unifinder.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/calendar-views.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/checkbox-images-graphite.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/checkbox-images.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/datetimepickers/datetimepickers.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/ok-cancel.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/sidebar-item.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/tasks-actions.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/today-pane.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/toolbar-large.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/toolbar-small.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/toolbar.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/widgets/calendar-widgets.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/calendar/widgets/minimonth.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/lightning/accountCentral.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/lightning/imip.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/lightning/imip.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/lightning/lightning-toolbar.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/lightning/lightning-widgets.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/lightning/lightning.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/osx/lightning/suite-accountCentral.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/cal-icon24.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/cal-icon32.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-alarm-dialog.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-alarms.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-attendees.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-creation-wizard.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-daypicker.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-event-dialog-attendees.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-event-dialog-toolbar-aero.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-event-dialog-toolbar-small.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-event-dialog-toolbar.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-event-dialog.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-invitations-dialog-button-images.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-invitations-dialog-list-images.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-invitations-dialog.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-management.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-occurrence-prompt-aero.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-occurrence-prompt.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-occurrence-prompt.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-printing.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-properties-dialog.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-providerUninstall-dialog.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-subscriptions-dialog.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-task-tree.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-task-view.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-timezone-highlighter.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-unifinder.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-views.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/checkbox-images.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/datetimepickers/datetimepickers.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/ok-cancel.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/tasks-actions-aero.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/tasks-actions.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/today-pane.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/toolbar-aero-inverted.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/toolbar-aero.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/toolbar-large-aero.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/toolbar-large.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/toolbar-small-aero.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/toolbar-small.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/widgets/calendar-widgets.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/widgets/minimonth.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/win-aero/calendar-event-dialog.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/win-aero/calendar.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/win-aero/lightning-toolbar.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/win-aero/lightning.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/win-classic/calendar-event-dialog.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/win-classic/calendar.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/win-classic/lightning-toolbar.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/win-classic/lightning.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/lightning/accountCentral.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/lightning/imip-aero.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/lightning/imip.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/lightning/imip.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/lightning/lightning-toolbar.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/lightning/lightning-widgets.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/lightning/lightning.css -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/lightning/mode-switch-icons-aero.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/lightning/mode-switch-icons-inverted.png -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/lightning/suite-accountCentral.css file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/.mkdir.done file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calBackendLoader.manifest @@ -442,23 +1585,22 @@ file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calWcapCalendarModule.manifest file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbase.xpt file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/calbaseinternal.xpt -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/caldatetime_icaljs.xpt -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/caldatetime_libical.xpt file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/caldav.xpt -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs.manifest +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/icaljs-manifest file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/interfaces.manifest file \ path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libcalbasecomps.so \ pkg.linted.userland.action001.3=true \ pkg.depend.bypass-generate=libmozalloc.so \ pkg.depend.bypass-generate=libnspr4.so pkg.depend.bypass-generate=libxul.so -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical.manifest +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/libical-manifest file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/lightningTextCalendarConverter.manifest file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/wcap.xpt file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/defaults/preferences/lightning.js file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/install.rdf file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAlarmUtils.jsm +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAsyncUtils.jsm file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calAuthUtils.jsm file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calExtract.jsm file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calHashedArray.jsm @@ -471,8 +1613,9 @@ file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageHelpers.jsm file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calStorageUpgrade.jsm file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calUtils.jsm +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calViewUtils.jsm file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/calXMLUtils.jsm file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/modules/ical.js -file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones.sqlite +file path=usr/lib/thunderbird/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/timezones/zones.json license thunderbird.license license="MOZILLA PUBLIC LICENSE V1.1" depend type=require fmri=mail/thunderbird diff -r 570ac9aab8b2 -r 611b2d6efdfe components/desktop/thunderbird/thunderbird.p5m --- a/components/desktop/thunderbird/thunderbird.p5m Tue Mar 01 10:33:35 2016 -0800 +++ b/components/desktop/thunderbird/thunderbird.p5m Tue Mar 01 12:56:53 2016 -0800 @@ -1,4 +1,4 @@ -# + # CDDL HEADER START # # The contents of this file are subject to the terms of the @@ -20,7 +20,7 @@ # # -# Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. # # pkg.linted actions are needed to prevent bad RUNPATH lint errors. @@ -97,9 +97,6 @@ file path=usr/lib/thunderbird/extensions/langpack-uk@thunderbird.mozilla.org.xpi file path=usr/lib/thunderbird/extensions/langpack-zh-CN@thunderbird.mozilla.org.xpi file path=usr/lib/thunderbird/extensions/langpack-zh-TW@thunderbird.mozilla.org.xpi -file path=usr/lib/thunderbird/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png -file path=usr/lib/thunderbird/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf -file path=usr/lib/thunderbird/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/preview.png file path=usr/lib/thunderbird/isp/Bogofilter.sfd file path=usr/lib/thunderbird/isp/DSPAM.sfd file path=usr/lib/thunderbird/isp/POPFile.sfd @@ -138,13 +135,10 @@ pkg.linted.userland.action001.3=true file path=usr/lib/thunderbird/libssl3.so pkg.linted.userland.action001.3=true file path=usr/lib/thunderbird/libxul.so pkg.linted.userland.action001.3=true -file path=usr/lib/thunderbird/mozilla-xremote-client mode=0555 \ - pkg.linted.userland.action001.3=true file path=usr/lib/thunderbird/omni.ja file path=usr/lib/thunderbird/platform.ini file path=usr/lib/thunderbird/plugin-container mode=0555 \ pkg.linted.userland.action001.3=true -file path=usr/lib/thunderbird/precomplete file path=usr/lib/thunderbird/removed-files file path=usr/lib/thunderbird/run-mozilla.sh mode=0555 file path=usr/lib/thunderbird/searchplugins/amazondotcom.xml diff -r 570ac9aab8b2 -r 611b2d6efdfe transforms/locale --- a/transforms/locale Tue Mar 01 10:33:35 2016 -0800 +++ b/transforms/locale Tue Mar 01 12:56:53 2016 -0800 @@ -20,7 +20,7 @@ # # -# Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved. # # general locale @@ -33,6 +33,30 @@ path=.*/locale/([^/@\.]+)(.+){0,1}(/.+){0,1}$ -> \ default facet.locale.%<\1> true> +# thunderbird uses the locale format ab-CD instead of ab_CD, which is the +# Solaris standard. Convert the locale facet to Solaris standard format. +# pkgmogrify doesn't seem to support using a regular expression as the +# "attribute" in a "attribute=value" matcher so we need to enumerate all +# locales where this is a problem. + default facet.locale.en_US true> + delete facet.locale.en-US .*> + default facet.locale.es_AR true> + delete facet.locale.es-AR .*> + default facet.locale.es_ES true> + delete facet.locale.es-ES .*> + default facet.locale.nb_NO true> + delete facet.locale.nb-NO .*> + default facet.locale.nn_NO true> + delete facet.locale.nn-NO .*> + default facet.locale.pt_BR true> + delete facet.locale.pt-BR .*> + default facet.locale.pt_PT true> + delete facet.locale.pt-PT .*> + default facet.locale.sv_SE true> + delete facet.locale.sv-SE .*> + default facet.locale.zh_CN true> + delete facet.locale.zh-TW .*> + # unfacet the C locale delete facet.locale.C .+ >