[xulrunner] Fixed s390x crash during installation
Jan Horak
xhorak at fedoraproject.org
Tue Nov 29 14:28:16 UTC 2011
commit 19e30bb8006f296ffff37c5f6802d1500b21338e
Author: Jan Horak <jhorak at redhat.com>
Date: Tue Nov 29 15:28:06 2011 +0100
Fixed s390x crash during installation
mozilla-589735.patch | 93 --------------------------------------------------
mozilla-680917.patch | 12 ------
mozilla-696393.patch | 71 ++++++++++++++++++++++++++++++++++++++
xulrunner.spec | 9 ++---
4 files changed, 75 insertions(+), 110 deletions(-)
---
diff --git a/mozilla-696393.patch b/mozilla-696393.patch
new file mode 100644
index 0000000..aed422c
--- /dev/null
+++ b/mozilla-696393.patch
@@ -0,0 +1,71 @@
+diff -up mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp.696393 mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp
+--- mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp.696393 2011-11-04 22:34:23.000000000 +0100
++++ mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp 2011-11-29 15:25:31.016899861 +0100
+@@ -200,56 +200,22 @@ invoke_copy_to_stack(PRUint32 paramCount
+ }
+ }
+
++typedef nsresult (*vtable_func)(nsISupports *, PRUint32, PRUint32, PRUint32, PRUint32, double, double);
++
+ EXPORT_XPCOM_API(nsresult)
+ NS_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ PRUint32 paramCount, nsXPTCVariant* params)
+ {
+- PRUint32 *vtable = *(PRUint32 **)that;
+-#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
+- PRUint32 method = vtable[methodIndex];
+-#else /* not G++ V3 ABI */
+- PRUint32 method = vtable[methodIndex + 2];
+-#endif /* G++ V3 ABI */
++ vtable_func *vtable = *reinterpret_cast<vtable_func **>(that);
++ vtable_func method = vtable[methodIndex];
+ PRUint32 overflow = invoke_count_words (paramCount, params);
+- PRUint32 result;
++ PRUint32 *stack_space = reinterpret_cast<PRUint32 *>(__builtin_alloca((overflow + 8 /* 4 32-bits gpr + 2 64-bits fpr */) * 4));
++
++ invoke_copy_to_stack(paramCount, params, stack_space, overflow);
++
++ PRUint32 *d_gpr = stack_space + overflow;
++ double *d_fpr = reinterpret_cast<double *>(d_gpr + 4);
+
+- __asm__ __volatile__
+- (
+- "lr 7,15\n\t"
+- "ahi 7,-32\n\t"
+-
+- "lr 3,%3\n\t"
+- "sll 3,2\n\t"
+- "lcr 3,3\n\t"
+- "l 2,0(15)\n\t"
+- "la 15,0(3,7)\n\t"
+- "st 2,0(15)\n\t"
+-
+- "lr 2,%1\n\t"
+- "lr 3,%2\n\t"
+- "la 4,96(15)\n\t"
+- "lr 5,%3\n\t"
+- "basr 14,%4\n\t"
+-
+- "lr 2,%5\n\t"
+- "ld 0,112(7)\n\t"
+- "ld 2,120(7)\n\t"
+- "lm 3,6,96(7)\n\t"
+- "basr 14,%6\n\t"
+-
+- "la 15,32(7)\n\t"
+-
+- "lr %0,2\n\t"
+- : "=r" (result)
+- : "r" (paramCount),
+- "r" (params),
+- "r" (overflow),
+- "a" (invoke_copy_to_stack),
+- "a" (that),
+- "a" (method)
+- : "2", "3", "4", "5", "6", "7", "14", "cc", "memory", "%f0", "%f2"
+- );
+-
+- return result;
++ return method(that, d_gpr[0], d_gpr[1], d_gpr[2], d_gpr[3], d_fpr[0], d_fpr[1]);
+ }
+
diff --git a/xulrunner.spec b/xulrunner.spec
index 63abf16..ea9ef77 100644
--- a/xulrunner.spec
+++ b/xulrunner.spec
@@ -81,8 +81,8 @@ Patch34: xulrunner-2.0-network-link-service.patch
Patch35: xulrunner-2.0-NetworkManager09.patch
Patch36: mozilla-670719.patch
Patch37: mozilla-686280.patch
-Patch38: mozilla-589735.patch
-Patch39: mozilla-680917.patch
+Patch38: mozilla-696393.patch
+
# ---------------------------------------------------
@@ -207,8 +207,7 @@ sed -e 's/__RPM_VERSION_INTERNAL__/%{gecko_dir_ver}/' %{P:%%PATCH0} \
%patch35 -p1 -b .NetworkManager09
%patch36 -p1 -b .670719
%patch37 -p1 -b .686280
-%patch38 -p1 -b .589735
-%patch39 -p1 -b .680917
+%patch38 -p1 -b .696393
%{__rm} -f .mozconfig
%{__cp} %{SOURCE10} .mozconfig
@@ -453,7 +452,7 @@ fi
#---------------------------------------------------------------------
%changelog
-* Fri Nov 25 2011 Martin Stransky <stransky at redhat.com> 8.0-2
+* Fri Nov 25 2011 Martin Stransky <stransky at redhat.com> 8.0-3
- s390 build fixes
* Mon Nov 7 2011 Martin Stransky <stransky at redhat.com> 8.0-1
More information about the scm-commits
mailing list