Your message dated Fri, 28 Oct 2011 11:02:10 +0200
with message-id <[email protected]>
and subject line Re: Bug#638623: fixed in iceweasel 6.0-3
has caused the Debian Bug report #638623,
regarding iceweasel: FTBFS on s390x / JavaScript broken on 64-bit big endian
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
638623: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=638623
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Source: iceweasel
Version: 6.0-2
Severity: important
Tags: patch
iceweasel fails to build from source on s390x for two reasons. First a
case is missing to detect s390x as a 64-bit platform, and secondly
because JavaScript is broken on 64-bit big-endian, causing hangs in the
testsuite. The patch below addresses both this issues.
The first part is almost trivial, the only things to know is that
__s390__ matches both s390 and s390x, so __s390x__ has to be placed
first.
The second part is more complex, so I have added an explanation at the
top of the patch, and report the issue upstream:
https://bugzilla.mozilla.org/show_bug.cgi?id=680652
Would it be possible to include this patch in the next upload? Thanks in
advance.
diff -Nru
iceweasel-6.0/debian/patches/porting/Add-mips-hppa-ia64-s390-and-sparc-defines-in-ipc-chr.patch
iceweasel-6.0/debian/patches/porting/Add-mips-hppa-ia64-s390-and-sparc-defines-in-ipc-chr.patch
---
iceweasel-6.0/debian/patches/porting/Add-mips-hppa-ia64-s390-and-sparc-defines-in-ipc-chr.patch
2011-08-15 15:33:46.000000000 +0000
+++
iceweasel-6.0/debian/patches/porting/Add-mips-hppa-ia64-s390-and-sparc-defines-in-ipc-chr.patch
2011-08-19 07:00:54.000000000 +0000
@@ -12,7 +12,7 @@
index f7293d9..3536d1c 100644
--- a/ipc/chromium/src/build/build_config.h
+++ b/ipc/chromium/src/build/build_config.h
-@@ -60,6 +60,21 @@
+@@ -60,6 +60,24 @@
#elif defined(__ppc__) || defined(__powerpc__)
#define ARCH_CPU_PPC 1
#define ARCH_CPU_32_BITS 1
@@ -25,6 +25,9 @@
+#elif defined(__ia64__)
+#define ARCH_CPU_IA64 1
+#define ARCH_CPU_64_BITS 1
++#elif defined(__s390x__)
++#define ARCH_CPU_S390X 1
++#define ARCH_CPU_64_BITS 1
+#elif defined(__s390__)
+#define ARCH_CPU_S390 1
+#define ARCH_CPU_32_BITS 1
diff -Nru
iceweasel-6.0/debian/patches/porting/Fix-js-engine-on-64-bit-big-endian.patch
iceweasel-6.0/debian/patches/porting/Fix-js-engine-on-64-bit-big-endian.patch
---
iceweasel-6.0/debian/patches/porting/Fix-js-engine-on-64-bit-big-endian.patch
1970-01-01 00:00:00.000000000 +0000
+++
iceweasel-6.0/debian/patches/porting/Fix-js-engine-on-64-bit-big-endian.patch
2011-08-19 20:04:47.000000000 +0000
@@ -0,0 +1,48 @@
+From: Aurelien Jarno <[email protected]>
+Date: Fri, 19 Aug 2011 21:53:45 +0200
+Subject: Fix JavaScript Engine on 64-bit big endian
+
+On 64-bit architectures, jsval is represented as an union mapping
+double, 32- or 64-bit values. It uses the IEEE754 denormalized number
+representation to encode the type of the variable when it is not a float
+value. That's why the tag part is exactly at the same place and location
+than the sign + exponent in a 64-bit double value, and the payload is
+exactly at the same place than the mantissa.
+
+However this way only works for little-endian machines. On big-endian
+machines the payload overrides the sign+exponent and the tag overrides
+the mantissa. Moreover all the 64-bit macros in jsval.h assume a little
+endian order.
+
+The patch below tries to fix that by modifying the jsval layout to make
+it little-endian (at the 32-bit word level), by swapping the two 32-bit
+words. For that it uses dummy 32-bit values in an anonymous structure to
+force the location of the other 32-bit values. With this patch, the
+JavaScript testsuite gives the same result than on a 64-bit little
+endian machine (s390x versus amd64).
+
+
+--- iceweasel-6.0.orig/js/src/jsval.h
++++ iceweasel-6.0/js/src/jsval.h
+@@ -351,9 +351,18 @@ typedef union jsval_layout
+ } debugView;
+ struct {
+ union {
+- int32 i32;
+- uint32 u32;
+- JSWhyMagic why;
++ struct {
++ int32 dummy1;
++ int32 i32;
++ };
++ struct {
++ uint32 dummy2;
++ uint32 u32;
++ };
++ struct {
++ JSWhyMagic dummy3;
++ JSWhyMagic why;
++ };
+ jsuword word;
+ } payload;
+ } s;
diff -Nru iceweasel-6.0/debian/patches/series
iceweasel-6.0/debian/patches/series
--- iceweasel-6.0/debian/patches/series 2011-08-15 15:46:35.000000000 +0000
+++ iceweasel-6.0/debian/patches/series 2011-08-19 20:16:06.000000000 +0000
@@ -29,6 +29,7 @@
porting/Allow-ARMv4T-in-nanojit.patch
porting/Allow-ipc-code-to-build-on-GNU-kfreebsd.patch
porting/Allow-ipc-code-to-build-on-GNU-Hurd.patch
+porting/Fix-js-engine-on-64-bit-big-endian.patch
prefs/Remove-general.useragent.locale-prefs-from-firefox-..patch
prefs/Enable-intl.locale.matchOS-and-report-the-locale-cor.patch
prefs/Set-javascript.options.showInConsole.patch
-- System Information:
Debian Release: wheezy/sid
APT prefers unreleased
APT policy: (500, 'unreleased'), (500, 'unstable')
Architecture: s390x
Kernel: Linux 3.0.0-1-s390x (SMP w/2 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
--- End Message ---
--- Begin Message ---
Version: 7.0.1-3
This was fixed in version 7.0.1-3, though we hit the same issue I fixed
for s390 in 8.0~b4-1. Do we have s390x chroots somewhere so that i can
test?
Mike
--- End Message ---