From: Seemant Kulleen Date: Fri, 18 Oct 2002 22:43:05 +0000 (+0000) Subject: sparc xpcom abi patch X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=e4a171776ceda935877c55e34673d455f6029dff;p=gentoo.git sparc xpcom abi patch --- diff --git a/net-www/mozilla/ChangeLog b/net-www/mozilla/ChangeLog index 0a69621b9c48..b4c1eb949c17 100644 --- a/net-www/mozilla/ChangeLog +++ b/net-www/mozilla/ChangeLog @@ -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 : + Add an ABI fix for sparc/sparc64 gcc-3.x based systems. 17 Oct 2002; Martin Schlemmer : 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 index 000000000000..91afff1f07e5 --- /dev/null +++ b/net-www/mozilla/files/mozilla-1.0.1-sparc-xpcom.patch @@ -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 (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 diff --git a/net-www/mozilla/mozilla-1.0.1-r1.ebuild b/net-www/mozilla/mozilla-1.0.1-r1.ebuild index 0ca760e307a9..0ff57e8e7441 100644 --- a/net-www/mozilla/mozilla-1.0.1-r1.ebuild +++ b/net-www/mozilla/mozilla-1.0.1-r1.ebuild @@ -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