sparc xpcom abi patch
authorSeemant Kulleen <seemant@gentoo.org>
Fri, 18 Oct 2002 22:43:05 +0000 (22:43 +0000)
committerSeemant Kulleen <seemant@gentoo.org>
Fri, 18 Oct 2002 22:43:05 +0000 (22:43 +0000)
net-www/mozilla/ChangeLog
net-www/mozilla/files/mozilla-1.0.1-sparc-xpcom.patch [new file with mode: 0644]
net-www/mozilla/mozilla-1.0.1-r1.ebuild

index 0a69621b9c480e88bd5f436f0c091a819ee69bc3..b4c1eb949c176f45b8ba17c1ae2fb1c4da215911 100644 (file)
@@ -1,6 +1,9 @@
 # ChangeLog for net-www/mozilla
 # Copyright 2002 Gentoo Technologies, Inc.; Distributed under the GPL
-# $Header: /var/cvsroot/gentoo-x86/net-www/mozilla/ChangeLog,v 1.41 2002/10/17 19:16:16 azarah Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-www/mozilla/ChangeLog,v 1.42 2002/10/18 22:43:05 seemant Exp $
+
+  18 Oct 2002; Seemant Kulleen <seemant@gentoo.org> :
+  Add an ABI fix for sparc/sparc64 gcc-3.x based systems.
 
   17 Oct 2002; Martin Schlemmer <azarah@gentoo.org> :
   Add a fix for bug #7656.  This fix the missing headers from
diff --git a/net-www/mozilla/files/mozilla-1.0.1-sparc-xpcom.patch b/net-www/mozilla/files/mozilla-1.0.1-sparc-xpcom.patch
new file mode 100644 (file)
index 0000000..91afff1
--- /dev/null
@@ -0,0 +1,101 @@
+--- ./xpcom/reflect/xptcall/src/md/unix/Makefile.in.~1~        Tue Apr  9 20:37:34 2002
++++ ./xpcom/reflect/xptcall/src/md/unix/Makefile.in    Tue May 14 00:31:31 2002
+@@ -244,7 +244,11 @@
+ ifeq ($(OS_ARCH),Linux)
+ ifneq (,$(findstring sparc,$(OS_TEST)))
+ CPPSRCS               := xptcinvoke_sparc_solaris.cpp xptcstubs_sparc_solaris.cpp
++ifdef HAVE_GCC3_ABI
++ASFILES               := xptcinvoke_asm_sparc_linux_GCC3.s xptcstubs_asm_sparc_solaris.s
++else
+ ASFILES               := xptcinvoke_asm_sparc_linux.s xptcstubs_asm_sparc_solaris.s
++endif
+ endif
+ endif
+ #
+--- ./xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc_linux_GCC3.s.~1~  Tue May 14 00:36:47 2002
++++ ./xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc_linux_GCC3.s      Tue May 14 20:10:33 2002
+@@ -0,0 +1,84 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
++ *
++ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Mozilla 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/MPL/
++ *
++ * 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 the Initial Developer are Copyright (C) 1998
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ *  David S. Miller <davem@redhat.com> (ported to gcc3)
++ *
++ * 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
++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the MPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the MPL, the GPL or the LGPL.
++ */
++
++/*
++ * Platform specific code to invoke XPCOM methods on native objects for
++ * Linux/Sparc with gcc 3 ABI.
++ */
++        .global XPTC_InvokeByIndex
++/*
++ *  XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
++ *                 PRUint32 paramCount, nsXPTCVariant* params);
++ *   
++ */
++XPTC_InvokeByIndex:
++        save    %sp,-(64 + 16),%sp   ! room for the register window and
++                                    ! struct pointer, rounded up to 0 % 16
++        mov     %i2,%o0             ! paramCount
++        call    invoke_count_words  ! returns the required stack size in %o0
++        mov     %i3,%o1             ! params
++        
++      sll     %o0,2,%l0           ! number of bytes
++        sub     %sp,%l0,%sp         ! create the additional stack space
++            
++        mov     %sp,%o0             ! pointer for copied args
++        add     %o0,72,%o0          ! step past the register window, the
++                                    ! struct result pointer and the 'this' slot
++        mov     %i2,%o1             ! paramCount
++        call    invoke_copy_to_stack
++        mov     %i3,%o2             ! params
++!
++!   calculate the target address from the vtable
++!
++      ld      [%i0],%l1           ! *that --> vTable
++      sll     %i1,2,%i1           ! multiply index by 4
++      add     %i1,%l1,%l1         ! l1 now points to vTable entry
++        ld      [%l1],%l0           ! target address
++
++.L5:    ld      [%sp + 88],%o5
++.L4:  ld      [%sp + 84],%o4
++.L3:  ld      [%sp + 80],%o3
++.L2:  ld      [%sp + 76],%o2
++.L1:  ld      [%sp + 72],%o1
++.L0:
++        jmpl    %l0,%o7             ! call the routine
++! always have a 'this', from the incoming 'that'
++      mov     %i0,%o0
++        
++      mov     %o0,%i0             ! propagate return value
++        ret
++        restore
index 0ca760e307a9ca615f74fc027c3540923bd01579..0ff57e8e7441e3fb547b587f8fc58723a93e490c 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.10 2002/10/17 19:16:16 azarah Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-www/mozilla/mozilla-1.0.1-r1.ebuild,v 1.11 2002/10/18 22:43:05 seemant Exp $
 
 IUSE="mozxmlterm moznomail java mozp3p crypt ipv6 gtk2 mozinterfaceinfo ssl ldap mozaccess mozctl gnome mozsvg"
 
@@ -86,6 +86,12 @@ src_unpack() {
         if [ "${ARCH}" = "alpha" ] ; then
             patch -p1 < ${FILESDIR}/mozilla-alpha-xpcom-subs-fix.patch || die
         fi
+
+               # ABI Patch for sparc and sparc64/xpcom for gcc-3.x
+               if use sparc &>/dev/null || use sparc64 &>/dev/null
+               then
+                       patch -p1 < ${FILESDIR}/mozilla-1.0.1-sparc-xpcom.patch || die
+               fi
        fi
 
        # Apply the bytecode patch for freetype2