This patch updates gcc-4.4.1 to gcc-4.4.3. 

Patches have been reapplied from the existing 4.4.1 patchstack.
patches for already fixed bugs were dropped.

Tested with/for i686, arm-xscale and PowerPC toolchains. Resulting
firmware is functional and everything seems to work as usual.

Carsten

---
commit 3992038fab61ae657b534cd1b584962af0235d94
Author: Carsten Schlote <[email protected]>
Date:   Thu Jan 21 13:56:14 2010 +0100

    [gcc-4.4.3] Cloned patch-stack from GCC 4.4.1
    
    Signed-off-by: Carsten Schlote <[email protected]>

diff --git a/patches/gcc-4.4.3/generic/arm-softfloat.diff 
b/patches/gcc-4.4.3/generic/arm-softfloat.diff
new file mode 100644
index 0000000..fb8e852
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/arm-softfloat.diff
@@ -0,0 +1,52 @@
+#
+# Submitted-By: Marc Kleine-Budde
+# Committed-By: Robert Schwebel
+#
+# Error:
+#
+# no error
+#
+# Description:
+#
+# Link assembler softfloat functions into gcc. As the functions are
+# there in that case anyway, don't add switches for float lib.
+#
+# State:
+#
+# upstream will not fix this because oabi is dead
+#
+
+---
+ gcc/config/arm/linux-elf.h |    2 +-
+ gcc/config/arm/t-linux     |    5 ++++-
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+Index: gcc-4.4.1/gcc/config/arm/linux-elf.h
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/arm/linux-elf.h  2009-11-19 13:43:49.000000000 
+0100
++++ gcc-4.4.1/gcc/config/arm/linux-elf.h       2009-11-19 13:45:34.000000000 
+0100
+@@ -60,7 +60,7 @@
+    %{shared:-lc} \
+    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
+ 
+-#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
++#define LIBGCC_SPEC "-lgcc"
+ 
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+ 
+Index: gcc-4.4.1/gcc/config/arm/t-linux
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/arm/t-linux      2009-11-19 13:43:49.000000000 
+0100
++++ gcc-4.4.1/gcc/config/arm/t-linux   2009-11-19 13:45:34.000000000 +0100
+@@ -4,7 +4,10 @@
+ 
+ LIB1ASMSRC = arm/lib1funcs.asm
+ LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \
+-      _arm_addsubdf3 _arm_addsubsf3
++      _arm_addsubdf3 _arm_addsubsf3 \
++      _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
++      _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
++      _fixsfsi _fixunssfsi _floatdidf _floatdisf
+ 
+ # MULTILIB_OPTIONS = mhard-float/msoft-float
+ # MULTILIB_DIRNAMES = hard-float soft-float
diff --git 
a/patches/gcc-4.4.3/generic/gentoo/00_all_gcc-4.1-alpha-mieee-default.patch 
b/patches/gcc-4.4.3/generic/gentoo/00_all_gcc-4.1-alpha-mieee-default.patch
new file mode 100644
index 0000000..2db41eb
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/gentoo/00_all_gcc-4.1-alpha-mieee-default.patch
@@ -0,0 +1,40 @@
+Set the default behavior on alpha to use -mieee since the large majority of
+time we want this (bad/weird things can happen with packages built without
+-mieee).
+
+To satisfy those people who may not want -mieee forced on them all the time,
+we also provide -mno-ieee.
+
+Patch by Mike Frysinger <[email protected]>
+
+---
+ gcc/config/alpha/alpha.h   |    2 ++
+ gcc/config/alpha/alpha.opt |    2 +-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+Index: gcc-4.4.1/gcc/config/alpha/alpha.h
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/alpha/alpha.h    2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/gcc/config/alpha/alpha.h 2009-11-19 13:45:36.000000000 +0100
+@@ -95,6 +95,8 @@
+   while (0)
+ #endif
+ 
++#define CPP_SPEC "%{!no-ieee:-mieee}"
++
+ #define WORD_SWITCH_TAKES_ARG(STR)            \
+  (!strcmp (STR, "rpath") || DEFAULT_WORD_SWITCH_TAKES_ARG(STR))
+ 
+Index: gcc-4.4.1/gcc/config/alpha/alpha.opt
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/alpha/alpha.opt  2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/gcc/config/alpha/alpha.opt       2009-11-19 13:45:36.000000000 
+0100
+@@ -39,7 +39,7 @@
+ Request IEEE-conformant math library routines (OSF/1)
+ 
+ mieee
+-Target Report RejectNegative Mask(IEEE)
++Target Report Mask(IEEE)
+ Emit IEEE-conformant code, without inexact exceptions
+ 
+ mieee-with-inexact
diff --git a/patches/gcc-4.4.3/generic/gentoo/00_all_gcc-trampolinewarn.patch 
b/patches/gcc-4.4.3/generic/gentoo/00_all_gcc-trampolinewarn.patch
new file mode 100644
index 0000000..f473cf4
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/gentoo/00_all_gcc-trampolinewarn.patch
@@ -0,0 +1,41 @@
+       This trivial patch causes gcc to emit a warning whenever
+       it generates a trampoline.  These are otherwise hard to
+       locate.  It is rigged to default ON - to have it default
+       to OFF remove the text 'Init(1)' from the common.opt
+       patch, leaving just 'Common Var(warn_trampolines)'.
+       Kevin F. Quinn <[email protected]> 17 Jan 2006
+
+---
+ gcc/builtins.c |    3 +++
+ gcc/common.opt |    4 ++++
+ 2 files changed, 7 insertions(+)
+
+Index: gcc-4.4.1/gcc/common.opt
+===================================================================
+--- gcc-4.4.1.orig/gcc/common.opt      2009-11-19 13:43:48.000000000 +0100
++++ gcc-4.4.1/gcc/common.opt   2009-11-19 13:45:36.000000000 +0100
+@@ -197,6 +197,10 @@
+ Common Var(warn_type_limits) Init(-1) Warning
+ Warn if a comparison is always true or always false due to the limited range 
of the data type
+ 
++Wtrampolines
++Common Var(warn_trampolines) Init(1)
++Warn whenever a trampoline is generated
++
+ Wuninitialized
+ Common Var(warn_uninitialized) Warning
+ Warn about uninitialized automatic variables
+Index: gcc-4.4.1/gcc/builtins.c
+===================================================================
+--- gcc-4.4.1.orig/gcc/builtins.c      2009-11-19 13:43:48.000000000 +0100
++++ gcc-4.4.1/gcc/builtins.c   2009-11-19 13:45:36.000000000 +0100
+@@ -5768,6 +5768,9 @@
+   trampolines_created = 1;
+   INITIALIZE_TRAMPOLINE (r_tramp, r_func, r_chain);
+ 
++  if (warn_trampolines)
++    warning (OPT_Wtrampolines, "generating trampoline in object (requires 
executable stack)");
++
+   return const0_rtx;
+ }
+ 
diff --git a/patches/gcc-4.4.3/generic/gentoo/03_all_gcc43-java-nomulti.patch 
b/patches/gcc-4.4.3/generic/gentoo/03_all_gcc43-java-nomulti.patch
new file mode 100644
index 0000000..f07ead8
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/gentoo/03_all_gcc43-java-nomulti.patch
@@ -0,0 +1,44 @@
+--- libjava/configure.ac.jj    2007-12-07 17:55:50.000000000 +0100
++++ libjava/configure.ac       2007-12-07 18:36:56.000000000 +0100
+@@ -82,6 +82,13 @@ AC_ARG_ENABLE(java-maintainer-mode,
+       [allow rebuilding of .class and .h files]))
+ AM_CONDITIONAL(JAVA_MAINTAINER_MODE, test "$enable_java_maintainer_mode" = 
yes)
+ 
++AC_ARG_ENABLE(libjava-multilib,
++      AS_HELP_STRING([--enable-libjava-multilib], [build libjava as 
multilib]))
++if test "$enable_libjava_multilib" = no; then
++  multilib=no
++  ac_configure_args="$ac_configure_args --disable-multilib"
++fi
++
+ # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
+ GCC_NO_EXECUTABLES
+ 
+--- libjava/configure.jj       2007-12-07 17:55:50.000000000 +0100
++++ libjava/configure  2007-12-07 18:39:58.000000000 +0100
+@@ -1018,6 +1018,8 @@ Optional Features:
+   --enable-gconf-peer     compile GConf native peers for util.preferences
+   --enable-java-maintainer-mode
+                           allow rebuilding of .class and .h files
++  --enable-libjava-multilib
++                          build libjava as multilib
+   --disable-dependency-tracking  speeds up one-time build
+   --enable-dependency-tracking   do not reject slow dependency extractors
+   --enable-maintainer-mode  enable make rules and dependencies not useful
+@@ -1848,6 +1850,16 @@ else
+ fi
+ 
+ 
++# Check whether --enable-libjava-multilib was given.
++if test "${enable_libjava_multilib+set}" = set; then
++  enableval=$enable_libjava_multilib;
++fi
++
++if test "$enable_libjava_multilib" = no; then
++  multilib=no
++  ac_configure_args="$ac_configure_args --disable-multilib"
++fi
++
+ # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
+ 
+ 
diff --git a/patches/gcc-4.4.3/generic/gentoo/11_all_gcc-netbsd-symbolic.patch 
b/patches/gcc-4.4.3/generic/gentoo/11_all_gcc-netbsd-symbolic.patch
new file mode 100644
index 0000000..f712603
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/gentoo/11_all_gcc-netbsd-symbolic.patch
@@ -0,0 +1,18 @@
+http://bugs.gentoo.org/122698
+
+---
+ gcc/config/netbsd-elf.h |    1 +
+ 1 file changed, 1 insertion(+)
+
+Index: gcc-4.4.1/gcc/config/netbsd-elf.h
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/netbsd-elf.h     2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/gcc/config/netbsd-elf.h  2009-11-19 13:45:37.000000000 +0100
+@@ -82,6 +82,7 @@
+ #define NETBSD_LINK_SPEC_ELF \
+   "%{assert*} %{R*} %{rpath*} \
+    %{shared:-shared} \
++   %{symbolic:-Bsymbolic} \
+    %{!shared: \
+      -dc -dp \
+      %{!nostdlib: \
diff --git a/patches/gcc-4.4.3/generic/gentoo/14_all_gcc-sparc64-bsd.patch 
b/patches/gcc-4.4.3/generic/gentoo/14_all_gcc-sparc64-bsd.patch
new file mode 100644
index 0000000..04d0ddf
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/gentoo/14_all_gcc-sparc64-bsd.patch
@@ -0,0 +1,34 @@
+---
+ gcc/config/sparc/freebsd.h |   19 ++++++++++++++++---
+ 1 file changed, 16 insertions(+), 3 deletions(-)
+
+Index: gcc-4.4.1/gcc/config/sparc/freebsd.h
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/sparc/freebsd.h  2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/gcc/config/sparc/freebsd.h       2009-11-19 13:45:37.000000000 
+0100
+@@ -25,9 +25,22 @@
+ /* FreeBSD needs the platform name (sparc64) defined.
+    Emacs needs to know if the arch is 64 or 32-bits.  */
+ 
+-#undef  CPP_CPU64_DEFAULT_SPEC
+-#define CPP_CPU64_DEFAULT_SPEC \
+-  "-D__sparc64__ -D__sparc_v9__ -D__sparcv9 -D__arch64__"
++#undef  FBSD_TARGET_CPU_CPP_BUILTINS
++#define FBSD_TARGET_CPU_CPP_BUILTINS()                  \
++  do                                                    \
++    {                                                   \
++      if (TARGET_ARCH64)                                \
++        {                                               \
++          builtin_define ("__sparc64__");               \
++          builtin_define ("__sparc_v9__");              \
++          builtin_define ("__sparcv9");                 \
++        }                                               \
++      else                                              \
++        builtin_define ("__sparc");                     \
++      builtin_define ("__sparc__");                     \
++    }                                                   \
++  while (0)
++
+ 
+ #define LINK_SPEC "%(link_arch)                                               
\
+   %{!mno-relax:%{!r:-relax}}                                          \
diff --git 
a/patches/gcc-4.4.3/generic/gentoo/18_all_904-flatten-switch-stmt-00.patch 
b/patches/gcc-4.4.3/generic/gentoo/18_all_904-flatten-switch-stmt-00.patch
new file mode 100644
index 0000000..0d20615
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/gentoo/18_all_904-flatten-switch-stmt-00.patch
@@ -0,0 +1,80 @@
+http://gcc.gnu.org/ml/gcc-patches/2007-04/msg00927.html
+
+Hi,
+
+The attached patch makes sure that we create smaller object code for
+simple switch statements. We just make sure to flatten the switch
+statement into an if-else chain, basically.
+
+This fixes a size-regression as compared to gcc-3.4, as can be seen
+below.
+
+2007-04-15  Bernhard Fischer  <..>
+
+       * stmt.c (expand_case): Do not create a complex binary tree when
+       optimizing for size but rather use the simple ordered list.
+       (emit_case_nodes): do not emit jumps to the default_label when
+       optimizing for size.
+
+Not regtested so far.
+Comments?
+
+Attached is the test switch.c mentioned below.
+
+$ for i in 2.95 3.3 3.4 4.0 4.1 4.2.orig-HEAD 4.3.orig-HEAD 4.3-HEAD;do
+gcc-$i  -DCHAIN -Os -o switch-CHAIN-$i.o -c switch.c ;done
+$ for i in 2.95 3.3 3.4 4.0 4.1 4.2.orig-HEAD 4.3.orig-HEAD 4.3-HEAD;do
+gcc-$i  -UCHAIN -Os -o switch-$i.o -c switch.c ;done
+
+$ size switch-*.o
+   text           data     bss     dec     hex filename
+    169              0       0     169      a9 switch-2.95.o
+    115              0       0     115      73 switch-3.3.o
+    103              0       0     103      67 switch-3.4.o
+    124              0       0     124      7c switch-4.0.o
+    124              0       0     124      7c switch-4.1.o
+    124              0       0     124      7c switch-4.2.orig-HEAD.o
+     95              0       0      95      5f switch-4.3-HEAD.o
+    124              0       0     124      7c switch-4.3.orig-HEAD.o
+    166              0       0     166      a6 switch-CHAIN-2.95.o
+    111              0       0     111      6f switch-CHAIN-3.3.o
+     95              0       0      95      5f switch-CHAIN-3.4.o
+     95              0       0      95      5f switch-CHAIN-4.0.o
+     95              0       0      95      5f switch-CHAIN-4.1.o
+     95              0       0      95      5f switch-CHAIN-4.2.orig-HEAD.o
+     95              0       0      95      5f switch-CHAIN-4.3-HEAD.o
+     95              0       0      95      5f switch-CHAIN-4.3.orig-HEAD.o
+
+
+Content-Type: text/x-diff; charset=us-ascii
+Content-Disposition: attachment; 
filename="gcc-4.3.gcc-flatten-switch-stmt.00.diff"
+
+---
+ gcc/stmt.c |    7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+Index: gcc-4.4.1/gcc/stmt.c
+===================================================================
+--- gcc-4.4.1.orig/gcc/stmt.c  2009-11-19 13:43:48.000000000 +0100
++++ gcc-4.4.1/gcc/stmt.c       2009-11-19 13:45:37.000000000 +0100
+@@ -2377,7 +2377,11 @@
+         use_cost_table
+           = (TREE_CODE (orig_type) != ENUMERAL_TYPE
+              && estimate_case_costs (case_list));
+-        balance_case_nodes (&case_list, NULL);
++        /* When optimizing for size, we want a straight list to avoid
++           jumps as much as possible. This basically creates an if-else
++           chain.  */
++        if (!optimize_size)
++          balance_case_nodes (&case_list, NULL);
+         emit_case_nodes (index, case_list, default_label, index_type);
+         if (default_label)
+           emit_jump (default_label);
+@@ -2943,6 +2947,7 @@
+           {
+             if (!node_has_low_bound (node, index_type))
+               {
++                if (!optimize_size) /* don't jl to the .default_label. */
+                 emit_cmp_and_jump_insns (index,
+                                          convert_modes
+                                          (mode, imode,
diff --git 
a/patches/gcc-4.4.3/generic/gentoo/51_all_gcc-3.4-libiberty-pic.patch 
b/patches/gcc-4.4.3/generic/gentoo/51_all_gcc-3.4-libiberty-pic.patch
new file mode 100644
index 0000000..f6e4a4e
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/gentoo/51_all_gcc-3.4-libiberty-pic.patch
@@ -0,0 +1,16 @@
+---
+ libiberty/Makefile.in |    1 +
+ 1 file changed, 1 insertion(+)
+
+Index: gcc-4.4.1/libiberty/Makefile.in
+===================================================================
+--- gcc-4.4.1.orig/libiberty/Makefile.in       2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/libiberty/Makefile.in    2009-11-19 13:45:37.000000000 +0100
+@@ -227,6 +227,7 @@
+         $(AR) $(AR_FLAGS) $(TARGETLIB) \
+           $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
+         $(RANLIB) $(TARGETLIB); \
++        cp $(TARGETLIB) ../ ; \
+         cd ..; \
+       else true; fi
+ 
diff --git 
a/patches/gcc-4.4.3/generic/gentoo/53_all_gcc4-superh-default-multilib.patch 
b/patches/gcc-4.4.3/generic/gentoo/53_all_gcc4-superh-default-multilib.patch
new file mode 100644
index 0000000..1080ed2
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/gentoo/53_all_gcc4-superh-default-multilib.patch
@@ -0,0 +1,29 @@
+The gcc-3.x toolchains would contain all the targets by default.  With gcc-4,
+you have to actually list out the multilibs you want or you will end up with
+just one when using targets like 'sh4-linux-gnu'.
+
+The resulting toolchain can't even build a kernel as the kernel needs to build
+with the nofpu flag to be sure that no fpu ops are generated.
+
+Here we restore the gcc-3.x behavior; the additional overhead of building all
+of these multilibs by default is negligible.
+
+http://bugs.gentoo.org/140205
+
+---
+ gcc/config.gcc |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: gcc-4.4.1/gcc/config.gcc
+===================================================================
+--- gcc-4.4.1.orig/gcc/config.gcc      2009-11-19 13:43:48.000000000 +0100
++++ gcc-4.4.1/gcc/config.gcc   2009-11-19 13:45:38.000000000 +0100
+@@ -2121,7 +2121,7 @@
+       if test x${sh_multilibs} = x ; then
+               case ${target} in
+               sh64-superh-linux* | \
+-              sh[1234]*)      sh_multilibs=${sh_cpu_target} ;;
++              sh[1234]*)      sh_multilibs=`cd ${srcdir}/config/sh ; echo 
t-mlib-sh[1-4]* | sed 's:t-mlib-sh:,m:g;s: ::g'` ;;
+               sh64* | sh5*)   
sh_multilibs=m5-32media,m5-32media-nofpu,m5-compact,m5-compact-nofpu,m5-64media,m5-64media-nofpu
 ;;
+               sh-superh-*)    
sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
+               sh*-*-linux*)   sh_multilibs=m1,m3e,m4 ;;
diff --git a/patches/gcc-4.4.3/generic/gentoo/54_all_300-libstdc++-pic.patch 
b/patches/gcc-4.4.3/generic/gentoo/54_all_300-libstdc++-pic.patch
new file mode 100644
index 0000000..b3bc08c
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/gentoo/54_all_300-libstdc++-pic.patch
@@ -0,0 +1,62 @@
+install libstdc++_pic.a if we have pic objs
+
+---
+ libstdc++-v3/src/Makefile.am |    7 +++++++
+ libstdc++-v3/src/Makefile.in |   12 ++++++++++--
+ 2 files changed, 17 insertions(+), 2 deletions(-)
+
+Index: gcc-4.4.1/libstdc++-v3/src/Makefile.am
+===================================================================
+--- gcc-4.4.1.orig/libstdc++-v3/src/Makefile.am        2009-11-19 
13:43:48.000000000 +0100
++++ gcc-4.4.1/libstdc++-v3/src/Makefile.am     2009-11-19 13:45:38.000000000 
+0100
+@@ -351,6 +351,13 @@
+         $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
+ 
+ 
++install-exec-local:
++      pic_objs=`sed -n "s:'::g;s:^pic_object=::p" *.lo | grep -v '^none$$'`; \
++      if [ x"$$pic_objs" != x ]; then \
++              $(AR) cru libstdc++_pic.a $$pic_objs 
$(top_builddir)/libsupc++/*.o || exit 1; \
++              $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) || 
exit 1; \
++      fi
++
+ # Added bits to build debug library.
+ if GLIBCXX_BUILD_DEBUG
+ all-local: build_debug
+Index: gcc-4.4.1/libstdc++-v3/src/Makefile.in
+===================================================================
+--- gcc-4.4.1.orig/libstdc++-v3/src/Makefile.in        2009-11-19 
13:43:48.000000000 +0100
++++ gcc-4.4.1/libstdc++-v3/src/Makefile.in     2009-11-19 13:45:38.000000000 
+0100
+@@ -726,7 +726,7 @@
+ 
+ install-data-am: install-data-local
+ 
+-install-exec-am: install-toolexeclibLTLIBRARIES
++install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
+ 
+ install-info: install-info-am
+ 
+@@ -765,7 +765,7 @@
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am uninstall-info-am \
+-      uninstall-toolexeclibLTLIBRARIES
++      uninstall-toolexeclibLTLIBRARIES install-exec-local
+ 
+ 
+ # Symbol versioning for shared libraries.
+@@ -942,6 +942,14 @@
+ install_debug:
+       (cd ${debugdir} && $(MAKE) \
+       toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
++
++install-exec-local:
++      pic_objs=`sed -n "s:'::g;s:^pic_object=::p" *.lo | grep -v '^none$$'`; \
++      if [ x"$$pic_objs" != x ]; then \
++              $(AR) cru libstdc++_pic.a $$pic_objs 
$(top_builddir)/libsupc++/*.o || exit 1; \
++              $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) || 
exit 1; \
++      fi
++
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+ .NOEXPORT:
diff --git 
a/patches/gcc-4.4.3/generic/gentoo/61_all_gcc4-ia64-noteGNUstack.patch 
b/patches/gcc-4.4.3/generic/gentoo/61_all_gcc4-ia64-noteGNUstack.patch
new file mode 100644
index 0000000..849563b
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/gentoo/61_all_gcc4-ia64-noteGNUstack.patch
@@ -0,0 +1,112 @@
+2004-09-20  Jakub Jelinek  <[email protected]>
+
+       * config/rs6000/ppc-asm.h: Add .note.GNU-stack section also
+       on ppc64-linux.
+
+       * config/ia64/lib1funcs.asm: Add .note.GNU-stack section on
+       ia64-linux.
+       * config/ia64/crtbegin.asm: Likewise.
+       * config/ia64/crtend.asm: Likewise.
+       * config/ia64/crti.asm: Likewise.
+       * config/ia64/crtn.asm: Likewise.
+
+2004-05-14  Jakub Jelinek  <[email protected]>
+
+       * config/ia64/linux.h (TARGET_ASM_FILE_END): Define.
+
+---
+ gcc/config/ia64/crtbegin.asm  |    4 ++++
+ gcc/config/ia64/crtend.asm    |    4 ++++
+ gcc/config/ia64/crti.asm      |    4 ++++
+ gcc/config/ia64/crtn.asm      |    4 ++++
+ gcc/config/ia64/lib1funcs.asm |    4 ++++
+ gcc/config/ia64/linux.h       |    2 ++
+ gcc/config/rs6000/ppc-asm.h   |    2 +-
+ 7 files changed, 23 insertions(+), 1 deletion(-)
+
+Index: gcc-4.4.1/gcc/config/ia64/crtbegin.asm
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/ia64/crtbegin.asm        2009-11-19 
13:43:48.000000000 +0100
++++ gcc-4.4.1/gcc/config/ia64/crtbegin.asm     2009-11-19 13:45:38.000000000 
+0100
+@@ -252,3 +252,7 @@
+ .weak __cxa_finalize
+ #endif
+ .weak _Jv_RegisterClasses
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+Index: gcc-4.4.1/gcc/config/ia64/crtend.asm
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/ia64/crtend.asm  2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/gcc/config/ia64/crtend.asm       2009-11-19 13:45:38.000000000 
+0100
+@@ -119,3 +119,7 @@
+ 
+       br.ret.sptk.many rp
+       .endp __do_global_ctors_aux
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+Index: gcc-4.4.1/gcc/config/ia64/crti.asm
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/ia64/crti.asm    2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/gcc/config/ia64/crti.asm 2009-11-19 13:45:38.000000000 +0100
+@@ -51,3 +51,7 @@
+       .body
+ 
+ # end of crti.asm
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+Index: gcc-4.4.1/gcc/config/ia64/crtn.asm
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/ia64/crtn.asm    2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/gcc/config/ia64/crtn.asm 2009-11-19 13:45:38.000000000 +0100
+@@ -41,3 +41,7 @@
+       br.ret.sptk.many b0
+ 
+ # end of crtn.asm
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+Index: gcc-4.4.1/gcc/config/ia64/lib1funcs.asm
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/ia64/lib1funcs.asm       2009-11-19 
13:43:48.000000000 +0100
++++ gcc-4.4.1/gcc/config/ia64/lib1funcs.asm    2009-11-19 13:45:38.000000000 
+0100
+@@ -793,3 +793,7 @@
+       .endp __floattitf
+ #endif
+ #endif
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+Index: gcc-4.4.1/gcc/config/ia64/linux.h
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/ia64/linux.h     2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/gcc/config/ia64/linux.h  2009-11-19 13:45:38.000000000 +0100
+@@ -5,6 +5,8 @@
+ 
+ #define TARGET_VERSION fprintf (stderr, " (IA-64) Linux");
+ 
++#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
++
+ /* This is for -profile to use -lc_p instead of -lc.  */
+ #undef CC1_SPEC
+ #define CC1_SPEC "%{profile:-p} %{G*}"
+Index: gcc-4.4.1/gcc/config/rs6000/ppc-asm.h
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/rs6000/ppc-asm.h 2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/gcc/config/rs6000/ppc-asm.h      2009-11-19 13:45:38.000000000 
+0100
+@@ -172,7 +172,7 @@
+       .size FUNC_NAME(name),GLUE(.L,name)-FUNC_NAME(name)
+ #endif
+ 
+-#if defined __linux__ && !defined __powerpc64__
++#if defined __linux__
+       .section .note.GNU-stack
+       .previous
+ #endif
diff --git a/patches/gcc-4.4.3/generic/gentoo/61_all_gcc43-pr24170.patch 
b/patches/gcc-4.4.3/generic/gentoo/61_all_gcc43-pr24170.patch
new file mode 100644
index 0000000..c9c46f0
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/gentoo/61_all_gcc43-pr24170.patch
@@ -0,0 +1,69 @@
+http://gcc.gnu.org/PR24170
+
+2008-02-20  Tom Tromey  <[email protected]>
+
+       PR libgcj/24170:
+       * java/io/natFilePosix.cc (File::performList): Don't use
+       readdir_r.
+       * configure, include/config.h.in: Rebuilt.
+       * configure.ac: Don't check for readdir_r.
+
+---
+ libjava/configure.ac            |    2 +-
+ libjava/include/config.h.in     |    3 ---
+ libjava/java/io/natFilePosix.cc |    8 +-------
+ 3 files changed, 2 insertions(+), 11 deletions(-)
+
+Index: gcc-4.3.1/libjava/configure.ac
+===================================================================
+--- gcc-4.3.1.orig/libjava/configure.ac
++++ gcc-4.3.1/libjava/configure.ac
+@@ -1023,7 +1023,7 @@ if test "x${with_newlib}" = "xyes"; then
+    PLATFORMNET=NoNet
+ else
+    AC_CHECK_FUNCS([strerror_r select fstat open fsync sleep opendir \
+-                   localtime_r readdir_r getpwuid_r getcwd \
++                   localtime_r getpwuid_r getcwd \
+                  access stat lstat mkdir rename rmdir unlink utime chmod 
readlink \
+                  nl_langinfo setlocale \
+                  inet_pton uname inet_ntoa \
+Index: gcc-4.3.1/libjava/include/config.h.in
+===================================================================
+--- gcc-4.3.1.orig/libjava/include/config.h.in
++++ gcc-4.3.1/libjava/include/config.h.in
+@@ -214,9 +214,6 @@
+ /* Define to 1 if you have the <pwd.h> header file. */
+ #undef HAVE_PWD_H
+ 
+-/* Define to 1 if you have the `readdir_r' function. */
+-#undef HAVE_READDIR_R
+-
+ /* Define to 1 if you have the `readlink' function. */
+ #undef HAVE_READLINK
+ 
+Index: gcc-4.3.1/libjava/java/io/natFilePosix.cc
+===================================================================
+--- gcc-4.3.1.orig/libjava/java/io/natFilePosix.cc
++++ gcc-4.3.1/libjava/java/io/natFilePosix.cc
+@@ -1,6 +1,6 @@
+ // natFile.cc - Native part of File class for POSIX.
+ 
+-/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2006
++/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2006, 2008
+    Free Software Foundation
+ 
+    This file is part of libgcj.
+@@ -292,13 +292,7 @@ java::io::File::performList (java::io::F
+ 
+   java::util::ArrayList *list = new java::util::ArrayList ();
+   struct dirent *d;
+-#if defined(HAVE_READDIR_R) && defined(_POSIX_PTHREAD_SEMANTICS)
+-  int name_max = pathconf (buf, _PC_NAME_MAX);
+-  char dbuf[sizeof (struct dirent) + name_max + 1];
+-  while (readdir_r (dir, (struct dirent *) dbuf, &d) == 0 && d != NULL)
+-#else /* HAVE_READDIR_R */
+   while ((d = readdir (dir)) != NULL)
+-#endif /* HAVE_READDIR_R */
+     {
+       // Omit "." and "..".
+       if (d->d_name[0] == '.'
diff --git a/patches/gcc-4.4.3/generic/gentoo/62_all_gcc4-noteGNUstack.patch 
b/patches/gcc-4.4.3/generic/gentoo/62_all_gcc4-noteGNUstack.patch
new file mode 100644
index 0000000..cf9c582
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/gentoo/62_all_gcc4-noteGNUstack.patch
@@ -0,0 +1,140 @@
+2005-02-08  Jakub Jelinek  <[email protected]>
+
+       * src/alpha/osf.S: Add .note.GNU-stack on Linux.
+       * src/s390/sysv.S: Likewise.
+       * src/powerpc/linux64.S: Likewise.
+       * src/powerpc/linux64_closure.S: Likewise.
+       * src/powerpc/ppc_closure.S: Likewise.
+       * src/powerpc/sysv.S: Likewise.
+       * src/x86/unix64.S: Likewise.
+       * src/x86/sysv.S: Likewise.
+       * src/sparc/v8.S: Likewise.
+       * src/sparc/v9.S: Likewise.
+       * src/m68k/sysv.S: Likewise.
+       * src/ia64/unix.S: Likewise.
+       * src/arm/sysv.S: Likewise.
+
+       * ia64_save_regs_in_stack.s: Moved to...
+       * ia64_save_regs_in_stack.S: ... this.  Add .note.GNU-stack
+       on Linux.
+
+---
+ boehm-gc/ia64_save_regs_in_stack.S   |   15 +++++++++++++++
+ boehm-gc/ia64_save_regs_in_stack.s   |   12 ------------
+ libffi/src/ia64/unix.S               |    4 ++++
+ libffi/src/powerpc/linux64.S         |    4 ++++
+ libffi/src/powerpc/linux64_closure.S |    4 ++++
+ libffi/src/powerpc/ppc_closure.S     |    4 ++++
+ libffi/src/powerpc/sysv.S            |    4 ++++
+ libffi/src/sparc/v9.S                |    4 ++++
+ 8 files changed, 39 insertions(+), 12 deletions(-)
+
+Index: gcc-4.4.1/boehm-gc/ia64_save_regs_in_stack.S
+===================================================================
+--- /dev/null  1970-01-01 00:00:00.000000000 +0000
++++ gcc-4.4.1/boehm-gc/ia64_save_regs_in_stack.S       2009-11-19 
13:45:38.000000000 +0100
+@@ -0,0 +1,15 @@
++        .text
++        .align 16
++        .global GC_save_regs_in_stack
++        .proc GC_save_regs_in_stack
++GC_save_regs_in_stack:
++        .bodyfoo.mpg
++        flushrs
++        ;;
++        mov r8=ar.bsp
++        br.ret.sptk.few rp
++        .endp GC_save_regs_in_stack
++
++#ifdef __linux__
++      .section .note.GNU-stack,"",@progbits
++#endif
+Index: gcc-4.4.1/boehm-gc/ia64_save_regs_in_stack.s
+===================================================================
+--- gcc-4.4.1.orig/boehm-gc/ia64_save_regs_in_stack.s  2009-11-19 
13:43:48.000000000 +0100
++++ /dev/null  1970-01-01 00:00:00.000000000 +0000
+@@ -1,12 +0,0 @@
+-        .text
+-        .align 16
+-        .global GC_save_regs_in_stack
+-        .proc GC_save_regs_in_stack
+-GC_save_regs_in_stack:
+-        .body
+-        flushrs
+-        ;;
+-        mov r8=ar.bsp
+-        br.ret.sptk.few rp
+-        .endp GC_save_regs_in_stack
+-
+Index: gcc-4.4.1/libffi/src/ia64/unix.S
+===================================================================
+--- gcc-4.4.1.orig/libffi/src/ia64/unix.S      2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/libffi/src/ia64/unix.S   2009-11-19 13:45:38.000000000 +0100
+@@ -553,3 +553,7 @@
+       data8   @pcrel(.Lld_hfa_float)          // FFI_IA64_TYPE_HFA_FLOAT
+       data8   @pcrel(.Lld_hfa_double)         // FFI_IA64_TYPE_HFA_DOUBLE
+       data8   @pcrel(.Lld_hfa_ldouble)        // FFI_IA64_TYPE_HFA_LDOUBLE
++
++#if defined __ELF__ && defined __linux__
++      .section        .note.GNU-stack,"",@progbits
++#endif
+Index: gcc-4.4.1/libffi/src/powerpc/linux64.S
+===================================================================
+--- gcc-4.4.1.orig/libffi/src/powerpc/linux64.S        2009-11-19 
13:43:48.000000000 +0100
++++ gcc-4.4.1/libffi/src/powerpc/linux64.S     2009-11-19 13:45:38.000000000 
+0100
+@@ -179,3 +179,7 @@
+       .align 3
+ .LEFDE1:
+ #endif
++
++#if defined __ELF__ && defined __linux__
++      .section        .note.GNU-stack,"",@progbits
++#endif
+Index: gcc-4.4.1/libffi/src/powerpc/linux64_closure.S
+===================================================================
+--- gcc-4.4.1.orig/libffi/src/powerpc/linux64_closure.S        2009-11-19 
13:43:48.000000000 +0100
++++ gcc-4.4.1/libffi/src/powerpc/linux64_closure.S     2009-11-19 
13:45:38.000000000 +0100
+@@ -204,3 +204,7 @@
+       .align 3
+ .LEFDE1:
+ #endif
++
++#if defined __ELF__ && defined __linux__
++      .section        .note.GNU-stack,"",@progbits
++#endif
+Index: gcc-4.4.1/libffi/src/powerpc/ppc_closure.S
+===================================================================
+--- gcc-4.4.1.orig/libffi/src/powerpc/ppc_closure.S    2009-11-19 
13:43:48.000000000 +0100
++++ gcc-4.4.1/libffi/src/powerpc/ppc_closure.S 2009-11-19 13:45:38.000000000 
+0100
+@@ -299,3 +299,7 @@
+ #if defined __ELF__ && defined __linux__
+       .section        .note.GNU-stack,"",@progbits
+ #endif
++
++#if defined __ELF__ && defined __linux__
++      .section        .note.GNU-stack,"",@progbits
++#endif
+Index: gcc-4.4.1/libffi/src/powerpc/sysv.S
+===================================================================
+--- gcc-4.4.1.orig/libffi/src/powerpc/sysv.S   2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/libffi/src/powerpc/sysv.S        2009-11-19 13:45:38.000000000 
+0100
+@@ -227,3 +227,7 @@
+ #if defined __ELF__ && defined __linux__
+       .section        .note.GNU-stack,"",@progbits
+ #endif
++
++#if defined __ELF__ && defined __linux__
++      .section        .note.GNU-stack,"",@progbits
++#endif
+Index: gcc-4.4.1/libffi/src/sparc/v9.S
+===================================================================
+--- gcc-4.4.1.orig/libffi/src/sparc/v9.S       2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/libffi/src/sparc/v9.S    2009-11-19 13:45:38.000000000 +0100
+@@ -304,3 +304,7 @@
+ #ifdef __linux__
+       .section        .note.GNU-stack,"",@progbits
+ #endif
++
++#ifdef __linux__
++      .section        .note.GNU-stack,"",@progbits
++#endif
diff --git a/patches/gcc-4.4.3/generic/gentoo/64_all_gcc43-pr34571.patch 
b/patches/gcc-4.4.3/generic/gentoo/64_all_gcc43-pr34571.patch
new file mode 100644
index 0000000..28ae6f1
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/gentoo/64_all_gcc43-pr34571.patch
@@ -0,0 +1,27 @@
+http://gcc.gnu.org/PR34571
+
+2007-12-26  Rask Ingemann Lambertsen  <[email protected]>
+
+       PR target/34571
+       * config/alpha/alpha.c (alpha_cannot_force_const_mem): Use
+       symbolic_operand.
+       * varasm.c (output_constant_pool_1): Fix typo.
+
+---
+ gcc/config/alpha/alpha.c |    3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+Index: gcc-4.4.1/gcc/config/alpha/alpha.c
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/alpha/alpha.c    2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/gcc/config/alpha/alpha.c 2009-11-19 13:45:39.000000000 +0100
+@@ -1119,8 +1119,7 @@
+ static bool
+ alpha_cannot_force_const_mem (rtx x)
+ {
+-  enum rtx_code code = GET_CODE (x);
+-  return code == SYMBOL_REF || code == LABEL_REF || code == CONST;
++  return symbolic_operand (x, GET_MODE (x));
+ }
+ 
+ /* We do not allow indirect calls to be optimized into sibling calls, nor
diff --git a/patches/gcc-4.4.3/generic/gentoo/66_all_gcc43-pr25343.patch 
b/patches/gcc-4.4.3/generic/gentoo/66_all_gcc43-pr25343.patch
new file mode 100644
index 0000000..15e645d
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/gentoo/66_all_gcc43-pr25343.patch
@@ -0,0 +1,25 @@
+http://gcc.gnu.org/PR25343
+
+sniped from Debian
+
+2008-04-27  Roman Zippel <[email protected]>
+
+       * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
+
+---
+ gcc/config/host-linux.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+Index: gcc-4.3.1/gcc/config/host-linux.c
+===================================================================
+--- gcc-4.3.1.orig/gcc/config/host-linux.c
++++ gcc-4.3.1/gcc/config/host-linux.c
+@@ -84,6 +84,8 @@
+ # define TRY_EMPTY_VM_SPACE   0x8000000000
+ #elif defined(__sparc__)
+ # define TRY_EMPTY_VM_SPACE   0x60000000
++#elif defined(__mc68000__)
++# define TRY_EMPTY_VM_SPACE   0x40000000
+ #else
+ # define TRY_EMPTY_VM_SPACE   0
+ #endif
diff --git a/patches/gcc-4.4.3/generic/gentoo/74_all_sh-pr24836.patch 
b/patches/gcc-4.4.3/generic/gentoo/74_all_sh-pr24836.patch
new file mode 100644
index 0000000..7094ac8
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/gentoo/74_all_sh-pr24836.patch
@@ -0,0 +1,34 @@
+http://sourceforge.net/mailarchive/forum.php?thread_id=8959304&forum_id=5348
+http://gcc.gnu.org/PR24836
+
+---
+ gcc/configure    |    2 +-
+ gcc/configure.ac |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+Index: gcc-4.4.1/gcc/configure.ac
+===================================================================
+--- gcc-4.4.1.orig/gcc/configure.ac    2009-11-19 13:43:48.000000000 +0100
++++ gcc-4.4.1/gcc/configure.ac 2009-11-19 13:45:39.000000000 +0100
+@@ -2673,7 +2673,7 @@
+       tls_first_minor=14
+       tls_as_opt="-m64 -Aesame --fatal-warnings"
+       ;;
+-  sh-*-* | sh[34]-*-*)
++  sh-*-* | sh[34]*-*-*)
+     conftest_s='
+       .section ".tdata","awT",@progbits
+ foo:  .long   25
+Index: gcc-4.4.1/gcc/configure
+===================================================================
+--- gcc-4.4.1.orig/gcc/configure       2009-11-19 13:43:48.000000000 +0100
++++ gcc-4.4.1/gcc/configure    2009-11-19 13:45:39.000000000 +0100
+@@ -22205,7 +22205,7 @@
+       tls_first_minor=14
+       tls_as_opt="-m64 -Aesame --fatal-warnings"
+       ;;
+-  sh-*-* | sh[34]-*-*)
++  sh-*-* | sh[34]*-*-*)
+     conftest_s='
+       .section ".tdata","awT",@progbits
+ foo:  .long   25
diff --git a/patches/gcc-4.4.3/generic/no-host-includes.diff 
b/patches/gcc-4.4.3/generic/no-host-includes.diff
new file mode 100644
index 0000000..b826bb3
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/no-host-includes.diff
@@ -0,0 +1,56 @@
+#
+# Submitted-By: Marc Kleine-Budde, 2006-11-03
+#
+# Error:
+#
+# No error :)
+# With this patch gcc bails out if you include a host include path into the 
searchlist (-I)
+#
+# Description:
+#
+# inspired by:
+# 
http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.1.1/zecke-no-host-includes.patch
+#
+---
+# gcc/incpath.c |   28 ++++++++++++++++++++++++++++
+# 1 file changed, 28 insertions(+)
+#
+Index: gcc-4.4.1/gcc/incpath.c
+===================================================================
+--- gcc-4.4.1.orig/gcc/incpath.c       2009-11-19 13:43:49.000000000 +0100
++++ gcc-4.4.1/gcc/incpath.c    2009-11-19 13:45:34.000000000 +0100
+@@ -417,6 +417,34 @@
+   p->construct = 0;
+   p->user_supplied_p = user_supplied_p;
+ 
++#ifdef CROSS_COMPILE
++    /* A common error when cross compiling is including
++    host headers. This code below will try to fail fast
++    for cross compiling. Currently we consider /usr/include,
++    /opt/include and /sw/include as harmful.  */
++      {
++              unsigned int i;
++              const char *bad_path[] = {
++                      "/usr/include",
++                      "/usr/local/include",
++                      "/sw/include",
++                      "/opt/include",
++              };
++
++              for (i = 0; i < sizeof(bad_path)/sizeof(bad_path[0]); i++) {
++                      if( strstr(p->name, bad_path[i]) == p->name ) {
++                              fprintf(stderr,_("\n"
++                                               "CROSS COMPILE Badness: %s in 
INCLUDEPATH: %s\n"
++                                               "\n"),
++
++                                    bad_path[i], p->name);
++
++                              exit (FATAL_EXIT_CODE);
++                      }
++              }
++      }
++#endif
++
+   add_cpp_dir_path (p, chain);
+ }
+ 
diff --git a/patches/gcc-4.4.3/generic/series b/patches/gcc-4.4.3/generic/series
new file mode 100644
index 0000000..3cd8e64
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/series
@@ -0,0 +1,32 @@
+# bail out on host includes
+no-host-includes.diff
+
+# ARM big endian and softfloat
+arm-softfloat.diff
+
+# bugfixes
+
+# from uclibc
+uclibc/100-uclibc-conf.patch
+# FIXME: doesn't apply any more
+#uclibc/104-gnuhurd-uclibc-conf.patch
+uclibc/301-missing-execinfo_h.patch
+uclibc/302-c99-snprintf.patch
+uclibc/305-libmudflap-susv3-legacy.patch
+uclibc/993-arm_insn-opinit-RTX_CODE-fixup.patch
+uclibc/995-short-enums.diff
+
+# from gentoo
+gentoo/00_all_gcc-4.1-alpha-mieee-default.patch
+gentoo/00_all_gcc-trampolinewarn.patch
+gentoo/11_all_gcc-netbsd-symbolic.patch
+gentoo/14_all_gcc-sparc64-bsd.patch
+gentoo/18_all_904-flatten-switch-stmt-00.patch
+gentoo/51_all_gcc-3.4-libiberty-pic.patch
+gentoo/53_all_gcc4-superh-default-multilib.patch
+gentoo/54_all_300-libstdc++-pic.patch
+gentoo/61_all_gcc4-ia64-noteGNUstack.patch
+gentoo/62_all_gcc4-noteGNUstack.patch
+gentoo/64_all_gcc43-pr34571.patch
+gentoo/74_all_sh-pr24836.patch
+
diff --git a/patches/gcc-4.4.3/generic/uclibc/100-uclibc-conf.patch 
b/patches/gcc-4.4.3/generic/uclibc/100-uclibc-conf.patch
new file mode 100644
index 0000000..f8b2678
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/uclibc/100-uclibc-conf.patch
@@ -0,0 +1,42 @@
+---
+ contrib/regression/objs-gcc.sh |    4 ++++
+ libjava/classpath/ltconfig     |    4 ++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+Index: gcc-4.4.1/contrib/regression/objs-gcc.sh
+===================================================================
+--- gcc-4.4.1.orig/contrib/regression/objs-gcc.sh      2009-11-19 
13:43:49.000000000 +0100
++++ gcc-4.4.1/contrib/regression/objs-gcc.sh   2009-11-19 13:45:35.000000000 
+0100
+@@ -106,6 +106,10 @@
+  then
+   make all-gdb all-dejagnu all-ld || exit 1
+   make install-gdb install-dejagnu install-ld || exit 1
++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc 
]
++ then
++  make all-gdb all-dejagnu all-ld || exit 1
++  make install-gdb install-dejagnu install-ld || exit 1
+ elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
+   make bootstrap || exit 1
+   make install || exit 1
+Index: gcc-4.4.1/libjava/classpath/ltconfig
+===================================================================
+--- gcc-4.4.1.orig/libjava/classpath/ltconfig  2009-11-19 13:43:49.000000000 
+0100
++++ gcc-4.4.1/libjava/classpath/ltconfig       2009-11-19 13:45:35.000000000 
+0100
+@@ -603,7 +603,7 @@
+ 
+ # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+ case $host_os in
+-linux-gnu*) ;;
++linux-gnu*|linux-uclibc*) ;;
+ linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+ esac
+ 
+@@ -1251,7 +1251,7 @@
+   ;;
+ 
+ # This must be Linux ELF.
+-linux-gnu*)
++linux*)
+   version_type=linux
+   need_lib_prefix=no
+   need_version=no
diff --git a/patches/gcc-4.4.3/generic/uclibc/104-gnuhurd-uclibc-conf.patch 
b/patches/gcc-4.4.3/generic/uclibc/104-gnuhurd-uclibc-conf.patch
new file mode 100644
index 0000000..3e7b25a
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/uclibc/104-gnuhurd-uclibc-conf.patch
@@ -0,0 +1,18 @@
+---
+ gcc/config.gcc |    3 +++
+ 1 file changed, 3 insertions(+)
+
+Index: gcc-4.3.1/gcc/config.gcc
+===================================================================
+--- gcc-4.3.1.orig/gcc/config.gcc
++++ gcc-4.3.1/gcc/config.gcc
+@@ -529,6 +529,9 @@ case ${target} in
+     alpha*)
+       tm_file="${cpu_type}/${cpu_type}.h alpha/elf.h alpha/linux.h 
alpha/linux-elf.h gnu.h ${tm_file}"
+       ;;
++    i[34567]86-*hurd*-*)
++      tm_file="${cpu_type}/${cpu_type}.h i386/unix.h i386/att.h dbxelf.h 
elfos.h svr4.h i386/gnu.h gnu.h ${tm_file}"
++      ;;
+     i[34567]86-*-*)
+       tm_file="${cpu_type}/${cpu_type}.h i386/unix.h i386/att.h dbxelf.h 
elfos.h svr4.h linux.h i386/linux.h gnu.h ${tm_file}"
+       ;;
diff --git a/patches/gcc-4.4.3/generic/uclibc/301-missing-execinfo_h.patch 
b/patches/gcc-4.4.3/generic/uclibc/301-missing-execinfo_h.patch
new file mode 100644
index 0000000..bf56d1a
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/uclibc/301-missing-execinfo_h.patch
@@ -0,0 +1,17 @@
+---
+ boehm-gc/include/gc.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: gcc-4.4.1/boehm-gc/include/gc.h
+===================================================================
+--- gcc-4.4.1.orig/boehm-gc/include/gc.h       2009-11-19 13:43:49.000000000 
+0100
++++ gcc-4.4.1/boehm-gc/include/gc.h    2009-11-19 13:45:35.000000000 +0100
+@@ -503,7 +503,7 @@
+ #if defined(__linux__) || defined(__GLIBC__)
+ # include <features.h>
+ # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
+-     && !defined(__ia64__)
++     && !defined(__ia64__) && !defined(__UCLIBC__)
+ #   ifndef GC_HAVE_BUILTIN_BACKTRACE
+ #     define GC_HAVE_BUILTIN_BACKTRACE
+ #   endif
diff --git a/patches/gcc-4.4.3/generic/uclibc/302-c99-snprintf.patch 
b/patches/gcc-4.4.3/generic/uclibc/302-c99-snprintf.patch
new file mode 100644
index 0000000..4b24ab4
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/uclibc/302-c99-snprintf.patch
@@ -0,0 +1,17 @@
+---
+ libstdc++-v3/include/c_global/cstdio |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: gcc-4.4.1/libstdc++-v3/include/c_global/cstdio
+===================================================================
+--- gcc-4.4.1.orig/libstdc++-v3/include/c_global/cstdio        2009-11-19 
13:43:48.000000000 +0100
++++ gcc-4.4.1/libstdc++-v3/include/c_global/cstdio     2009-11-19 
13:45:35.000000000 +0100
+@@ -139,7 +139,7 @@
+ 
+ _GLIBCXX_END_NAMESPACE
+ 
+-#if _GLIBCXX_USE_C99
++#if _GLIBCXX_USE_C99 || defined __UCLIBC__
+ 
+ #undef snprintf
+ #undef vfscanf
diff --git a/patches/gcc-4.4.3/generic/uclibc/305-libmudflap-susv3-legacy.patch 
b/patches/gcc-4.4.3/generic/uclibc/305-libmudflap-susv3-legacy.patch
new file mode 100644
index 0000000..d816566
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/uclibc/305-libmudflap-susv3-legacy.patch
@@ -0,0 +1,53 @@
+---
+ libmudflap/mf-hooks2.c |   10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+Index: gcc-4.4.1/libmudflap/mf-hooks2.c
+===================================================================
+--- gcc-4.4.1.orig/libmudflap/mf-hooks2.c      2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/libmudflap/mf-hooks2.c   2009-11-19 13:45:35.000000000 +0100
+@@ -421,7 +421,7 @@
+ {
+   TRACE ("%s\n", __PRETTY_FUNCTION__);
+   MF_VALIDATE_EXTENT(s, n, __MF_CHECK_WRITE, "bzero region");
+-  bzero (s, n);
++  memset (s, 0, n);
+ }
+ 
+ 
+@@ -431,7 +431,7 @@
+   TRACE ("%s\n", __PRETTY_FUNCTION__);
+   MF_VALIDATE_EXTENT(src, n, __MF_CHECK_READ, "bcopy src");
+   MF_VALIDATE_EXTENT(dest, n, __MF_CHECK_WRITE, "bcopy dest");
+-  bcopy (src, dest, n);
++  memmove (dest, src, n);
+ }
+ 
+ 
+@@ -441,7 +441,7 @@
+   TRACE ("%s\n", __PRETTY_FUNCTION__);
+   MF_VALIDATE_EXTENT(s1, n, __MF_CHECK_READ, "bcmp 1st arg");
+   MF_VALIDATE_EXTENT(s2, n, __MF_CHECK_READ, "bcmp 2nd arg");
+-  return bcmp (s1, s2, n);
++  return n == 0 ? 0 : memcmp (s1, s2, n);
+ }
+ 
+ 
+@@ -450,7 +450,7 @@
+   size_t n = strlen (s);
+   TRACE ("%s\n", __PRETTY_FUNCTION__);
+   MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "index region");
+-  return index (s, c);
++  return strchr (s, c);
+ }
+ 
+ 
+@@ -459,7 +459,7 @@
+   size_t n = strlen (s);
+   TRACE ("%s\n", __PRETTY_FUNCTION__);
+   MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "rindex region");
+-  return rindex (s, c);
++  return strrchr (s, c);
+ }
+ 
+ /* XXX:  stpcpy, memccpy */
diff --git 
a/patches/gcc-4.4.3/generic/uclibc/993-arm_insn-opinit-RTX_CODE-fixup.patch 
b/patches/gcc-4.4.3/generic/uclibc/993-arm_insn-opinit-RTX_CODE-fixup.patch
new file mode 100644
index 0000000..de5ecfd
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/uclibc/993-arm_insn-opinit-RTX_CODE-fixup.patch
@@ -0,0 +1,41 @@
+gcc/ChangeLog
+2007-11-27  Bernhard Fischer  <>
+
+       * config/arm/arm-protos.h (arm_vector_mode_supported_p,
+       arm_hard_regno_mode_ok, const_ok_for_arm): Do not hide non-rtx related
+       function prototypes in RTX_CODE.
+       * genopinit.c: Include tm_p.h.
+
+---
+ gcc/config/arm/arm-protos.h |    2 +-
+ gcc/genopinit.c             |    1 +
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+Index: gcc-4.4.1/gcc/config/arm/arm-protos.h
+===================================================================
+--- gcc-4.4.1.orig/gcc/config/arm/arm-protos.h 2009-11-19 13:43:48.000000000 
+0100
++++ gcc-4.4.1/gcc/config/arm/arm-protos.h      2009-11-19 13:45:36.000000000 
+0100
+@@ -43,10 +43,10 @@
+ extern void arm_output_fn_unwind (FILE *, bool);
+   
+ 
+-#ifdef RTX_CODE
+ extern bool arm_vector_mode_supported_p (enum machine_mode);
+ extern int arm_hard_regno_mode_ok (unsigned int, enum machine_mode);
+ extern int const_ok_for_arm (HOST_WIDE_INT);
++#ifdef RTX_CODE
+ extern int arm_split_constant (RTX_CODE, enum machine_mode, rtx,
+                              HOST_WIDE_INT, rtx, rtx, int);
+ extern RTX_CODE arm_canonicalize_comparison (RTX_CODE, enum machine_mode,
+Index: gcc-4.4.1/gcc/genopinit.c
+===================================================================
+--- gcc-4.4.1.orig/gcc/genopinit.c     2009-11-19 13:43:48.000000000 +0100
++++ gcc-4.4.1/gcc/genopinit.c  2009-11-19 13:45:36.000000000 +0100
+@@ -493,6 +493,7 @@
+   printf ("#include \"expr.h\"\n");
+   printf ("#include \"optabs.h\"\n");
+   printf ("#include \"reload.h\"\n\n");
++  printf ("#include \"tm_p.h\"\n\n");
+ 
+   printf ("void\ninit_all_optabs (void)\n{\n");
+ 
diff --git a/patches/gcc-4.4.3/generic/uclibc/995-short-enums.diff 
b/patches/gcc-4.4.3/generic/uclibc/995-short-enums.diff
new file mode 100644
index 0000000..b7804af
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/uclibc/995-short-enums.diff
@@ -0,0 +1,35 @@
+see gcc PR34205
+---
+ gcc/c-common.h |    1 +
+ gcc/rtl.h      |    4 +++-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+Index: gcc-4.4.1/gcc/rtl.h
+===================================================================
+--- gcc-4.4.1.orig/gcc/rtl.h   2009-11-19 13:43:48.000000000 +0100
++++ gcc-4.4.1/gcc/rtl.h        2009-11-19 13:45:36.000000000 +0100
+@@ -48,9 +48,11 @@
+ #include "rtl.def"            /* rtl expressions are documented here */
+ #undef DEF_RTL_EXPR
+ 
+-  LAST_AND_UNUSED_RTX_CODE};  /* A convenient way to get a value for
++  LAST_AND_UNUSED_RTX_CODE    /* A convenient way to get a value for
+                                  NUM_RTX_CODE.
+                                  Assumes default enum value assignment.  */
++  ,__LAST_AND_UNUSED_RTX_CODE=32767 /* Force 16bit width.  */
++};
+ 
+ #define NUM_RTX_CODE ((int) LAST_AND_UNUSED_RTX_CODE)
+                               /* The cast here, saves many elsewhere.  */
+Index: gcc-4.4.1/gcc/c-common.h
+===================================================================
+--- gcc-4.4.1.orig/gcc/c-common.h      2009-11-19 13:43:48.000000000 +0100
++++ gcc-4.4.1/gcc/c-common.h   2009-11-19 13:45:36.000000000 +0100
+@@ -130,6 +130,7 @@
+   RID_LAST_AT = RID_AT_IMPLEMENTATION,
+   RID_FIRST_PQ = RID_IN,
+   RID_LAST_PQ = RID_ONEWAY
++  ,__LAST_AND_UNUSED_RID=32767 /* Force 16bit width.  */
+ };
+ 
+ #define OBJC_IS_AT_KEYWORD(rid) \
diff --git a/patches/gcc-4.4.3/generic/uclibc/998-gcc-4.3.0-fix-header.00.patch 
b/patches/gcc-4.4.3/generic/uclibc/998-gcc-4.3.0-fix-header.00.patch
new file mode 100644
index 0000000..546198c
--- /dev/null
+++ b/patches/gcc-4.4.3/generic/uclibc/998-gcc-4.3.0-fix-header.00.patch
@@ -0,0 +1,19 @@
+\\\\
+\\ gcc PR33200
+---
+ gcc/config.gcc |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: gcc-4.3.1/gcc/config.gcc
+===================================================================
+--- gcc-4.3.1.orig/gcc/config.gcc
++++ gcc-4.3.1/gcc/config.gcc
+@@ -2316,7 +2316,7 @@ sh-*-symbianelf* | sh[12346l]*-*-symbian
+       if test x${enable_incomplete_targets} = xyes ; then
+               tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 
SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1 
SUPPORT_SH5_32MEDIA=1 SUPPORT_SH5_32MEDIA_NOFPU=1 SUPPORT_SH5_64MEDIA=1 
SUPPORT_SH5_64MEDIA_NOFPU=1"
+       fi
+-      use_fixproto=yes
++      # XXX: why? use_fixproto=yes
+       ;;
+ sh-*-rtems*)
+       tmake_file="sh/t-sh sh/t-elf t-rtems sh/t-rtems"

--
ptxdist mailing list
[email protected]

Reply via email to