Gentoo Logo
Gentoo Spaceship




Note: Due to technical difficulties, the Archives are currently not up to date. GMANE provides an alternative service for most mailing lists.
c.f. bug 424647
List Archive: gentoo-commits
Navigation:
Lists: gentoo-commits: < Prev By Thread Next > < Prev By Date Next >
Headers:
To: gentoo-commits@g.o
From: "Raul Porcel (armin76)" <armin76@g.o>
Subject: gentoo commit in src/patchsets/mozilla-firefox/3.0.8: 000_flex-configure-LANG.patch 001-firefox_gentoo_install_dirs.patch 003-bz386904_config_rules_install_dist_files.patch 005-installer_shouldnt_copy_xulrunner.patch 007-xulonly-dont_depend_on_nspr_sources.patch 009-xulonly-nspr_flags_by_pkg_config_hack.patch 020_noxul-mips-asm.patch 021_noxul-mips-fpic.patch 030-firefox_encode_spaces.patch 055_firefox-2.0_gfbsd-pthreads.patch 063_firefox-rpath-3.patch 064_noxul-nsplugins-v3.patch 068_noxul-nss-gentoo-fix.patch 080_gcc-4.4-elif.patch 090-unaligned.patch 096_glibc-maxpathlen.patch 097_noxul_glibc-maxpathlen.patch 100-system-hunspell-corrections.patch 300-xulonly-gnome_firefox_default_browser.patch 667_typeahead-broken-v4.patch 800-noxul-bsd-include.patch
Date: Fri, 03 Apr 2009 09:52:49 +0000
armin76     09/04/03 09:52:49

  Added:                000_flex-configure-LANG.patch
                        001-firefox_gentoo_install_dirs.patch
                        003-bz386904_config_rules_install_dist_files.patch
                        005-installer_shouldnt_copy_xulrunner.patch
                        007-xulonly-dont_depend_on_nspr_sources.patch
                        009-xulonly-nspr_flags_by_pkg_config_hack.patch
                        020_noxul-mips-asm.patch 021_noxul-mips-fpic.patch
                        030-firefox_encode_spaces.patch
                        055_firefox-2.0_gfbsd-pthreads.patch
                        063_firefox-rpath-3.patch
                        064_noxul-nsplugins-v3.patch
                        068_noxul-nss-gentoo-fix.patch
                        080_gcc-4.4-elif.patch 090-unaligned.patch
                        096_glibc-maxpathlen.patch
                        097_noxul_glibc-maxpathlen.patch
                        100-system-hunspell-corrections.patch
                        300-xulonly-gnome_firefox_default_browser.patch
                        667_typeahead-broken-v4.patch
                        800-noxul-bsd-include.patch
  Log:
  Bump patchset to fix unaligned accesses, bug #251603, patch by Friedrich Oslage <bluebird at gentoo dot org>

Revision  Changes    Path
1.1                  src/patchsets/mozilla-firefox/3.0.8/000_flex-configure-LANG.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/000_flex-configure-LANG.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/000_flex-configure-LANG.patch?rev=1.1&content-type=text/plain

Index: 000_flex-configure-LANG.patch
===================================================================
The LANG vars aren't reset early enough so when sed tries to use [a-zA-Z] in 
option parsing, it may break.

http://bugs.gentoo.org/103483

--- configure
+++ configure
@@ -54,6 +54,16 @@
 infodir='${prefix}/info'
 mandir='${prefix}/man'
 
+# NLS nuisances.
+# Only set these to C if already set.  These must not be set unconditionally
+# because not all systems understand e.g. LANG=C (notably SCO).
+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+# Non-C LC_CTYPE values break the ctype check.
+if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
+
 # Initialize some other variables.
 subdirs=
 MFLAGS= MAKEFLAGS=
@@ -452,16 +463,6 @@
   esac
 done
 
-# NLS nuisances.
-# Only set these to C if already set.  These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
-
 # confdefs.h avoids OS command line length limits that DEFS can exceed.
 rm -rf conftest* confdefs.h
 # AIX cpp loses on an empty file, so make sure it contains at least a newline.



1.1                  src/patchsets/mozilla-firefox/3.0.8/001-firefox_gentoo_install_dirs.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/001-firefox_gentoo_install_dirs.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/001-firefox_gentoo_install_dirs.patch?rev=1.1&content-type=text/plain

Index: 001-firefox_gentoo_install_dirs.patch
===================================================================
--- config/autoconf.mk.in.orig	2007-08-03 22:02:32.000000000 +0200
+++ config/autoconf.mk.in	2007-08-03 22:07:00.000000000 +0200
@@ -58,14 +58,14 @@
 prefix		= @prefix@
 exec_prefix	= @exec_prefix@
 bindir		= @bindir@
-includedir	= @includedir@/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+includedir	= @includedir@/mozilla-firefox
 libdir		= @libdir@
 datadir		= @datadir@
 mandir		= @mandir@
-idldir		= $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+idldir		= $(includedir)/idl
 
-installdir	= $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
-sdkdir		= $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
+installdir	= $(libdir)/mozilla-firefox
+sdkdir		= $(libdir)/mozilla-firefox
 
 DIST		= $(DEPTH)/dist
 LIBXUL_SDK      = @LIBXUL_SDK@



1.1                  src/patchsets/mozilla-firefox/3.0.8/003-bz386904_config_rules_install_dist_files.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/003-bz386904_config_rules_install_dist_files.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/003-bz386904_config_rules_install_dist_files.patch?rev=1.1&content-type=text/plain

Index: 003-bz386904_config_rules_install_dist_files.patch
===================================================================
This is from: 
    https://bugzilla.mozilla.org/show_bug.cgi?id=386904
    https://bugzilla.mozilla.org/attachment.cgi?id=270967


 -- Summary:

This patch implements DIST_FILES install:: target as well as
DIST_CHROME_FILES install target.

 -- Evaluation:

DIST_FILES is now used in browser/app/Makefile.in to install
application.ini; however, DEST_FILES is only implemented for
libs::, but not for install::.

In consequence, make install'ed installs of firefox now break
with missing application.ini file.

When writing this fix, it became obvious that DIST_CHROME_FILES
install: target is missing too ... though it doesn't cause any
problems because its not really used.

---
 config/rules.mk |   28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

Index: mozilla/config/rules.mk
===================================================================
--- mozilla.orig/config/rules.mk	2007-08-18 15:15:17.000000000 +0000
+++ mozilla/config/rules.mk	2007-08-18 15:15:36.000000000 +0000
@@ -1699,28 +1699,56 @@
 	@$(EXIT_ON_ERROR) \
 	for f in $(DIST_FILES); do \
 	  dest=$(FINAL_TARGET)/`basename $$f`; \
 	  $(RM) -f $$dest; \
 	  $(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py \
 	    $(XULAPP_DEFINES) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \
 	    $(srcdir)/$$f > $$dest; \
 	done
+
+install:: $(DIST_FILES)
+ifndef XPI_NAME
+ifndef NO_INSTALL
+	@$(EXIT_ON_ERROR) \
+	for f in $(DIST_FILES); do \
+	  dest=$(DESTDIR)$(mozappdir)/`basename $$f`; \
+	  $(RM) -f $$dest; \
+	  $(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py \
+	    $(XULAPP_DEFINES) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \
+	    $(srcdir)/$$f > $$dest; \
+	done
+endif
+endif
 endif
 
 ifneq ($(DIST_CHROME_FILES),)
 libs:: $(DIST_CHROME_FILES)
 	@$(EXIT_ON_ERROR) \
 	for f in $(DIST_CHROME_FILES); do \
 	  dest=$(FINAL_TARGET)/chrome/`basename $$f`; \
 	  $(RM) -f $$dest; \
 	  $(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py \
 	    $(XULAPP_DEFINES) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \
 	    $(srcdir)/$$f > $$dest; \
 	done
+
+install:: $(DIST_CHROME_FILES)
+ifndef XPI_NAME
+ifndef NO_INSTALL
+	@$(EXIT_ON_ERROR) \
+	for f in $(DIST_CHROME_FILES); do \
+	  dest=$(DESTDIR)$(mozappdir)/chrome/`basename $$f`; \
+	  $(RM) -f $$dest; \
+	  $(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py \
+	    $(XULAPP_DEFINES) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \
+	    $(srcdir)/$$f > $$dest; \
+	done
+endif
+endif
 endif
 
 ifneq ($(XPI_PKGNAME),)
 libs realchrome::
 ifdef STRIP_XPI
 ifndef MOZ_DEBUG
 	@echo "Stripping $(XPI_PKGNAME) package directory..."
 	@echo $(FINAL_TARGET)



1.1                  src/patchsets/mozilla-firefox/3.0.8/005-installer_shouldnt_copy_xulrunner.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/005-installer_shouldnt_copy_xulrunner.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/005-installer_shouldnt_copy_xulrunner.patch?rev=1.1&content-type=text/plain

Index: 005-installer_shouldnt_copy_xulrunner.patch
===================================================================
---
 config/rules.mk |    5 +++++
 1 file changed, 5 insertions(+)

Index: mozilla/config/rules.mk
===================================================================
--- mozilla.orig/config/rules.mk
+++ mozilla/config/rules.mk
@@ -57,16 +57,21 @@
 REPORT_BUILD = @echo $(notdir $<)
 
 ifeq ($(OS_ARCH),OS2)
 EXEC			=
 else
 EXEC			= exec
 endif
 
+# Don't copy xulrunner files at install time, when using system xulrunner
+ifdef LIBXUL_SDK
+  SKIP_COPY_XULRUNNER=1
+endif
+
 # ELOG prints out failed command when building silently (gmake -s).
 ifneq (,$(findstring -s,$(MAKEFLAGS)))
   ELOG := $(EXEC) sh $(BUILD_TOOLS)/print-failed-commands.sh
 else
   ELOG :=
 endif
 
 ifeq ($(MOZ_OS2_TOOLS),VACPP)



1.1                  src/patchsets/mozilla-firefox/3.0.8/007-xulonly-dont_depend_on_nspr_sources.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/007-xulonly-dont_depend_on_nspr_sources.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/007-xulonly-dont_depend_on_nspr_sources.patch?rev=1.1&content-type=text/plain

Index: 007-xulonly-dont_depend_on_nspr_sources.patch
===================================================================
---
 config/Makefile.in             |    2 -
 config/make-system-wrappers.pl |   59 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 60 insertions(+), 1 deletion(-)

Index: mozilla/config/Makefile.in
===================================================================
--- mozilla.orig/config/Makefile.in
+++ mozilla/config/Makefile.in
@@ -121,17 +121,17 @@
 		-DMOZ_TREE_CAIRO=$(MOZ_TREE_CAIRO) \
 		-DMOZ_ENABLE_LIBXUL=$(MOZ_ENABLE_LIBXUL) \
 		-DMOZ_NATIVE_HUNSPELL=$(MOZ_NATIVE_HUNSPELL) \
		-DMOZ_NATIVE_BZ2=$(MOZ_NATIVE_BZ2) \
 		-DMOZ_NATIVE_ZLIB=$(MOZ_NATIVE_ZLIB) \
 		-DMOZ_NATIVE_PNG=$(MOZ_NATIVE_PNG) \
 		-DMOZ_NATIVE_JPEG=$(MOZ_NATIVE_JPEG) \
 		-DMOZ_NATIVE_LCMS=$(MOZ_NATIVE_LCMS) \
-		$(srcdir)/system-headers | $(PERL) $(topsrcdir)/nsprpub/config/make-system-wrappers.pl system_wrappers
+		$(srcdir)/system-headers | $(PERL) $(topsrcdir)/config/make-system-wrappers.pl system_wrappers
 	$(INSTALL) system_wrappers $(DIST)/include
 
 GARBAGE_DIRS += system_wrappers
 endif
 
 install::
 	$(SYSINSTALL) $(IFLAGS1) $(DEPTH)/mozilla-config.h $(DESTDIR)$(includedir)
 
Index: mozilla/config/make-system-wrappers.pl
===================================================================
--- /dev/null
+++ mozilla/config/make-system-wrappers.pl
@@ -0,0 +1,59 @@
+#!/usr/bin/perl
+#
+# ***** BEGIN LICENSE BLOCK *****
+# 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
+# IBM Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2004
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#   Brian Ryner <bryner@...>
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either of 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.
+#
+# ***** END LICENSE BLOCK *****
+
+$output_dir = shift;
+
+while (<STDIN>) {
+    chomp;
+    if (-e "$output_dir/$_") {
+	next;
+    }
+
+    if (/(.*)\/[^\/*]/) {
+	mkdir "$output_dir/$1";
+    }
+
+    open OUT, ">$output_dir/$_";
+    print OUT "#pragma GCC system_header\n";  # suppress include_next warning
+    print OUT "#pragma GCC visibility push(default)\n";
+    print OUT "#include_next \<$_\>\n";
+    print OUT "#pragma GCC visibility pop\n";
+    close OUT;
+}
+



1.1                  src/patchsets/mozilla-firefox/3.0.8/009-xulonly-nspr_flags_by_pkg_config_hack.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/009-xulonly-nspr_flags_by_pkg_config_hack.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/009-xulonly-nspr_flags_by_pkg_config_hack.patch?rev=1.1&content-type=text/plain

Index: 009-xulonly-nspr_flags_by_pkg_config_hack.patch
===================================================================
---
 configure.in                   |   21 +++-----------

Index: mozilla/configure.in
===================================================================
--- mozilla.orig/configure.in
+++ mozilla/configure.in
@@ -3872,32 +3872,33 @@
     AC_TRY_COMPILE([#include "prlog.h"],
                 [#ifndef PR_STATIC_ASSERT
                  #error PR_STATIC_ASSERT not defined
                  #endif],
                 [MOZ_NATIVE_NSPR=1],
                 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
     CFLAGS=$_SAVE_CFLAGS
 else
-    NSPR_CFLAGS='`$(DEPTH)/nsprpub/config/nspr-config --prefix=$(LIBXUL_DIST) --includedir=$(LIBXUL_DIST)/include/nspr --cflags`'
+    NSPR_CFLAGS=`pkg-config mozilla-nspr --cflags`
+    NSPR_LIBS=`pkg-config mozilla-nspr --libs`
     # explicitly set libs for Visual Age C++ for OS/2
     if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
         NSPR_LIBS='$(LIBXUL_DIST)/lib/nspr'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plc'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plds'$NSPR_VERSION'.lib '$_PTHREAD_LDFLAGS''
     elif test "$OS_ARCH" = "WINCE"; then
         NSPR_CFLAGS='-I$(LIBXUL_DIST)/include/nspr'
         NSPR_LIBS='$(LIBXUL_DIST)/lib/nspr'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plc'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plds'$NSPR_VERSION'.lib '
     elif test "$OS_ARCH" = "WINNT"; then
         NSPR_CFLAGS='-I$(LIBXUL_DIST)/include/nspr'
         if test -n "$GNU_CC"; then
             NSPR_LIBS="-L\$(LIBXUL_DIST)/lib -lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION"
         else
             NSPR_LIBS='$(LIBXUL_DIST)/lib/nspr'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plc'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plds'$NSPR_VERSION'.lib '
         fi
     else
-        NSPR_LIBS='`$(DEPTH)/nsprpub/config/nspr-config --prefix=$(LIBXUL_DIST) --libdir=$(LIBXUL_DIST)/lib --libs`'
+        NSPR_LIBS=`pkg-config mozilla-nspr --libs`
     fi
 fi
 
 dnl ========================================================
 dnl = If NSS was not detected in the system, 
 dnl = use the one in the source tree (mozilla/security/nss)
 dnl ========================================================
 
@@ -7617,17 +7618,19 @@
 AC_SUBST(MOZ_ZLIB_CFLAGS)
 AC_SUBST(MOZ_ZLIB_LIBS)
 AC_SUBST(MOZ_BZ2_CFLAGS)
 AC_SUBST(MOZ_BZ2_LIBS)
 AC_SUBST(MOZ_PNG_CFLAGS)
 AC_SUBST(MOZ_PNG_LIBS)
 
 AC_SUBST(NSPR_CFLAGS)
+AC_DEFINE(NSPR_CFLAGS)
 AC_SUBST(NSPR_LIBS)
+AC_DEFINE(NSPR_LIBS)
 AC_SUBST(MOZ_NATIVE_NSPR)
 
 AC_SUBST(NSS_CFLAGS)
 AC_SUBST(NSS_LIBS)
 AC_SUBST(NSS_DEP_LIBS)
 AC_SUBST(MOZ_NATIVE_NSS)
 
 AC_SUBST(CFLAGS)
@@ -7961,30 +7964,16 @@
     fi
     if test -n "$HAVE_64BIT_OS"; then
         ac_configure_args="$ac_configure_args --enable-64bit"
     fi
     AC_OUTPUT_SUBDIRS(nsprpub)
     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
 fi
 
-if test -z "$MOZ_NATIVE_NSPR"; then
-    # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
-    AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
-    if test ! "$VACPP" && test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
-       _libs=`./nsprpub/config/nspr-config --prefix=$\(LIBXUL_DIST\) --exec-prefix=$\(DIST\) --libdir=$\(LIBXUL_DIST\)/lib --libs`
-       $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $_libs'" config/autoconf.mk
-    fi
-    if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE" ; then
-       _cflags=`./nsprpub/config/nspr-config --prefix=$\(LIBXUL_DIST\) --exec-prefix=$\(DIST\) --includedir=$\(LIBXUL_DIST\)/include/nspr --cflags`
-       $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $_cflags'" config/autoconf.mk
-    fi
-    rm -f config/autoconf.mk.bak
-fi
-
 # if we're building the LDAP XPCOM component, we need to build 
 # the c-sdk first.  
 #
 if test "$MOZ_LDAP_XPCOM"; then
 
     # these subdirs may not yet have been created in the build tree.
     # don't use the "-p" switch to mkdir, since not all platforms have it
     #



1.1                  src/patchsets/mozilla-firefox/3.0.8/020_noxul-mips-asm.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/020_noxul-mips-asm.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/020_noxul-mips-asm.patch?rev=1.1&content-type=text/plain

Index: 020_noxul-mips-asm.patch
===================================================================
Upstream Bug: http://bugzilla.mozilla.org/show_bug.cgi?id=258429

This patch is required to fix build issues with Mozilla on MIPS architectures.
The out-of-the-box code is coded to build on a PlayStation 2 game console, which
is a highly specialised MIPS machine based around the Toshiba TX5900.  This CPU
is very non-standard, causing problems with generic MIPS machines like Silicon
Graphics workstations.

The following patch fixes the assembly language routines for generic MIPS
machines.  In the case where it is being compiled for a PlayStation 2, the older
PS2-specific implementation is used instead.

Patch $Revision: 1.1 $
diff --git a/configure.in b/configure.in
index f49bf6c..2423b6c 100644
--- a/configure.in
+++ b/configure.in
@@ -1806,8 +1806,7 @@ case "$target" in
         MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
     ;;
     mips*)
-        CFLAGS="$CFLAGS -Wa,-xgot"
-        CXXFLAGS="$CXXFLAGS -Wa,-xgot"
+        MOZ_DEBUG_FLAGS="-g" # We want inlining
     ;;
     esac
     ;;
diff --git a/xpcom/reflect/xptcall/src/md/unix/Makefile.in b/xpcom/reflect/xptcall/src/md/unix/Makefile.in
index 559fd96..6181699 100644
--- a/xpcom/reflect/xptcall/src/md/unix/Makefile.in
+++ b/xpcom/reflect/xptcall/src/md/unix/Makefile.in
@@ -276,11 +276,7 @@ ifeq ($(OS_ARCH),Linux)
 ifneq (,$(findstring mips, $(OS_TEST)))
 CPPSRCS		:= xptcinvoke_mips.cpp xptcstubs_mips.cpp
 ASFILES		:= xptcinvoke_asm_mips.s xptcstubs_asm_mips.s
-#xptcstubs_mips.cpp
-# xptcstubs_asm_mips.s
-ifdef GNU_CC
-ASFLAGS		+= $(INCLUDES) -x assembler-with-cpp -D__GNUC__
-endif
+ASFLAGS		+= -I$(PUBLIC) -x assembler-with-cpp
 endif
 endif
 
@@ -466,10 +462,7 @@ LOCAL_INCLUDES += \
 
 ifeq ($(OS_ARCH),Linux)
 ifneq (,$(findstring mips, $(OS_TEST)))
-xptcstubs_asm_mips.o: xptcstubs_asm_mips.s.m4 $(PUBLIC)/xptcstubsdef.inc
-	m4 $(INCLUDES) $< > ./xptcstubs_asm_mips.s && \
-	$(AS) -o $@ $(ASFLAGS) $(AS_DASH_C_FLAG) ./xptcstubs_asm_mips.s
-	$(RM) -f ./xptcstubs_asm_mips.s
+xptcstubs_asm_mips.o: $(PUBLIC)/xptcstubsdef.inc
 endif
 endif
 
diff --git a/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_mips.s b/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_mips.s
index 8704247..6cf9deb 100644
--- a/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_mips.s
+++ b/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_mips.s
@@ -24,6 +24,7 @@
  * Contributor(s):
  *   Brendan Eich     <brendan@...>
  *   Stuart Parmenter <pavlov@...>
+ *   Thiemo Seufer    <seufer@...>
  *
  * 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
@@ -44,139 +45,123 @@
 #include <sys/regdef.h>
 #include <sys/asm.h>
 
-.text
-.globl  invoke_count_words
-.globl	invoke_copy_to_stack 
-
-# We need a variable number of words allocated from the stack for copies of
-# the params, and this space must come between the high frame (where ra, gp,
-# and s0 are saved) and the low frame (where a0-a3 are saved by the callee
-# functions we invoke). 
-
-LOCALSZ=4		# s0, s1, ra, gp
-NARGSAVE=4		# a0, a1, a2, a3
-HIFRAMESZ=(LOCALSZ*SZREG)
-LOFRAMESZ=(NARGSAVE*SZREG)
-FRAMESZ=(HIFRAMESZ+LOFRAMESZ+ALSZ)&ALMASK
-
-# XXX these 2*SZREG, etc. are very magic -- we *know* that ALSZ&ALMASK cause
-# FRAMESZ to be 0 mod 8, in this case to be 16 and not 12.
-RAOFF=FRAMESZ - (2*SZREG)
-GPOFF=FRAMESZ - (3*SZREG)
-S0OFF=FRAMESZ - (4*SZREG)
-S1OFF=FRAMESZ - (5*SZREG)
-
-# These are not magic -- they are just our argsave slots in the caller frame.
-A0OFF=FRAMESZ
-A1OFF=FRAMESZ + (1*SZREG)
-A2OFF=FRAMESZ + (2*SZREG)
-A3OFF=FRAMESZ + (3*SZREG)
-
-	#	
-	# _XPTC_InvokeByIndex(that, methodIndex, paramCount, params)
-	#                      a0       a1          a2         a3
-
-NESTED(_XPTC_InvokeByIndex, FRAMESZ, ra)
-
-	.set	noreorder
-	.cpload	t9
-	.set	reorder
-
+# NARGSAVE is the argument space in the callers frame, including extra
+# 'shadowed' space for the argument registers. The minimum of 4
+# argument slots is sometimes predefined in the header files.
+#ifndef NARGSAVE
+#define NARGSAVE 4
+#endif
+
+#define LOCALSZ 3	/* gp, fp, ra */
+#define FRAMESZ ((((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK)
+
+#define RAOFF (FRAMESZ - (1*SZREG))
+#define FPOFF (FRAMESZ - (2*SZREG))
+#define GPOFF (FRAMESZ - (3*SZREG))
+
+#define A0OFF (FRAMESZ + (0*SZREG))
+#define A1OFF (FRAMESZ + (1*SZREG))
+#define A2OFF (FRAMESZ + (2*SZREG))
+#define A3OFF (FRAMESZ + (3*SZREG))
+
+	.text
+
+#	
+# _NS_InvokeByIndex_P(that, methodIndex, paramCount, params)
+#                      a0       a1          a2         a3
+
+	.globl	_NS_InvokeByIndex_P
+	.align	2
+	.type	_NS_InvokeByIndex_P,@function
+	.ent	_NS_InvokeByIndex_P,0
+	.frame	fp, FRAMESZ, ra
+_NS_InvokeByIndex_P:
+	SETUP_GP
 	subu	sp, FRAMESZ
 
-	# specify the save register mask -- XXX do we want the a0-a3 here, given
-	# our "split" frame where the args are saved below a dynamicly allocated
-	# region under the high frame?
-	#
-	# 10010000000000010000000011110000
-	.mask 0x900100F0, -((NARGSAVE+LOCALSZ)*SZREG)
+	# specify the save register mask for gp, fp, ra, a3 - a0
+	.mask 0xD00000F0, RAOFF-FRAMESZ
 
-	# thou shalt not use .cprestore if yer frame has variable size...
-	# .cprestore GPOFF
+	sw	ra, RAOFF(sp)
+	sw	fp, FPOFF(sp)
 
-	REG_S	ra, RAOFF(sp)
+	# we can't use .cprestore in a variable stack frame
+	sw	gp, GPOFF(sp)
 
-	# this happens automatically with .cprestore, but we cannot use that op...
-	REG_S	gp, GPOFF(sp)
-	REG_S	s0, S0OFF(sp)
-	REG_S	s1, S1OFF(sp)
+	sw	a0, A0OFF(sp)
+	sw	a1, A1OFF(sp)
+	sw	a2, A2OFF(sp)
+	sw	a3, A3OFF(sp)
 
-	REG_S	a0, A0OFF(sp)
-	REG_S	a1, A1OFF(sp)
-	REG_S	a2, A2OFF(sp)
-	REG_S	a3, A3OFF(sp)
+	# save bottom of fixed frame
+	move	fp, sp
 
-	# invoke_count_words(paramCount, params)
+	# extern "C" uint32
+	# invoke_count_words(PRUint32 paramCount, nsXPTCVariant* s);
+	la	t9, invoke_count_words
 	move	a0, a2
 	move	a1, a3
-
-	jal	invoke_count_words
-	lw	gp, GPOFF(sp)
-
-	# save the old sp so we can pop the param area and any "low frame"
-	# needed as an argsave area below the param block for callees that
-	# we invoke.
-	move	s0, sp
-
-	REG_L	a1, A2OFF(sp)	# a1 = paramCount
-	REG_L	a2, A3OFF(sp)	# a2 = params
-
-	# we define a word as 4 bytes, period end of story!
-	sll	v0, 2		# 4 bytes * result of invoke_copy_words
-	subu	v0, LOFRAMESZ	# but we take back the argsave area built into
-				# our stack frame -- SWEET!
-	subu	sp, sp, v0	# make room
-	move	a0, sp		# a0 = param stack address
-	move	s1, a0		# save it for later -- it should be safe here
-
-	# the old sp is still saved in s0, but we now need another argsave
-	# area ("low frame") for the invoke_copy_to_stack call.
-	subu	sp, sp, LOFRAMESZ
-
-	# copy the param into the stack areas
+	jalr	t9
+	lw  	gp, GPOFF(fp)
+
+	# allocate variable stack, with a size of:
+	# wordsize (of 4 bytes) * result (already aligned to dword)
+	# but a minimum of 16 byte
+	sll	v0, 2
+	slt	t0, v0, 16
+	beqz	t0, 1f
+	li	v0, 16
+1:	subu	sp, v0
+
+	# let a0 point to the bottom of the variable stack, allocate
+	# another fixed stack for:
+	# extern "C" void
 	# invoke_copy_to_stack(PRUint32* d, PRUint32 paramCount,
-	#                      nsXPTCVariant* s)
-	jal     invoke_copy_to_stack
-	lw  	gp, GPOFF(s0)
-
-	move	sp, s0		# get orig sp back, popping params and argsave
-
-	REG_L	a0, A0OFF(sp)	# a0 = set "that" to be "this"
-	REG_L	a1, A1OFF(sp)	# a1 = methodIndex
-
-	# t1 = methodIndex * 4
-	# (use shift instead of mult)
-	sll	t1, a1, 2
-
-	# calculate the function we need to jump to,
-	# which must then be saved in t9
+	#		       nsXPTCVariant* s);
+	la	t9, invoke_copy_to_stack
+	move	a0, sp
+	lw	a1, A2OFF(fp)
+	lw	a2, A3OFF(fp)
+	subu	sp, 16
+	jalr	t9
+	lw  	gp, GPOFF(fp)
+
+	# back to the variable stack frame
+	addu	sp, 16
+
+	# calculate the function we need to jump to, which must then be
+	# stored in t9
+	lw	a0, A0OFF(fp)	# a0 = set "that" to be "this"
+	lw	t0, A1OFF(fp)	# a1 = methodIndex
 	lw	t9, 0(a0)
-	addu	t9, t9, t1
-	lw	t9, 8(t9)
-
-	# a1..a3 and f13..f14 should now be set to what
-	# invoke_copy_to_stack told us. skip a0 and f12
-	# because that is the "this" pointer
-
-	REG_L	a1, 1*SZREG(s1)
-	REG_L	a2, 2*SZREG(s1)
-	REG_L	a3, 3*SZREG(s1)
-
-	l.d	$f13, 8(s1)
-	l.d	$f14, 16(s1)
-
-	# Create the stack pointer for the function, which must have 4 words
-	# of space for callee-saved args.  invoke_count_words allocated space
-        # for a0 starting at s1, so we just move s1 into sp.
-	move	sp, s1
-
-	jalr	ra, t9
-	lw	gp, GPOFF(s0)
-
-	move	sp, s0
-
-	REG_L	ra, RAOFF(sp)
-	REG_L	s0, S0OFF(sp)
-	addu	sp, FRAMESZ
+	# t0 = methodIndex << PTRLOG
+	sll	t0, t0, PTRLOG
+	addu	t9, t0
+#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
+	lw	t9, (t9)
+#else /* not G++ V3 ABI */
+	lw	t9, 2*PTRSIZE(t9)
+#endif /* G++ V3 ABI */
+
+	# Set a1-a3 to what invoke_copy_to_stack told us. a0 is already
+	# the "this" pointer. We don't have to care about floating
+	# point arguments, the non-FP "this" pointer as first argument
+	# means they'll never be used.
+	lw	a1, 1*SZREG(sp)
+	lw	a2, 2*SZREG(sp)
+	lw	a3, 3*SZREG(sp)
+
+	jalr	t9
+	# Micro-optimization: There's no gp usage below this point, so
+	# we don't reload.
+	# lw	gp, GPOFF(fp)
+
+	# leave variable stack frame
+	move	sp, fp
+
+	lw	ra, RAOFF(sp)
+	lw	fp, FPOFF(sp)
+
+	addiu	sp, FRAMESZ
 	j	ra
-.end _XPTC_InvokeByIndex
+END(_NS_InvokeByIndex_P)
diff --git a/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_mips.cpp b/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_mips.cpp
index a73e432..2c27a26 100644
--- a/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_mips.cpp
+++ b/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_mips.cpp
@@ -24,6 +24,7 @@
  * Contributor(s):
  *   Stuart Parmenter <pavlov@...>
  *   Brendan Eich     <brendan@...>
+ *   Thiemo Seufer    <seufer@...>
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either of the GNU General Public License Version 2 or later (the "GPL"),
@@ -52,10 +53,8 @@ invoke_count_words(PRUint32 paramCount, nsXPTCVariant* s)
     // Count a word for a0 even though it's never stored or loaded
     // We do this only for alignment of register pairs.
     PRUint32 result = 1;
-    for (PRUint32 i = 0; i < paramCount; i++, s++)
+    for (PRUint32 i = 0; i < paramCount; i++, result++, s++)
     {
-        result++;
-
         if (s->IsPtrData())
             continue;
 
@@ -68,6 +67,9 @@ invoke_count_words(PRUint32 paramCount, nsXPTCVariant* s)
 		result++;
 	    result++;
 	    break;
+
+        default:
+            break;
         }
     }
     return (result + 1) & ~(PRUint32)1;
@@ -88,8 +90,6 @@ invoke_copy_to_stack(PRUint32* d, PRUint32 paramCount,
             continue;
         }
 
-        *((void**)d) = s->val.p;
-
         switch(s->type)
         {
         case nsXPTType::T_I64    :
@@ -104,19 +104,20 @@ invoke_copy_to_stack(PRUint32* d, PRUint32 paramCount,
             if ((PRWord)d & 4) d++;
             *((double*)   d) = s->val.d;      d++;
             break;
+        default:
+            *((void**)d) = s->val.p;
+            break;
         }
     }
 }
 
-extern "C" nsresult _XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+extern "C" nsresult _NS_InvokeByIndex_P(nsISupports* that, PRUint32 methodIndex,
                                         PRUint32 paramCount,
                                         nsXPTCVariant* params);
 
-extern "C"
-XPTC_PUBLIC_API(nsresult)
-XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+EXPORT_XPCOM_API(nsresult)
+NS_InvokeByIndex_P(nsISupports* that, PRUint32 methodIndex,
                    PRUint32 paramCount, nsXPTCVariant* params)
 {
-    return _XPTC_InvokeByIndex(that, methodIndex, paramCount, params);
-}    
-
+    return _NS_InvokeByIndex_P(that, methodIndex, paramCount, params);
+}
diff --git a/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_mips.s b/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_mips.s
new file mode 100644
index 0000000..c2dc0c7
--- /dev/null
+++ b/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_mips.s
@@ -0,0 +1,142 @@
+/* -*- Mode: asm; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ * Version: MPL 1.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 Corp, Inc.
+ * Portions created by the Initial Developer are Copyright (C) 2001
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Stuart Parmenter <pavlov@...>
+ *   Chris Waterson   <waterson@...>
+ *   Thiemo Seufer    <seufer@...>
+ */
+
+/* This code is for MIPS using the O32 ABI. */
+
+#include <sys/regdef.h>
+#include <sys/asm.h>
+
+# NARGSAVE is the argument space in the callers frame, including extra
+# 'shadowed' space for the argument registers. The minimum of 4
+# argument slots is sometimes predefined in the header files.
+#ifndef NARGSAVE
+#define NARGSAVE 4
+#endif
+
+#define LOCALSZ 2	/* gp, ra */
+#define FRAMESZ ((((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK)
+
+#define RAOFF (FRAMESZ - (1*SZREG))
+#define GPOFF (FRAMESZ - (2*SZREG))
+
+#define A0OFF (FRAMESZ + (0*SZREG))
+#define A1OFF (FRAMESZ + (1*SZREG))
+#define A2OFF (FRAMESZ + (2*SZREG))
+#define A3OFF (FRAMESZ + (3*SZREG))
+
+	.text
+
+#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
+#define STUB_ENTRY(x)						\
+	.if x < 10;						\
+	.globl	_ZN14nsXPTCStubBase5Stub ##x ##Ev;		\
+	.type	_ZN14nsXPTCStubBase5Stub ##x ##Ev,@function;	\
+	.aent	_ZN14nsXPTCStubBase5Stub ##x ##Ev,0;		\
+_ZN14nsXPTCStubBase5Stub ##x ##Ev:;				\
+	SETUP_GP;						\
+	li	t0,x;						\
+	b	sharedstub;					\
+	.elseif x < 100;					\
+	.globl	_ZN14nsXPTCStubBase6Stub ##x ##Ev;		\
+	.type	_ZN14nsXPTCStubBase6Stub ##x ##Ev,@function;	\
+	.aent	_ZN14nsXPTCStubBase6Stub ##x ##Ev,0;		\
+_ZN14nsXPTCStubBase6Stub ##x ##Ev:;				\
+	SETUP_GP;						\
+	li	t0,x;						\
+	b	sharedstub;					\
+	.elseif x < 1000;					\
+	.globl	_ZN14nsXPTCStubBase7Stub ##x ##Ev;		\
+	.type	_ZN14nsXPTCStubBase7Stub ##x ##Ev,@function;	\
+	.aent	_ZN14nsXPTCStubBase7Stub ##x ##Ev,0;		\
+_ZN14nsXPTCStubBase7Stub ##x ##Ev:;				\
+	SETUP_GP;						\
+	li	t0,x;						\
+	b	sharedstub;					\
+	.else;							\
+	.err;							\
+	.endif
+#else /* not G++ V3 ABI */
+#define STUB_ENTRY(x)						\
+	.globl	Stub ##x ##__14nsXPTCStubBase;			\
+	.type	Stub ##x ##__14nsXPTCStubBase,@function;	\
+	.aent	Stub ##x ##__14nsXPTCStubBase,0;		\
+Stub ##x ##__14nsXPTCStubBase:;					\
+	SETUP_GP;						\
+	li	t0,x;						\
+	b	sharedstub
+#endif /* G++ V3 ABI */
+
+# SENTINEL_ENTRY is handled in the cpp file.
+#define SENTINEL_ENTRY(x)
+
+#
+# open a dummy frame for the function entries
+#
+	.align	2
+	.type	dummy,@function
+	.ent	dummy, 0
+	.frame	sp, FRAMESZ, ra 
+dummy:
+	SETUP_GP
+
+#include "xptcstubsdef.inc"
+
+sharedstub:
+	subu	sp, FRAMESZ
+
+	# specify the save register mask for gp, ra, a0-a3
+	.mask 0x900000F0, RAOFF-FRAMESZ
+
+	sw	ra, RAOFF(sp)
+	SAVE_GP(GPOFF)
+
+	# Micro-optimization: a0 is already loaded, and its slot gets
+	# ignored by PrepareAndDispatch, so no need to save it here.
+	# sw	a0, A0OFF(sp)
+	sw	a1, A1OFF(sp)
+	sw	a2, A2OFF(sp)
+	sw	a3, A3OFF(sp)
+
+	la	t9, PrepareAndDispatch
+
+	# t0 is methodIndex
+	move	a1, t0
+	# have a2 point to the begin of the argument space on stack
+	addiu	a2, sp, FRAMESZ
+
+	# PrepareAndDispatch(that, methodIndex, args)
+	jalr	t9
+
+	# Micro-optimization: Using jalr explicitly has the side-effect
+	# of not triggering .cprestore. This is ok because we have no
+	# gp reference below this point. It also allows better
+	# instruction sscheduling.
+	# lw	gp, GPOFF(fp)
+ 
+ 	lw	ra, RAOFF(sp)
+	addiu	sp, FRAMESZ
+	j	ra
+	END(dummy)
diff --git a/xpcom/reflect/xptcall/src/md/unix/xptcstubs_mips.cpp b/xpcom/reflect/xptcall/src/md/unix/xptcstubs_mips.cpp
index 4d60f7b..bdce59c 100644
--- a/xpcom/reflect/xptcall/src/md/unix/xptcstubs_mips.cpp
+++ b/xpcom/reflect/xptcall/src/md/unix/xptcstubs_mips.cpp
@@ -39,6 +39,7 @@
  * ***** END LICENSE BLOCK ***** */
 
 #include "xptcprivate.h"
+#include "xptiprivate.h"
 
 /*
  * This is for MIPS O32 ABI
@@ -54,7 +55,6 @@ PrepareAndDispatch(nsXPTCStubBase* self, PRUint32 methodIndex, PRUint32* args)
 
     nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
     nsXPTCMiniVariant* dispatchParams = NULL;
-    nsIInterfaceInfo* iface_info = NULL;
     const nsXPTMethodInfo* info;
     PRUint8 paramCount;
     PRUint8 i;
@@ -62,11 +62,8 @@ PrepareAndDispatch(nsXPTCStubBase* self, PRUint32 methodIndex, PRUint32* args)
 
     NS_ASSERTION(self,"no self");
 
-    self->GetInterfaceInfo(&iface_info);
-    NS_ASSERTION(iface_info,"no interface info");
-
-    iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
-    NS_ASSERTION(info,"no interface info");
+    self->mEntry->GetMethodInfo(PRUint16(methodIndex), &info);
+    NS_ASSERTION(info,"no method info");
 
     paramCount = info->GetParamCount();
 
@@ -109,9 +106,7 @@ PrepareAndDispatch(nsXPTCStubBase* self, PRUint32 methodIndex, PRUint32* args)
         }
     }
 
-    result = self->CallMethod((PRUint16)methodIndex, info, dispatchParams);
-
-    NS_RELEASE(iface_info);
+    result = self->mOuter->CallMethod((PRUint16)methodIndex, info, dispatchParams);
 
     if(dispatchParams != paramBuffer)
         delete [] dispatchParams;



1.1                  src/patchsets/mozilla-firefox/3.0.8/021_noxul-mips-fpic.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/021_noxul-mips-fpic.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/021_noxul-mips-fpic.patch?rev=1.1&content-type=text/plain

Index: 021_noxul-mips-fpic.patch
===================================================================
Upstream bug: https://bugzilla.mozilla.org/attachment.cgi?id=321598

We've had an issue on debian with the mips xpcom stubs because gcc 4.3 changed
its default from PIC to non-PIC. While the whole c++ code is built as PIC code,
the xptc stubs assembly ends up built as non-PIC.

It would be safer to build the assembly with -fPIC when C++ is built with -fPIC,
to avoid future possible problems with gcc changing its default again on
some random architecture. The attached patch does it for linux, but it might be
necessary to do the same on other architectures.

Patch $Revision: 1.1 $
diff --git a/configure.in b/configure.in
index 3730f0e..516da66 100644
--- a/configure.in
+++ b/configure.in
@@ -1279,6 +1279,7 @@ if test "$GNU_CC"; then
     WARNINGS_AS_ERRORS='-Werror'
     DSO_CFLAGS=''
     DSO_PIC_CFLAGS='-fPIC'
+    ASFLAGS="$ASFLAGS -fPIC"
     _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
     _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
     _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'



1.1                  src/patchsets/mozilla-firefox/3.0.8/030-firefox_encode_spaces.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/030-firefox_encode_spaces.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/030-firefox_encode_spaces.patch?rev=1.1&content-type=text/plain

Index: 030-firefox_encode_spaces.patch
===================================================================
# Upstream bug 440075
diff --git a/browser/base/content/urlbarBindings.xml b/browser/base/content/urlbarBindings.xml
--- a/browser/base/content/urlbarBindings.xml
+++ b/browser/base/content/urlbarBindings.xml
@@ -139,54 +139,55 @@
           // haven't seen that, so hopefully that behavior has changed.
           flavourSet.appendFlavour("text/x-moz-url");
           flavourSet.appendFlavour("text/unicode");
           flavourSet.appendFlavour("application/x-moz-file", "nsIFile");
           return flavourSet;
         ]]></body>
       </method>
 
+      <method name="_getSelectedValueForClipboard">
+        <body><![CDATA[
+          var val = this.value.substring(this.selectionStart, this.selectionEnd);
+
+          // If the entire value is selected and it's a valid non-javascript,
+          // non-data URI, encode it.
+          if (val == this.value &&
+              this.getAttribute("pageproxystate") == "valid") {
+            let uri;
+            let ioService = Cc["@mozilla.org/network/io-service;1"]
+                              .getService(Ci.nsIIOService);
+            try {
+              uri = ioService.newURI(val, null, null);
+            } catch (e) {}
+            if (uri && !uri.schemeIs("javascript") && !uri.schemeIs("data"))
+              val = uri.spec;
+          }
+
+          return val;
+        ]]></body>
+      </method>
+
       <field name="_copyCutController"><![CDATA[
         ({
           urlbar: this,
           doCommand: function(aCommand) {
             var urlbar = this.urlbar;
-            var start = urlbar.selectionStart;
-            var end = urlbar.selectionEnd;
-            if (start == end)
+            var val = urlbar._getSelectedValueForClipboard();
+            if (!val)
               return;
-            var val;
-            if (start == 0 && end == urlbar.textLength) {
-              val = urlbar.value;
 
-              // If the entire value is selected and it's a valid non-javascript,
-              // non-data URI, encode it.
-              var uri;
-              if (urlbar.getAttribute("pageproxystate") == "valid") {
-                var ioService = Cc["@mozilla.org/network/io-service;1"]
-                                  .getService(Ci.nsIIOService);
-                try {
-                  uri = ioService.newURI(val, null, null);
-                } catch (e) {}
-              }
-              if (uri && !uri.schemeIs("javascript") && !uri.schemeIs("data"))
-                 val = uri.spec;
+            if (aCommand == "cmd_cut" && this.isCommandEnabled(aCommand)) {
+              let start = urlbar.selectionStart;
+              let end = urlbar.selectionEnd;
+              urlbar.value = urlbar.value.substring(0, start) + urlbar.value.substring(end);
+              urlbar.selectionStart = urlbar.selectionEnd = start;
+              SetPageProxyState("invalid");
+            }
 
-              if (aCommand == "cmd_cut" && this.isCommandEnabled(aCommand)) {
-                urlbar.value = "";
-                SetPageProxyState("invalid");
-              }
-            } else {
-              val = urlbar.value.substring(start, end);
-              if (aCommand == "cmd_cut" && this.isCommandEnabled(aCommand)) {
-                urlbar.value = urlbar.value.substring(0, start) + urlbar.value.substring(end);
-                urlbar.selectionStart = urlbar.selectionEnd = start;
-                SetPageProxyState("invalid");
-              }
-            }
             Cc["@mozilla.org/widget/clipboardhelper;1"]
               .getService(Ci.nsIClipboardHelper)
               .copyString(val);
           },
           supportsCommand: function(aCommand) {
             switch (aCommand) {
               case "cmd_copy":
               case "cmd_cut":
@@ -268,16 +269,30 @@
         </setter>
       </property>
     </implementation>
 
     <handlers>
       <handler event="focus" phase="capturing" action="this._hideURLTooltip();"/>
       <handler event="dragover" phase="capturing" action="nsDragAndDrop.dragOver(event, this);"/>
       <handler event="dragdrop" phase="capturing" action="nsDragAndDrop.drop(event, this);"/>
+      <handler event="select"><![CDATA[
+        if (!Cc["@mozilla.org/widget/clipboard;1"]
+               .getService(Ci.nsIClipboard)
+               .supportsSelectionClipboard())
+          return;
+
+        var val = this._getSelectedValueForClipboard();
+        if (!val)
+          return;
+
+        Cc["@mozilla.org/widget/clipboardhelper;1"]
+          .getService(Ci.nsIClipboardHelper)
+          .copyStringToClipboard(val, Ci.nsIClipboard.kSelectionClipboard);
+      ]]></handler>
     </handlers>
 
   </binding>
 
   <!-- Note: this binding is applied to the autocomplete popup used in the Search bar and in web page content -->
   <binding id="browser-autocomplete-result-popup" extends="chrome://global/content/bindings/autocomplete.xml#autocomplete-result-popup">
     <implementation>
       <method name="openAutocompletePopup">



1.1                  src/patchsets/mozilla-firefox/3.0.8/055_firefox-2.0_gfbsd-pthreads.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/055_firefox-2.0_gfbsd-pthreads.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/055_firefox-2.0_gfbsd-pthreads.patch?rev=1.1&content-type=text/plain

Index: 055_firefox-2.0_gfbsd-pthreads.patch
===================================================================
# https://bugs.gentoo.org/show_bug.cgi?id=169825

--- mozilla/config/rules.mk.orig	Thu Sep 14 14:07:03 2006
+++ mozilla/config/rules.mk	Wed Oct 18 11:00:09 2006
@@ -442,9 +442,7 @@
 endif
 
 ifeq ($(OS_ARCH),FreeBSD)
-ifdef IS_COMPONENT
-EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
-endif
+EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc
 endif
 
 ifeq ($(OS_ARCH),NetBSD)
--- mozilla/configure.in.orig	2007-02-06 02:37:37 -0300
+++ mozilla/configure.in	2007-03-07 15:35:41 -0300
@@ -2667,7 +2667,7 @@
 *-hpux11.*)
 	;;
 *)
-	AC_CHECK_LIB(c_r, gethostbyname_r)
+	AC_SEARCH_LIBS([gethostbyname_r], [c_r])
 	;;
 esac
 AC_CHECK_LIB(m, atan)
--- mozilla/configure.in.orig   2007-02-06 02:37:37 -0300
+++ mozilla/configure.in	2007-03-07 13:59:53 -0300
@@ -2839,11 +2839,12 @@
 	    *-*-freebsd*)
 			AC_DEFINE(_REENTRANT)
 			AC_DEFINE(_THREAD_SAFE)
-			dnl -pthread links in -lc_r, so don't specify it explicitly.
-			if test "$ac_cv_have_dash_pthread" = "yes"; then
-				_PTHREAD_LDFLAGS="-pthread"
+			dnl use the environment PTHREAD_LIBS
+			if test -n "$PTHREAD_LIBS"; then
+				_PTHREAD_LDFLAGS="$PTHREAD_LIBS"
 			else
-				_PTHREAD_LDFLAGS="-lc_r"
+				_PTHREAD_LDFLAGS="-lpthread"
 			fi
+			LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
 			;;



1.1                  src/patchsets/mozilla-firefox/3.0.8/063_firefox-rpath-3.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/063_firefox-rpath-3.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/063_firefox-rpath-3.patch?rev=1.1&content-type=text/plain

Index: 063_firefox-rpath-3.patch
===================================================================
# Gentoo http://bugs.gentoo.org/show_bug.cgi?id=100597

--- mozilla/config/rules.mk.orig	2006-07-07 06:13:36.000000000 +0200
+++ mozilla/config/rules.mk	2006-07-19 13:22:04.000000000 +0200
@@ -510,7 +510,12 @@
 # 
 ifeq ($(OS_ARCH),Linux)
 ifdef IS_COMPONENT
+DSO_LDOPTS += -Wl,-rpath,'$$ORIGIN:$$ORIGIN/..'
+OS_LDFLAGS += -Wl,-rpath,'$$ORIGIN:$$ORIGIN/..'
 EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
+else
+DSO_LDOPTS += -Wl,-rpath,'$$ORIGIN'
+OS_LDFLAGS += -Wl,-rpath,'$$ORIGIN'
 endif
 endif 
 



1.1                  src/patchsets/mozilla-firefox/3.0.8/064_noxul-nsplugins-v3.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/064_noxul-nsplugins-v3.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/064_noxul-nsplugins-v3.patch?rev=1.1&content-type=text/plain

Index: 064_noxul-nsplugins-v3.patch
===================================================================
# Gentoo's Add a search path for plugins. by agriffis

--- xpcom/io/nsAppFileLocationProvider.cpp.original	2007-02-14 00:59:21.000000000 +0100
+++ xpcom/io/nsAppFileLocationProvider.cpp	2007-02-14 01:17:35.000000000 +0100
@@ -205,6 +205,14 @@
         if (NS_SUCCEEDED(rv))
             rv = localFile->AppendRelativeNativePath(PLUGINS_DIR_NAME);
     }
+    else if (nsCRT::strcmp(prop, GENTOO_NSPLUGINS_DIR) == 0)
+    {
+        rv = NS_NewNativeLocalFile(nsDependentCString(GENTOO_NSPLUGINS_DIR), PR_TRUE, getter_AddRefs(localFile));
+    }
+    else if (nsCRT::strcmp(prop, GENTOO_NSBROWSER_PLUGINS_DIR) == 0)
+    {
+        rv = NS_NewNativeLocalFile(nsDependentCString(GENTOO_NSBROWSER_PLUGINS_DIR), PR_TRUE, getter_AddRefs(localFile));
+    }
 #ifdef XP_MACOSX
     else if (nsCRT::strcmp(prop, NS_MACOSX_USER_PLUGIN_DIR) == 0)
     {
@@ -592,7 +600,7 @@
 
         *_retval = new nsAppDirectoryEnumerator(this, keys);
 #else
-        static const char* keys[] = { nsnull, NS_USER_PLUGINS_DIR, NS_APP_PLUGINS_DIR, nsnull };
+        static const char* keys[] = { nsnull, GENTOO_NSPLUGINS_DIR, GENTOO_NSBROWSER_PLUGINS_DIR, NS_USER_PLUGINS_DIR, NS_APP_PLUGINS_DIR, nsnull };
         if (!keys[0] && !(keys[0] = PR_GetEnv("MOZ_PLUGIN_PATH"))) {
             static const char nullstr = 0;
             keys[0] = &nullstr;



1.1                  src/patchsets/mozilla-firefox/3.0.8/068_noxul-nss-gentoo-fix.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/068_noxul-nss-gentoo-fix.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/068_noxul-nss-gentoo-fix.patch?rev=1.1&content-type=text/plain

Index: 068_noxul-nss-gentoo-fix.patch
===================================================================
--- security/manager/ssl/src/nsNSSComponent.cpp.orig	2007-05-27 21:04:27.000000000 +0200
+++ security/manager/ssl/src/nsNSSComponent.cpp	2007-05-27 21:17:56.000000000 +0200
@@ -130,6 +130,8 @@
 
 #define NS_CRYPTO_HASH_BUFFER_SIZE 4096
 
+#define GENTOO_NSS_LIBDIR  NS_LITERAL_CSTRING ("nss")
+
 static NS_DEFINE_CID(kNSSComponentCID, NS_NSSCOMPONENT_CID);
 int nsNSSComponent::mInstanceCount = 0;
 
@@ -708,11 +710,11 @@
     return;
 
   const char *possible_ckbi_locations[] = {
-    NS_XPCOM_CURRENT_PROCESS_DIR,
-    NS_GRE_DIR,
-    0 // This special value means: 
+    0,// This special value means: 
       //   search for ckbi in the directories on the shared
       //   library/DLL search path
+    NS_XPCOM_CURRENT_PROCESS_DIR,
+    NS_GRE_DIR
   };
 
   for (size_t il = 0; il < sizeof(possible_ckbi_locations)/sizeof(const char*); ++il) {
@@ -721,7 +723,16 @@
 
     if (!possible_ckbi_locations[il])
     {
-      fullLibraryPath = PR_GetLibraryName(nsnull, "nssckbi");
+    
+      directoryService->Get( NS_UNIX_LIB_DIR,
+                             NS_GET_IID(nsILocalFile), 
+                             getter_AddRefs(mozFile));
+
+      if (!mozFile) {
+        continue;
+      }
+
+      mozFile->AppendNative(GENTOO_NSS_LIBDIR);
     }
     else
     {
@@ -733,11 +744,12 @@
         continue;
       }
 
-      nsCAutoString processDir;
-      mozFile->GetNativePath(processDir);
-      fullLibraryPath = PR_GetLibraryName(processDir.get(), "nssckbi");
     }
 
+    nsCAutoString processDir;
+    mozFile->GetNativePath(processDir);
+    fullLibraryPath = PR_GetLibraryName(processDir.get(), "nssckbi");
+
     if (!fullLibraryPath) {
       continue;
     }
--- config/config.mk.orig	2007-05-27 23:32:35.000000000 +0200
+++ config/config.mk	2007-05-27 23:34:30.000000000 +0200
@@ -778,6 +778,7 @@
 
 DEFINES		+= -DOSTYPE=\"$(OS_CONFIG)\"
 DEFINES		+= -DOSARCH=$(OS_ARCH)
+DEFINES		+= -DGENTOO_LIB_DIR=\"$(libdir)\"
 
 # For profiling
 ifdef ENABLE_EAZEL_PROFILER
--- xpcom/io/SpecialSystemDirectory.cpp.orig	2007-05-27 23:36:29.000000000 +0200
+++ xpcom/io/SpecialSystemDirectory.cpp	2007-05-27 23:37:48.000000000 +0200
@@ -560,7 +560,7 @@
                                          PR_TRUE, 
                                          aFile);
         case Unix_LibDirectory:
-            return NS_NewNativeLocalFile(nsDependentCString("/usr/local/lib/netscape/"), 
+            return NS_NewNativeLocalFile(nsDependentCString(GENTOO_LIB_DIR), 
                                          PR_TRUE, 
                                          aFile);
 



1.1                  src/patchsets/mozilla-firefox/3.0.8/080_gcc-4.4-elif.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/080_gcc-4.4-elif.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/080_gcc-4.4-elif.patch?rev=1.1&content-type=text/plain

Index: 080_gcc-4.4-elif.patch
===================================================================
diff -Naurp mozilla-orig/toolkit/xre/nsAppRunner.cpp mozilla/toolkit/xre/nsAppRunner.cpp
--- mozilla-orig/toolkit/xre/nsAppRunner.cpp	2008-11-17 08:36:43.000000000 -0600
+++ mozilla/toolkit/xre/nsAppRunner.cpp	2009-03-01 20:35:11.000000000 -0600
@@ -1459,7 +1459,7 @@ XRE_GetBinaryPath(const char* argv0, nsI
   if (NS_FAILED(rv))
     return rv;
 
-#elif
+#else
 #error Oops, you need platform-specific code here
 #endif
 



1.1                  src/patchsets/mozilla-firefox/3.0.8/090-unaligned.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/090-unaligned.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/090-unaligned.patch?rev=1.1&content-type=text/plain

Index: 090-unaligned.patch
===================================================================
diff -ur mozilla.orig/toolkit/components/url-classifier/src/nsUrlClassifierDBService.cpp mozilla/toolkit/components/url-classifier/src/nsUrlClassifierDBService.cpp
--- mozilla.orig/toolkit/components/url-classifier/src/nsUrlClassifierDBService.cpp	2009-04-01 12:47:52.000000000 +0000
+++ mozilla/toolkit/components/url-classifier/src/nsUrlClassifierDBService.cpp	2009-04-01 12:48:38.000000000 +0000
@@ -332,7 +332,9 @@
             (mHaveComplete && mCompleteHash < entry.mCompleteHash));
   }
 
-  PRInt64 mId;
+  char __dummy_to_make_mid_aligned[4];
+
+  PRInt64 mId __attribute__ ((packed));
 
   nsUrlClassifierDomainHash mKey;
 
@@ -2023,8 +2025,9 @@
           return NS_ERROR_FAILURE;
         }
         const nsCSubstring& str = Substring(chunk, start, 4);
-        const PRUint32 *p = reinterpret_cast<const PRUint32*>(str.BeginReading());
-        entry->mAddChunkId = PR_ntohl(*p);
+        PRUint32 p;
+        memcpy(&p, reinterpret_cast<const PRUint32*>(str.BeginReading()), 4);
+        entry->mAddChunkId = PR_ntohl(p);
         if (entry->mAddChunkId == 0) {
           NS_WARNING("Received invalid chunk number.");
           return NS_ERROR_FAILURE;
@@ -2052,8 +2055,9 @@
 
         if (chunkType == CHUNK_SUB) {
           const nsCSubstring& str = Substring(chunk, start, 4);
-          const PRUint32 *p = reinterpret_cast<const PRUint32*>(str.BeginReading());
-          entry->mAddChunkId = PR_ntohl(*p);
+          PRUint32 p;
+          memcpy(&p, reinterpret_cast<const PRUint32*>(str.BeginReading()), 4);
+          entry->mAddChunkId = PR_ntohl(p);
           if (entry->mAddChunkId == 0) {
             NS_WARNING("Received invalid chunk number.");
             return NS_ERROR_FAILURE;



1.1                  src/patchsets/mozilla-firefox/3.0.8/096_glibc-maxpathlen.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/096_glibc-maxpathlen.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/096_glibc-maxpathlen.patch?rev=1.1&content-type=text/plain

Index: 096_glibc-maxpathlen.patch
===================================================================

# HG changeset patch
# User Dmitry Potapov <dpotapov@...>
# Date 1224561357 18000
# Node ID adf33dbb59d04461121d236451dc8b5973b96fab
# Parent 6e9a29a235ce506b4ca35fabefa34b48033beb69
Bug 412610 - "MAXPATHLEN too small for glibc's realpath()" (define MAXPATHLEN as PATH_MAX when PATH_MAX is available) [r=bsmedberg]

--- browser/components/migration/src/nsDogbertProfileMigrator.cpp.old	Tue Oct 21 16:36:29 2008 +1300
+++ browser/components/migration/src/nsDogbertProfileMigrator.cpp	Mon Oct 20 22:55:57 2008 -0500
@@ -58,9 +58,12 @@
 #include "nsDirectoryServiceDefs.h"
 #include "nsDirectoryServiceUtils.h"
 #include <stdlib.h>
+#include <limits.h>
 
 #ifndef MAXPATHLEN
-#ifdef _MAX_PATH
+#ifdef PATH_MAX
+#define MAXPATHLEN PATH_MAX
+#elif defined(_MAX_PATH)
 #define MAXPATHLEN _MAX_PATH
 #elif defined(CCHMAXPATH)
 #define MAXPATHLEN CCHMAXPATH
--- browser/components/migration/src/nsProfileMigrator.cpp.old	Tue Oct 21 16:36:29 2008 +1300
+++ browser/components/migration/src/nsProfileMigrator.cpp	Mon Oct 20 22:55:57 2008 -0500
@@ -63,12 +63,16 @@
 #include <windows.h>
 #include "nsIWindowsRegKey.h"
 #include "nsILocalFileWin.h"
+#else
+#include <limits.h>
 #endif
 
 #include "nsAutoPtr.h"
 
 #ifndef MAXPATHLEN
-#ifdef _MAX_PATH
+#ifdef PATH_MAX
+#define MAXPATHLEN PATH_MAX
+#elif defined(_MAX_PATH)
 #define MAXPATHLEN _MAX_PATH
 #elif defined(CCHMAXPATH)
 #define MAXPATHLEN CCHMAXPATH
--- toolkit/mozapps/update/src/updater/updater.cpp.old	Tue Oct 21 16:36:29 2008 +1300
+++ toolkit/mozapps/update/src/updater/updater.cpp	Mon Oct 20 22:55:57 2008 -0500
@@ -118,7 +118,9 @@ void LaunchChild(int argc, char **argv);
 #endif
 
 #ifndef MAXPATHLEN
-# ifdef MAX_PATH
+# ifdef PATH_MAX
+#  define MAXPATHLEN PATH_MAX
+# elif defined(_MAX_PATH)
 #  define MAXPATHLEN MAX_PATH
 # elif defined(_MAX_PATH)
 #  define MAXPATHLEN _MAX_PATH
--- toolkit/xre/nsAppRunner.h.old	Tue Oct 21 16:36:29 2008 +1300
+++ toolkit/xre/nsAppRunner.h	Mon Oct 20 22:55:57 2008 -0500
@@ -40,10 +40,14 @@
 
 #ifdef XP_WIN
 #include <windows.h>
+#else
+#include <limits.h>
 #endif
 
 #ifndef MAXPATHLEN
-#ifdef _MAX_PATH
+#ifdef PATH_MAX
+#define MAXPATHLEN PATH_MAX
+#elif defined(_MAX_PATH)
 #define MAXPATHLEN _MAX_PATH
 #elif defined(CCHMAXPATH)
 #define MAXPATHLEN CCHMAXPATH
 




1.1                  src/patchsets/mozilla-firefox/3.0.8/097_noxul_glibc-maxpathlen.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/097_noxul_glibc-maxpathlen.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/097_noxul_glibc-maxpathlen.patch?rev=1.1&content-type=text/plain

Index: 097_noxul_glibc-maxpathlen.patch
===================================================================
--- xpcom/build/nsXPCOMPrivate.h.old	Tue Oct 21 16:36:29 2008 +1300
+++ xpcom/build/nsXPCOMPrivate.h	Mon Oct 20 22:55:57 2008 -0500
@@ -231,6 +231,7 @@ NS_GetFrozenFunctions(XPCOMFunctions *en
 #define XUL_DLL   "libxul"MOZ_DLL_SUFFIX
 
 #else // Unix
+#include <limits.h> // for PATH_MAX
 
 #define XPCOM_DLL "libxpcom"MOZ_DLL_SUFFIX
 




1.1                  src/patchsets/mozilla-firefox/3.0.8/100-system-hunspell-corrections.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/100-system-hunspell-corrections.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/100-system-hunspell-corrections.patch?rev=1.1&content-type=text/plain

Index: 100-system-hunspell-corrections.patch
===================================================================
--- ./extensions/spellcheck/hunspell/src/mozHunspell.cpp.orig	2008-02-15 19:21:21.000000000 +0000
+++ ./extensions/spellcheck/hunspell/src/mozHunspell.cpp	2008-02-15 19:23:20.000000000 +0000
@@ -63,6 +63,9 @@
 #include "nsISimpleEnumerator.h"
 #include "nsIDirectoryEnumerator.h"
 #include "nsIFile.h"
+#ifdef MOZ_NATIVE_HUNSPELL
+#include "nsILocalFile.h"
+#endif
 #include "nsDirectoryServiceUtils.h"
 #include "nsDirectoryServiceDefs.h"
 #include "mozISpellI18NManager.h"
@@ -307,7 +310,16 @@
     return;
 
   nsCOMPtr<nsIFile> dictDir;
-  rv = dirSvc->Get(DICTIONARY_SEARCH_DIRECTORY,
+  #ifdef MOZ_NATIVE_HUNSPELL
+    nsCOMPtr<nsILocalFile>  localFile;
+    rv = NS_NewNativeLocalFile(nsDependentCString("/usr/share/myspell"),PR_TRUE, getter_AddRefs(localFile));
+    if (localFile && NS_SUCCEEDED(rv)) {
+      localFile->QueryInterface(NS_GET_IID(nsIFile), getter_AddRefs(dictDir));
+      LoadDictionariesFromDir(dictDir);
+    }
+    else {
+  #endif
+    rv = dirSvc->Get(DICTIONARY_SEARCH_DIRECTORY,
                    NS_GET_IID(nsIFile), getter_AddRefs(dictDir));
   if (NS_SUCCEEDED(rv)) {
     LoadDictionariesFromDir(dictDir);
@@ -332,6 +344,9 @@
       LoadDictionariesFromDir(appDir);
     }
   }
+#ifdef MOZ_NATIVE_HUNSPELL
+  }
+#endif
 
   nsCOMPtr<nsISimpleEnumerator> dictDirs;
   rv = dirSvc->Get(DICTIONARY_SEARCH_DIRECTORY_LIST,
--- ./extensions/spellcheck/src/Makefile.in.orig	2008-02-15 19:25:58.000000000 +0000
+++ ./extensions/spellcheck/src/Makefile.in	2008-02-15 19:28:36.000000000 +0000
@@ -63,9 +63,16 @@
 		  txtsvc \
 		  uconv \
 		  unicharutil \
+		  xulapp \
 		  $(NULL)
 
-CPPSRCS		= \
+ifdef MOZ_NATIVE_HUNSPELL
+CPPSRCS         += mozHunspell.cpp
+ifdef MOZ_XUL_APP
+CPPSRCS         += mozHunspellDirProvider.cpp
+endif
+endif
+CPPSRCS		+= \
 		mozSpellCheckerFactory.cpp	\
 		mozSpellChecker.cpp		\
 		mozPersonalDictionary.cpp	\
@@ -80,8 +87,14 @@
 SHARED_LIBRARY_LIBS += ../osxspell/src/$(LIB_PREFIX)osxspell_s.$(LIB_SUFFIX)
 LOCAL_INCLUDES += -I$(srcdir)/../osxspell/src
 else
+ifndef MOZ_NATIVE_HUNSPELL
 SHARED_LIBRARY_LIBS += ../hunspell/src/$(LIB_PREFIX)hunspell_s.$(LIB_SUFFIX)
 LOCAL_INCLUDES += -I$(srcdir)/../hunspell/src
+else
+LOCAL_INCLUDES += $(MOZ_HUNSPELL_CFLAGS) \
+		-DMOZ_NATIVE_HUNSPELL \
+		$(NULL)
+endif
 endif
 
 EXTRA_DSO_LDOPTS = \
@@ -96,3 +112,18 @@
 LOCAL_INCLUDES += \
 	-I$(topsrcdir)/xpcom/io \
 	$(NULL)
+
+ifdef MOZ_NATIVE_HUNSPELL
+export:: $(srcdir)/../hunspell/src/mozHunspell.cpp
+	$(INSTALL) $(srcdir)/../hunspell/src/mozHunspell.* .
+GARBAGE += mozHunspell.$(OBJ_SUFFIX) mozHunspell.cpp
+clean::
+	rm -f mozHunspell.*
+ifdef MOZ_XUL_APP
+export:: $(srcdir)/../hunspell/src/mozHunspellDirProvider.cpp
+	$(INSTALL) $(srcdir)/../hunspell/src/mozHunspellDirProvider.* .
+GARBAGE += mozHunspellDirProvider.$(OBJ_SUFFIX) mozHunspellDirProvider.cpp
+clean::
+	rm -f mozHunspellDirProvider.*
+endif
+endif
--- ./extensions/spellcheck/Makefile.in.orig	2008-02-15 19:23:39.000000000 +0000
+++ ./extensions/spellcheck/Makefile.in	2008-02-15 19:24:34.000000000 +0000
@@ -42,13 +42,19 @@
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= spellchecker
-DIRS		= idl locales
+ifndef MOZ_NATIVE_HUNSPELL
+DIRS		= idl locales
+else
+DIRS		= idl
+endif
 
 ifeq (camino,$(MOZ_BUILD_APP))
 DIRS		+= osxspell
 else
+ifndef MOZ_NATIVE_HUNSPELL
 DIRS		+= hunspell
 endif
+endif
 
 DIRS += src



1.1                  src/patchsets/mozilla-firefox/3.0.8/300-xulonly-gnome_firefox_default_browser.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/300-xulonly-gnome_firefox_default_browser.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/300-xulonly-gnome_firefox_default_browser.patch?rev=1.1&content-type=text/plain

Index: 300-xulonly-gnome_firefox_default_browser.patch
===================================================================
---
 browser/components/shell/src/nsGNOMEShellService.cpp |   16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

Index: mozilla/browser/components/shell/src/nsGNOMEShellService.cpp
===================================================================
--- mozilla.orig/browser/components/shell/src/nsGNOMEShellService.cpp
+++ mozilla/browser/components/shell/src/nsGNOMEShellService.cpp
@@ -62,16 +62,18 @@
 #endif
 
 #include <glib.h>
 #include <glib-object.h>
 #include <gdk-pixbuf/gdk-pixbuf.h>
 #include <limits.h>
 #include <stdlib.h>
 
+#define SYSTEM_PATH_BUILD 1
+
 struct ProtocolAssociation
 {
   const char *name;
   PRBool essential;
 };
 
 struct MimeTypeAssociation
 {
@@ -135,17 +137,16 @@
   return appPath->GetNativePath(mAppPath);
 }
 
 NS_IMPL_ISUPPORTS1(nsGNOMEShellService, nsIShellService)
 
 PRBool
 nsGNOMEShellService::KeyMatchesAppName(const char *aKeyValue) const
 {
-
   gchar *commandPath;
   if (mUseLocaleFilenames) {
     gchar *nativePath = g_filename_from_utf8(aKeyValue, -1, NULL, NULL, NULL);
     if (!nativePath) {
       NS_ERROR("Error converting path to filesystem encoding");
       return PR_FALSE;
     }
 
@@ -153,19 +154,25 @@
     g_free(nativePath);
   } else {
     commandPath = g_find_program_in_path(aKeyValue);
   }
 
   if (!commandPath)
     return PR_FALSE;
 
+#ifdef SYSTEM_PATH_BUILD
+  PRBool matches = NS_LITERAL_CSTRING("/usr/bin/" MOZ_APP_NAME).Equals(commandPath);
+  g_free(commandPath);
+  return matches;
+#else
   PRBool matches = mAppPath.Equals(commandPath);
   g_free(commandPath);
   return matches;
+#endif
 }
 
 NS_IMETHODIMP
 nsGNOMEShellService::IsDefaultBrowser(PRBool aStartupCheck,
                                       PRBool* aIsDefaultBrowser)
 {
   *aIsDefaultBrowser = PR_FALSE;
   if (aStartupCheck)
@@ -211,18 +218,23 @@
 #ifdef DEBUG
   if (aForAllUsers)
     NS_WARNING("Setting the default browser for all users is not yet supported");
 #endif
 
   nsCOMPtr<nsIGConfService> gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
 
   nsCAutoString schemeList;
+
+#ifdef SYSTEM_PATH_BUILD
+  nsCAutoString appKeyValue(NS_LITERAL_CSTRING("/usr/bin/" MOZ_APP_NAME));
+#else 
   nsCAutoString appKeyValue(mAppPath);
-  appKeyValue.Append(" \"%s\"");
+#endif
+  appKeyValue.Append(" %s");
   unsigned int i;
 
   for (i = 0; i < NS_ARRAY_LENGTH(appProtocols); ++i) {
     schemeList.Append(nsDependentCString(appProtocols[i].name));
     schemeList.Append(',');
 
     if (appProtocols[i].essential || aClaimAllTypes) {
       gconf->SetAppForProtocol(nsDependentCString(appProtocols[i].name),



1.1                  src/patchsets/mozilla-firefox/3.0.8/667_typeahead-broken-v4.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/667_typeahead-broken-v4.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/667_typeahead-broken-v4.patch?rev=1.1&content-type=text/plain

Index: 667_typeahead-broken-v4.patch
===================================================================
--- extensions/typeaheadfind/src/Makefile.in.orig	2007-06-19 22:55:23.000000000 +0200
+++ extensions/typeaheadfind/src/Makefile.in	2007-06-19 22:58:33.000000000 +0200
@@ -46,8 +46,7 @@
 ifneq ($(OS_ARCH),WINNT)
 SHORT_LIBNAME = typahead
 endif
-GRE_MODULE	= 1
-MOZILLA_INTERNAL_API = 1
+LIBXUL_LIBRARY = 1
 
 PACKAGE_FILE = typeaheadfind.pkg
 
@@ -84,9 +83,6 @@
   nsTypeAheadFindRegistration.cpp \
   $(NULL)
 
-EXTRA_DSO_LIBS = \
-    gkgfx \
-    $(NULL)
 
 EXTRA_DSO_LDOPTS += \
 		$(LIBS_DIR) \
--- extensions/typeaheadfind/public/nsITypeAheadFind.idl	2007-08-05 20:29:55.000000000 +0200
+++ /dev/null	2007-08-04 01:52:23.948566729 +0200
@@ -1,88 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * 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):
- *   Original Author: Aaron Leventhal (aaronl@...)
- *
- * 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.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#include "nsISupports.idl"
-#include "domstubs.idl"
-#include "nsISupportsPrimitives.idl"
-
-%{ C++
-  #include "nsIDOMEvent.h"
-
-  #define NS_TYPEAHEADFIND_CID \
-    {0x46590685, 0xbc00, 0x4aac, {0xab, 0xed, 0x2c, 0x10, 0xa5, 0xb9, 0x45, 0xa4}}
-
-  #define NS_TYPEAHEADFIND_CONTRACTID "@mozilla.org/suitetypeaheadfind;1"
-%}
-
-interface nsIDOMEvent;
-
-[scriptable, uuid(AD1C62CC-72F4-4c5b-BE78-503854F9E0D8)]
-interface nsISuiteTypeAheadFind : nsISupports
-{
-  /** Is type ahead find mode currently on? */
-  readonly attribute boolean isActive;
-
-  /** Manually start type ahead find mode */
-  void startNewFind(in nsIDOMWindow aWindow, in boolean aLinksOnly);
-
-  /** Manually cancel type ahead find mode */
-  void cancelFind();
-
-  /**
-    * Will find as you type start automatically if the user
-    * types with the focus on page content other than a textfield or select?
-    * If autostart is off, the startNewFind() method can be used to enact
-    * type ahead find, as well as cmd_findTypeLinks or cmd_findTypeText.
-    */
-  void setAutoStart(in nsIDOMWindow aWindow, in boolean aIsAutoStartOn);
-  boolean getAutoStart(in nsIDOMWindow aWindow);  
-
-  /**
-    * Find next recurrence if typeaheadfind was the last used find, 
-    * as opposed to regular find. Returns false in nsISupportsPRBool if we
-    * don't handle the request.
-    */
-  void findNext(in boolean aReverse, in nsISupportsInterfacePointer aCallerWindowSupports);
-
-  /*
-   * Go back and remove one character from find string
-   * Returns true if backspace used
-   */
-  boolean backOneChar();
-};
-
--- /dev/null	2007-08-04 01:52:23.948566729 +0200
+++ extensions/typeaheadfind/public/nsISuiteTypeAheadFind.idl	2007-08-05 20:07:55.000000000 +0200
@@ -0,0 +1,88 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * 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):
+ *   Original Author: Aaron Leventhal (aaronl@...)
+ *
+ * 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.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#include "nsISupports.idl"
+#include "domstubs.idl"
+#include "nsISupportsPrimitives.idl"
+
+%{ C++
+  #include "nsIDOMEvent.h"
+
+  #define NS_TYPEAHEADFIND_CID \
+    {0x46590685, 0xbc00, 0x4aac, {0xab, 0xed, 0x2c, 0x10, 0xa5, 0xb9, 0x45, 0xa4}}
+
+  #define NS_TYPEAHEADFIND_CONTRACTID "@mozilla.org/suitetypeaheadfind;1"
+%}
+
+interface nsIDOMEvent;
+
+[scriptable, uuid(AD1C62CC-72F4-4c5b-BE78-503854F9E0D8)]
+interface nsISuiteTypeAheadFind : nsISupports
+{
+  /** Is type ahead find mode currently on? */
+  readonly attribute boolean isActive;
+
+  /** Manually start type ahead find mode */
+  void startNewFind(in nsIDOMWindow aWindow, in boolean aLinksOnly);
+
+  /** Manually cancel type ahead find mode */
+  void cancelFind();
+
+  /**
+    * Will find as you type start automatically if the user
+    * types with the focus on page content other than a textfield or select?
+    * If autostart is off, the startNewFind() method can be used to enact
+    * type ahead find, as well as cmd_findTypeLinks or cmd_findTypeText.
+    */
+  void setAutoStart(in nsIDOMWindow aWindow, in boolean aIsAutoStartOn);
+  boolean getAutoStart(in nsIDOMWindow aWindow);  
+
+  /**
+    * Find next recurrence if typeaheadfind was the last used find, 
+    * as opposed to regular find. Returns false in nsISupportsPRBool if we
+    * don't handle the request.
+    */
+  void findNext(in boolean aReverse, in nsISupportsInterfacePointer aCallerWindowSupports);
+
+  /*
+   * Go back and remove one character from find string
+   * Returns true if backspace used
+   */
+  boolean backOneChar();
+};
+
--- extensions/typeaheadfind/src/nsTypeAheadFind.h.orig	2007-08-05 20:27:01.000000000 +0200
+++ extensions/typeaheadfind/src/nsTypeAheadFind.h	2007-08-05 20:27:12.000000000 +0200
@@ -60,7 +60,7 @@
 #include "nsIDOMRange.h"
 #include "nsIDOMWindow.h"
 #include "nsIDocShellTreeItem.h"
-#include "nsITypeAheadFind.h"
+#include "nsISuiteTypeAheadFind.h"
 #include "nsIStringBundle.h"
 #include "nsISupportsArray.h"
 #include "nsISound.h"
--- extensions/typeaheadfind/public/Makefile.in.orig	2008-02-09 15:11:25.000000000 +0100
+++ extensions/typeaheadfind/public/Makefile.in	2008-02-09 15:12:54.000000000 +0100
@@ -45,6 +45,6 @@
 XPIDL_MODULE=suitetypeaheadfind
 GRE_MODULE	= 1
 
-XPIDLSRCS = nsITypeAheadFind.idl
+XPIDLSRCS = nsISuiteTypeAheadFind.idl
 
 include $(topsrcdir)/config/rules.mk



1.1                  src/patchsets/mozilla-firefox/3.0.8/800-noxul-bsd-include.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/800-noxul-bsd-include.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/mozilla-firefox/3.0.8/800-noxul-bsd-include.patch?rev=1.1&content-type=text/plain

Index: 800-noxul-bsd-include.patch
===================================================================
--- configure.in.old	2007-12-10 12:29:54 +0000
+++ configure.in	2007-12-10 12:38:19 +0000
@@ -2862,6 +2862,7 @@
     ;;
 *)
     AC_CHECK_LIB(m, atan)
+    AC_CHECK_HEADER(dlfcn.h, AC_DEFINE(HAVE_DLCNF_H))
     AC_CHECK_LIB(dl, dlopen,
     AC_CHECK_HEADER(dlfcn.h, 
         LIBS="-ldl $LIBS"
--- xpcom/base/nsStackWalk.cpp.old	2007-12-10 12:43:02 +0000
+++ xpcom/base/nsStackWalk.cpp	2007-12-10 12:43:51 +0000
@@ -1111,7 +1111,7 @@
 #define __USE_GNU
 #endif
 
-#if defined(HAVE_LIBDL) || defined(XP_MACOSX)
+#if defined(HAVE_DLCNF_H) || defined(XP_MACOSX)
 #include <dlfcn.h>
 #endif
 





Navigation:
Lists: gentoo-commits: < Prev By Thread Next > < Prev By Date Next >
Previous by thread:
gentoo commit in src/patchsets/mozilla-firefox/3.0.8: - New directory
Next by thread:
gentoo-x86 commit in net-libs/xulrunner: xulrunner-1.9.0.8.ebuild ChangeLog
Previous by date:
gentoo commit in src/patchsets/mozilla-firefox/3.0.7: 000_flex-configure-LANG.patch 001-firefox_gentoo_install_dirs.patch 003-bz386904_config_rules_install_dist_files.patch 005-installer_shouldnt_copy_xulrunner.patch 007-xulonly-dont_depend_on_nspr_sources.patch 009-xulonly-nspr_flags_by_pkg_config_hack.patch 020_noxul-mips-asm.patch 021_noxul-mips-fpic.patch 030-firefox_encode_spaces.patch 055_firefox-2.0_gfbsd-pthreads.patch 063_firefox-rpath-3.patch 064_noxul-nsplugins-v3.patch 068_noxul-nss-gentoo-fix.patch 080_gcc-4.4-elif.patch 096_glibc-maxpathlen.patch 097_noxul_glibc-maxpathlen.patch 100-system-hunspell-corrections.patch 300-xulonly-gnome_firefox_default_browser.patch 667_typeahead-broken-v4.patch 800-noxul-bsd-include.patch
Next by date:
gentoo-x86 commit in net-libs/xulrunner: xulrunner-1.9.0.8.ebuild ChangeLog


Updated Jul 08, 2010

Summary: Archive of the gentoo-commits mailing list.

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.