merge firefox60 for next beta cycle
authorWolfgang Rosenauer <wr@rosenauer.org>
Fri, 08 Jun 2018 22:25:59 +0200
changeset 1053 893fc4d031d6
parent 1046 75893a3d8fbe (current diff)
parent 1052 7a49806c8dae (diff)
child 1054 fbfe323c62cd
merge firefox60 for next beta cycle
MozillaFirefox/MozillaFirefox.spec
MozillaFirefox/create-tar.sh
--- a/MozillaFirefox/MozillaFirefox.changes	Wed May 02 09:28:53 2018 +0200
+++ b/MozillaFirefox/MozillaFirefox.changes	Fri Jun 08 22:25:59 2018 +0200
@@ -1,14 +1,144 @@
 -------------------------------------------------------------------
-Tue May  1 20:50:14 UTC 2018 - wr@rosenauer.org
-
-- update to Firefox 60.0b16
+Thu Jun  7 12:11:06 UTC 2018 - wr@rosenauer.org
+
+- update to Firefox 60.0.2
+  * requires NSS 3.36.4
+  MFSA 2018-14 (bsc#1096449)
+  * CVE-2018-6126 (bmo#1462682)
+    Heap buffer overflow rasterizing paths in SVG with Skia
+
+-------------------------------------------------------------------
+Wed Jun  6 18:57:52 UTC 2018 - guillaume.gardet@opensuse.org
+
+- Add upstream patch to fix boo#1093059 instead of '-ffixed-x28'
+  workaround:
+  * mozilla-bmo1375074.patch
+
+-------------------------------------------------------------------
+Sat May 26 15:53:25 UTC 2018 - wr@rosenauer.org
+
+- fixed "open with" option under KDE (boo#1094747)
+- workaround crash on startup on aarch64 (boo#1093059)
+  (contributed by guillaume.gardet@arm.com)
+
+-------------------------------------------------------------------
+Wed May 23 08:49:09 UTC 2018 - guillaume.gardet@opensuse.org
+
+- Disable webrtc for aarch64 due to bmo#1434589
+- Add patch to fix skia build on AArch64:
+  * mozilla-fix-skia-aarch64.patch
+
+-------------------------------------------------------------------
+Thu May 17 14:01:18 UTC 2018 - wr@rosenauer.org
+
+- update to Firefox 60.0.1
+  * Avoid overly long cycle collector pauses with some add-ons installed
+    (bmo#1449033)
+  * After unckecking the "Sponsored Stories" option, the New Tab page
+    now immediately stops displaying "Sponsored content" cards (bmo#1458906)
+  * On touchscreen devices, fixed momentum scrolling on non-zoomable pages
+    (bmo#1457743)
+  * Use the right default background when opening tabs or windows in
+    high contrast mode (bmo#1458956)
+  * Restored translations of the Preferences panels when using a
+    language pack (bmo#1461590)
+
+-------------------------------------------------------------------
+Mon May 14 13:37:38 UTC 2018 - pcerny@suse.com
+
+- parellelise locales building
+
+-------------------------------------------------------------------
+Mon May  7 08:32:28 UTC 2018 - wr@rosenauer.org
+
+- update to Firefox 60.0
+  * Added a policy engine that allows customized Firefox deployments
+    in enterprise environments, using Windows Group Policy or a
+    cross-platform JSON file
+  * Applied Quantum CSS to render browser UI
+  * Added support for Web Authentication, allowing the use of USB
+    tokens for authentication to web sites
+  * Locale added: Occitan (oc)
+  MFSA 2018-11 (bsc#1092548)
+  * CVE-2018-5154 (bmo#1443092)
+    Use-after-free with SVG animations and clip paths
+  * CVE-2018-5155 (bmo#1448774)
+    Use-after-free with SVG animations and text paths
+  * CVE-2018-5157 (bmo#1449898)
+    Same-origin bypass of PDF Viewer to view protected PDF files
+  * CVE-2018-5158 (bmo#1452075)
+    Malicious PDF can inject JavaScript into PDF Viewer
+  * CVE-2018-5159 (bmo#1441941)
+    Integer overflow and out-of-bounds write in Skia
+  * CVE-2018-5160 (bmo#1436117)
+    Uninitialized memory use by WebRTC encoder
+  * CVE-2018-5152 (bmo#1415644, bmo#1427289)
+    WebExtensions information leak through webRequest API
+  * CVE-2018-5153 (bmo#1436809)
+    Out-of-bounds read in mixed content websocket messages
+  * CVE-2018-5163 (bmo#1426353)
+    Replacing cached data in JavaScript Start-up Bytecode Cache
+  * CVE-2018-5164 (bmo#1416045)
+    CSP not applied to all multipart content sent with
+    multipart/x-mixed-replace
+  * CVE-2018-5166 (bmo#1437325)
+    WebExtension host permission bypass through filterReponseData
+  * CVE-2018-5167 (bmo#1447969)
+    Improper linkification of chrome: and javascript: content in
+    web console and JavaScript debugger
+  * CVE-2018-5168 (bmo#1449548)
+    Lightweight themes can be installed without user interaction
+  * CVE-2018-5169 (bmo#1319157)
+    Dragging and dropping link text onto home button can set home page
+    to include chrome pages
+  * CVE-2018-5172 (bmo#1436482)
+    Pasted script from clipboard can run in the Live Bookmarks page
+    or PDF viewer
+  * CVE-2018-5173 (bmo#1438025)
+    File name spoofing of Downloads panel with Unicode characters
+  * CVE-2018-5174 (bmo#1447080) (Windows-only)
+    Windows Defender SmartScreen UI runs with less secure behavior
+    for downloaded files in Windows 10 April 2018 Update
+  * CVE-2018-5175 (bmo#1432358)
+    Universal CSP bypass on sites using strict-dynamic in their policies
+  * CVE-2018-5176 (bmo#1442840)
+    JSON Viewer script injection
+  * CVE-2018-5177 (bmo#1451908)
+    Buffer overflow in XSLT during number formatting
+  * CVE-2018-5165 (bmo#1451452)
+    Checkbox for enabling Flash protected mode is inverted in 32-bit
+    Firefox
+  * CVE-2018-5180 (bmo#1444086)
+    heap-use-after-free in mozilla::WebGLContext::DrawElementsInstanced
+  * CVE-2018-5181 (bmo#1424107)
+    Local file can be displayed in noopener tab through drag and
+    drop of hyperlink
+  * CVE-2018-5182 (bmo#1435908)
+    Local file can be displayed from hyperlink dragged and dropped
+    on addressbar
+  * CVE-2018-5151
+    Memory safety bugs fixed in Firefox 60
+  * CVE-2018-5150
+    Memory safety bugs fixed in Firefox 60 and Firefox ESR 52.8
 - removed obsolete patches
   0001-Bug-1435695-WebRTC-fails-to-build-with-GCC-8-r-dmino.patch
+  mozilla-bmo1005535.patch
 - requires NSPR 4.19 and NSS 3.36.1
-
--------------------------------------------------------------------
-Tue May  1 18:45:02 UTC 2018 - astieger@suse.com
-
+- requires rust 1.24 or higher
+- use upstream source archive and detached signature for
+  source verification
+
+-------------------------------------------------------------------
+Thu May  3 14:33:37 UTC 2018 - guillaume.gardet@opensuse.org
+
+- Fix armv7 build by:
+  * adding RUSTFLAGS="-Cdebuginfo=0"
+  * updating _constraints for %arm
+
+-------------------------------------------------------------------
+Wed May  2 20:46:37 UTC 2018 - wr@rosenauer.org
+
+- do not try CSD on kwin (boo#1091592)
 - fix build in openSUSE:Leap:42.3:Update, use gcc7
 
 -------------------------------------------------------------------
--- a/MozillaFirefox/MozillaFirefox.spec	Wed May 02 09:28:53 2018 +0200
+++ b/MozillaFirefox/MozillaFirefox.spec	Fri Jun 08 22:25:59 2018 +0200
@@ -18,11 +18,12 @@
 
 
 # changed with every update
-%define major 59
+%define major 60
 %define mainver %major.99
 %define update_channel beta
 %define branding 1
-%define releasedate 20180426170554
+%define releasedate 20180607135512
+%define source_prefix firefox-%{mainver}
 
 # PIE, full relro (x86_64 for now)
 %define build_hardened 1
@@ -57,6 +58,7 @@
 BuildRequires:  autoconf213
 BuildRequires:  dbus-1-glib-devel
 BuildRequires:  fdupes
+BuildRequires:  memory-constraints
 %if 0%{?suse_version} <= 1320
 BuildRequires:  gcc7-c++
 %else
@@ -71,7 +73,7 @@
 BuildRequires:  libproxy-devel
 BuildRequires:  makeinfo
 BuildRequires:  mozilla-nspr-devel >= 4.19
-BuildRequires:  mozilla-nss-devel >= 3.36.1
+BuildRequires:  mozilla-nss-devel >= 3.37.3
 BuildRequires:  python-devel
 BuildRequires:  python2-xml
 BuildRequires:  rust >= 1.24
@@ -120,7 +122,7 @@
 License:        MPL-2.0
 Group:          Productivity/Networking/Web/Browsers
 Url:            http://www.mozilla.org/
-Source:         firefox-%{version}-source.tar.xz
+Source:         http://ftp.mozilla.org/pub/firefox/releases/%{version}/source/firefox-%{version}.source.tar.xz
 Source1:        MozillaFirefox.desktop
 Source2:        MozillaFirefox-rpmlintrc
 Source3:        mozilla.sh.in
@@ -141,6 +143,8 @@
 # please get your own set of keys.
 Source18:       mozilla-api-key
 Source19:       google-api-key
+Source20:       http://ftp.mozilla.org/pub/firefox/releases/%{version}/source/firefox-%{version}.source.tar.xz.asc
+Source21:       mozilla.keyring
 # Gecko/Toolkit
 Patch1:         mozilla-nongnome-proxies.patch
 Patch2:         mozilla-kde.patch
@@ -153,10 +157,11 @@
 Patch9:         mozilla-i586-DecoderDoctorLogger.patch
 Patch10:        mozilla-i586-domPrefs.patch
 Patch11:        mozilla-enable-csd.patch
+Patch12:        mozilla-fix-skia-aarch64.patch
+Patch13:        mozilla-bmo1375074.patch
 # Firefox/browser
 Patch101:       firefox-kde.patch
 Patch102:       firefox-branded-icons.patch
-
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Requires(post):   coreutils shared-mime-info desktop-file-utils
 Requires(postun): shared-mime-info desktop-file-utils
@@ -206,7 +211,7 @@
 %package translations-other
 Summary:        Extra translations for %{appname}
 Group:          System/Localization
-Provides:       locale(%{name}:ach;af;an;as;ast;az;bg;bn_BD;bn_IN;br;bs;cak;cy;dsb;en_ZA;eo;es_MX;et;eu;fa;ff;fy_NL;ga_IE;gd;gl;gn;gu_IN;he;hi_IN;hr;hsb;hy_AM;id;is;ka;kab;kk;km;kn;lij;lt;lv;mai;mk;ml;mr;ms;ne-NP;nn_NO;or;pa_IN;rm;ro;si;sk;sl;son;sq;sr;ta;te;th;tr;uk;uz;vi;xh)
+Provides:       locale(%{name}:ach;af;an;as;ast;az;bg;bn_BD;bn_IN;br;bs;cak;cy;dsb;en_ZA;eo;es_MX;et;eu;fa;ff;fy_NL;ga_IE;gd;gl;gn;gu_IN;he;hi_IN;hr;hsb;hy_AM;id;is;ka;kab;kk;km;kn;lij;lt;lv;mai;mk;ml;mr;ms;ne-NP;nn_NO;oc;or;pa_IN;rm;ro;si;sk;sl;son;sq;sr;ta;te;th;tr;uk;uz;vi;xh)
 Requires:       %{name} = %{version}
 Obsoletes:      %{name}-translations < %{version}-%{release}
 
@@ -248,11 +253,11 @@
 
 %prep
 %if %localize
-%setup -q -n mozilla -b 7 -b 10
+%setup -q -n %{source_prefix} -b 7 -b 10
 %else
-%setup -q -n mozilla
+%setup -q -n %{source_prefix}
 %endif
-cd $RPM_BUILD_DIR/mozilla
+cd $RPM_BUILD_DIR/%{source_prefix}
 %patch1 -p1
 %patch2 -p1
 %patch3 -p1
@@ -268,6 +273,8 @@
 %patch10 -p1
 %endif
 %patch11 -p1
+%patch12 -p1
+%patch13 -p1
 # Firefox
 %patch101 -p1
 %patch102 -p1
@@ -317,7 +324,11 @@
 export CFLAGS="$CFLAGS -mminimal-toc"
 %endif
 export CXXFLAGS="$CFLAGS"
+%ifarch %{arm}
+export RUSTFLAGS="-Cdebuginfo=0"
+%endif
 export MOZCONFIG=$RPM_BUILD_DIR/mozconfig
+%limit_build -m 1500
 cat << EOF > $MOZCONFIG
 mk_add_options MOZILLA_OFFICIAL=1
 mk_add_options BUILD_OFFICIAL=1
@@ -371,9 +382,13 @@
 %ifarch %arm
 ac_add_options --with-fpu=vfpv3-d16
 ac_add_options --with-float-abi=hard
+%ifarch armv6l armv6hl
+ac_add_options --with-arch=armv6
+%else
 ac_add_options --with-arch=armv7-a
 %endif
-%ifarch %arm s390x
+%endif
+%ifarch aarch64 %arm s390x
 ac_add_options --disable-webrtc
 %endif
 EOF
@@ -403,35 +418,31 @@
 install -m 644 %{SOURCE9} %{buildroot}%{progdir}/browser/defaults/preferences/firefox.js
 # install additional locales
 %if %localize
-rm -f %{_tmppath}/translations.*
-touch %{_tmppath}/translations.{common,other}
-for locale in $(cat $RPM_BUILD_DIR/mozilla/browser/locales/shipped-locales) ; do
-  case $locale in
-   ja-JP-mac|en-US|'')
-	;;
-   *)
-   	pushd $RPM_BUILD_DIR/compare-locales
-	PYTHONPATH=lib \
-	  scripts/compare-locales -m ../l10n-merged/$locale \
-	  ../mozilla/browser/locales/l10n.ini ../l10n $locale
-	popd
-	LOCALE_MERGEDIR=$RPM_BUILD_DIR/l10n-merged/$locale \
-  	make -C browser/locales langpack-$locale
-	cp -rL dist/xpi-stage/locale-$locale \
-	       %{buildroot}%{progdir}/browser/extensions/langpack-$locale@firefox.mozilla.org
-	# remove prefs, profile defaults, and hyphenation from langpack
-	rm -rf %{buildroot}%{progdir}/browser/extensions/langpack-$locale@firefox.mozilla.org/defaults
-	rm -rf %{buildroot}%{progdir}/browser/extensions/langpack-$locale@firefox.mozilla.org/hyphenation
-	# check against the fixed common list and sort into the right filelist
-	_matched=0
-	for _match in ar ca cs da de en-GB el es-AR es-CL es-ES fi fr hu it ja ko nb-NO nl pl pt-BR pt-PT ru sv-SE zh-CN zh-TW; do
-	  [ "$_match" = "$locale" ] && _matched=1
-	done
-	[ $_matched -eq 1 ] && _l10ntarget=common || _l10ntarget=other
-  	echo %{progdir}/browser/extensions/langpack-$locale@firefox.mozilla.org \
-	  >> %{_tmppath}/translations.$_l10ntarget
-  esac
-done
+truncate -s 0 %{_tmppath}/translations.{common,other}
+sed -r '/^(ja-JP-mac|en-US|)$/d;s/ .*$//' $RPM_BUILD_DIR/%{source_prefix}/browser/locales/shipped-locales \
+    | xargs -P 8 -n 1 -I {} /bin/sh -c '
+        locale=$1
+        pushd $RPM_BUILD_DIR/compare-locales
+        PYTHONPATH=lib \
+            scripts/compare-locales -m ../l10n-merged/$locale \
+            ../%{source_prefix}/browser/locales/l10n.ini ../l10n $locale
+        popd
+        LOCALE_MERGEDIR=$RPM_BUILD_DIR/l10n-merged/$locale \
+            make -C browser/locales langpack-$locale
+        cp -rL dist/xpi-stage/locale-$locale \
+            %{buildroot}%{progdir}/browser/extensions/langpack-$locale@firefox.mozilla.org
+        # remove prefs, profile defaults, and hyphenation from langpack
+        rm -rf %{buildroot}%{progdir}/browser/extensions/langpack-$locale@firefox.mozilla.org/defaults
+        rm -rf %{buildroot}%{progdir}/browser/extensions/langpack-$locale@firefox.mozilla.org/hyphenation
+        # check against the fixed common list and sort into the right filelist
+        _matched=0
+        for _match in ar ca cs da de en-GB el es-AR es-CL es-ES fi fr hu it ja ko nb-NO nl pl pt-BR pt-PT ru sv-SE zh-CN zh-TW; do
+            [ "$_match" = "$locale" ] && _matched=1
+        done
+        [ $_matched -eq 1 ] && _l10ntarget=common || _l10ntarget=other
+        echo %{progdir}/browser/extensions/langpack-$locale@firefox.mozilla.org \
+            >> %{_tmppath}/translations.$_l10ntarget
+' -- {}
 %endif
 # remove some executable permissions
 find %{buildroot}%{progdir} \
@@ -442,9 +453,10 @@
      -name "*.dtd" -o \
      -name "*.txt" -o \
      -name "*.xml" -o \
-     -name "*.css" | xargs chmod a-x
+     -name "*.css" \
+     -exec chmod a-x {} +
 # remove mkdir.done files from installed base
-find %{buildroot}%{progdir} -name ".mkdir.done" | xargs rm
+find %{buildroot}%{progdir} -type f -name ".mkdir.done" -delete
 # overwrite the mozilla start-script and link it to /usr/bin
 mkdir --parents %{buildroot}/usr/bin
 sed "s:%%PREFIX:%{_prefix}:g
--- a/MozillaFirefox/create-tar.sh	Wed May 02 09:28:53 2018 +0200
+++ b/MozillaFirefox/create-tar.sh	Fri Jun 08 22:25:59 2018 +0200
@@ -7,8 +7,8 @@
 
 CHANNEL="beta"
 BRANCH="releases/mozilla-$CHANNEL"
-RELEASE_TAG="FIREFOX_60_0b16_RELEASE"
-VERSION="59.99"
+RELEASE_TAG="FIREFOX_61_0b12_RELEASE"
+VERSION="60.99"
 
 # check required tools
 test -x /usr/bin/hg || ( echo "hg missing: execute zypper in mercurial"; exit 5 )
@@ -54,7 +54,7 @@
 fi
 
 echo "creating archive..."
-tar $compression -cf firefox-$VERSION-source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS mozilla
+tar $compression -cf firefox-$VERSION.source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS mozilla
 
 # l10n
 echo "fetching locales..."
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MozillaFirefox/mozilla-bmo1375074.patch	Fri Jun 08 22:25:59 2018 +0200
@@ -0,0 +1,1 @@
+../mozilla-bmo1375074.patch
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MozillaFirefox/mozilla-fix-skia-aarch64.patch	Fri Jun 08 22:25:59 2018 +0200
@@ -0,0 +1,1 @@
+../mozilla-fix-skia-aarch64.patch
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MozillaFirefox/mozilla.keyring	Fri Jun 08 22:25:59 2018 +0200
@@ -0,0 +1,269 @@
+This file contains the PGP keys of various developers that work on
+Mozilla and its subprojects (such as Firefox and Thunderbird).
+
+Please realize that this file itself or the public key servers may be
+compromised.  You are encouraged to validate the authenticity of these keys in
+an out-of-band manner.
+
+Mozilla users: pgp < KEY
+
+pub   rsa4096 2015-07-17 [SC]
+      14F26682D0916CDD81E37B6D61B7B526D98F0353
+uid           [  full  ] Mozilla Software Releases <release@mozilla.com>
+sub   rsa4096 2015-07-17 [S] [expires: 2017-07-16]
+sub   rsa4096 2017-06-22 [S] [expires: 2019-06-22]
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: SKS 1.1.5
+Comment: Hostname: keyserver.mozilla.org
+
+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
+MuTo71rAVDLtxerc+GNq0GI=
+=YjV6
+-----END PGP PUBLIC KEY BLOCK-----
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-bmo1375074.patch	Fri Jun 08 22:25:59 2018 +0200
@@ -0,0 +1,95 @@
+
+# HG changeset patch
+# User Lars T Hansen <lhansen@mozilla.com>
+# Date 1519822672 -3600
+# Node ID 800abe66894d6b07b24bccecbf6a65e2261076f6
+# Parent  223c97459e96183eb616aed39147207bdb953ba8
+Bug 1375074 - Save and restore non-volatile x28 on ARM64 for generated unboxed object constructor.  r=sstangl
+
+diff --git a/js/src/jit-test/tests/bug1375074.js b/js/src/jit-test/tests/bug1375074.js
+new file mode 100644
+--- /dev/null
++++ b/js/src/jit-test/tests/bug1375074.js
+@@ -0,0 +1,18 @@
++// This forces the VM to start creating unboxed objects and thus stresses a
++// particular path into generated code for a specialized unboxed object
++// constructor.
++
++var K = 2000;			// 2000 should be plenty
++var s = "[";
++var i;
++for ( i=0; i < K-1; i++ )
++    s = s + `{"i":${i}},`;
++s += `{"i":${i}}]`;
++var v = JSON.parse(s);
++
++assertEq(v.length == K, true);
++
++for ( i=0; i < K; i++) {
++    assertEq(v[i] instanceof Object, true);
++    assertEq(v[i].i, i);
++}
+diff --git a/js/src/vm/UnboxedObject.cpp b/js/src/vm/UnboxedObject.cpp
+--- a/js/src/vm/UnboxedObject.cpp
++++ b/js/src/vm/UnboxedObject.cpp
+@@ -90,17 +90,25 @@ UnboxedLayout::makeConstructorCode(JSCon
+     masm.loadPtr(Address(masm.getStackPointer(), sizeof(void*)), propertiesReg);
+     masm.loadPtr(Address(masm.getStackPointer(), 2 * sizeof(void*)), newKindReg);
+ #else
+     propertiesReg = IntArgReg0;
+     newKindReg = IntArgReg1;
+ #endif
+ 
+ #ifdef JS_CODEGEN_ARM64
+-    // ARM64 communicates stack address via sp, but uses a pseudo-sp for addressing.
++    // ARM64 communicates stack address via sp, but uses a pseudo-sp (PSP) for
++    // addressing.  The register we use for PSP may however also be used by
++    // calling code, and it is nonvolatile, so save it.  Do this as a special
++    // case first because the generic save/restore code needs the PSP to be
++    // initialized already.
++    MOZ_ASSERT(PseudoStackPointer64.Is(masm.GetStackPointer64()));
++    masm.Str(PseudoStackPointer64, vixl::MemOperand(sp, -16, vixl::PreIndex));
++
++    // Initialize the PSP from the SP.
+     masm.initStackPtr();
+ #endif
+ 
+     MOZ_ASSERT(propertiesReg.volatile_());
+     MOZ_ASSERT(newKindReg.volatile_());
+ 
+     AllocatableGeneralRegisterSet regs(GeneralRegisterSet::All());
+     regs.take(propertiesReg);
+@@ -228,17 +236,32 @@ UnboxedLayout::makeConstructorCode(JSCon
+     if (object != ReturnReg)
+         masm.movePtr(object, ReturnReg);
+ 
+     // Restore non-volatile registers which were saved on entry.
+     if (ScratchDoubleReg.volatile_())
+         masm.pop(ScratchDoubleReg);
+     masm.PopRegsInMask(savedNonVolatileRegisters);
+ 
++#ifdef JS_CODEGEN_ARM64
++    // Now restore the value that was in the PSP register on entry, and return.
++
++    // Obtain the correct SP from the PSP.
++    masm.Mov(sp, PseudoStackPointer64);
++
++    // Restore the saved value of the PSP register, this value is whatever the
++    // caller had saved in it, not any actual SP value, and it must not be
++    // overwritten subsequently.
++    masm.Ldr(PseudoStackPointer64, vixl::MemOperand(sp, 16, vixl::PostIndex));
++
++    // Perform a plain Ret(), as abiret() will move SP <- PSP and that is wrong.
++    masm.Ret(vixl::lr);
++#else
+     masm.abiret();
++#endif
+ 
+     masm.bind(&failureStoreOther);
+ 
+     // There was a failure while storing a value which cannot be stored at all
+     // in the unboxed object. Initialize the object so it is safe for GC and
+     // return null.
+     masm.initUnboxedObjectContents(object, templateObject);
+ 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-fix-skia-aarch64.patch	Fri Jun 08 22:25:59 2018 +0200
@@ -0,0 +1,20 @@
+--- firefox-60.0/gfx/skia/skia/src/jumper/SkJumper_stages.cpp.orig	2018-05-14 13:23:26.001095058 +0200
++++ firefox-60.0/gfx/skia/skia/src/jumper/SkJumper_stages.cpp	2018-05-14 13:24:46.851416500 +0200
+@@ -666,7 +666,7 @@ SI F approx_powf(F x, F y) {
+ }
+ 
+ SI F from_half(U16 h) {
+-#if defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3)  // Temporary workaround for some Google3 builds.
++#if defined(JUMPER_IS_NEON) && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3)  // Temporary workaround for some Google3 builds.
+     return vcvt_f32_f16(h);
+ 
+ #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
+@@ -686,7 +686,7 @@ SI F from_half(U16 h) {
+ }
+ 
+ SI U16 to_half(F f) {
+-#if defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3)  // Temporary workaround for some Google3 builds.
++#if defined(JUMPER_IS_NEON) && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3)  // Temporary workaround for some Google3 builds.
+     return vcvt_f16_f32(f);
+ 
+ #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
--- a/mozilla-kde.patch	Wed May 02 09:28:53 2018 +0200
+++ b/mozilla-kde.patch	Fri Jun 08 22:25:59 2018 +0200
@@ -1,5 +1,5 @@
 # HG changeset patch
-# Parent  9cc0c990890e64f69ed068cf1a4534535bcc50a7
+# Parent  d7a4d772ba2afb3ac43e2f2f234ffa55bcf50e70
 Description: Add KDE integration to Firefox (toolkit parts)
 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
 Author: Lubos Lunak <lunak@suse.com>
@@ -714,7 +714,7 @@
      this.mDialog.document.documentElement.getButton("accept").disabled = !ok;
    },
  
-@@ -1066,30 +1066,57 @@ nsUnknownContentTypeDialog.prototype = {
+@@ -1066,30 +1066,60 @@ nsUnknownContentTypeDialog.prototype = {
  
        if (params.handlerApp &&
            params.handlerApp.executable &&
@@ -731,6 +731,12 @@
 -      let appChooserCallback = function appChooserCallback_done(aResult) {
 -        if (aResult) {
 -           contentTypeDialogObj.chosenApp = aResult.QueryInterface(Ci.nsILocalHandlerApp);
+-        }
+-        contentTypeDialogObj.finishChooseApp();
+-      };
+-      appChooser.open(this.mLauncher.MIMEInfo.MIMEType, appChooserCallback);
+-      // The finishChooseApp is called from appChooserCallback
+-      return;
 +      // handle the KDE case which is implemented in the filepicker
 +      // therefore falling back to Gtk2 like behaviour if KDE is running
 +      // FIXME this should be better handled in the nsIApplicationChooser
@@ -739,28 +745,26 @@
 +                          .getService(Components.interfaces.nsIEnvironment);
 +      if (env.get('KDE_FULL_SESSION') == "true")
 +      {
-+        var nsIFilePicker = Components.interfaces.nsIFilePicker;
-+        var fp = Components.classes["@mozilla.org/filepicker;1"]
-+                           .createInstance(nsIFilePicker);
++        var nsIFilePicker = Ci.nsIFilePicker;
++        var fp = Cc["@mozilla.org/filepicker;1"]
++                    .createInstance(nsIFilePicker);
 +        fp.init(this.mDialog,
 +                this.dialogElement("strings").getString("chooseAppFilePickerTitle"),
 +                nsIFilePicker.modeOpen);
 +
 +        fp.appendFilters(nsIFilePicker.filterApps);
 +
-+        if (fp.show() == nsIFilePicker.returnOK && fp.file) {
-+          // Remember the file they chose to run.
-+          var localHandlerApp =
-+            Components.classes["@mozilla.org/uriloader/local-handler-app;1"].
-+                      createInstance(Components.interfaces.nsILocalHandlerApp);
-+          localHandlerApp.executable = fp.file;
-+          this.chosenApp = localHandlerApp;
-         }
--        contentTypeDialogObj.finishChooseApp();
--      };
--      appChooser.open(this.mLauncher.MIMEInfo.MIMEType, appChooserCallback);
--      // The finishChooseApp is called from appChooserCallback
--      return;
++        fp.open(aResult => {
++          if (aResult == nsIFilePicker.returnOK && fp.file) {
++            // Remember the file they chose to run.
++            var localHandlerApp =
++              Cc["@mozilla.org/uriloader/local-handler-app;1"].
++                         createInstance(Ci.nsILocalHandlerApp);
++            localHandlerApp.executable = fp.file;
++            this.chosenApp = localHandlerApp;
++          }
++          this.finishChooseApp();
++        });
 +      } else {
 +        var nsIApplicationChooser = Ci.nsIApplicationChooser;
 +        var appChooser = Cc["@mozilla.org/applicationchooser;1"]
@@ -1304,6 +1308,46 @@
 +    };
 +
 +#endif // nsKDEUtils
+diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandler/HandlerServiceParent.cpp
+--- a/uriloader/exthandler/HandlerServiceParent.cpp
++++ b/uriloader/exthandler/HandlerServiceParent.cpp
+@@ -1,16 +1,16 @@
+ #include "mozilla/Logging.h"
+ #include "HandlerServiceParent.h"
+ #include "nsIHandlerService.h"
+ #include "nsIMIMEInfo.h"
+ #include "ContentHandlerService.h"
+ #include "nsStringEnumerator.h"
+ #ifdef MOZ_WIDGET_GTK
+-#include "unix/nsGNOMERegistry.h"
++#include "unix/nsCommonRegistry.h"
+ #endif
+ 
+ using mozilla::dom::HandlerInfo;
+ using mozilla::dom::HandlerApp;
+ using mozilla::dom::ContentHandlerService;
+ using mozilla::dom::RemoteHandlerApp;
+ 
+ namespace {
+@@ -264,17 +264,17 @@ HandlerServiceParent::RecvExists(const H
+ }
+ 
+ mozilla::ipc::IPCResult
+ HandlerServiceParent::RecvExistsForProtocol(const nsCString& aProtocolScheme,
+                                             bool* aHandlerExists)
+ {
+ #ifdef MOZ_WIDGET_GTK
+   // Check the GNOME registry for a protocol handler
+-  *aHandlerExists = nsGNOMERegistry::HandlerExists(aProtocolScheme.get());
++  *aHandlerExists = nsCommonRegistry::HandlerExists(aProtocolScheme.get());
+ #else
+   *aHandlerExists = false;
+ #endif
+   return IPC_OK();
+ }
+ 
+ mozilla::ipc::IPCResult
+ HandlerServiceParent::RecvGetTypeFromExtension(const nsCString& aFileExtension,
 diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
 --- a/uriloader/exthandler/moz.build
 +++ b/uriloader/exthandler/moz.build
--- a/series	Wed May 02 09:28:53 2018 +0200
+++ b/series	Fri Jun 08 22:25:59 2018 +0200
@@ -10,6 +10,8 @@
 mozilla-i586-DecoderDoctorLogger.patch
 mozilla-i586-domPrefs.patch
 mozilla-enable-csd.patch
+mozilla-fix-skia-aarch64.patch
+mozilla-bmo1375074.patch
 
 # Firefox patches
 firefox-kde.patch