gcc3 abi patch for alpha
authorBjoern Brauel <bjb@gentoo.org>
Sun, 6 Oct 2002 09:04:58 +0000 (09:04 +0000)
committerBjoern Brauel <bjb@gentoo.org>
Sun, 6 Oct 2002 09:04:58 +0000 (09:04 +0000)
net-www/mozilla/files/mozilla-alpha-xpcom-subs-fix.patch [new file with mode: 0644]
net-www/mozilla/mozilla-1.0.1-r1.ebuild

diff --git a/net-www/mozilla/files/mozilla-alpha-xpcom-subs-fix.patch b/net-www/mozilla/files/mozilla-alpha-xpcom-subs-fix.patch
new file mode 100644 (file)
index 0000000..c7f9546
--- /dev/null
@@ -0,0 +1,139 @@
+--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_alpha.cpp       2002-04-10 05:37:38.000000000 +0200
++++ mozilla-alpha/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_alpha.cpp 2002-10-06 10:44:59.000000000 +0200
+@@ -20,6 +20,7 @@
+  * the Initial Developer. All Rights Reserved.
+  *
+  * Contributor(s):
++ *   Glen Nakamura <glen@imodulo.com>
+  *
+  * Alternatively, the contents of this file may be used under the terms of
+  * either the GNU General Public License Version 2 or later (the "GPL"), or 
+@@ -37,16 +38,14 @@
+ 
+ /* Platform specific code to invoke XPCOM methods on native objects */
+ 
+-/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
+-
+ #include "xptcprivate.h"
+ 
+ /* Prototype specifies unmangled function name and disables unused warning */
+-static void
++void
+ invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+ __asm__("invoke_copy_to_stack") __attribute__((unused));
+ 
+-static void
++void
+ invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
+ {
+     const PRUint8 NUM_ARG_REGS = 6-1;        // -1 for "this" pointer
+@@ -163,7 +162,11 @@
+     "bis $16,$16,$1\n\t"    /* load "this" */
+     "ldq $2,16($15)\n\t"    /* load "methodIndex" */
+     "ldq $1,0($1)\n\t"      /* load vtable */
++#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
++    "s8addq $2,$31,$2\n\t"  /* vtable index = "methodIndex" * 8 */
++#else /* not G++ V3 ABI */
+     "s8addq $2,16,$2\n\t"   /* vtable index = "methodIndex" * 8 + 16 */
++#endif /* G++ V3 ABI */
+     "addq $1,$2,$1\n\t"
+     "ldq $27,0($1)\n\t"     /* load address of function */
+     "jsr $26,($27),0\n\t"   /* call virtual function */
+@@ -176,4 +179,3 @@
+     "ret $31,($26),1\n\t"
+     ".end XPTC_InvokeByIndex"
+     );
+-
+--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_alpha.cpp        2002-04-10 05:37:42.000000000 +0200
++++ mozilla-alpha/xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_alpha.cpp  2002-10-06 10:45:10.000000000 +0200
+@@ -20,6 +20,7 @@
+  * the Initial Developer. All Rights Reserved.
+  *
+  * Contributor(s):
++ *   Glen Nakamura <glen@imodulo.com>
+  *
+  * Alternatively, the contents of this file may be used under the terms of
+  * either the GNU General Public License Version 2 or later (the "GPL"), or 
+@@ -37,16 +38,14 @@
+ 
+ /* Implement shared vtbl methods. */
+ 
+-/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
+-
+ #include "xptcprivate.h"
+ 
+ /* Prototype specifies unmangled function name and disables unused warning */
+-static nsresult
++nsresult
+ PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+ __asm__("PrepareAndDispatch") __attribute__((unused));
+ 
+-static nsresult
++nsresult
+ PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
+ {
+     const PRUint8 PARAM_BUFFER_COUNT = 16;
+@@ -188,23 +187,45 @@
+  * nsresult nsXPTCStubBase::Stub##n()
+  *  Sets register $1 to "methodIndex" and jumps to SharedStub.
+  */
++#define STUB_MANGLED_ENTRY(n, symbol) \
++    "#### Stub"#n" ####"      "\n\t" \
++    ".text"                   "\n\t" \
++    ".align 5"                "\n\t" \
++    ".globl " symbol          "\n\t" \
++    ".ent " symbol            "\n"   \
++symbol ":"                    "\n\t" \
++    ".frame $30,0,$26,0"      "\n\t" \
++    "ldgp $29,0($27)"         "\n"   \
++"$" symbol "..ng:"            "\n\t" \
++    ".prologue 1"             "\n\t" \
++    "lda $1,"#n               "\n\t" \
++    "br $31,$SharedStub..ng"  "\n\t" \
++    ".end " symbol
++
++#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
++
++#define STUB_ENTRY(n) \
++__asm__( \
++    ".if "#n" < 10"                                              "\n\t" \
++        STUB_MANGLED_ENTRY(n, "_ZN14nsXPTCStubBase5Stub"#n"Ev")  "\n\t" \
++    ".elseif "#n" < 100"                                         "\n\t" \
++        STUB_MANGLED_ENTRY(n, "_ZN14nsXPTCStubBase6Stub"#n"Ev")  "\n\t" \
++    ".elseif "#n" < 1000"                                        "\n\t" \
++        STUB_MANGLED_ENTRY(n, "_ZN14nsXPTCStubBase7Stub"#n"Ev")  "\n\t" \
++    ".else"                                                      "\n\t" \
++    ".err \"Stub"#n" >= 1000 not yet supported.\""               "\n\t" \
++    ".endif" \
++    );
++
++#else /* not G++ V3 ABI */
++
+ #define STUB_ENTRY(n) \
+ __asm__( \
+-    "#### Stub"#n" ####\n" \
+-".text\n\t" \
+-    ".align 5\n\t" \
+-    ".globl Stub"#n"__14nsXPTCStubBase\n\t" \
+-    ".ent Stub"#n"__14nsXPTCStubBase\n" \
+-"Stub"#n"__14nsXPTCStubBase:\n\t" \
+-    ".frame $30,0,$26,0\n\t" \
+-    "ldgp $29,0($27)\n" \
+-"$Stub"#n"__14nsXPTCStubBase..ng:\n\t" \
+-    ".prologue 1\n\t" \
+-    "lda $1,"#n"\n\t" \
+-    "br $31,$SharedStub..ng\n\t" \
+-    ".end Stub"#n"__14nsXPTCStubBase" \
++    STUB_MANGLED_ENTRY(n, "Stub"#n"__14nsXPTCStubBase") \
+     );
+ 
++#endif /* G++ V3 ABI */
++
+ #define SENTINEL_ENTRY(n) \
+ nsresult nsXPTCStubBase::Sentinel##n() \
+ { \
+@@ -213,4 +234,3 @@
+ }
+ 
+ #include "xptcstubsdef.inc"
+-
index e0fdba13163126605d43b6bc5086ee8f5e0b99dc..1ba5099705b7f9fa410d80769d92a29e2493175e 100644 (file)
@@ -1,6 +1,6 @@
 # Copyright 1999-2002 Gentoo Technologies, Inc.
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-www/mozilla/mozilla-1.0.1-r1.ebuild,v 1.3 2002/10/05 05:39:24 drobbins Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-www/mozilla/mozilla-1.0.1-r1.ebuild,v 1.4 2002/10/06 09:04:58 bjb Exp $
 
 IUSE="mozxmlterm moznomail java mozp3p crypt ipv6 gtk2 mozinterfaceinfo ssl ldap mozaccess mozctl gnome"
 
@@ -23,7 +23,7 @@ SRC_URI="ftp://ftp.mozilla.org/pub/mozilla/releases/${PN}${MY_PV2}/src/${PN}-sou
                 http://enigmail.mozdev.org/dload/src/ipc-${IPCVER}.tar.gz )"
 HOMEPAGE="http://www.mozilla.org"
 
-KEYWORDS="x86 ppc sparc sparc64"
+KEYWORDS="x86 ppc sparc sparc64 alpha"
 SLOT="0"
 LICENSE="MPL-1.1 | NPL-1.1"
 
@@ -81,6 +81,11 @@ src_unpack() {
                if [ "${ARCH}" = "ppc" ] ; then
                        patch -p0 < ${FILESDIR}/mozilla-1.0-abi-xpcom-ppc.patch || die
                fi
+
+        # ABI Patch for alpha/xpcom for gcc-3.x
+        if [ "${ARCH}" = "alpha" ] ; then
+            patch -p1 < ${FILESDIR}/mozilla-alpha-xpcom-subs-fix.patch || die
+        fi
        fi
 
        # Apply the bytecode patch for freetype2