diff options
author | aymeric <aymeric@pkgsrc.org> | 2004-07-07 09:08:31 +0000 |
---|---|---|
committer | aymeric <aymeric@pkgsrc.org> | 2004-07-07 09:08:31 +0000 |
commit | b726a6a9dcf460a3cc244704efe9334f15f9ba25 (patch) | |
tree | e3006c0ef86fb45c56dab7e9b3299c1d3f4b377a /www/mozilla | |
parent | 573c01347b983d55d44a2cc51468fbe85c480008 (diff) | |
download | pkgsrc-b726a6a9dcf460a3cc244704efe9334f15f9ba25.tar.gz |
. on PowerPC, update files so that Mozilla works properly when compiled with
gcc version 3+.
. generally reduce diffs to Linux version
. retain compatibility with older ABI (AIX-like) thanks to useful comments
from Charles Hannum
Thanks to Matthew Green for the fruitful discussion. This should address
PR#23240 as far as mozilla is concerned.
Diffstat (limited to 'www/mozilla')
-rw-r--r-- | www/mozilla/distinfo | 9 | ||||
-rw-r--r-- | www/mozilla/patches/patch-ac | 23 | ||||
-rw-r--r-- | www/mozilla/patches/patch-bx | 53 | ||||
-rw-r--r-- | www/mozilla/patches/patch-bz | 122 | ||||
-rw-r--r-- | www/mozilla/patches/patch-ca | 166 | ||||
-rw-r--r-- | www/mozilla/patches/patch-cb | 26 |
6 files changed, 373 insertions, 26 deletions
diff --git a/www/mozilla/distinfo b/www/mozilla/distinfo index d9510f21a5a..5abd78d2b44 100644 --- a/www/mozilla/distinfo +++ b/www/mozilla/distinfo @@ -1,10 +1,10 @@ -$NetBSD: distinfo,v 1.59 2004/07/05 14:22:42 taya Exp $ +$NetBSD: distinfo,v 1.60 2004/07/07 09:08:31 aymeric Exp $ SHA1 (mozilla-source-1.7.tar.bz2) = 52b8ab9248a8f4ed5763d7715f4fa18bda8123cf Size (mozilla-source-1.7.tar.bz2) = 35174502 bytes SHA1 (patch-aa) = be62070f062e8ae13f06bd7b3f4f0d4a9ee67bef SHA1 (patch-ab) = 334a1e79d63d045dafb50b82ea192b311b55e7d5 -SHA1 (patch-ac) = 2b948f47ebb2c99140c29c53bd51a23200f2592c +SHA1 (patch-ac) = 32aa4b92eea19aca07077a292cb759d074026642 SHA1 (patch-ad) = 2210b695a2eedefb82c16698a51f4f0f6b2e53e4 SHA1 (patch-ae) = f3c8ffcdfc8c0d5cc75413602c97c731721d751e SHA1 (patch-af) = 547ebc0d72a012f636839f416f872125c15846ba @@ -30,5 +30,8 @@ SHA1 (patch-bt) = 02c84d908156e42b2d60f0c680eab1a89eb5b330 SHA1 (patch-bu) = db33b8651e3cb1fbf9a18dbe78e1e8288cfda0ee SHA1 (patch-bv) = 4f23dfd885131ea866f31370f1421e7c19706860 SHA1 (patch-bw) = fc3a518d3762be6e85104a6dc7fffd5ae1a463c8 -SHA1 (patch-bx) = 7b07b7e3f5199c44e82a6be21ecc0d4f8942b05a +SHA1 (patch-bx) = 046e19c9c4b431369411658373b14c1822841d85 SHA1 (patch-by) = 643185af7a0df7030b2b96447ee4031dc9c82f88 +SHA1 (patch-bz) = 6f854d74a9d1d1174ce8eff7d65f8024a7da4711 +SHA1 (patch-ca) = 479ef14631ae019ae5ca1c08a2f786294f3e972b +SHA1 (patch-cb) = fd0f033d63be066ce5c47057d72c48a085718908 diff --git a/www/mozilla/patches/patch-ac b/www/mozilla/patches/patch-ac index 8448ff9680e..e9ff6fee1a1 100644 --- a/www/mozilla/patches/patch-ac +++ b/www/mozilla/patches/patch-ac @@ -1,9 +1,8 @@ -$NetBSD: patch-ac,v 1.23 2004/06/21 14:14:00 taya Exp $ +$NetBSD: patch-ac,v 1.24 2004/07/07 09:08:31 aymeric Exp $ -diff -ru ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in ./xpcom/reflect/xptcall/src/md/unix/Makefile.in ---- ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in 2004-04-23 05:50:05.000000000 +0900 -+++ ./xpcom/reflect/xptcall/src/md/unix/Makefile.in 2004-06-10 22:55:50.000000000 +0900 -@@ -49,6 +49,9 @@ +--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig 2004-04-22 22:50:05.000000000 +0200 ++++ xpcom/reflect/xptcall/src/md/unix/Makefile.in +@@ -49,6 +49,9 @@ ifneq (,$(filter FreeBSD NetBSD OpenBSD ifeq (86,$(findstring 86,$(OS_TEST))) CPPSRCS := xptcinvoke_unixish_x86.cpp xptcstubs_unixish_x86.cpp endif @@ -13,7 +12,7 @@ diff -ru ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in ./xpcom/r endif # # New code for Linux, et. al., with gcc -@@ -140,7 +143,7 @@ +@@ -140,7 +143,7 @@ endif # NetBSD/ARM # ifeq ($(OS_ARCH),NetBSD) @@ -22,7 +21,7 @@ diff -ru ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in ./xpcom/r CPPSRCS := xptcinvoke_arm_netbsd.cpp xptcstubs_arm_netbsd.cpp endif endif -@@ -174,7 +177,7 @@ +@@ -174,7 +177,7 @@ endif # NetBSD/m68k # ifeq ($(OS_ARCH),NetBSD) @@ -31,7 +30,15 @@ diff -ru ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in ./xpcom/r CPPSRCS := xptcinvoke_netbsd_m68k.cpp xptcstubs_netbsd_m68k.cpp endif endif -@@ -305,6 +308,13 @@ +@@ -257,6 +260,7 @@ endif + ifneq (,$(filter NetBSDmacppc NetBSDbebox NetBSDofppc NetBSDprep NetBSDamigappc,$(OS_ARCH)$(OS_TEST))) + CPPSRCS := xptcinvoke_ppc_netbsd.cpp xptcstubs_ppc_netbsd.cpp + ASFILES := xptcinvoke_asm_ppc_netbsd.s xptcstubs_asm_ppc_netbsd.s ++AS := $(CC) -c -x assembler-with-cpp + endif + + # +@@ -305,6 +309,13 @@ ifeq ($(OS_ARCH)$(OS_TEST),NetBSDsparc) CPPSRCS := xptcinvoke_sparc_netbsd.cpp xptcstubs_sparc_netbsd.cpp ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s endif diff --git a/www/mozilla/patches/patch-bx b/www/mozilla/patches/patch-bx index 66f8eb4b17d..8af711af943 100644 --- a/www/mozilla/patches/patch-bx +++ b/www/mozilla/patches/patch-bx @@ -1,13 +1,45 @@ -$NetBSD: patch-bx,v 1.1 2004/06/21 14:14:01 taya Exp $ +$NetBSD: patch-bx,v 1.2 2004/07/07 09:08:31 aymeric Exp $ -diff -ru ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_netbsd.cpp ./xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_netbsd.cpp ---- ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_netbsd.cpp 2001-09-29 05:12:53.000000000 +0900 -+++ ./xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_netbsd.cpp 2004-06-10 23:12:38.000000000 +0900 -@@ -195,6 +195,47 @@ +--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_netbsd.cpp.orig 2001-09-28 22:12:53.000000000 +0200 ++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_netbsd.cpp +@@ -119,8 +119,10 @@ PrepareAndDispatch(nsXPTCStubBase* self, + if ((PRUint32) ap & 4) ap++; // doubles are 8-byte aligned on stack + dp->val.d = *(double*) ap; + ap += 2; ++#if __GXX_ABI_VERSION < 100 + if (gpr < GPR_COUNT) + gpr += 2; ++#endif + } + continue; + } +@@ -130,8 +132,10 @@ PrepareAndDispatch(nsXPTCStubBase* self, + else { + dp->val.f = *(float*) ap; + ap += 1; ++#if __GXX_ABI_VERSION < 100 + if (gpr < GPR_COUNT) + gpr += 1; ++#endif + } + continue; + } +@@ -195,7 +199,9 @@ PrepareAndDispatch(nsXPTCStubBase* self, // however, it's quick, dirty, and'll break when the ABI changes on // us, which is what we want ;-). -+#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */ +-#define STUB_ENTRY(n) \ ++#if __GXX_ABI_VERSION < 100 ++// gcc-2 version ++# define STUB_ENTRY(n) \ + __asm__ ( \ + ".section \".text\" \n\t" \ + ".align 2 \n\t" \ +@@ -206,6 +212,46 @@ __asm__ ( + "li 11,"#n" \n\t" \ + "b SharedStub@local \n" \ + ); ++#else +// gcc-3 version +// +// As G++3 ABI contains the length of the functionname in the mangled @@ -23,7 +55,6 @@ diff -ru ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_netbsd. + +# define STUB_ENTRY(n) \ +__asm__ ( \ -+ ".section \".text\" \n\t" \ + ".align 2 \n\t" \ + ".if "#n" < 10 \n\t" \ + ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev \n\t" \ @@ -47,14 +78,6 @@ diff -ru ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_netbsd. + "li 11,"#n" \n\t" \ + "b SharedStub@local \n" \ +); -+#else - #define STUB_ENTRY(n) \ - __asm__ ( \ - ".section \".text\" \n\t" \ -@@ -206,6 +247,7 @@ - "li 11,"#n" \n\t" \ - "b SharedStub@local \n" \ - ); +#endif #define SENTINEL_ENTRY(n) \ diff --git a/www/mozilla/patches/patch-bz b/www/mozilla/patches/patch-bz new file mode 100644 index 00000000000..fc27653a7bf --- /dev/null +++ b/www/mozilla/patches/patch-bz @@ -0,0 +1,122 @@ +$NetBSD: patch-bz,v 1.1 2004/07/07 09:08:31 aymeric Exp $ + +--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc_netbsd.s.orig 2001-03-11 18:22:22.000000000 +0100 ++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc_netbsd.s +@@ -1,27 +1,27 @@ +-# -*- Mode: Asm -*- +-# +-# The contents of this file are subject to the Netscape Public +-# License Version 1.1 (the "License"); you may not use this file +-# except in compliance with the License. You may obtain a copy of +-# the License at http://www.mozilla.org/NPL/ +-# +-# Software distributed under the License is distributed on an "AS +-# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +-# implied. See the License for the specific language governing +-# rights and limitations under the License. +-# +-# The Original Code is mozilla.org code. +-# +-# The Initial Developer of the Original Code is Netscape +-# Communications Corporation. Portions created by Netscape are +-# Copyright (C) 1999 Netscape Communications Corporation. All +-# Rights Reserved. +-# +-# Contributor(s): +-# Franz.Sirl-kernel@lauterbach.com (Franz Sirl) +-# beard@netscape.com (Patrick Beard) +-# waterson@netscape.com (Chris Waterson) +-# ++// -*- Mode: Asm -*- ++// ++// The contents of this file are subject to the Netscape Public ++// License Version 1.1 (the "License"); you may not use this file ++// except in compliance with the License. You may obtain a copy of ++// the License at http://www.mozilla.org/NPL/ ++// ++// Software distributed under the License is distributed on an "AS ++// IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or ++// implied. See the License for the specific language governing ++// rights and limitations under the License. ++// ++// The Original Code is mozilla.org code. ++// ++// The Initial Developer of the Original Code is Netscape ++// Communications Corporation. Portions created by Netscape are ++// Copyright (C) 1999 Netscape Communications Corporation. All ++// Rights Reserved. ++// ++// Contributor(s): ++// Franz.Sirl-kernel@lauterbach.com (Franz Sirl) ++// beard@netscape.com (Patrick Beard) ++// waterson@netscape.com (Chris Waterson) ++// + + .set r0,0; .set sp,1; .set RTOC,2; .set r3,3; .set r4,4 + .set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9 +@@ -44,23 +44,23 @@ + .type SharedStub,@function + + SharedStub: +- stwu sp,-112(sp) # room for +- # linkage (8), +- # gprData (32), +- # fprData (64), +- # stack alignment(8) ++ stwu sp,-112(sp) // room for ++ // linkage (8), ++ // gprData (32), ++ // fprData (64), ++ // stack alignment(8) + mflr r0 +- stw r0,116(sp) # save LR backchain ++ stw r0,116(sp) // save LR backchain + +- stw r4,12(sp) # save GP registers +- stw r5,16(sp) # (n.b. that we don't save r3 +- stw r6,20(sp) # because PrepareAndDispatch() is savvy) ++ stw r4,12(sp) // save GP registers ++ stw r5,16(sp) // (n.b. that we don't save r3 ++ stw r6,20(sp) // because PrepareAndDispatch() is savvy) + stw r7,24(sp) + stw r8,28(sp) + stw r9,32(sp) + stw r10,36(sp) + +- stfd f1,40(sp) # save FP registers ++ stfd f1,40(sp) // save FP registers + stfd f2,48(sp) + stfd f3,56(sp) + stfd f4,64(sp) +@@ -69,21 +69,20 @@ SharedStub: + stfd f7,88(sp) + stfd f8,96(sp) + +- # r3 has the 'self' pointer already ++ // r3 has the 'self' pointer already + +- mr r4,r11 # r4 <= methodIndex selector, passed +- # via r11 in the nsXPTCStubBase::StubXX() call ++ mr r4,r11 // r4 <= methodIndex selector, passed ++ // via r11 in the nsXPTCStubBase::StubXX() call + +- addi r5,sp,120 # r5 <= pointer to callers args area, +- # beyond r3-r10/f1-f8 mapped range ++ addi r5,sp,120 // r5 <= pointer to callers args area, ++ // beyond r3-r10/f1-f8 mapped range + +- addi r6,sp,8 # r6 <= gprData +- addi r7,sp,40 # r7 <= fprData ++ addi r6,sp,8 // r6 <= gprData ++ addi r7,sp,40 // r7 <= fprData + +- bl PrepareAndDispatch@local # Go! ++ bl PrepareAndDispatch@local // Go! + +- lwz r0,116(sp) # restore LR ++ lwz r0,116(sp) // restore LR + mtlr r0 +- la sp,112(sp) # clean up the stack ++ la sp,112(sp) // clean up the stack + blr +- diff --git a/www/mozilla/patches/patch-ca b/www/mozilla/patches/patch-ca new file mode 100644 index 00000000000..20c4ddaf08e --- /dev/null +++ b/www/mozilla/patches/patch-ca @@ -0,0 +1,166 @@ +$NetBSD: patch-ca,v 1.1 2004/07/07 09:08:31 aymeric Exp $ + +--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc_netbsd.s.orig 2001-03-11 18:22:17.000000000 +0100 ++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc_netbsd.s +@@ -1,27 +1,28 @@ +-# -*- Mode: Asm -*- +-# +-# The contents of this file are subject to the Netscape Public +-# License Version 1.1 (the "License"); you may not use this file +-# except in compliance with the License. You may obtain a copy of +-# the License at http://www.mozilla.org/NPL/ +-# +-# Software distributed under the License is distributed on an "AS +-# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +-# implied. See the License for the specific language governing +-# rights and limitations under the License. +-# +-# The Original Code is mozilla.org code. +-# +-# The Initial Developer of the Original Code is Netscape +-# Communications Corporation. Portions created by Netscape are +-# Copyright (C) 1999 Netscape Communications Corporation. All +-# Rights Reserved. +-# +-# Contributor(s): +-# Franz.Sirl-kernel@lauterbach.com (Franz Sirl) +-# beard@netscape.com (Patrick Beard) +-# waterson@netscape.com (Chris Waterson) +-# ++// -*- Mode: Asm -*- ++// ++// The contents of this file are subject to the Netscape Public ++// License Version 1.1 (the "License"); you may not use this file ++// except in compliance with the License. You may obtain a copy of ++// the License at http://www.mozilla.org/NPL/ ++// ++// Software distributed under the License is distributed on an "AS ++// IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or ++// implied. See the License for the specific language governing ++// rights and limitations under the License. ++// ++// The Original Code is mozilla.org code. ++// ++// The Initial Developer of the Original Code is Netscape ++// Communications Corporation. Portions created by Netscape are ++// Copyright (C) 1999 Netscape Communications Corporation. All ++// Rights Reserved. ++// ++// Contributor(s): ++// Franz.Sirl-kernel@lauterbach.com (Franz Sirl) ++// beard@netscape.com (Patrick Beard) ++// waterson@netscape.com (Chris Waterson) ++// ++ + .set r0,0; .set sp,1; .set RTOC,2; .set r3,3; .set r4,4 + .set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9 + .set r10,10; .set r11,11; .set r12,12; .set r13,13; .set r14,14 +@@ -42,38 +43,38 @@ + .globl XPTC_InvokeByIndex + .type XPTC_InvokeByIndex,@function + +-# +-# XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex, +-# PRUint32 paramCount, nsXPTCVariant* params) +-# ++// ++// XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex, ++// PRUint32 paramCount, nsXPTCVariant* params) ++// + + XPTC_InvokeByIndex: +- stwu sp,-32(sp) # setup standard stack frame +- mflr r0 # save LR +- stw r3,8(sp) # r3 <= that +- stw r4,12(sp) # r4 <= methodIndex ++ stwu sp,-32(sp) // setup standard stack frame ++ mflr r0 // save LR ++ stw r3,8(sp) // r3 <= that ++ stw r4,12(sp) // r4 <= methodIndex + stw r30,16(sp) + stw r31,20(sp) + +- stw r0,36(sp) # store LR backchain ++ stw r0,36(sp) // store LR backchain + mr r31,sp + +- rlwinm r10,r5,3,0,27 # r10 = (ParamCount * 2 * 4) & ~0x0f +- addi r0,r10,96 # reserve stack for GPR and FPR register save area r0 = r10 + 96 +- lwz r9,0(sp) # r9 = backchain ++ rlwinm r10,r5,3,0,27 // r10 = (ParamCount * 2 * 4) & ~0x0f ++ addi r0,r10,96 // reserve stack for GPR and FPR register save area r0 = r10 + 96 ++ lwz r9,0(sp) // r9 = backchain + neg r0,r0 +- stwux r9,sp,r0 # reserve stack sapce and save SP backchain +- +- addi r3,sp,8 # r3 <= args +- mr r4,r5 # r4 <= paramCount +- mr r5,r6 # r5 <= params +- add r6,r3,r10 # r6 <= gpregs ( == args + r10 ) +- mr r30,r6 # store in r30 for use later... +- addi r7,r6,32 # r7 <= fpregs ( == gpregs + 32 ) ++ stwux r9,sp,r0 // reserve stack space and save SP backchain ++ ++ addi r3,sp,8 // r3 <= args ++ mr r4,r5 // r4 <= paramCount ++ mr r5,r6 // r5 <= params ++ add r6,r3,r10 // r6 <= gpregs ( == args + r10 ) ++ mr r30,r6 // store in r30 for use later... ++ addi r7,r6,32 // r7 <= fpregs ( == gpregs + 32 ) + +- bl invoke_copy_to_stack@local # (args, paramCount, params, gpregs, fpregs) ++ bl invoke_copy_to_stack@local // (args, paramCount, params, gpregs, fpregs) + +- lfd f1,32(r30) # load FP registers with method parameters ++ lfd f1,32(r30) // load FP registers with method parameters + lfd f2,40(r30) + lfd f3,48(r30) + lfd f4,56(r30) +@@ -82,18 +83,18 @@ XPTC_InvokeByIndex: + lfd f7,80(r30) + lfd f8,88(r30) + +- lwz r3,8(r31) # r3 <= that +- lwz r4,12(r31) # r4 <= methodIndex +- lwz r5,0(r3) # r5 <= vtable ( == *that ) +- slwi r4,r4,3 # convert to offset ( *= 8 ) +- addi r4,r4,8 # skip first two vtable entries +- add r4,r4,r5 +- lhz r0,0(r4) # virtual base offset +- extsh r0,r0 +- add r3,r3,r0 +- lwz r0,4(r4) # r0 <= methodpointer ( == vtable + offset ) ++ lwz r3,8(r31) // r3 <= that ++ lwz r4,12(r31) // r4 <= methodIndex ++ lwz r5,0(r3) // r5 <= vtable ( == *that ) ++#if !((__GNUC__ == 3 && __GNUC_MINOR__ < 2) || __GXX_ABI_VERSION >= 100) // G++ pre-V3 ABI is like that of AIX under NetBSD ++ slwi r4,r4,3 // convert to offset ( *= 8 ) ++ addi r4,r4,8 // skip garbage before vtable ++#else ++ slwi r4,r4,2 // convert to offset ( *= 4 ) ++#endif ++ lwzx r0,r5,r4 // r0 <= methodpointer ( == vtable + offset ) + +- lwz r4,4(r30) # load GP regs with method parameters ++ lwz r4,4(r30) // load GP regs with method parameters + lwz r5,8(r30) + lwz r6,12(r30) + lwz r7,16(r30) +@@ -101,13 +102,13 @@ XPTC_InvokeByIndex: + lwz r9,24(r30) + lwz r10,28(r30) + +- mtlr r0 # copy methodpointer to LR +- blrl # call method ++ mtlr r0 // copy methodpointer to LR ++ blrl // call method + +- lwz r30,16(r31) # restore r30 & r31 ++ lwz r30,16(r31) // restore r30 & r31 + lwz r31,20(r31) + +- lwz r11,0(sp) # clean up the stack ++ lwz r11,0(sp) // clean up the stack + lwz r0,4(r11) + mtlr r0 + mr sp,r11 diff --git a/www/mozilla/patches/patch-cb b/www/mozilla/patches/patch-cb new file mode 100644 index 00000000000..5fc7aec927b --- /dev/null +++ b/www/mozilla/patches/patch-cb @@ -0,0 +1,26 @@ +$NetBSD: patch-cb,v 1.1 2004/07/07 09:08:31 aymeric Exp $ + +--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_ppc_netbsd.cpp.orig 2001-09-28 22:12:52.000000000 +0200 ++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_ppc_netbsd.cpp +@@ -104,8 +104,10 @@ invoke_copy_to_stack(PRUint32* d, + if ((PRUint32) d & 4) d++; // doubles are 8-byte aligned on stack + *((double*) d) = s->val.d; + d += 2; ++#if __GXX_ABI_VERSION < 100 + if (gpr < GPR_COUNT) + gpr += 2; ++#endif + } + } + else if (!s->IsPtrData() && s->type == nsXPTType::T_FLOAT) { +@@ -114,8 +116,10 @@ invoke_copy_to_stack(PRUint32* d, + else { + *((float*) d) = s->val.f; + d += 1; ++#if __GXX_ABI_VERSION < 100 + if (gpr < GPR_COUNT) + gpr += 1; ++#endif + } + } + else if (!s->IsPtrData() && (s->type == nsXPTType::T_I64 |