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 ---

Reply via email to