summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build-aarch64-skia.patch21
-rw-r--r--firefox.spec7
-rw-r--r--mozilla-1512162.patch26
3 files changed, 53 insertions, 1 deletions
diff --git a/build-aarch64-skia.patch b/build-aarch64-skia.patch
index 1ecad24..108316c 100644
--- a/build-aarch64-skia.patch
+++ b/build-aarch64-skia.patch
@@ -10,3 +10,24 @@ diff -up firefox-61.0/gfx/skia/skia/src/jumper/SkJumper_stages.cpp.aarch64-skia
return vcvt_f16_f32(f);
#elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
+diff -up firefox-68.0/gfx/skia/skia/include/private/SkHalf.h.old firefox-68.0/gfx/skia/skia/include/private/SkHalf.h
+--- firefox-68.0/gfx/skia/skia/include/private/SkHalf.h.old 2019-07-09 14:20:12.527441789 +0200
++++ firefox-68.0/gfx/skia/skia/include/private/SkHalf.h 2019-07-09 14:20:31.744366018 +0200
+@@ -40,7 +40,7 @@ static inline Sk4h SkFloatToHalf_finite_
+
+ static inline Sk4f SkHalfToFloat_finite_ftz(uint64_t rgba) {
+ Sk4h hs = Sk4h::Load(&rgba);
+-#if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
++#if 0 // !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
+ float32x4_t fs;
+ asm ("fcvtl %[fs].4s, %[hs].4h \n" // vcvt_f32_f16(...)
+ : [fs] "=w" (fs) // =w: write-only NEON register
+@@ -62,7 +62,7 @@ static inline Sk4f SkHalfToFloat_finite_
+ }
+
+ static inline Sk4h SkFloatToHalf_finite_ftz(const Sk4f& fs) {
+-#if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
++#if 0 //!defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
+ float32x4_t vec = fs.fVec;
+ asm ("fcvtn %[vec].4h, %[vec].4s \n" // vcvt_f16_f32(vec)
+ : [vec] "+w" (vec)); // +w: read-write NEON register
diff --git a/firefox.spec b/firefox.spec
index 5305448..91f505e 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -86,7 +86,7 @@ ExcludeArch: s390x
Summary: Mozilla Firefox Web browser
Name: firefox
Version: 68.0
-Release: 2%{?pre_tag}%{?dist}
+Release: 3%{?pre_tag}%{?dist}
URL: https://www.mozilla.org/firefox/
License: MPLv1.1 or GPLv2+ or LGPLv2+
Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.xz
@@ -138,6 +138,7 @@ Patch412: mozilla-1337988.patch
#Patch413: mozilla-1353817.patch
Patch415: Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch
Patch417: bug1375074-save-restore-x28.patch
+Patch418: mozilla-1512162.patch
# Wayland specific upstream patches
Patch574: firefox-pipewire.patch
@@ -335,6 +336,7 @@ This package contains results of tests executed during build.
%ifarch %{arm}
%patch415 -p1 -b .1238661
%endif
+%patch418 -p1 -b .1512162
# Patch for big endian platforms only
%if 0%{?big_endian}
%patch26 -p1 -b .icu
@@ -911,6 +913,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
#---------------------------------------------------------------------
%changelog
+* Tue Jul 9 2019 Dan HorĂ¡k <dan[at]danny.cz> - 68.0-3
+- Fix crash on ppc64le (mozilla#1512162)
+
* Mon Jul 8 2019 Jan Horak <jhorak@redhat.com> - 68.0-2
- Update pipewire patch
diff --git a/mozilla-1512162.patch b/mozilla-1512162.patch
new file mode 100644
index 0000000..a246a3e
--- /dev/null
+++ b/mozilla-1512162.patch
@@ -0,0 +1,26 @@
+diff --git a/js/xpconnect/src/XPCWrappedNative.cpp b/js/xpconnect/src/XPCWrappedNative.cpp
+--- a/js/xpconnect/src/XPCWrappedNative.cpp
++++ b/js/xpconnect/src/XPCWrappedNative.cpp
+@@ -1157,6 +1157,10 @@
+ return helper.get().Call();
+ }
+
++#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
++// Work around a compiler bug on ppc64le (bug 1512162).
++__attribute__ ((noinline,noclone))
++#endif
+ bool CallMethodHelper::Call() {
+ mCallContext.SetRetVal(JS::UndefinedValue());
+
+@@ -1315,6 +1319,10 @@
+ return true;
+ }
+
++#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
++// Work around a compiler bug on ppc64le (bug 1512162).
++__attribute__ ((noinline,noclone))
++#endif
+ bool CallMethodHelper::GatherAndConvertResults() {
+ // now we iterate through the native params to gather and convert results
+ uint8_t paramCount = mMethodInfo->GetParamCount();
+
bgstack15