Subject: 64-bit www/firefox on sparc64
To: None <port-sparc64@NetBSD.org>
From: None <sigsegv@rambler.ru>
List: port-sparc64
Date: 03/17/2005 01:41:57
This is a multi-part message in MIME format.
--------------010001040300050603060106
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Just a quick note to say I fixed up a few things which were causing
firefox to terminate with "Bus error". The attached patch allows firefox
to build and install properly, it even runs after installation, but it's
very unstable, it keeps crashing from time to time, stop button does not
seem to work, and SSL seems to be broken. But if anyone wants to
experiment...
--------------010001040300050603060106
Content-Type: text/plain;
name="Double.cpp.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="Double.cpp.diff"
*** extensions/transformiix/source/base/Double.cpp.orig Wed Mar 16 17:58:58 2005
--- extensions/transformiix/source/base/Double.cpp Wed Mar 16 17:59:16 2005
***************
*** 116,130 ****
--- 116,173 ----
//-- Initialize Double related constants
#ifdef IS_BIG_ENDIAN
+ /*
const PRUint32 nanMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK,
0xffffffff};
const PRUint32 infMask[2] = {TX_DOUBLE_HI32_EXPMASK, 0};
const PRUint32 negInfMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0};
+ */
+
+ /* alignment needs to be to 'double' datatype */
+ union {
+ const PRUint32 nanMask[2];
+ double dummy;
+ } un_nanMask = { {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK, 0xffffffff} };
+ #define nanMask (un_nanMask.nanMask)
+
+ union {
+ const PRUint32 infMask[2];
+ double dummy;
+ } un_infMask = { {TX_DOUBLE_HI32_EXPMASK, 0} };
+ #define infMask (un_infMask.infMask)
+
+ union {
+ const PRUint32 negInfMask[2];
+ double dummy;
+ } un_negInfMask = { {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0} };
+ #define negInfMask (un_negInfMask.negInfMask)
+
#else
+ /*
const PRUint32 nanMask[2] = {0xffffffff,
TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK};
const PRUint32 infMask[2] = {0, TX_DOUBLE_HI32_EXPMASK};
const PRUint32 negInfMask[2] = {0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT};
+ */
+
+ /* alignment needs to be to 'double' datatype */
+ union {
+ const PRUint32 nanMask[2];
+ double dummy;
+ } un_nanMask = { {0xffffffff, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK} };
+ #define nanMask (un_nanMask.nanMask)
+
+ union {
+ const PRUint32 infMask[2];
+ double dummy;
+ } un_infMask = { {0, TX_DOUBLE_HI32_EXPMASK} };
+ #define infMask (un_infMask.infMask)
+
+ union {
+ const PRUint32 negInfMask[2];
+ double dummy;
+ } un_negInfMask = { {0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT} };
+ #define negInfMask (un_negInfMask.negInfMask)
#endif
const double Double::NaN = *((double*)nanMask);
--------------010001040300050603060106--