[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