Fri Jun 19 11:34:31 2009 UTC ()
Update from version 2.0.0.21 to 2.0.0.21nb1.

Pkgsrc changes:
 o For the benefit of 64-bit strict alignment archs using gcc, such
   as NetBSD/sparc64, ensure that the specially crafted double values
   are properly aligned.  Thanks to martin@ for pointing to the problem.

   This should stop regxpcom from dropping core on NetBSD/sparc64.

OK'ed by wiz@


(he)
diff -r1.35 -r1.36 pkgsrc/mail/thunderbird/Makefile
diff -r1.53 -r1.54 pkgsrc/mail/thunderbird/distinfo
diff -r0 -r1.1 pkgsrc/mail/thunderbird/patches/patch-ea

cvs diff -r1.35 -r1.36 pkgsrc/mail/thunderbird/Makefile (expand / switch to context diff)
--- pkgsrc/mail/thunderbird/Makefile 2009/03/19 15:08:58 1.35
+++ pkgsrc/mail/thunderbird/Makefile 2009/06/19 11:34:31 1.36
@@ -1,6 +1,7 @@
-# $NetBSD: Makefile,v 1.35 2009/03/19 15:08:58 ghen Exp $
+# $NetBSD: Makefile,v 1.36 2009/06/19 11:34:31 he Exp $
 
 MOZILLA=		thunderbird
+PKGREVISION=		1
 COMMENT=		Mozilla mail client
 
 MOZILLA_USE_GTK2=	# yes

cvs diff -r1.53 -r1.54 pkgsrc/mail/thunderbird/distinfo (expand / switch to context diff)
--- pkgsrc/mail/thunderbird/distinfo 2009/05/02 07:51:02 1.53
+++ pkgsrc/mail/thunderbird/distinfo 2009/06/19 11:34:31 1.54
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.53 2009/05/02 07:51:02 hasso Exp $
+$NetBSD: distinfo,v 1.54 2009/06/19 11:34:31 he Exp $
 
 SHA1 (thunderbird-2.0.0.21-source.tar.bz2) = 8bb2f7ce60635f6082c3c4542fff10c4b7445dc0
 RMD160 (thunderbird-2.0.0.21-source.tar.bz2) = 493e41013a91888d29647c126d4f2c5a547056dd
@@ -55,3 +55,4 @@
 SHA1 (patch-dx) = ab7606171564b6879effc3b37d9eadc6565cb74b
 SHA1 (patch-dy) = cdff1e8f593ea2453afc048b931c8305c6b944e4
 SHA1 (patch-dz) = 957e91753db2aa7f556dd97d994e30418f8e26b0
+SHA1 (patch-ea) = eaa1cb5d2d87aa6f6fbe9aeb4b3b557f183cbc0a

File Added: pkgsrc/mail/thunderbird/patches/Attic/patch-ea
$NetBSD: patch-ea,v 1.1 2009/06/19 11:34:31 he Exp $

For the benefit of 64-bit strict alignment archs using gcc, such
as NetBSD/sparc64, ensure that the specially crafted double values
are properly aligned.

--- extensions/transformiix/source/base/Double.cpp.orig	2006-06-22 21:13:00.000000000 +0200
+++ extensions/transformiix/source/base/Double.cpp
@@ -95,8 +95,12 @@ typedef union txdpun {
 #define TX_DOUBLE_HI32(x) (__extension__ ({ txdpun u; u.d = (x); u.s.hi; }))
 #define TX_DOUBLE_LO32(x) (__extension__ ({ txdpun u; u.d = (x); u.s.lo; }))
 
+#define __d_align	__attribute__ ((aligned (__alignof__(double))))
+
 #else // __GNUC__
 
+#define __d_align	/* Empty */
+
 /* We don't know of any non-gcc compilers that perform alias optimization,
  * so this code should work.
  */
@@ -117,17 +121,19 @@ typedef union txdpun {
 
 //-- Initialize Double related constants
 #ifdef IS_BIG_ENDIAN
-const PRUint32 nanMask[2] =    {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK,
+const PRUint32 nanMask[2] __d_align =    {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};
+const PRUint32 infMask[2] __d_align =    {TX_DOUBLE_HI32_EXPMASK, 0};
+const PRUint32 negInfMask[2] __d_align = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0};
 #else
-const PRUint32 nanMask[2] =    {0xffffffff,
+const PRUint32 nanMask[2] __d_align =    {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};
+const PRUint32 infMask[2] __d_align =    {0, TX_DOUBLE_HI32_EXPMASK};
+const PRUint32 negInfMask[2] __d_align = {0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT};
 #endif
 
+#undef __d_align
+
 const double Double::NaN = *((double*)nanMask);
 const double Double::POSITIVE_INFINITY = *((double*)infMask);
 const double Double::NEGATIVE_INFINITY = *((double*)negInfMask);