[oe] [meta-oe][toolchain-layer][PATCH] Remove toolchain-layer

Martin Jansa martin.jansa at gmail.com
Fri Oct 9 09:11:19 UTC 2015


I think layer index should automatically show that the layer isn't
available in master branch and it's still valid layer for older releases
like daisy.

I would prefer to keep it in layer index, but I plan to merge this patch
before jethro is branched.

On Fri, Oct 9, 2015 at 11:06 AM, Philip Balister <philip at balister.org>
wrote:

> On 10/09/2015 08:12 AM, Khem Raj wrote:
> >
> >> On Oct 7, 2015, at 10:39 PM, Mike Looijmans <mike.looijmans at topic.nl>
> wrote:
> >>
> >> Just including the toolchain-layer in a bblayers.conf results in:
> >>  ERROR: ExpansionError during parsing
> .../meta-oe/toolchain-layer/recipes-devtools/gcc/gcc-crosssdk_4.6.bb:
> Failure expanding variable SRCPV, expression was
> ${@bb.fetch2.get_srcrev(d)} which triggered exception FetchError: Fetcher
> failure: SRCREV was used yet no valid SCM was found in SRC_URI
> >>
> >> Since there is no maintainer, remove it from meta-openembedded.
> >>
> >
> > this is good. Please remove it from layer index too if its there
>
>
> http://layers.openembedded.org/layerindex/branch/master/layer/toolchain-layer/
>
> Koen is listed as the maintainer. He'll need to handle the removal from
> the layer index.
>
> Philip
>
>
> >
> >> Signed-off-by: Mike Looijmans <mike.looijmans at topic.nl>
> >> ---
> >> toolchain-layer/COPYING.MIT                        |   17 -
> >> toolchain-layer/README                             |   15 -
> >> toolchain-layer/conf/layer.conf                    |   30 -
> >> .../files/canadian-build-modules-configure.patch   |   22 -
> >> .../gcc/files/gcc-4.3.3-fix-EXTRA_BUILD.patch      |   12 -
> >> .../gcc/files/gcc-4.3.x-fix-EXTRA_BUILD.patch      |   13 -
> >> .../gcc/files/gcc-posix-open-fix.patch             |   11 -
> >> .../gcc/files/gcc4-mtune-compat.patch              |   14 -
> >> .../gcc/files/gfortran-4.3.x.patch                 |   40 -
> >> .../recipes-devtools/gcc/files/gfortran.patch      |   40 -
> >> .../gcc/files/pr22133-mingw-path-fixup.patch       |   29 -
> >> .../gcc/files/pr33281-mingw-host-fragment.patch    |   38 -
> >> ...35916-mingw-__USE_MINGW_ACCESS-everywhere.patch |   13 -
> >> toolchain-layer/recipes-devtools/gcc/gcc-4.6.inc   |  119 -
> >> .../gcc/gcc-4.6/100-uclibc-conf.patch              |   39 -
> >> .../gcc/gcc-4.6/103-uclibc-conf-noupstream.patch   |   17 -
> >> .../gcc/gcc-4.6/200-uclibc-locale.patch            | 2842
> --------------------
> >> .../gcc/gcc-4.6/203-uclibc-locale-no__x.patch      |  235 --
> >> .../gcc/gcc-4.6/204-uclibc-locale-wchar_fix.patch  |   54 -
> >> .../gcc/gcc-4.6/205-uclibc-locale-update.patch     |  521 ----
> >> .../gcc/gcc-4.6/301-missing-execinfo_h.patch       |   15 -
> >> .../gcc/gcc-4.6/302-c99-snprintf.patch             |   15 -
> >> .../gcc/gcc-4.6/303-c99-complex-ugly-hack.patch    |   16 -
> >> .../gcc/gcc-4.6/304-index_macro.patch              |   30 -
> >> .../gcc/gcc-4.6/305-libmudflap-susv3-legacy.patch  |   51 -
> >> .../gcc/gcc-4.6/306-libstdc++-namespace.patch      |   40 -
> >> .../recipes-devtools/gcc/gcc-4.6/64bithack.patch   |   68 -
> >> .../gcc/gcc-4.6/740-sh-pr24836.patch               |   31 -
> >> .../gcc/gcc-4.6/800-arm-bigendian.patch            |   36 -
> >> .../gcc/gcc-4.6/904-flatten-switch-stmt-00.patch   |   76 -
> >> .../gcc/gcc-4.6/COLLECT_GCC_OPTIONS.patch          |   25 -
> >> .../GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch       |  186 --
> >> .../gcc/gcc-4.6/arm-nolibfloat.patch               |   26 -
> >> .../gcc/gcc-4.6/arm-softfloat.patch                |   18 -
> >> .../gcc/gcc-4.6/cache-amnesia.patch                |   33 -
> >> .../gcc/gcc-4.6/cpp-honour-sysroot.patch           |   40 -
> >> .../gcc/gcc-4.6/disable_relax_pic_calls_flag.patch |   48 -
> >> .../gcc/gcc-4.6/fix-for-ice-50099.patch            |   49 -
> >> .../gcc/gcc-4.6/fortran-cross-compile-hack.patch   |   32 -
> >> .../gcc-4.6/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch  |   33 -
> >> .../gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch      |  116 -
> >> .../gcc/gcc-4.6/gcc-argument-list-too-long.patch   |   33 -
> >> .../gcc/gcc-4.6/gcc-arm-set-cost.patch             |   35 -
> >> .../gcc/gcc-4.6/gcc-flags-for-build.patch          |  189 --
> >> .../gcc/gcc-4.6/gcc-poison-dir-extend.patch        |   27 -
> >> .../gcc-4.6/gcc-poison-system-directories.patch    |  223 --
> >> .../gcc-uclibc-locale-ctype_touplow_t.patch        |   72 -
> >> .../gcc/gcc-4.6/gcc-with-linker-hash-style.patch   |  196 --
> >> .../gcc/gcc-4.6/mips64-default-n64.patch           |   32 -
> >> .../gcc/gcc-4.6/optional_libstdc.patch             |   86 -
> >> .../gcc/gcc-4.6/powerpc-e5500.patch                |  465 ----
> >> .../recipes-devtools/gcc/gcc-4.6/pr32219.patch     |   72 -
> >> .../recipes-devtools/gcc/gcc-4.6/pr46934.patch     |  393 ---
> >> .../recipes-devtools/gcc/gcc-4.6/pr47551.patch     |   64 -
> >> .../gcc/gcc-4.6/use-defaults.h-and-t-oe-in-B.patch |   80 -
> >> .../gcc/gcc-4.6/zecke-xgcc-cpp.patch               |   30 -
> >> .../recipes-devtools/gcc/gcc-common-4.6.inc        |    4 -
> >> .../recipes-devtools/gcc/gcc-cross-canadian_4.6.bb |    4 -
> >> .../recipes-devtools/gcc/gcc-cross-initial_4.6.bb  |    2 -
> >> .../recipes-devtools/gcc/gcc-cross_4.6.bb          |    2 -
> >> .../gcc/gcc-crosssdk-initial_4.6.bb                |    2 -
> >> .../recipes-devtools/gcc/gcc-crosssdk_4.6.bb       |    2 -
> >> .../recipes-devtools/gcc/gcc-runtime_4.6.bb        |    2 -
> >> toolchain-layer/recipes-devtools/gcc/gcc_4.6.bb    |    2 -
> >> toolchain-layer/recipes-devtools/gcc/libgcc_4.6.bb |   71 -
> >> 65 files changed, 7193 deletions(-)
> >> delete mode 100644 toolchain-layer/COPYING.MIT
> >> delete mode 100644 toolchain-layer/README
> >> delete mode 100644 toolchain-layer/conf/layer.conf
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/files/canadian-build-modules-configure.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/files/gcc-4.3.3-fix-EXTRA_BUILD.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/files/gcc-4.3.x-fix-EXTRA_BUILD.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/files/gcc-posix-open-fix.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/files/gcc4-mtune-compat.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/files/gfortran-4.3.x.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/files/gfortran.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/files/pr22133-mingw-path-fixup.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/files/pr33281-mingw-host-fragment.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/files/pr35916-mingw-__USE_MINGW_ACCESS-everywhere.patch
> >> delete mode 100644 toolchain-layer/recipes-devtools/gcc/gcc-4.6.inc
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/100-uclibc-conf.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/103-uclibc-conf-noupstream.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/200-uclibc-locale.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/203-uclibc-locale-no__x.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/204-uclibc-locale-wchar_fix.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/205-uclibc-locale-update.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/301-missing-execinfo_h.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/302-c99-snprintf.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/303-c99-complex-ugly-hack.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/304-index_macro.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/305-libmudflap-susv3-legacy.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/306-libstdc++-namespace.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/64bithack.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/740-sh-pr24836.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/800-arm-bigendian.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/904-flatten-switch-stmt-00.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/COLLECT_GCC_OPTIONS.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/arm-nolibfloat.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/arm-softfloat.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/cache-amnesia.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/cpp-honour-sysroot.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/disable_relax_pic_calls_flag.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/fix-for-ice-50099.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/fortran-cross-compile-hack.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-argument-list-too-long.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-arm-set-cost.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-flags-for-build.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-poison-dir-extend.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-poison-system-directories.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-uclibc-locale-ctype_touplow_t.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-with-linker-hash-style.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/mips64-default-n64.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/optional_libstdc.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/powerpc-e5500.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/pr32219.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/pr46934.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/pr47551.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/use-defaults.h-and-t-oe-in-B.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-4.6/zecke-xgcc-cpp.patch
> >> delete mode 100644
> toolchain-layer/recipes-devtools/gcc/gcc-common-4.6.inc
> >> delete mode 100644 toolchain-layer/recipes-devtools/gcc/
> gcc-cross-canadian_4.6.bb
> >> delete mode 100644 toolchain-layer/recipes-devtools/gcc/
> gcc-cross-initial_4.6.bb
> >> delete mode 100644 toolchain-layer/recipes-devtools/gcc/
> gcc-cross_4.6.bb
> >> delete mode 100644 toolchain-layer/recipes-devtools/gcc/
> gcc-crosssdk-initial_4.6.bb
> >> delete mode 100644 toolchain-layer/recipes-devtools/gcc/
> gcc-crosssdk_4.6.bb
> >> delete mode 100644 toolchain-layer/recipes-devtools/gcc/
> gcc-runtime_4.6.bb
> >> delete mode 100644 toolchain-layer/recipes-devtools/gcc/gcc_4.6.bb
> >> delete mode 100644 toolchain-layer/recipes-devtools/gcc/libgcc_4.6.bb
> >>
> >> diff --git a/toolchain-layer/COPYING.MIT b/toolchain-layer/COPYING.MIT
> >> deleted file mode 100644
> >> index fb950dc..0000000
> >> --- a/toolchain-layer/COPYING.MIT
> >> +++ /dev/null
> >> @@ -1,17 +0,0 @@
> >> -Permission is hereby granted, free of charge, to any person obtaining
> a copy
> >> -of this software and associated documentation files (the "Software"),
> to deal
> >> -in the Software without restriction, including without limitation the
> rights
> >> -to use, copy, modify, merge, publish, distribute, sublicense, and/or
> sell
> >> -copies of the Software, and to permit persons to whom the Software is
> >> -furnished to do so, subject to the following conditions:
> >> -
> >> -The above copyright notice and this permission notice shall be
> included in
> >> -all copies or substantial portions of the Software.
> >> -
> >> -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS OR
> >> -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABILITY,
> >> -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
> SHALL THE
> >> -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> >> -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> ARISING FROM,
> >> -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> IN
> >> -THE SOFTWARE.
> >> diff --git a/toolchain-layer/README b/toolchain-layer/README
> >> deleted file mode 100644
> >> index 7af26ec..0000000
> >> --- a/toolchain-layer/README
> >> +++ /dev/null
> >> @@ -1,15 +0,0 @@
> >> -This layer depends on:
> >> -
> >> -URI: git://github.com/openembedded/oe-core.git
> >> -branch: master
> >> -revision: HEAD
> >> -
> >> -Send pull requests to openembedded-devel at lists.openembedded.org with
> '[meta-oe][toolchain-layer]' in the subject'
> >> -
> >> -When sending single patches, please use something like:
> >> -'git send-email -M -1 --to openembedded-devel at lists.openembedded.org
> --subject-prefix=meta-oe][toolchain-layer][PATCH'
> >> -
> >> -You are encouraged to fork the mirror on github
> https://github.com/openembedded/meta-oe/ to share your patches, this is
> preferred for patch sets consisting of more than one patch. Other services
> like gitorious, repo.or.cz or self hosted setups are of course accepted
> as well, 'git fetch <remote>' works the same on all of them. We recommend
> github because it is free, easy to use, has been proven to be reliable and
> has a really good web GUI.
> >> -
> >> -Main layer maintainer: Koen Kooi <koen at dominion.thruhere.net>
> >> -
> >> diff --git a/toolchain-layer/conf/layer.conf
> b/toolchain-layer/conf/layer.conf
> >> deleted file mode 100644
> >> index b377f12..0000000
> >> --- a/toolchain-layer/conf/layer.conf
> >> +++ /dev/null
> >> @@ -1,30 +0,0 @@
> >> -# It really depends on order of the layers appearing in BBLAYERS
> >> -# variable in toplevel bblayers.conf file, where bitbake will search
> >> -# for .inc files and others where bitbake uses BBPATH since it will
> >> -# search the directories from first to last as specified in BBPATH
> >> -# Therefore if you want a given layer to be considered high priority
> >> -# for the .inc and .conf etc. then consider it adding at the beginning
> >> -# of BBPATH. For bblayers bitbake will use BBFILES_PRIORITY to resolve
> >> -# the recipe contention so the order of directories in BBFILES does
> >> -# not matter.
> >> -
> >> -# We have a conf directory, append to BBPATH
> >> -BBPATH .= ":${LAYERDIR}"
> >> -
> >> -# We have a recipes directory, add to BBFILES
> >> -BBFILES += "${LAYERDIR}/recipes-*/*/*.bb
> ${LAYERDIR}/recipes-*/*/*.bbappend"
> >> -
> >> -BBFILE_COLLECTIONS += "toolchain-layer"
> >> -BBFILE_PATTERN_toolchain-layer := "^${LAYERDIR}/"
> >> -
> >> -# Define the priority for recipes (.bb files) from this layer,
> >> -# choosing carefully how this layer interacts with all of the
> >> -# other layers.
> >> -
> >> -BBFILE_PRIORITY_toolchain-layer = "6"
> >> -
> >> -# This should only be incremented on significant changes that will
> >> -# cause compatibility issues with other layers
> >> -LAYERVERSION_toolchain-layer = "1"
> >> -
> >> -LAYERDEPENDS_toolchain-layer = "core"
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/files/canadian-build-modules-configure.patch
> b/toolchain-layer/recipes-devtools/gcc/files/canadian-build-modules-configure.patch
> >> deleted file mode 100644
> >> index 8aede10..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/files/canadian-build-modules-configure.patch
> >> +++ /dev/null
> >> @@ -1,22 +0,0 @@
> >> -diff -urN gcc-4.2.2-orig/gcc/configure gcc-4.2.2/gcc/configure
> >> ---- gcc-4.2.2-orig/gcc/configure    2008-08-31 23:10:56.000000000 +0200
> >> -+++ gcc-4.2.2/gcc/configure 2008-08-31 23:03:02.000000000 +0200
> >> -@@ -12716,6 +12716,7 @@
> >> -    esac
> >> -    saved_CFLAGS="${CFLAGS}"
> >> -    CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
> >> -+   CPP="${CPP_FOR_BUILD}" CPPFLAGS="${CPPFLAGS_FOR_BUILD}" \
> >> -    CONFIG_SITE= ${realsrcdir}/configure --cache-file=./other.cache \
> >> -            --enable-languages=${enable_languages-all} \
> >> -            --target=$target_alias --host=$build_alias
> --build=$build_alias
> >> -diff -urN gcc-4.2.2-orig/gcc/configure.ac gcc-4.2.2/gcc/configure.ac
> >> ---- gcc-4.2.2-orig/gcc/configure.ac 2008-08-31 23:10:53.000000000
> +0200
> >> -+++ gcc-4.2.2/gcc/configure.ac      2008-08-31 23:03:29.000000000
> +0200
> >> -@@ -1490,6 +1490,7 @@
> >> -    esac
> >> -    saved_CFLAGS="${CFLAGS}"
> >> -    CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
> >> -+   CPP="${CPP_FOR_BUILD}" CPPFLAGS="${CPPFLAGS_FOR_BUILD}" \
> >> -    ${realsrcdir}/configure \
> >> -            --enable-languages=${enable_languages-all} \
> >> -            --target=$target_alias --host=$build_alias
> --build=$build_alias
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/files/gcc-4.3.3-fix-EXTRA_BUILD.patch
> b/toolchain-layer/recipes-devtools/gcc/files/gcc-4.3.3-fix-EXTRA_BUILD.patch
> >> deleted file mode 100644
> >> index 8a2a4c4..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/files/gcc-4.3.3-fix-EXTRA_BUILD.patch
> >> +++ /dev/null
> >> @@ -1,12 +0,0 @@
> >> -Index: gcc-4.3.3/Makefile.in
> >> -===================================================================
> >> ---- gcc-4.3.3.orig/Makefile.in      2010-06-16 18:04:38.379008150 +0400
> >> -+++ gcc-4.3.3/Makefile.in   2010-06-16 18:05:29.115006261 +0400
> >> -@@ -148,6 +148,7 @@
> >> - # built for the build system to override those in BASE_FLAGS_TO_PASSS.
> >> - EXTRA_BUILD_FLAGS = \
> >> -    CFLAGS="$(CFLAGS_FOR_BUILD)" \
> >> -+   LIBCFLAGS="$(CFLAGS_FOR_BUILD)" \
> >> -    LDFLAGS="$(LDFLAGS_FOR_BUILD)"
> >> -
> >> - # This is the list of directories to built for the host system.
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/files/gcc-4.3.x-fix-EXTRA_BUILD.patch
> b/toolchain-layer/recipes-devtools/gcc/files/gcc-4.3.x-fix-EXTRA_BUILD.patch
> >> deleted file mode 100644
> >> index b375336..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/files/gcc-4.3.x-fix-EXTRA_BUILD.patch
> >> +++ /dev/null
> >> @@ -1,13 +0,0 @@
> >> -Index: gcc-4.3.1/Makefile.in
> >> -===================================================================
> >> ---- gcc-4.3.1.orig/Makefile.in      2010-07-07 13:08:44.000000000 +0200
> >> -+++ gcc-4.3.1/Makefile.in   2010-07-07 13:11:59.246625709 +0200
> >> -@@ -149,7 +149,7 @@
> >> - EXTRA_BUILD_FLAGS = \
> >> -    CFLAGS="$(CFLAGS_FOR_BUILD)" \
> >> -    LDFLAGS="$(LDFLAGS_FOR_BUILD)" \
> >> --   LIBCFLAGS=""
> >> -+        LIBCFLAGS="$(CFLAGS_FOR_BUILD)"
> >> -
> >> - # This is the list of directories to built for the host system.
> >> - SUBDIRS = @configdirs@
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/files/gcc-posix-open-fix.patch
> b/toolchain-layer/recipes-devtools/gcc/files/gcc-posix-open-fix.patch
> >> deleted file mode 100644
> >> index 99f813e..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/files/gcc-posix-open-fix.patch
> >> +++ /dev/null
> >> @@ -1,11 +0,0 @@
> >> ---- gcc-3.4.6/gcc/collect2.c        2008-10-04 18:17:17.796750393 +0400
> >> -+++ gcc-3.4.6/gcc/collect2.new      2008-10-04 18:24:10.120748711 +0400
> >> -@@ -1534,7 +1534,7 @@ collect_execute (const char *prog, char
> >> -   if (redir)
> >> -     {
> >> -       /* Open response file.  */
> >> --      redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT);
> >> -+      redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT,
> S_IWUSR);
> >> -
> >> -       /* Duplicate the stdout and stderr file handles
> >> -     so they can be restored later.  */
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/files/gcc4-mtune-compat.patch
> b/toolchain-layer/recipes-devtools/gcc/files/gcc4-mtune-compat.patch
> >> deleted file mode 100644
> >> index 0da2811..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/files/gcc4-mtune-compat.patch
> >> +++ /dev/null
> >> @@ -1,14 +0,0 @@
> >> -Patch for gcc3 to support gcc4-compatible (and consistent) values for
> -mtune= option.
> >> -
> >> ---- gcc-3.4.4/gcc/config/arm/arm.c.org      2007-12-15
> 23:58:35.000000000 +0200
> >> -+++ gcc-3.4.4/gcc/config/arm/arm.c  2007-12-16 00:20:39.000000000 +0200
> >> -@@ -432,7 +432,9 @@
> >> -   {"arm10tdmi",                             FL_MODE32 | FL_FAST_MULT
> | FL_ARCH4 | FL_THUMB | FL_LDSCHED             | FL_ARCH5 },
> >> -   {"arm1020t",                              FL_MODE32 | FL_FAST_MULT
> | FL_ARCH4 | FL_THUMB | FL_LDSCHED             | FL_ARCH5 },
> >> -   {"arm926ejs",                          FL_MODE32 | FL_FAST_MULT |
> FL_ARCH4 | FL_THUMB                          | FL_ARCH5 | FL_ARCH5E },
> >> -+  {"arm926ej-s",                         FL_MODE32 | FL_FAST_MULT |
> FL_ARCH4 | FL_THUMB                          | FL_ARCH5 | FL_ARCH5E },
> >> -   {"arm1026ejs",                         FL_MODE32 | FL_FAST_MULT |
> FL_ARCH4 | FL_THUMB                          | FL_ARCH5 | FL_ARCH5E },
> >> -+  {"arm1026ej-s",                        FL_MODE32 | FL_FAST_MULT |
> FL_ARCH4 | FL_THUMB                          | FL_ARCH5 | FL_ARCH5E },
> >> -   {"xscale",                             FL_MODE32 | FL_FAST_MULT |
> FL_ARCH4 | FL_THUMB | FL_LDSCHED | FL_STRONG | FL_ARCH5 | FL_ARCH5E |
> FL_XSCALE },
> >> -   {"iwmmxt",                             FL_MODE32 | FL_FAST_MULT |
> FL_ARCH4 | FL_THUMB | FL_LDSCHED | FL_STRONG | FL_ARCH5 | FL_ARCH5E |
> FL_XSCALE | FL_IWMMXT },
> >> -   /* V6 Architecture Processors */
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/files/gfortran-4.3.x.patch
> b/toolchain-layer/recipes-devtools/gcc/files/gfortran-4.3.x.patch
> >> deleted file mode 100644
> >> index 0c42851..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/files/gfortran-4.3.x.patch
> >> +++ /dev/null
> >> @@ -1,40 +0,0 @@
> >> -The patch below fixes a crash building libgfortran on
> arm-linux-gnueabi.
> >> -
> >> -This target doesn't really have a 128-bit integer type, however it
> does use
> >> -TImode to represent the return value of certain special ABI defined
> library
> >> -functions. This results in type_for_size(TImode) being called.
> >> -
> >> -Because TImode deosn't correspond to any gfortran integer kind
> >> -gfc_type_for_size returns NULL and we segfault shortly after.
> >> -
> >> -The patch below fixes this by making gfc_type_for_size handle TImode
> in the
> >> -same way as the C frontend.
> >> -
> >> -Tested on x86_64-linux and arm-linux-gnueabi.
> >> -Applied to trunk.
> >> -
> >> -Paul
> >> -
> >> -2007-05-15  Paul Brook  <paul at codesourcery.com>
> >> -
> >> -    gcc/fortran/
> >> -    * trans-types.c (gfc_type_for_size): Handle signed TImode.
> >> -
> >> -Index: gcc-4.2.1/gcc/fortran/trans-types.c
> >> -===================================================================
> >> ---- gcc-4.2.1/gcc/fortran/trans-types.c     (revision 170435)
> >> -+++ gcc-4.2.1/gcc/fortran/trans-types.c     (working copy)
> >> -@@ -1800,6 +1800,13 @@ gfc_type_for_size (unsigned bits, int un
> >> -      if (type && bits == TYPE_PRECISION (type))
> >> -        return type;
> >> -    }
> >> -+
> >> -+      /* Handle TImode as a special case because it is used by some
> backends
> >> -+         (eg. ARM) even though it is not available for normal use.  */
> >> -+#if HOST_BITS_PER_WIDE_INT >= 65
> >> -+      if (bits == TYPE_PRECISION (intTI_type_node))
> >> -+   return intTI_type_node;
> >> -+#endif
> >> -     }
> >> -   else
> >> -     {
> >> diff --git a/toolchain-layer/recipes-devtools/gcc/files/gfortran.patch
> b/toolchain-layer/recipes-devtools/gcc/files/gfortran.patch
> >> deleted file mode 100644
> >> index 96905e5..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/files/gfortran.patch
> >> +++ /dev/null
> >> @@ -1,40 +0,0 @@
> >> -The patch below fixes a crash building libgfortran on
> arm-linux-gnueabi.
> >> -
> >> -This target doesn't really have a 128-bit integer type, however it
> does use
> >> -TImode to represent the return value of certain special ABI defined
> library
> >> -functions. This results in type_for_size(TImode) being called.
> >> -
> >> -Because TImode deosn't correspond to any gfortran integer kind
> >> -gfc_type_for_size returns NULL and we segfault shortly after.
> >> -
> >> -The patch below fixes this by making gfc_type_for_size handle TImode
> in the
> >> -same way as the C frontend.
> >> -
> >> -Tested on x86_64-linux and arm-linux-gnueabi.
> >> -Applied to trunk.
> >> -
> >> -Paul
> >> -
> >> -2007-05-15  Paul Brook  <paul at codesourcery.com>
> >> -
> >> -    gcc/fortran/
> >> -    * trans-types.c (gfc_type_for_size): Handle signed TImode.
> >> -
> >> -Index: gcc-4.2.1/gcc/fortran/trans-types.c
> >> -===================================================================
> >> ---- gcc-4.2.1/gcc/fortran/trans-types.c     (revision 170435)
> >> -+++ gcc-4.2.1/gcc/fortran/trans-types.c     (working copy)
> >> -@@ -1800,6 +1800,13 @@ gfc_type_for_size (unsigned bits, int un
> >> -      if (type && bits == TYPE_PRECISION (type))
> >> -        return type;
> >> -    }
> >> -+
> >> -+      /* Handle TImode as a special case because it is used by some
> backends
> >> -+         (eg. ARM) even though it is not available for normal use.  */
> >> -+#if HOST_BITS_PER_WIDE_INT >= 64
> >> -+      if (bits == TYPE_PRECISION (intTI_type_node))
> >> -+   return intTI_type_node;
> >> -+#endif
> >> -     }
> >> -   else
> >> -     {
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/files/pr22133-mingw-path-fixup.patch
> b/toolchain-layer/recipes-devtools/gcc/files/pr22133-mingw-path-fixup.patch
> >> deleted file mode 100644
> >> index 429e9ff..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/files/pr22133-mingw-path-fixup.patch
> >> +++ /dev/null
> >> @@ -1,29 +0,0 @@
> >> -diff -rupN gcc-4.2.orig/gcc/c-incpath.c gcc-4.2/gcc/c-incpath.c
> >> ---- gcc-4.2.orig/gcc/c-incpath.c    2007-09-01 11:28:30.000000000 -0400
> >> -+++ gcc-4.2/gcc/c-incpath.c 2008-08-17 16:56:01.000000000 -0400
> >> -@@ -340,13 +340,18 @@ add_path (char *path, int chain, int cxx
> >> -   cpp_dir *p;
> >> -
> >> - #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
> >> --  /* Convert all backslashes to slashes.  The native CRT stat()
> >> --     function does not recognize a directory that ends in a backslash
> >> --     (unless it is a drive root dir, such "c:\").  Forward slashes,
> >> --     trailing or otherwise, cause no problems for stat().  */
> >> --  char* c;
> >> --  for (c = path; *c; c++)
> >> --    if (*c == '\\') *c = '/';
> >> -+  /* Remove unnecessary trailing slashes.  On some versions of MS
> >> -+     Windows, trailing  _forward_ slashes cause no problems for
> stat().
> >> -+     On newer versions, stat() does not recognise a directory that
> ends
> >> -+     in a '\\' or '/', unless it is a drive root dir, such as "c:/",
> >> -+     where it is obligatory.  */
> >> -+  int pathlen = strlen (path);
> >> -+  char* end = path + pathlen - 1;
> >> -+  /* Preserve the lead '/' or lead "c:/".  */
> >> -+  char* start = path + (pathlen > 2 && path[1] == ':' ? 3 : 1);
> >> -+
> >> -+  for (; end > start && IS_DIR_SEPARATOR (*end); end--)
> >> -+    *end = 0;
> >> - #endif
> >> -
> >> -   p = XNEW (cpp_dir);
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/files/pr33281-mingw-host-fragment.patch
> b/toolchain-layer/recipes-devtools/gcc/files/pr33281-mingw-host-fragment.patch
> >> deleted file mode 100644
> >> index e16fb44..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/files/pr33281-mingw-host-fragment.patch
> >> +++ /dev/null
> >> @@ -1,38 +0,0 @@
> >> ----
> >> - config/mh-mingw |    3 +++
> >> - configure       |    1 +
> >> - configure.in    |    1 +
> >> - 3 files changed, 5 insertions(+)
> >> -
> >> -Index: gcc-4.2.3/config/mh-mingw
> >> -===================================================================
> >> ---- /dev/null
> >> -+++ gcc-4.2.3/config/mh-mingw
> >> -@@ -0,0 +1,3 @@
> >> -+# Add -D__USE_MINGW_ACCESS to enable the built compiler to work on
> Windows
> >> -+# Vista (see PR33281 for details).
> >> -+BOOT_CFLAGS += -D__USE_MINGW_ACCESS
> >> -Index: gcc-4.2.3/configure.in
> >> -===================================================================
> >> ---- gcc-4.2.3.orig/configure.in
> >> -+++ gcc-4.2.3/configure.in
> >> -@@ -929,6 +929,7 @@ case "${host}" in
> >> -     host_makefile_frag="config/mh-cygwin"
> >> -     ;;
> >> -   *-mingw32*)
> >> -+    host_makefile_frag="config/mh-mingw"
> >> -     ;;
> >> -   *-interix*)
> >> -     host_makefile_frag="config/mh-interix"
> >> -Index: gcc-4.2.3/configure
> >> -===================================================================
> >> ---- gcc-4.2.3.orig/configure
> >> -+++ gcc-4.2.3/configure
> >> -@@ -1769,6 +1769,7 @@ case "${host}" in
> >> -     host_makefile_frag="config/mh-cygwin"
> >> -     ;;
> >> -   *-mingw32*)
> >> -+    host_makefile_frag="config/mh-mingw"
> >> -     ;;
> >> -   *-interix*)
> >> -     host_makefile_frag="config/mh-interix"
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/files/pr35916-mingw-__USE_MINGW_ACCESS-everywhere.patch
> b/toolchain-layer/recipes-devtools/gcc/files/pr35916-mingw-__USE_MINGW_ACCESS-everywhere.patch
> >> deleted file mode 100644
> >> index faf44c2..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/files/pr35916-mingw-__USE_MINGW_ACCESS-everywhere.patch
> >> +++ /dev/null
> >> @@ -1,13 +0,0 @@
> >> ----
> >> - config/mh-mingw |    1 +
> >> - 1 file changed, 1 insertion(+)
> >> -
> >> -Index: gcc-4.2.3/config/mh-mingw
> >> -===================================================================
> >> ---- gcc-4.2.3.orig/config/mh-mingw
> >> -+++ gcc-4.2.3/config/mh-mingw
> >> -@@ -1,3 +1,4 @@
> >> - # Add -D__USE_MINGW_ACCESS to enable the built compiler to work on
> Windows
> >> - # Vista (see PR33281 for details).
> >> - BOOT_CFLAGS += -D__USE_MINGW_ACCESS
> >> -+CFLAGS += -D__USE_MINGW_ACCESS
> >> diff --git a/toolchain-layer/recipes-devtools/gcc/gcc-4.6.inc
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6.inc
> >> deleted file mode 100644
> >> index 83e9a9f..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6.inc
> >> +++ /dev/null
> >> @@ -1,119 +0,0 @@
> >> -require recipes-devtools/gcc/gcc-common.inc
> >> -
> >> -PR = "r27"
> >> -
> >> -# Third digit in PV should be incremented after a minor release
> >> -# happens from this branch on gcc e.g. currently its 4.6.0
> >> -# when 4.6.1 is releases and we bump SRCREV beyond the release
> >> -# on branch then PV should be incremented to 4.6.1+svnr${SRCPV}
> >> -# to reflect that change
> >> -
> >> -PV = "4.6.3+svnr${SRCPV}"
> >> -
> >> -# BINV should be incremented after updating to a revision
> >> -# after a minor gcc release (e.g. 4.6.1 or 4.6.2) has been made
> >> -# the value will be minor-release+1 e.g. if current minor release was
> >> -# 4.6.1 then the value below will have 2 which will mean 4.6.2
> >> -# which will be next minor release and so on.
> >> -
> >> -BINV = "4.6.4"
> >> -
> >> -SRCREV = "184847"
> >> -BRANCH = "gcc-4_6-branch"
> >> -FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/gcc-4.6' ], d)}"
> >> -
> >> -DEPENDS =+ "mpfr gmp libmpc"
> >> -NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native"
> >> -
> >> -LICENSE="GPL-3.0-with-GCC-exception & GPLv3"
> >> -
> >> -LIC_FILES_CHKSUM =
> "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
> >> -    file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
> >> -    file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
> >> -    file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
> >> -    file://COPYING.RUNTIME;md5=fe60d87048567d4fe8c8a0ed2448bcc8"
> >> -
> >> -SRC_URI = "svn://
> gcc.gnu.org/svn/gcc/branches;module=${BRANCH};protocol=http \
> >> -    file://gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
> >> -    file://100-uclibc-conf.patch \
> >> -    file://gcc-uclibc-locale-ctype_touplow_t.patch \
> >> -    file://cache-amnesia.patch \
> >> -    file://gcc-flags-for-build.patch \
> >> -    file://103-uclibc-conf-noupstream.patch  \
> >> -    file://200-uclibc-locale.patch  \
> >> -    file://203-uclibc-locale-no__x.patch; \
> >> -    file://204-uclibc-locale-wchar_fix.patch; \
> >> -    file://205-uclibc-locale-update.patch; \
> >> -    file://301-missing-execinfo_h.patch  \
> >> -    file://302-c99-snprintf.patch  \
> >> -    file://303-c99-complex-ugly-hack.patch  \
> >> -    file://304-index_macro.patch  \
> >> -    file://305-libmudflap-susv3-legacy.patch  \
> >> -    file://306-libstdc++-namespace.patch  \
> >> -    file://740-sh-pr24836.patch  \
> >> -    file://800-arm-bigendian.patch  \
> >> -    file://904-flatten-switch-stmt-00.patch  \
> >> -    file://arm-nolibfloat.patch  \
> >> -    file://arm-softfloat.patch \
> >> -    file://zecke-xgcc-cpp.patch \
> >> -    file://gcc-poison-system-directories.patch \
> >> -    file://gcc-poison-dir-extend.patch \
> >> -    file://gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch \
> >> -    file://64bithack.patch \
> >> -    file://optional_libstdc.patch \
> >> -    file://disable_relax_pic_calls_flag.patch \
> >> -    file://COLLECT_GCC_OPTIONS.patch \
> >> -    file://use-defaults.h-and-t-oe-in-B.patch \
> >> -    file://powerpc-e5500.patch \
> >> -    file://fix-for-ice-50099.patch \
> >> -    file://gcc-with-linker-hash-style.patch \
> >> -    file://pr46934.patch \
> >> -    file://pr32219.patch \
> >> -    file://pr47551.patch \
> >> -    file://gcc-arm-set-cost.patch \
> >> -    file://GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch \
> >> -    file://fortran-cross-compile-hack.patch \
> >> -    file://cpp-honour-sysroot.patch \
> >> -    file://mips64-default-n64.patch \
> >> -    file://gcc-argument-list-too-long.patch \
> >> -"
> >> -
> >> -SRC_URI_append_sh3  = " file://sh3-installfix-fixheaders.patch "
> >> -
> >> -#S = "${WORKDIR}/${BRANCH}"
> >> -S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/${BRANCH}"
> >> -B = "${WORKDIR}/${BRANCH}/build.${HOST_SYS}.${TARGET_SYS}"
> >> -
> >> -# Language Overrides
> >> -FORTRAN = ""
> >> -JAVA = ""
> >> -
> >> -EXTRA_OECONF_BASE = " --enable-lto \
> >> -    --enable-libssp \
> >> -    --disable-bootstrap \
> >> -    --disable-libgomp \
> >> -    --disable-libmudflap \
> >> -    --with-system-zlib \
> >> -    --with-linker-hash-style=${LINKER_HASH_STYLE} \
> >> -    --with-ppl=no \
> >> -    --with-cloog=no \
> >> -    --enable-cheaders=c_global "
> >> -
> >> -EXTRA_OECONF_INITIAL = "--disable-libmudflap \
> >> -    --disable-libgomp \
> >> -    --disable-libssp \
> >> -    --disable-libquadmath \
> >> -    --with-system-zlib \
> >> -    --disable-lto \
> >> -    --disable-plugin \
> >> -    --enable-decimal-float=no"
> >> -
> >> -EXTRA_OECONF_INTERMEDIATE = "--disable-libmudflap \
> >> -    --disable-libgomp \
> >> -    --disable-libquadmath \
> >> -    --with-system-zlib \
> >> -    --disable-lto \
> >> -    --disable-plugin \
> >> -    --disable-libssp"
> >> -
> >> -EXTRA_OECONF_append_libc-uclibc = " --disable-decimal-float "
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/100-uclibc-conf.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/100-uclibc-conf.patch
> >> deleted file mode 100644
> >> index b2981e0..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/100-uclibc-conf.patch
> >> +++ /dev/null
> >> @@ -1,39 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Index: gcc-4.6.0/contrib/regression/objs-gcc.sh
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/contrib/regression/objs-gcc.sh
> >> -+++ gcc-4.6.0/contrib/regression/objs-gcc.sh
> >> -@@ -106,6 +106,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H
> >> -  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.6.0/libjava/classpath/ltconfig
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libjava/classpath/ltconfig
> >> -+++ gcc-4.6.0/libjava/classpath/ltconfig
> >> -@@ -603,7 +603,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-
> >> -
> >> - # 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
> >> -
> >> -@@ -1247,7 +1247,7 @@ linux-gnuoldld* | linux-gnuaout* | linux
> >> -   ;;
> >> -
> >> - # This must be Linux ELF.
> >> --linux-gnu*)
> >> -+linux*)
> >> -   version_type=linux
> >> -   need_lib_prefix=no
> >> -   need_version=no
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/103-uclibc-conf-noupstream.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/103-uclibc-conf-noupstream.patch
> >> deleted file mode 100644
> >> index 22c6580..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/103-uclibc-conf-noupstream.patch
> >> +++ /dev/null
> >> @@ -1,17 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Corrects sub machine arch corectly
> >> -
> >> -Index: gcc-4.6.0/gcc/config.gcc
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/config.gcc
> >> -+++ gcc-4.6.0/gcc/config.gcc
> >> -@@ -2316,7 +2316,7 @@ score-*-elf)
> >> -         ;;
> >> - sh-*-elf* | sh[12346l]*-*-elf* | \
> >> - sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
> >> --  sh-*-linux* | sh[2346lbe]*-*-linux* | \
> >> -+  sh*-*-linux* | sh[2346lbe]*-*-linux* | \
> >> -   sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* |
> sh5l*-*-netbsd* | \
> >> -    sh64-*-netbsd* | sh64l*-*-netbsd*)
> >> -    tmake_file="${tmake_file} sh/t-sh sh/t-elf"
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/200-uclibc-locale.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/200-uclibc-locale.patch
> >> deleted file mode 100644
> >> index b8ea78d..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/200-uclibc-locale.patch
> >> +++ /dev/null
> >> @@ -1,2842 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Index: gcc-4.6.0/libstdc++-v3/acinclude.m4
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/acinclude.m4
> >> -+++ gcc-4.6.0/libstdc++-v3/acinclude.m4
> >> -@@ -1753,7 +1753,7 @@ dnl
> >> - AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
> >> -   GLIBCXX_ENABLE(clocale,auto,[[[=MODEL]]],
> >> -     [use MODEL for target locale package],
> >> --    [permit generic|gnu|ieee_1003.1-2001|yes|no|auto])
> >> -+    [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto])
> >> -
> >> -   # Deal with gettext issues.  Default to not using it (=no) until we
> detect
> >> -   # support for it later.  Let the user turn it off via --e/d, but
> let that
> >> -@@ -1774,6 +1774,9 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
> >> -   # Default to "generic".
> >> -   if test $enable_clocale_flag = auto; then
> >> -     case ${target_os} in
> >> -+      *-uclibc*)
> >> -+        enable_clocale_flag=uclibc
> >> -+        ;;
> >> -       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
> >> -    enable_clocale_flag=gnu
> >> -    ;;
> >> -@@ -1915,6 +1918,40 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
> >> -       CTIME_CC=config/locale/generic/time_members.cc
> >> -       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
> >> -       ;;
> >> -+    uclibc)
> >> -+      AC_MSG_RESULT(uclibc)
> >> -+
> >> -+      # Declare intention to use gettext, and add support for specific
> >> -+      # languages.
> >> -+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
> >> -+      ALL_LINGUAS="de fr"
> >> -+
> >> -+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
> >> -+      AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
> >> -+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" =
> x"yes"; then
> >> -+        USE_NLS=yes
> >> -+      fi
> >> -+      # Export the build objects.
> >> -+      for ling in $ALL_LINGUAS; do \
> >> -+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
> >> -+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
> >> -+      done
> >> -+      AC_SUBST(glibcxx_MOFILES)
> >> -+      AC_SUBST(glibcxx_POFILES)
> >> -+
> >> -+      CLOCALE_H=config/locale/uclibc/c_locale.h
> >> -+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
> >> -+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
> >> -+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
> >> -+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
> >> -+      CMESSAGES_H=config/locale/uclibc/messages_members.h
> >> -+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
> >> -+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
> >> -+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
> >> -+      CTIME_H=config/locale/uclibc/time_members.h
> >> -+      CTIME_CC=config/locale/uclibc/time_members.cc
> >> -+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
> >> -+      ;;
> >> -   esac
> >> -
> >> -   # This is where the testsuite looks for locale catalogs, using the
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
> >> -===================================================================
> >> ---- /dev/null
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
> >> -@@ -0,0 +1,63 @@
> >> -+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++
> -*-
> >> -+
> >> -+// Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
> >> -+//
> >> -+// This file is part of the GNU ISO C++ Library.  This library is free
> >> -+// software; you can redistribute it and/or modify it under the
> >> -+// terms of the GNU General Public License as published by the
> >> -+// Free Software Foundation; either version 2, or (at your option)
> >> -+// any later version.
> >> -+
> >> -+// This library is distributed in the hope that it will be useful,
> >> -+// but WITHOUT ANY WARRANTY; without even the implied warranty of
> >> -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >> -+// GNU General Public License for more details.
> >> -+
> >> -+// You should have received a copy of the GNU General Public License
> along
> >> -+// with this library; see the file COPYING.  If not, write to the Free
> >> -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA
> 02111-1307,
> >> -+// USA.
> >> -+
> >> -+// As a special exception, you may use this file as part of a free
> software
> >> -+// library without restriction.  Specifically, if other files
> instantiate
> >> -+// templates or use macros or inline functions from this file, or you
> compile
> >> -+// this file and link it with other files to produce an executable,
> this
> >> -+// file does not by itself cause the resulting executable to be
> covered by
> >> -+// the GNU General Public License.  This exception does not however
> >> -+// invalidate any other reasons why the executable file might be
> covered by
> >> -+// the GNU General Public License.
> >> -+
> >> -+// Written by Jakub Jelinek <jakub at redhat.com>
> >> -+
> >> -+#include <bits/c++config.h>
> >> -+#include <clocale>
> >> -+
> >> -+#ifdef __UCLIBC_MJN3_ONLY__
> >> -+#warning clean this up
> >> -+#endif
> >> -+
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+
> >> -+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l;
> >> -+extern "C" __typeof(strcoll_l) __strcoll_l;
> >> -+extern "C" __typeof(strftime_l) __strftime_l;
> >> -+extern "C" __typeof(strtod_l) __strtod_l;
> >> -+extern "C" __typeof(strtof_l) __strtof_l;
> >> -+extern "C" __typeof(strtold_l) __strtold_l;
> >> -+extern "C" __typeof(strxfrm_l) __strxfrm_l;
> >> -+extern "C" __typeof(newlocale) __newlocale;
> >> -+extern "C" __typeof(freelocale) __freelocale;
> >> -+extern "C" __typeof(duplocale) __duplocale;
> >> -+extern "C" __typeof(uselocale) __uselocale;
> >> -+
> >> -+#ifdef _GLIBCXX_USE_WCHAR_T
> >> -+extern "C" __typeof(iswctype_l) __iswctype_l;
> >> -+extern "C" __typeof(towlower_l) __towlower_l;
> >> -+extern "C" __typeof(towupper_l) __towupper_l;
> >> -+extern "C" __typeof(wcscoll_l) __wcscoll_l;
> >> -+extern "C" __typeof(wcsftime_l) __wcsftime_l;
> >> -+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
> >> -+extern "C" __typeof(wctype_l) __wctype_l;
> >> -+#endif
> >> -+
> >> -+#endif // GLIBC 2.3 and later
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c_locale.cc
> >> -===================================================================
> >> ---- /dev/null
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c_locale.cc
> >> -@@ -0,0 +1,160 @@
> >> -+// Wrapper for underlying C-language localization -*- C++ -*-
> >> -+
> >> -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
> >> -+//
> >> -+// This file is part of the GNU ISO C++ Library.  This library is free
> >> -+// software; you can redistribute it and/or modify it under the
> >> -+// terms of the GNU General Public License as published by the
> >> -+// Free Software Foundation; either version 2, or (at your option)
> >> -+// any later version.
> >> -+
> >> -+// This library is distributed in the hope that it will be useful,
> >> -+// but WITHOUT ANY WARRANTY; without even the implied warranty of
> >> -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >> -+// GNU General Public License for more details.
> >> -+
> >> -+// You should have received a copy of the GNU General Public License
> along
> >> -+// with this library; see the file COPYING.  If not, write to the Free
> >> -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA
> 02111-1307,
> >> -+// USA.
> >> -+
> >> -+// As a special exception, you may use this file as part of a free
> software
> >> -+// library without restriction.  Specifically, if other files
> instantiate
> >> -+// templates or use macros or inline functions from this file, or you
> compile
> >> -+// this file and link it with other files to produce an executable,
> this
> >> -+// file does not by itself cause the resulting executable to be
> covered by
> >> -+// the GNU General Public License.  This exception does not however
> >> -+// invalidate any other reasons why the executable file might be
> covered by
> >> -+// the GNU General Public License.
> >> -+
> >> -+//
> >> -+// ISO C++ 14882: 22.8  Standard locale categories.
> >> -+//
> >> -+
> >> -+// Written by Benjamin Kosnik <bkoz at redhat.com>
> >> -+
> >> -+#include <cerrno>  // For errno
> >> -+#include <locale>
> >> -+#include <stdexcept>
> >> -+#include <langinfo.h>
> >> -+#include <bits/c++locale_internal.h>
> >> -+
> >> -+#ifndef __UCLIBC_HAS_XLOCALE__
> >> -+#define __strtol_l(S, E, B, L)      strtol((S), (E), (B))
> >> -+#define __strtoul_l(S, E, B, L)     strtoul((S), (E), (B))
> >> -+#define __strtoll_l(S, E, B, L)     strtoll((S), (E), (B))
> >> -+#define __strtoull_l(S, E, B, L)    strtoull((S), (E), (B))
> >> -+#define __strtof_l(S, E, L)         strtof((S), (E))
> >> -+#define __strtod_l(S, E, L)         strtod((S), (E))
> >> -+#define __strtold_l(S, E, L)        strtold((S), (E))
> >> -+#warning should dummy __newlocale check for C|POSIX ?
> >> -+#define __newlocale(a, b, c)        NULL
> >> -+#define __freelocale(a)             ((void)0)
> >> -+#define __duplocale(a)              __c_locale()
> >> -+#endif
> >> -+
> >> -+namespace std
> >> -+{
> >> -+  template<>
> >> -+    void
> >> -+    __convert_to_v(const char* __s, float& __v, ios_base::iostate&
> __err,
> >> -+              const __c_locale& __cloc)
> >> -+    {
> >> -+      if (!(__err & ios_base::failbit))
> >> -+   {
> >> -+     char* __sanity;
> >> -+     errno = 0;
> >> -+     float __f = __strtof_l(__s, &__sanity, __cloc);
> >> -+          if (__sanity != __s && errno != ERANGE)
> >> -+       __v = __f;
> >> -+     else
> >> -+       __err |= ios_base::failbit;
> >> -+   }
> >> -+    }
> >> -+
> >> -+  template<>
> >> -+    void
> >> -+    __convert_to_v(const char* __s, double& __v, ios_base::iostate&
> __err,
> >> -+              const __c_locale& __cloc)
> >> -+    {
> >> -+      if (!(__err & ios_base::failbit))
> >> -+   {
> >> -+     char* __sanity;
> >> -+     errno = 0;
> >> -+     double __d = __strtod_l(__s, &__sanity, __cloc);
> >> -+          if (__sanity != __s && errno != ERANGE)
> >> -+       __v = __d;
> >> -+     else
> >> -+       __err |= ios_base::failbit;
> >> -+   }
> >> -+    }
> >> -+
> >> -+  template<>
> >> -+    void
> >> -+    __convert_to_v(const char* __s, long double& __v,
> ios_base::iostate& __err,
> >> -+              const __c_locale& __cloc)
> >> -+    {
> >> -+      if (!(__err & ios_base::failbit))
> >> -+   {
> >> -+     char* __sanity;
> >> -+     errno = 0;
> >> -+     long double __ld = __strtold_l(__s, &__sanity, __cloc);
> >> -+          if (__sanity != __s && errno != ERANGE)
> >> -+       __v = __ld;
> >> -+     else
> >> -+       __err |= ios_base::failbit;
> >> -+   }
> >> -+    }
> >> -+
> >> -+  void
> >> -+  locale::facet::_S_create_c_locale(__c_locale& __cloc, const char*
> __s,
> >> -+                               __c_locale __old)
> >> -+  {
> >> -+    __cloc = __newlocale(1 << LC_ALL, __s, __old);
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    if (!__cloc)
> >> -+      {
> >> -+   // This named locale is not supported by the underlying OS.
> >> -+   __throw_runtime_error(__N("locale::facet::_S_create_c_locale "
> >> -+                         "name not valid"));
> >> -+      }
> >> -+#endif
> >> -+  }
> >> -+
> >> -+  void
> >> -+  locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
> >> -+  {
> >> -+    if (_S_get_c_locale() != __cloc)
> >> -+      __freelocale(__cloc);
> >> -+  }
> >> -+
> >> -+  __c_locale
> >> -+  locale::facet::_S_clone_c_locale(__c_locale& __cloc)
> >> -+  { return __duplocale(__cloc); }
> >> -+} // namespace std
> >> -+
> >> -+namespace __gnu_cxx
> >> -+{
> >> -+  const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
> >> -+    {
> >> -+      "LC_CTYPE",
> >> -+      "LC_NUMERIC",
> >> -+      "LC_TIME",
> >> -+      "LC_COLLATE",
> >> -+      "LC_MONETARY",
> >> -+      "LC_MESSAGES",
> >> -+#if _GLIBCXX_NUM_CATEGORIES != 0
> >> -+      "LC_PAPER",
> >> -+      "LC_NAME",
> >> -+      "LC_ADDRESS",
> >> -+      "LC_TELEPHONE",
> >> -+      "LC_MEASUREMENT",
> >> -+      "LC_IDENTIFICATION"
> >> -+#endif
> >> -+    };
> >> -+}
> >> -+
> >> -+namespace std
> >> -+{
> >> -+  const char* const* const locale::_S_categories =
> __gnu_cxx::category_names;
> >> -+}  // namespace std
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c_locale.h
> >> -===================================================================
> >> ---- /dev/null
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c_locale.h
> >> -@@ -0,0 +1,117 @@
> >> -+// Wrapper for underlying C-language localization -*- C++ -*-
> >> -+
> >> -+// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software
> Foundation, Inc.
> >> -+//
> >> -+// This file is part of the GNU ISO C++ Library.  This library is free
> >> -+// software; you can redistribute it and/or modify it under the
> >> -+// terms of the GNU General Public License as published by the
> >> -+// Free Software Foundation; either version 2, or (at your option)
> >> -+// any later version.
> >> -+
> >> -+// This library is distributed in the hope that it will be useful,
> >> -+// but WITHOUT ANY WARRANTY; without even the implied warranty of
> >> -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >> -+// GNU General Public License for more details.
> >> -+
> >> -+// You should have received a copy of the GNU General Public License
> along
> >> -+// with this library; see the file COPYING.  If not, write to the Free
> >> -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA
> 02111-1307,
> >> -+// USA.
> >> -+
> >> -+// As a special exception, you may use this file as part of a free
> software
> >> -+// library without restriction.  Specifically, if other files
> instantiate
> >> -+// templates or use macros or inline functions from this file, or you
> compile
> >> -+// this file and link it with other files to produce an executable,
> this
> >> -+// file does not by itself cause the resulting executable to be
> covered by
> >> -+// the GNU General Public License.  This exception does not however
> >> -+// invalidate any other reasons why the executable file might be
> covered by
> >> -+// the GNU General Public License.
> >> -+
> >> -+//
> >> -+// ISO C++ 14882: 22.8  Standard locale categories.
> >> -+//
> >> -+
> >> -+// Written by Benjamin Kosnik <bkoz at redhat.com>
> >> -+
> >> -+#ifndef _C_LOCALE_H
> >> -+#define _C_LOCALE_H 1
> >> -+
> >> -+#pragma GCC system_header
> >> -+
> >> -+#include <cstring>              // get std::strlen
> >> -+#include <cstdio>               // get std::snprintf or std::sprintf
> >> -+#include <clocale>
> >> -+#include <langinfo.h>              // For codecvt
> >> -+#ifdef __UCLIBC_MJN3_ONLY__
> >> -+#warning fix this
> >> -+#endif
> >> -+#ifdef __UCLIBC_HAS_LOCALE__
> >> -+#include <iconv.h>         // For codecvt using iconv, iconv_t
> >> -+#endif
> >> -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
> >> -+#include <libintl.h>               // For messages
> >> -+#endif
> >> -+
> >> -+#ifdef __UCLIBC_MJN3_ONLY__
> >> -+#warning what is _GLIBCXX_C_LOCALE_GNU for
> >> -+#endif
> >> -+#define _GLIBCXX_C_LOCALE_GNU 1
> >> -+
> >> -+#ifdef __UCLIBC_MJN3_ONLY__
> >> -+#warning fix categories
> >> -+#endif
> >> -+// #define _GLIBCXX_NUM_CATEGORIES 6
> >> -+#define _GLIBCXX_NUM_CATEGORIES 0
> >> -+
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+namespace __gnu_cxx
> >> -+{
> >> -+  extern "C" __typeof(uselocale) __uselocale;
> >> -+}
> >> -+#endif
> >> -+
> >> -+namespace std
> >> -+{
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+  typedef __locale_t               __c_locale;
> >> -+#else
> >> -+  typedef int*                     __c_locale;
> >> -+#endif
> >> -+
> >> -+  // Convert numeric value of type _Tv to string and return length of
> >> -+  // string.  If snprintf is available use it, otherwise fall back to
> >> -+  // the unsafe sprintf which, in general, can be dangerous and should
> >> -+  // be avoided.
> >> -+  template<typename _Tv>
> >> -+    int
> >> -+    __convert_from_v(char* __out,
> >> -+                const int __size __attribute__ ((__unused__)),
> >> -+                const char* __fmt,
> >> -+#ifdef __UCLIBC_HAS_XCLOCALE__
> >> -+                _Tv __v, const __c_locale& __cloc, int __prec)
> >> -+    {
> >> -+      __c_locale __old = __gnu_cxx::__uselocale(__cloc);
> >> -+#else
> >> -+                _Tv __v, const __c_locale&, int __prec)
> >> -+    {
> >> -+# ifdef __UCLIBC_HAS_LOCALE__
> >> -+      char* __old = std::setlocale(LC_ALL, NULL);
> >> -+      char* __sav = new char[std::strlen(__old) + 1];
> >> -+      std::strcpy(__sav, __old);
> >> -+      std::setlocale(LC_ALL, "C");
> >> -+# endif
> >> -+#endif
> >> -+
> >> -+      const int __ret = std::snprintf(__out, __size, __fmt, __prec,
> __v);
> >> -+
> >> -+#ifdef __UCLIBC_HAS_XCLOCALE__
> >> -+      __gnu_cxx::__uselocale(__old);
> >> -+#elif defined __UCLIBC_HAS_LOCALE__
> >> -+      std::setlocale(LC_ALL, __sav);
> >> -+      delete [] __sav;
> >> -+#endif
> >> -+      return __ret;
> >> -+    }
> >> -+}
> >> -+
> >> -+#endif
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
> >> -===================================================================
> >> ---- /dev/null
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
> >> -@@ -0,0 +1,308 @@
> >> -+// std::codecvt implementation details, GNU version -*- C++ -*-
> >> -+
> >> -+// Copyright (C) 2002, 2003 Free Software Foundation, Inc.
> >> -+//
> >> -+// This file is part of the GNU ISO C++ Library.  This library is free
> >> -+// software; you can redistribute it and/or modify it under the
> >> -+// terms of the GNU General Public License as published by the
> >> -+// Free Software Foundation; either version 2, or (at your option)
> >> -+// any later version.
> >> -+
> >> -+// This library is distributed in the hope that it will be useful,
> >> -+// but WITHOUT ANY WARRANTY; without even the implied warranty of
> >> -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >> -+// GNU General Public License for more details.
> >> -+
> >> -+// You should have received a copy of the GNU General Public License
> along
> >> -+// with this library; see the file COPYING.  If not, write to the Free
> >> -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA
> 02111-1307,
> >> -+// USA.
> >> -+
> >> -+// As a special exception, you may use this file as part of a free
> software
> >> -+// library without restriction.  Specifically, if other files
> instantiate
> >> -+// templates or use macros or inline functions from this file, or you
> compile
> >> -+// this file and link it with other files to produce an executable,
> this
> >> -+// file does not by itself cause the resulting executable to be
> covered by
> >> -+// the GNU General Public License.  This exception does not however
> >> -+// invalidate any other reasons why the executable file might be
> covered by
> >> -+// the GNU General Public License.
> >> -+
> >> -+//
> >> -+// ISO C++ 14882: 22.2.1.5 - Template class codecvt
> >> -+//
> >> -+
> >> -+// Written by Benjamin Kosnik <bkoz at redhat.com>
> >> -+
> >> -+#include <locale>
> >> -+#include <cstdlib>  // For MB_CUR_MAX
> >> -+#include <climits>  // For MB_LEN_MAX
> >> -+#include <bits/c++locale_internal.h>
> >> -+
> >> -+namespace std
> >> -+{
> >> -+  // Specializations.
> >> -+#ifdef _GLIBCXX_USE_WCHAR_T
> >> -+  codecvt_base::result
> >> -+  codecvt<wchar_t, char, mbstate_t>::
> >> -+  do_out(state_type& __state, const intern_type* __from,
> >> -+    const intern_type* __from_end, const intern_type*& __from_next,
> >> -+    extern_type* __to, extern_type* __to_end,
> >> -+    extern_type*& __to_next) const
> >> -+  {
> >> -+    result __ret = ok;
> >> -+    state_type __tmp_state(__state);
> >> -+
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
> >> -+#endif
> >> -+
> >> -+    // wcsnrtombs is *very* fast but stops if encounters NUL
> characters:
> >> -+    // in case we fall back to wcrtomb and then continue, in a loop.
> >> -+    // NB: wcsnrtombs is a GNU extension
> >> -+    for (__from_next = __from, __to_next = __to;
> >> -+    __from_next < __from_end && __to_next < __to_end
> >> -+    && __ret == ok;)
> >> -+      {
> >> -+   const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0',
> >> -+                                                 __from_end -
> __from_next);
> >> -+   if (!__from_chunk_end)
> >> -+     __from_chunk_end = __from_end;
> >> -+
> >> -+   __from = __from_next;
> >> -+   const size_t __conv = wcsnrtombs(__to_next, &__from_next,
> >> -+                                    __from_chunk_end - __from_next,
> >> -+                                    __to_end - __to_next, &__state);
> >> -+   if (__conv == static_cast<size_t>(-1))
> >> -+     {
> >> -+       // In case of error, in order to stop at the exact place we
> >> -+       // have to start again from the beginning with a series of
> >> -+       // wcrtomb.
> >> -+       for (; __from < __from_next; ++__from)
> >> -+         __to_next += wcrtomb(__to_next, *__from, &__tmp_state);
> >> -+       __state = __tmp_state;
> >> -+       __ret = error;
> >> -+     }
> >> -+   else if (__from_next && __from_next < __from_chunk_end)
> >> -+     {
> >> -+       __to_next += __conv;
> >> -+       __ret = partial;
> >> -+     }
> >> -+   else
> >> -+     {
> >> -+       __from_next = __from_chunk_end;
> >> -+       __to_next += __conv;
> >> -+     }
> >> -+
> >> -+   if (__from_next < __from_end && __ret == ok)
> >> -+     {
> >> -+       extern_type __buf[MB_LEN_MAX];
> >> -+       __tmp_state = __state;
> >> -+       const size_t __conv = wcrtomb(__buf, *__from_next,
> &__tmp_state);
> >> -+       if (__conv > static_cast<size_t>(__to_end - __to_next))
> >> -+         __ret = partial;
> >> -+       else
> >> -+         {
> >> -+           memcpy(__to_next, __buf, __conv);
> >> -+           __state = __tmp_state;
> >> -+           __to_next += __conv;
> >> -+           ++__from_next;
> >> -+         }
> >> -+     }
> >> -+      }
> >> -+
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __uselocale(__old);
> >> -+#endif
> >> -+
> >> -+    return __ret;
> >> -+  }
> >> -+
> >> -+  codecvt_base::result
> >> -+  codecvt<wchar_t, char, mbstate_t>::
> >> -+  do_in(state_type& __state, const extern_type* __from,
> >> -+   const extern_type* __from_end, const extern_type*& __from_next,
> >> -+   intern_type* __to, intern_type* __to_end,
> >> -+   intern_type*& __to_next) const
> >> -+  {
> >> -+    result __ret = ok;
> >> -+    state_type __tmp_state(__state);
> >> -+
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
> >> -+#endif
> >> -+
> >> -+    // mbsnrtowcs is *very* fast but stops if encounters NUL
> characters:
> >> -+    // in case we store a L'\0' and then continue, in a loop.
> >> -+    // NB: mbsnrtowcs is a GNU extension
> >> -+    for (__from_next = __from, __to_next = __to;
> >> -+    __from_next < __from_end && __to_next < __to_end
> >> -+    && __ret == ok;)
> >> -+      {
> >> -+   const extern_type* __from_chunk_end;
> >> -+   __from_chunk_end = static_cast<const
> extern_type*>(memchr(__from_next, '\0',
> >> -+
>  __from_end
> >> -+                                                             -
> __from_next));
> >> -+   if (!__from_chunk_end)
> >> -+     __from_chunk_end = __from_end;
> >> -+
> >> -+   __from = __from_next;
> >> -+   size_t __conv = mbsnrtowcs(__to_next, &__from_next,
> >> -+                              __from_chunk_end - __from_next,
> >> -+                              __to_end - __to_next, &__state);
> >> -+   if (__conv == static_cast<size_t>(-1))
> >> -+     {
> >> -+       // In case of error, in order to stop at the exact place we
> >> -+       // have to start again from the beginning with a series of
> >> -+       // mbrtowc.
> >> -+       for (;; ++__to_next, __from += __conv)
> >> -+         {
> >> -+           __conv = mbrtowc(__to_next, __from, __from_end - __from,
> >> -+                            &__tmp_state);
> >> -+           if (__conv == static_cast<size_t>(-1)
> >> -+               || __conv == static_cast<size_t>(-2))
> >> -+             break;
> >> -+         }
> >> -+       __from_next = __from;
> >> -+       __state = __tmp_state;
> >> -+       __ret = error;
> >> -+     }
> >> -+   else if (__from_next && __from_next < __from_chunk_end)
> >> -+     {
> >> -+       // It is unclear what to return in this case (see DR 382).
> >> -+       __to_next += __conv;
> >> -+       __ret = partial;
> >> -+     }
> >> -+   else
> >> -+     {
> >> -+       __from_next = __from_chunk_end;
> >> -+       __to_next += __conv;
> >> -+     }
> >> -+
> >> -+   if (__from_next < __from_end && __ret == ok)
> >> -+     {
> >> -+       if (__to_next < __to_end)
> >> -+         {
> >> -+           // XXX Probably wrong for stateful encodings
> >> -+           __tmp_state = __state;
> >> -+           ++__from_next;
> >> -+           *__to_next++ = L'\0';
> >> -+         }
> >> -+       else
> >> -+         __ret = partial;
> >> -+     }
> >> -+      }
> >> -+
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __uselocale(__old);
> >> -+#endif
> >> -+
> >> -+    return __ret;
> >> -+  }
> >> -+
> >> -+  int
> >> -+  codecvt<wchar_t, char, mbstate_t>::
> >> -+  do_encoding() const throw()
> >> -+  {
> >> -+    // XXX This implementation assumes that the encoding is
> >> -+    // stateless and is either single-byte or variable-width.
> >> -+    int __ret = 0;
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
> >> -+#endif
> >> -+    if (MB_CUR_MAX == 1)
> >> -+      __ret = 1;
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __uselocale(__old);
> >> -+#endif
> >> -+    return __ret;
> >> -+  }
> >> -+
> >> -+  int
> >> -+  codecvt<wchar_t, char, mbstate_t>::
> >> -+  do_max_length() const throw()
> >> -+  {
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
> >> -+#endif
> >> -+    // XXX Probably wrong for stateful encodings.
> >> -+    int __ret = MB_CUR_MAX;
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __uselocale(__old);
> >> -+#endif
> >> -+    return __ret;
> >> -+  }
> >> -+
> >> -+  int
> >> -+  codecvt<wchar_t, char, mbstate_t>::
> >> -+  do_length(state_type& __state, const extern_type* __from,
> >> -+       const extern_type* __end, size_t __max) const
> >> -+  {
> >> -+    int __ret = 0;
> >> -+    state_type __tmp_state(__state);
> >> -+
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
> >> -+#endif
> >> -+
> >> -+    // mbsnrtowcs is *very* fast but stops if encounters NUL
> characters:
> >> -+    // in case we advance past it and then continue, in a loop.
> >> -+    // NB: mbsnrtowcs is a GNU extension
> >> -+
> >> -+    // A dummy internal buffer is needed in order for mbsnrtocws to
> consider
> >> -+    // its fourth parameter (it wouldn't with NULL as first
> parameter).
> >> -+    wchar_t* __to =
> static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t)
> >> -+                                                      * __max));
> >> -+    while (__from < __end && __max)
> >> -+      {
> >> -+   const extern_type* __from_chunk_end;
> >> -+   __from_chunk_end = static_cast<const extern_type*>(memchr(__from,
> '\0',
> >> -+                                                             __end
> >> -+                                                             -
> __from));
> >> -+   if (!__from_chunk_end)
> >> -+     __from_chunk_end = __end;
> >> -+
> >> -+   const extern_type* __tmp_from = __from;
> >> -+   size_t __conv = mbsnrtowcs(__to, &__from,
> >> -+                              __from_chunk_end - __from,
> >> -+                              __max, &__state);
> >> -+   if (__conv == static_cast<size_t>(-1))
> >> -+     {
> >> -+       // In case of error, in order to stop at the exact place we
> >> -+       // have to start again from the beginning with a series of
> >> -+       // mbrtowc.
> >> -+       for (__from = __tmp_from;; __from += __conv)
> >> -+         {
> >> -+           __conv = mbrtowc(NULL, __from, __end - __from,
> >> -+                            &__tmp_state);
> >> -+           if (__conv == static_cast<size_t>(-1)
> >> -+               || __conv == static_cast<size_t>(-2))
> >> -+             break;
> >> -+         }
> >> -+       __state = __tmp_state;
> >> -+       __ret += __from - __tmp_from;
> >> -+       break;
> >> -+     }
> >> -+   if (!__from)
> >> -+     __from = __from_chunk_end;
> >> -+
> >> -+   __ret += __from - __tmp_from;
> >> -+   __max -= __conv;
> >> -+
> >> -+   if (__from < __end && __max)
> >> -+     {
> >> -+       // XXX Probably wrong for stateful encodings
> >> -+       __tmp_state = __state;
> >> -+       ++__from;
> >> -+       ++__ret;
> >> -+       --__max;
> >> -+     }
> >> -+      }
> >> -+
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __uselocale(__old);
> >> -+#endif
> >> -+
> >> -+    return __ret;
> >> -+  }
> >> -+#endif
> >> -+}
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/collate_members.cc
> >> -===================================================================
> >> ---- /dev/null
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/collate_members.cc
> >> -@@ -0,0 +1,80 @@
> >> -+// std::collate implementation details, GNU version -*- C++ -*-
> >> -+
> >> -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
> >> -+//
> >> -+// This file is part of the GNU ISO C++ Library.  This library is free
> >> -+// software; you can redistribute it and/or modify it under the
> >> -+// terms of the GNU General Public License as published by the
> >> -+// Free Software Foundation; either version 2, or (at your option)
> >> -+// any later version.
> >> -+
> >> -+// This library is distributed in the hope that it will be useful,
> >> -+// but WITHOUT ANY WARRANTY; without even the implied warranty of
> >> -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >> -+// GNU General Public License for more details.
> >> -+
> >> -+// You should have received a copy of the GNU General Public License
> along
> >> -+// with this library; see the file COPYING.  If not, write to the Free
> >> -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA
> 02111-1307,
> >> -+// USA.
> >> -+
> >> -+// As a special exception, you may use this file as part of a free
> software
> >> -+// library without restriction.  Specifically, if other files
> instantiate
> >> -+// templates or use macros or inline functions from this file, or you
> compile
> >> -+// this file and link it with other files to produce an executable,
> this
> >> -+// file does not by itself cause the resulting executable to be
> covered by
> >> -+// the GNU General Public License.  This exception does not however
> >> -+// invalidate any other reasons why the executable file might be
> covered by
> >> -+// the GNU General Public License.
> >> -+
> >> -+//
> >> -+// ISO C++ 14882: 22.2.4.1.2  collate virtual functions
> >> -+//
> >> -+
> >> -+// Written by Benjamin Kosnik <bkoz at redhat.com>
> >> -+
> >> -+#include <locale>
> >> -+#include <bits/c++locale_internal.h>
> >> -+
> >> -+#ifndef __UCLIBC_HAS_XLOCALE__
> >> -+#define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
> >> -+#define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
> >> -+#define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
> >> -+#define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
> >> -+#endif
> >> -+
> >> -+namespace std
> >> -+{
> >> -+  // These are basically extensions to char_traits, and perhaps should
> >> -+  // be put there instead of here.
> >> -+  template<>
> >> -+    int
> >> -+    collate<char>::_M_compare(const char* __one, const char* __two)
> const
> >> -+    {
> >> -+      int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate);
> >> -+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
> >> -+    }
> >> -+
> >> -+  template<>
> >> -+    size_t
> >> -+    collate<char>::_M_transform(char* __to, const char* __from,
> >> -+                           size_t __n) const
> >> -+    { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); }
> >> -+
> >> -+#ifdef _GLIBCXX_USE_WCHAR_T
> >> -+  template<>
> >> -+    int
> >> -+    collate<wchar_t>::_M_compare(const wchar_t* __one,
> >> -+                            const wchar_t* __two) const
> >> -+    {
> >> -+      int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate);
> >> -+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
> >> -+    }
> >> -+
> >> -+  template<>
> >> -+    size_t
> >> -+    collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t*
> __from,
> >> -+                              size_t __n) const
> >> -+    { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); }
> >> -+#endif
> >> -+}
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc
> >> -===================================================================
> >> ---- /dev/null
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc
> >> -@@ -0,0 +1,300 @@
> >> -+// std::ctype implementation details, GNU version -*- C++ -*-
> >> -+
> >> -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
> >> -+//
> >> -+// This file is part of the GNU ISO C++ Library.  This library is free
> >> -+// software; you can redistribute it and/or modify it under the
> >> -+// terms of the GNU General Public License as published by the
> >> -+// Free Software Foundation; either version 2, or (at your option)
> >> -+// any later version.
> >> -+
> >> -+// This library is distributed in the hope that it will be useful,
> >> -+// but WITHOUT ANY WARRANTY; without even the implied warranty of
> >> -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >> -+// GNU General Public License for more details.
> >> -+
> >> -+// You should have received a copy of the GNU General Public License
> along
> >> -+// with this library; see the file COPYING.  If not, write to the Free
> >> -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA
> 02111-1307,
> >> -+// USA.
> >> -+
> >> -+// As a special exception, you may use this file as part of a free
> software
> >> -+// library without restriction.  Specifically, if other files
> instantiate
> >> -+// templates or use macros or inline functions from this file, or you
> compile
> >> -+// this file and link it with other files to produce an executable,
> this
> >> -+// file does not by itself cause the resulting executable to be
> covered by
> >> -+// the GNU General Public License.  This exception does not however
> >> -+// invalidate any other reasons why the executable file might be
> covered by
> >> -+// the GNU General Public License.
> >> -+
> >> -+//
> >> -+// ISO C++ 14882: 22.2.1.1.2  ctype virtual functions.
> >> -+//
> >> -+
> >> -+// Written by Benjamin Kosnik <bkoz at redhat.com>
> >> -+
> >> -+#define _LIBC
> >> -+#include <locale>
> >> -+#undef _LIBC
> >> -+#include <bits/c++locale_internal.h>
> >> -+
> >> -+#ifndef __UCLIBC_HAS_XLOCALE__
> >> -+#define __wctype_l(S, L)           wctype((S))
> >> -+#define __towupper_l(C, L)         towupper((C))
> >> -+#define __towlower_l(C, L)         towlower((C))
> >> -+#define __iswctype_l(C, M, L)      iswctype((C), (M))
> >> -+#endif
> >> -+
> >> -+namespace std
> >> -+{
> >> -+  // NB: The other ctype<char> specializations are in src/locale.cc
> and
> >> -+  // various /config/os/* files.
> >> -+  template<>
> >> -+    ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
> >> -+    : ctype<char>(0, false, __refs)
> >> -+    {
> >> -+      if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") !=
> 0)
> >> -+   {
> >> -+     this->_S_destroy_c_locale(this->_M_c_locale_ctype);
> >> -+     this->_S_create_c_locale(this->_M_c_locale_ctype, __s);
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+     this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper;
> >> -+     this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower;
> >> -+     this->_M_table = this->_M_c_locale_ctype->__ctype_b;
> >> -+#endif
> >> -+   }
> >> -+    }
> >> -+
> >> -+#ifdef _GLIBCXX_USE_WCHAR_T
> >> -+  ctype<wchar_t>::__wmask_type
> >> -+  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const
> >> -+  {
> >> -+    __wmask_type __ret;
> >> -+    switch (__m)
> >> -+      {
> >> -+      case space:
> >> -+   __ret = __wctype_l("space", _M_c_locale_ctype);
> >> -+   break;
> >> -+      case print:
> >> -+   __ret = __wctype_l("print", _M_c_locale_ctype);
> >> -+   break;
> >> -+      case cntrl:
> >> -+   __ret = __wctype_l("cntrl", _M_c_locale_ctype);
> >> -+   break;
> >> -+      case upper:
> >> -+   __ret = __wctype_l("upper", _M_c_locale_ctype);
> >> -+   break;
> >> -+      case lower:
> >> -+   __ret = __wctype_l("lower", _M_c_locale_ctype);
> >> -+   break;
> >> -+      case alpha:
> >> -+   __ret = __wctype_l("alpha", _M_c_locale_ctype);
> >> -+   break;
> >> -+      case digit:
> >> -+   __ret = __wctype_l("digit", _M_c_locale_ctype);
> >> -+   break;
> >> -+      case punct:
> >> -+   __ret = __wctype_l("punct", _M_c_locale_ctype);
> >> -+   break;
> >> -+      case xdigit:
> >> -+   __ret = __wctype_l("xdigit", _M_c_locale_ctype);
> >> -+   break;
> >> -+      case alnum:
> >> -+   __ret = __wctype_l("alnum", _M_c_locale_ctype);
> >> -+   break;
> >> -+      case graph:
> >> -+   __ret = __wctype_l("graph", _M_c_locale_ctype);
> >> -+   break;
> >> -+      default:
> >> -+   __ret = __wmask_type();
> >> -+      }
> >> -+    return __ret;
> >> -+  }
> >> -+
> >> -+  wchar_t
> >> -+  ctype<wchar_t>::do_toupper(wchar_t __c) const
> >> -+  { return __towupper_l(__c, _M_c_locale_ctype); }
> >> -+
> >> -+  const wchar_t*
> >> -+  ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
> >> -+  {
> >> -+    while (__lo < __hi)
> >> -+      {
> >> -+        *__lo = __towupper_l(*__lo, _M_c_locale_ctype);
> >> -+        ++__lo;
> >> -+      }
> >> -+    return __hi;
> >> -+  }
> >> -+
> >> -+  wchar_t
> >> -+  ctype<wchar_t>::do_tolower(wchar_t __c) const
> >> -+  { return __towlower_l(__c, _M_c_locale_ctype); }
> >> -+
> >> -+  const wchar_t*
> >> -+  ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
> >> -+  {
> >> -+    while (__lo < __hi)
> >> -+      {
> >> -+        *__lo = __towlower_l(*__lo, _M_c_locale_ctype);
> >> -+        ++__lo;
> >> -+      }
> >> -+    return __hi;
> >> -+  }
> >> -+
> >> -+  bool
> >> -+  ctype<wchar_t>::
> >> -+  do_is(mask __m, wchar_t __c) const
> >> -+  {
> >> -+    // Highest bitmask in ctype_base == 10, but extra in "C"
> >> -+    // library for blank.
> >> -+    bool __ret = false;
> >> -+    const size_t __bitmasksize = 11;
> >> -+    for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
> >> -+      if (__m & _M_bit[__bitcur]
> >> -+     && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
> >> -+   {
> >> -+     __ret = true;
> >> -+     break;
> >> -+   }
> >> -+    return __ret;
> >> -+  }
> >> -+
> >> -+  const wchar_t*
> >> -+  ctype<wchar_t>::
> >> -+  do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
> >> -+  {
> >> -+    for (; __lo < __hi; ++__vec, ++__lo)
> >> -+      {
> >> -+   // Highest bitmask in ctype_base == 10, but extra in "C"
> >> -+   // library for blank.
> >> -+   const size_t __bitmasksize = 11;
> >> -+   mask __m = 0;
> >> -+   for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
> >> -+     if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype))
> >> -+       __m |= _M_bit[__bitcur];
> >> -+   *__vec = __m;
> >> -+      }
> >> -+    return __hi;
> >> -+  }
> >> -+
> >> -+  const wchar_t*
> >> -+  ctype<wchar_t>::
> >> -+  do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
> >> -+  {
> >> -+    while (__lo < __hi && !this->do_is(__m, *__lo))
> >> -+      ++__lo;
> >> -+    return __lo;
> >> -+  }
> >> -+
> >> -+  const wchar_t*
> >> -+  ctype<wchar_t>::
> >> -+  do_scan_not(mask __m, const char_type* __lo, const char_type* __hi)
> const
> >> -+  {
> >> -+    while (__lo < __hi && this->do_is(__m, *__lo) != 0)
> >> -+      ++__lo;
> >> -+    return __lo;
> >> -+  }
> >> -+
> >> -+  wchar_t
> >> -+  ctype<wchar_t>::
> >> -+  do_widen(char __c) const
> >> -+  { return _M_widen[static_cast<unsigned char>(__c)]; }
> >> -+
> >> -+  const char*
> >> -+  ctype<wchar_t>::
> >> -+  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
> >> -+  {
> >> -+    while (__lo < __hi)
> >> -+      {
> >> -+   *__dest = _M_widen[static_cast<unsigned char>(*__lo)];
> >> -+   ++__lo;
> >> -+   ++__dest;
> >> -+      }
> >> -+    return __hi;
> >> -+  }
> >> -+
> >> -+  char
> >> -+  ctype<wchar_t>::
> >> -+  do_narrow(wchar_t __wc, char __dfault) const
> >> -+  {
> >> -+    if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
> >> -+      return _M_narrow[__wc];
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __c_locale __old = __uselocale(_M_c_locale_ctype);
> >> -+#endif
> >> -+    const int __c = wctob(__wc);
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __uselocale(__old);
> >> -+#endif
> >> -+    return (__c == EOF ? __dfault : static_cast<char>(__c));
> >> -+  }
> >> -+
> >> -+  const wchar_t*
> >> -+  ctype<wchar_t>::
> >> -+  do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault,
> >> -+       char* __dest) const
> >> -+  {
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __c_locale __old = __uselocale(_M_c_locale_ctype);
> >> -+#endif
> >> -+    if (_M_narrow_ok)
> >> -+      while (__lo < __hi)
> >> -+   {
> >> -+     if (*__lo >= 0 && *__lo < 128)
> >> -+       *__dest = _M_narrow[*__lo];
> >> -+     else
> >> -+       {
> >> -+         const int __c = wctob(*__lo);
> >> -+         *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
> >> -+       }
> >> -+     ++__lo;
> >> -+     ++__dest;
> >> -+   }
> >> -+    else
> >> -+      while (__lo < __hi)
> >> -+   {
> >> -+     const int __c = wctob(*__lo);
> >> -+     *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
> >> -+     ++__lo;
> >> -+     ++__dest;
> >> -+   }
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __uselocale(__old);
> >> -+#endif
> >> -+    return __hi;
> >> -+  }
> >> -+
> >> -+  void
> >> -+  ctype<wchar_t>::_M_initialize_ctype()
> >> -+  {
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __c_locale __old = __uselocale(_M_c_locale_ctype);
> >> -+#endif
> >> -+    wint_t __i;
> >> -+    for (__i = 0; __i < 128; ++__i)
> >> -+      {
> >> -+   const int __c = wctob(__i);
> >> -+   if (__c == EOF)
> >> -+     break;
> >> -+   else
> >> -+     _M_narrow[__i] = static_cast<char>(__c);
> >> -+      }
> >> -+    if (__i == 128)
> >> -+      _M_narrow_ok = true;
> >> -+    else
> >> -+      _M_narrow_ok = false;
> >> -+    for (size_t __j = 0;
> >> -+    __j < sizeof(_M_widen) / sizeof(wint_t); ++__j)
> >> -+      _M_widen[__j] = btowc(__j);
> >> -+
> >> -+    for (size_t __k = 0; __k <= 11; ++__k)
> >> -+      {
> >> -+   _M_bit[__k] = static_cast<mask>(_ISbit(__k));
> >> -+   _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]);
> >> -+      }
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+    __uselocale(__old);
> >> -+#endif
> >> -+  }
> >> -+#endif //  _GLIBCXX_USE_WCHAR_T
> >> -+}
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/messages_members.cc
> >> -===================================================================
> >> ---- /dev/null
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/messages_members.cc
> >> -@@ -0,0 +1,100 @@
> >> -+// std::messages implementation details, GNU version -*- C++ -*-
> >> -+
> >> -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
> >> -+//
> >> -+// This file is part of the GNU ISO C++ Library.  This library is free
> >> -+// software; you can redistribute it and/or modify it under the
> >> -+// terms of the GNU General Public License as published by the
> >> -+// Free Software Foundation; either version 2, or (at your option)
> >> -+// any later version.
> >> -+
> >> -+// This library is distributed in the hope that it will be useful,
> >> -+// but WITHOUT ANY WARRANTY; without even the implied warranty of
> >> -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >> -+// GNU General Public License for more details.
> >> -+
> >> -+// You should have received a copy of the GNU General Public License
> along
> >> -+// with this library; see the file COPYING.  If not, write to the Free
> >> -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA
> 02111-1307,
> >> -+// USA.
> >> -+
> >> -+// As a special exception, you may use this file as part of a free
> software
> >> -+// library without restriction.  Specifically, if other files
> instantiate
> >> -+// templates or use macros or inline functions from this file, or you
> compile
> >> -+// this file and link it with other files to produce an executable,
> this
> >> -+// file does not by itself cause the resulting executable to be
> covered by
> >> -+// the GNU General Public License.  This exception does not however
> >> -+// invalidate any other reasons why the executable file might be
> covered by
> >> -+// the GNU General Public License.
> >> -+
> >> -+//
> >> -+// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
> >> -+//
> >> -+
> >> -+// Written by Benjamin Kosnik <bkoz at redhat.com>
> >> -+
> >> -+#include <locale>
> >> -+#include <bits/c++locale_internal.h>
> >> -+
> >> -+#ifdef __UCLIBC_MJN3_ONLY__
> >> -+#warning fix gettext stuff
> >> -+#endif
> >> -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
> >> -+extern "C" char *__dcgettext(const char *domainname,
> >> -+                        const char *msgid, int category);
> >> -+#undef gettext
> >> -+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
> >> -+#else
> >> -+#undef gettext
> >> -+#define gettext(msgid) (msgid)
> >> -+#endif
> >> -+
> >> -+namespace std
> >> -+{
> >> -+  // Specializations.
> >> -+  template<>
> >> -+    string
> >> -+    messages<char>::do_get(catalog, int, int, const string& __dfault)
> const
> >> -+    {
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+      __c_locale __old = __uselocale(_M_c_locale_messages);
> >> -+      const char* __msg = const_cast<const
> char*>(gettext(__dfault.c_str()));
> >> -+      __uselocale(__old);
> >> -+      return string(__msg);
> >> -+#elif defined __UCLIBC_HAS_LOCALE__
> >> -+      char* __old = strdup(setlocale(LC_ALL, NULL));
> >> -+      setlocale(LC_ALL, _M_name_messages);
> >> -+      const char* __msg = gettext(__dfault.c_str());
> >> -+      setlocale(LC_ALL, __old);
> >> -+      free(__old);
> >> -+      return string(__msg);
> >> -+#else
> >> -+      const char* __msg = gettext(__dfault.c_str());
> >> -+      return string(__msg);
> >> -+#endif
> >> -+    }
> >> -+
> >> -+#ifdef _GLIBCXX_USE_WCHAR_T
> >> -+  template<>
> >> -+    wstring
> >> -+    messages<wchar_t>::do_get(catalog, int, int, const wstring&
> __dfault) const
> >> -+    {
> >> -+# ifdef __UCLIBC_HAS_XLOCALE__
> >> -+      __c_locale __old = __uselocale(_M_c_locale_messages);
> >> -+      char* __msg = gettext(_M_convert_to_char(__dfault));
> >> -+      __uselocale(__old);
> >> -+      return _M_convert_from_char(__msg);
> >> -+# elif defined __UCLIBC_HAS_LOCALE__
> >> -+      char* __old = strdup(setlocale(LC_ALL, NULL));
> >> -+      setlocale(LC_ALL, _M_name_messages);
> >> -+      char* __msg = gettext(_M_convert_to_char(__dfault));
> >> -+      setlocale(LC_ALL, __old);
> >> -+      free(__old);
> >> -+      return _M_convert_from_char(__msg);
> >> -+# else
> >> -+      char* __msg = gettext(_M_convert_to_char(__dfault));
> >> -+      return _M_convert_from_char(__msg);
> >> -+# endif
> >> -+    }
> >> -+#endif
> >> -+}
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/messages_members.h
> >> -===================================================================
> >> ---- /dev/null
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/messages_members.h
> >> -@@ -0,0 +1,118 @@
> >> -+// std::messages implementation details, GNU version -*- C++ -*-
> >> -+
> >> -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
> >> -+//
> >> -+// This file is part of the GNU ISO C++ Library.  This library is free
> >> -+// software; you can redistribute it and/or modify it under the
> >> -+// terms of the GNU General Public License as published by the
> >> -+// Free Software Foundation; either version 2, or (at your option)
> >> -+// any later version.
> >> -+
> >> -+// This library is distributed in the hope that it will be useful,
> >> -+// but WITHOUT ANY WARRANTY; without even the implied warranty of
> >> -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >> -+// GNU General Public License for more details.
> >> -+
> >> -+// You should have received a copy of the GNU General Public License
> along
> >> -+// with this library; see the file COPYING.  If not, write to the Free
> >> -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA
> 02111-1307,
> >> -+// USA.
> >> -+
> >> -+// As a special exception, you may use this file as part of a free
> software
> >> -+// library without restriction.  Specifically, if other files
> instantiate
> >> -+// templates or use macros or inline functions from this file, or you
> compile
> >> -+// this file and link it with other files to produce an executable,
> this
> >> -+// file does not by itself cause the resulting executable to be
> covered by
> >> -+// the GNU General Public License.  This exception does not however
> >> -+// invalidate any other reasons why the executable file might be
> covered by
> >> -+// the GNU General Public License.
> >> -+
> >> -+//
> >> -+// ISO C++ 14882: 22.2.7.1.2  messages functions
> >> -+//
> >> -+
> >> -+// Written by Benjamin Kosnik <bkoz at redhat.com>
> >> -+
> >> -+#ifdef __UCLIBC_MJN3_ONLY__
> >> -+#warning fix prototypes for *textdomain funcs
> >> -+#endif
> >> -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
> >> -+extern "C" char *__textdomain(const char *domainname);
> >> -+extern "C" char *__bindtextdomain(const char *domainname,
> >> -+                             const char *dirname);
> >> -+#else
> >> -+#undef __textdomain
> >> -+#undef __bindtextdomain
> >> -+#define __textdomain(D)           ((void)0)
> >> -+#define __bindtextdomain(D,P)     ((void)0)
> >> -+#endif
> >> -+
> >> -+  // Non-virtual member functions.
> >> -+  template<typename _CharT>
> >> -+     messages<_CharT>::messages(size_t __refs)
> >> -+     : facet(__refs), _M_c_locale_messages(_S_get_c_locale()),
> >> -+     _M_name_messages(_S_get_c_name())
> >> -+     { }
> >> -+
> >> -+  template<typename _CharT>
> >> -+     messages<_CharT>::messages(__c_locale __cloc, const char* __s,
> >> -+                           size_t __refs)
> >> -+     : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
> >> -+     _M_name_messages(__s)
> >> -+     {
> >> -+       char* __tmp = new char[std::strlen(__s) + 1];
> >> -+       std::strcpy(__tmp, __s);
> >> -+       _M_name_messages = __tmp;
> >> -+     }
> >> -+
> >> -+  template<typename _CharT>
> >> -+    typename messages<_CharT>::catalog
> >> -+    messages<_CharT>::open(const basic_string<char>& __s, const
> locale& __loc,
> >> -+                      const char* __dir) const
> >> -+    {
> >> -+      __bindtextdomain(__s.c_str(), __dir);
> >> -+      return this->do_open(__s, __loc);
> >> -+    }
> >> -+
> >> -+  // Virtual member functions.
> >> -+  template<typename _CharT>
> >> -+    messages<_CharT>::~messages()
> >> -+    {
> >> -+      if (_M_name_messages != _S_get_c_name())
> >> -+   delete [] _M_name_messages;
> >> -+      _S_destroy_c_locale(_M_c_locale_messages);
> >> -+    }
> >> -+
> >> -+  template<typename _CharT>
> >> -+    typename messages<_CharT>::catalog
> >> -+    messages<_CharT>::do_open(const basic_string<char>& __s,
> >> -+                         const locale&) const
> >> -+    {
> >> -+      // No error checking is done, assume the catalog exists and can
> >> -+      // be used.
> >> -+      __textdomain(__s.c_str());
> >> -+      return 0;
> >> -+    }
> >> -+
> >> -+  template<typename _CharT>
> >> -+    void
> >> -+    messages<_CharT>::do_close(catalog) const
> >> -+    { }
> >> -+
> >> -+   // messages_byname
> >> -+   template<typename _CharT>
> >> -+     messages_byname<_CharT>::messages_byname(const char* __s, size_t
> __refs)
> >> -+     : messages<_CharT>(__refs)
> >> -+     {
> >> -+       if (this->_M_name_messages != locale::facet::_S_get_c_name())
> >> -+    delete [] this->_M_name_messages;
> >> -+       char* __tmp = new char[std::strlen(__s) + 1];
> >> -+       std::strcpy(__tmp, __s);
> >> -+       this->_M_name_messages = __tmp;
> >> -+
> >> -+       if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") !=
> 0)
> >> -+    {
> >> -+      this->_S_destroy_c_locale(this->_M_c_locale_messages);
> >> -+      this->_S_create_c_locale(this->_M_c_locale_messages, __s);
> >> -+    }
> >> -+     }
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc
> >> -===================================================================
> >> ---- /dev/null
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc
> >> -@@ -0,0 +1,692 @@
> >> -+// std::moneypunct implementation details, GNU version -*- C++ -*-
> >> -+
> >> -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
> >> -+//
> >> -+// This file is part of the GNU ISO C++ Library.  This library is free
> >> -+// software; you can redistribute it and/or modify it under the
> >> -+// terms of the GNU General Public License as published by the
> >> -+// Free Software Foundation; either version 2, or (at your option)
> >> -+// any later version.
> >> -+
> >> -+// This library is distributed in the hope that it will be useful,
> >> -+// but WITHOUT ANY WARRANTY; without even the implied warranty of
> >> -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >> -+// GNU General Public License for more details.
> >> -+
> >> -+// You should have received a copy of the GNU General Public License
> along
> >> -+// with this library; see the file COPYING.  If not, write to the Free
> >> -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA
> 02111-1307,
> >> -+// USA.
> >> -+
> >> -+// As a special exception, you may use this file as part of a free
> software
> >> -+// library without restriction.  Specifically, if other files
> instantiate
> >> -+// templates or use macros or inline functions from this file, or you
> compile
> >> -+// this file and link it with other files to produce an executable,
> this
> >> -+// file does not by itself cause the resulting executable to be
> covered by
> >> -+// the GNU General Public License.  This exception does not however
> >> -+// invalidate any other reasons why the executable file might be
> covered by
> >> -+// the GNU General Public License.
> >> -+
> >> -+//
> >> -+// ISO C++ 14882: 22.2.6.3.2  moneypunct virtual functions
> >> -+//
> >> -+
> >> -+// Written by Benjamin Kosnik <bkoz at redhat.com>
> >> -+
> >> -+#define _LIBC
> >> -+#include <locale>
> >> -+#undef _LIBC
> >> -+#include <bits/c++locale_internal.h>
> >> -+
> >> -+#ifdef __UCLIBC_MJN3_ONLY__
> >> -+#warning optimize this for uclibc
> >> -+#warning tailor for stub locale support
> >> -+#endif
> >> -+
> >> -+#ifndef __UCLIBC_HAS_XLOCALE__
> >> -+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
> >> -+#endif
> >> -+
> >> -+namespace std
> >> -+{
> >> -+  // Construct and return valid pattern consisting of some
> combination of:
> >> -+  // space none symbol sign value
> >> -+  money_base::pattern
> >> -+  money_base::_S_construct_pattern(char __precedes, char __space,
> char __posn)
> >> -+  {
> >> -+    pattern __ret;
> >> -+
> >> -+    // This insanely complicated routine attempts to construct a valid
> >> -+    // pattern for use with monyepunct. A couple of invariants:
> >> -+
> >> -+    // if (__precedes) symbol -> value
> >> -+    // else value -> symbol
> >> -+
> >> -+    // if (__space) space
> >> -+    // else none
> >> -+
> >> -+    // none == never first
> >> -+    // space never first or last
> >> -+
> >> -+    // Any elegant implementations of this are welcome.
> >> -+    switch (__posn)
> >> -+      {
> >> -+      case 0:
> >> -+      case 1:
> >> -+   // 1 The sign precedes the value and symbol.
> >> -+   __ret.field[0] = sign;
> >> -+   if (__space)
> >> -+     {
> >> -+       // Pattern starts with sign.
> >> -+       if (__precedes)
> >> -+         {
> >> -+           __ret.field[1] = symbol;
> >> -+           __ret.field[3] = value;
> >> -+         }
> >> -+       else
> >> -+         {
> >> -+           __ret.field[1] = value;
> >> -+           __ret.field[3] = symbol;
> >> -+         }
> >> -+       __ret.field[2] = space;
> >> -+     }
> >> -+   else
> >> -+     {
> >> -+       // Pattern starts with sign and ends with none.
> >> -+       if (__precedes)
> >> -+         {
> >> -+           __ret.field[1] = symbol;
> >> -+           __ret.field[2] = value;
> >> -+         }
> >> -+       else
> >> -+         {
> >> -+           __ret.field[1] = value;
> >> -+           __ret.field[2] = symbol;
> >> -+         }
> >> -+       __ret.field[3] = none;
> >> -+     }
> >> -+   break;
> >> -+      case 2:
> >> -+   // 2 The sign follows the value and symbol.
> >> -+   if (__space)
> >> -+     {
> >> -+       // Pattern either ends with sign.
> >> -+       if (__precedes)
> >> -+         {
> >> -+           __ret.field[0] = symbol;
> >> -+           __ret.field[2] = value;
> >> -+         }
> >> -+       else
> >> -+         {
> >> -+           __ret.field[0] = value;
> >> -+           __ret.field[2] = symbol;
> >> -+         }
> >> -+       __ret.field[1] = space;
> >> -+       __ret.field[3] = sign;
> >> -+     }
> >> -+   else
> >> -+     {
> >> -+       // Pattern ends with sign then none.
> >> -+       if (__precedes)
> >> -+         {
> >> -+           __ret.field[0] = symbol;
> >> -+           __ret.field[1] = value;
> >> -+         }
> >> -+       else
> >> -+         {
> >> -+           __ret.field[0] = value;
> >> -+           __ret.field[1] = symbol;
> >> -+         }
> >> -+       __ret.field[2] = sign;
> >> -+       __ret.field[3] = none;
> >> -+     }
> >> -+   break;
> >> -+      case 3:
> >> -+   // 3 The sign immediately precedes the symbol.
> >> -+   if (__precedes)
> >> -+     {
> >> -+       __ret.field[0] = sign;
> >> -+       __ret.field[1] = symbol;
> >> -+       if (__space)
> >> -+         {
> >> -+           __ret.field[2] = space;
> >> -+           __ret.field[3] = value;
> >> -+         }
> >> -+       else
> >> -+         {
> >> -+           __ret.field[2] = value;
> >> -+           __ret.field[3] = none;
> >> -+         }
> >> -+     }
> >> -+   else
> >> -+     {
> >> -+       __ret.field[0] = value;
> >> -+       if (__space)
> >> -+         {
> >> -+           __ret.field[1] = space;
> >> -+           __ret.field[2] = sign;
> >> -+           __ret.field[3] = symbol;
> >> -+         }
> >> -+       else
> >> -+         {
> >> -+           __ret.field[1] = sign;
> >> -+           __ret.field[2] = symbol;
> >> -+           __ret.field[3] = none;
> >> -+         }
> >> -+     }
> >> -+   break;
> >> -+      case 4:
> >> -+   // 4 The sign immediately follows the symbol.
> >> -+   if (__precedes)
> >> -+     {
> >> -+       __ret.field[0] = symbol;
> >> -+       __ret.field[1] = sign;
> >> -+       if (__space)
> >> -+         {
> >> -+           __ret.field[2] = space;
> >> -+           __ret.field[3] = value;
> >> -+         }
> >> -+       else
> >> -+         {
> >> -+           __ret.field[2] = value;
> >> -+           __ret.field[3] = none;
> >> -+         }
> >> -+     }
> >> -+   else
> >> -+     {
> >> -+       __ret.field[0] = value;
> >> -+       if (__space)
> >> -+         {
> >> -+           __ret.field[1] = space;
> >> -+           __ret.field[2] = symbol;
> >> -+           __ret.field[3] = sign;
> >> -+         }
> >> -+       else
> >> -+         {
> >> -+           __ret.field[1] = symbol;
> >> -+           __ret.field[2] = sign;
> >> -+           __ret.field[3] = none;
> >> -+         }
> >> -+     }
> >> -+   break;
> >> -+      default:
> >> -+   ;
> >> -+      }
> >> -+    return __ret;
> >> -+  }
> >> -+
> >> -+  template<>
> >> -+    void
> >> -+    moneypunct<char, true>::_M_initialize_moneypunct(__c_locale
> __cloc,
> >> -+                                                const char*)
> >> -+    {
> >> -+      if (!_M_data)
> >> -+   _M_data = new __moneypunct_cache<char, true>;
> >> -+
> >> -+      if (!__cloc)
> >> -+   {
> >> -+     // "C" locale
> >> -+     _M_data->_M_decimal_point = '.';
> >> -+     _M_data->_M_thousands_sep = ',';
> >> -+     _M_data->_M_grouping = "";
> >> -+     _M_data->_M_grouping_size = 0;
> >> -+     _M_data->_M_curr_symbol = "";
> >> -+     _M_data->_M_curr_symbol_size = 0;
> >> -+     _M_data->_M_positive_sign = "";
> >> -+     _M_data->_M_positive_sign_size = 0;
> >> -+     _M_data->_M_negative_sign = "";
> >> -+     _M_data->_M_negative_sign_size = 0;
> >> -+     _M_data->_M_frac_digits = 0;
> >> -+     _M_data->_M_pos_format = money_base::_S_default_pattern;
> >> -+     _M_data->_M_neg_format = money_base::_S_default_pattern;
> >> -+
> >> -+     for (size_t __i = 0; __i < money_base::_S_end; ++__i)
> >> -+       _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
> >> -+   }
> >> -+      else
> >> -+   {
> >> -+     // Named locale.
> >> -+     _M_data->_M_decimal_point =
> *(__nl_langinfo_l(__MON_DECIMAL_POINT,
> >> -+                                                   __cloc));
> >> -+     _M_data->_M_thousands_sep =
> *(__nl_langinfo_l(__MON_THOUSANDS_SEP,
> >> -+                                                   __cloc));
> >> -+     _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
> >> -+     _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
> >> -+     _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN,
> __cloc);
> >> -+     _M_data->_M_positive_sign_size =
> strlen(_M_data->_M_positive_sign);
> >> -+
> >> -+     char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
> >> -+     if (!__nposn)
> >> -+       _M_data->_M_negative_sign = "()";
> >> -+     else
> >> -+       _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN,
> >> -+                                                   __cloc);
> >> -+     _M_data->_M_negative_sign_size =
> strlen(_M_data->_M_negative_sign);
> >> -+
> >> -+     // _Intl == true
> >> -+     _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL,
> __cloc);
> >> -+     _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
> >> -+     _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS,
> >> -+                                                 __cloc));
> >> -+     char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES,
> __cloc));
> >> -+     char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
> >> -+     char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
> >> -+     _M_data->_M_pos_format = _S_construct_pattern(__pprecedes,
> __pspace,
> >> -+                                                   __pposn);
> >> -+     char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES,
> __cloc));
> >> -+     char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
> >> -+     _M_data->_M_neg_format = _S_construct_pattern(__nprecedes,
> __nspace,
> >> -+                                                   __nposn);
> >> -+   }
> >> -+    }
> >> -+
> >> -+  template<>
> >> -+    void
> >> -+    moneypunct<char, false>::_M_initialize_moneypunct(__c_locale
> __cloc,
> >> -+                                                 const char*)
> >> -+    {
> >> -+      if (!_M_data)
> >> -+   _M_data = new __moneypunct_cache<char, false>;
> >> -+
> >> -+      if (!__cloc)
> >> -+   {
> >> -+     // "C" locale
> >> -+     _M_data->_M_decimal_point = '.';
> >> -+     _M_data->_M_thousands_sep = ',';
> >> -+     _M_data->_M_grouping = "";
> >> -+     _M_data->_M_grouping_size = 0;
> >> -+     _M_data->_M_curr_symbol = "";
> >> -+     _M_data->_M_curr_symbol_size = 0;
> >> -+     _M_data->_M_positive_sign = "";
> >> -+     _M_data->_M_positive_sign_size = 0;
> >> -+     _M_data->_M_negative_sign = "";
> >> -+     _M_data->_M_negative_sign_size = 0;
> >> -+     _M_data->_M_frac_digits = 0;
> >> -+     _M_data->_M_pos_format = money_base::_S_default_pattern;
> >> -+     _M_data->_M_neg_format = money_base::_S_default_pattern;
> >> -+
> >> -+     for (size_t __i = 0; __i < money_base::_S_end; ++__i)
> >> -+       _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
> >> -+   }
> >> -+      else
> >> -+   {
> >> -+     // Named locale.
> >> -+     _M_data->_M_decimal_point =
> *(__nl_langinfo_l(__MON_DECIMAL_POINT,
> >> -+                                                   __cloc));
> >> -+     _M_data->_M_thousands_sep =
> *(__nl_langinfo_l(__MON_THOUSANDS_SEP,
> >> -+                                                   __cloc));
> >> -+     _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
> >> -+     _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
> >> -+     _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN,
> __cloc);
> >> -+     _M_data->_M_positive_sign_size =
> strlen(_M_data->_M_positive_sign);
> >> -+
> >> -+     char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
> >> -+     if (!__nposn)
> >> -+       _M_data->_M_negative_sign = "()";
> >> -+     else
> >> -+       _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN,
> >> -+                                                   __cloc);
> >> -+     _M_data->_M_negative_sign_size =
> strlen(_M_data->_M_negative_sign);
> >> -+
> >> -+     // _Intl == false
> >> -+     _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL,
> __cloc);
> >> -+     _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
> >> -+     _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS,
> __cloc));
> >> -+     char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
> >> -+     char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
> >> -+     char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
> >> -+     _M_data->_M_pos_format = _S_construct_pattern(__pprecedes,
> __pspace,
> >> -+                                                   __pposn);
> >> -+     char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
> >> -+     char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
> >> -+     _M_data->_M_neg_format = _S_construct_pattern(__nprecedes,
> __nspace,
> >> -+                                                   __nposn);
> >> -+   }
> >> -+    }
> >> -+
> >> -+  template<>
> >> -+    moneypunct<char, true>::~moneypunct()
> >> -+    { delete _M_data; }
> >> -+
> >> -+  template<>
> >> -+    moneypunct<char, false>::~moneypunct()
> >> -+    { delete _M_data; }
> >> -+
> >> -+#ifdef _GLIBCXX_USE_WCHAR_T
> >> -+  template<>
> >> -+    void
> >> -+    moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale
> __cloc,
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+                                                   const char*)
> >> -+#else
> >> -+                                                   const char* __name)
> >> -+#endif
> >> -+    {
> >> -+      if (!_M_data)
> >> -+   _M_data = new __moneypunct_cache<wchar_t, true>;
> >> -+
> >> -+      if (!__cloc)
> >> -+   {
> >> -+     // "C" locale
> >> -+     _M_data->_M_decimal_point = L'.';
> >> -+     _M_data->_M_thousands_sep = L',';
> >> -+     _M_data->_M_grouping = "";
> >> -+     _M_data->_M_grouping_size = 0;
> >> -+     _M_data->_M_curr_symbol = L"";
> >> -+     _M_data->_M_curr_symbol_size = 0;
> >> -+     _M_data->_M_positive_sign = L"";
> >> -+     _M_data->_M_positive_sign_size = 0;
> >> -+     _M_data->_M_negative_sign = L"";
> >> -+     _M_data->_M_negative_sign_size = 0;
> >> -+     _M_data->_M_frac_digits = 0;
> >> -+     _M_data->_M_pos_format = money_base::_S_default_pattern;
> >> -+     _M_data->_M_neg_format = money_base::_S_default_pattern;
> >> -+
> >> -+     // Use ctype::widen code without the facet...
> >> -+     for (size_t __i = 0; __i < money_base::_S_end; ++__i)
> >> -+       _M_data->_M_atoms[__i] =
> >> -+         static_cast<wchar_t>(money_base::_S_atoms[__i]);
> >> -+   }
> >> -+      else
> >> -+   {
> >> -+     // Named locale.
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+     __c_locale __old = __uselocale(__cloc);
> >> -+#else
> >> -+     // Switch to named locale so that mbsrtowcs will work.
> >> -+     char* __old = strdup(setlocale(LC_ALL, NULL));
> >> -+     setlocale(LC_ALL, __name);
> >> -+#endif
> >> -+
> >> -+#ifdef __UCLIBC_MJN3_ONLY__
> >> -+#warning fix this... should be monetary
> >> -+#endif
> >> -+#ifdef __UCLIBC__
> >> -+# ifdef __UCLIBC_HAS_XLOCALE__
> >> -+     _M_data->_M_decimal_point = __cloc->decimal_point_wc;
> >> -+     _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
> >> -+# else
> >> -+     _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
> >> -+     _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
> >> -+# endif
> >> -+#else
> >> -+     union { char *__s; wchar_t __w; } __u;
> >> -+     __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
> >> -+     _M_data->_M_decimal_point = __u.__w;
> >> -+
> >> -+     __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
> >> -+     _M_data->_M_thousands_sep = __u.__w;
> >> -+#endif
> >> -+     _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
> >> -+     _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
> >> -+
> >> -+     const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN,
> __cloc);
> >> -+     const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN,
> __cloc);
> >> -+     const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
> >> -+
> >> -+     wchar_t* __wcs_ps = 0;
> >> -+     wchar_t* __wcs_ns = 0;
> >> -+     const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN,
> __cloc));
> >> -+     try
> >> -+       {
> >> -+         mbstate_t __state;
> >> -+         size_t __len = strlen(__cpossign);
> >> -+         if (__len)
> >> -+           {
> >> -+             ++__len;
> >> -+             memset(&__state, 0, sizeof(mbstate_t));
> >> -+             __wcs_ps = new wchar_t[__len];
> >> -+             mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
> >> -+             _M_data->_M_positive_sign = __wcs_ps;
> >> -+           }
> >> -+         else
> >> -+           _M_data->_M_positive_sign = L"";
> >> -+         _M_data->_M_positive_sign_size =
> wcslen(_M_data->_M_positive_sign);
> >> -+
> >> -+         __len = strlen(__cnegsign);
> >> -+         if (!__nposn)
> >> -+           _M_data->_M_negative_sign = L"()";
> >> -+         else if (__len)
> >> -+           {
> >> -+             ++__len;
> >> -+             memset(&__state, 0, sizeof(mbstate_t));
> >> -+             __wcs_ns = new wchar_t[__len];
> >> -+             mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
> >> -+             _M_data->_M_negative_sign = __wcs_ns;
> >> -+           }
> >> -+         else
> >> -+           _M_data->_M_negative_sign = L"";
> >> -+         _M_data->_M_negative_sign_size =
> wcslen(_M_data->_M_negative_sign);
> >> -+
> >> -+         // _Intl == true.
> >> -+         __len = strlen(__ccurr);
> >> -+         if (__len)
> >> -+           {
> >> -+             ++__len;
> >> -+             memset(&__state, 0, sizeof(mbstate_t));
> >> -+             wchar_t* __wcs = new wchar_t[__len];
> >> -+             mbsrtowcs(__wcs, &__ccurr, __len, &__state);
> >> -+             _M_data->_M_curr_symbol = __wcs;
> >> -+           }
> >> -+         else
> >> -+           _M_data->_M_curr_symbol = L"";
> >> -+         _M_data->_M_curr_symbol_size =
> wcslen(_M_data->_M_curr_symbol);
> >> -+       }
> >> -+     catch (...)
> >> -+       {
> >> -+         delete _M_data;
> >> -+         _M_data = 0;
> >> -+         delete __wcs_ps;
> >> -+         delete __wcs_ns;
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+         __uselocale(__old);
> >> -+#else
> >> -+         setlocale(LC_ALL, __old);
> >> -+         free(__old);
> >> -+#endif
> >> -+         __throw_exception_again;
> >> -+       }
> >> -+
> >> -+     _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS,
> >> -+                                                 __cloc));
> >> -+     char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES,
> __cloc));
> >> -+     char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
> >> -+     char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
> >> -+     _M_data->_M_pos_format = _S_construct_pattern(__pprecedes,
> __pspace,
> >> -+                                                   __pposn);
> >> -+     char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES,
> __cloc));
> >> -+     char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
> >> -+     _M_data->_M_neg_format = _S_construct_pattern(__nprecedes,
> __nspace,
> >> -+                                                   __nposn);
> >> -+
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+     __uselocale(__old);
> >> -+#else
> >> -+     setlocale(LC_ALL, __old);
> >> -+     free(__old);
> >> -+#endif
> >> -+   }
> >> -+    }
> >> -+
> >> -+  template<>
> >> -+  void
> >> -+  moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale
> __cloc,
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+                                                  const char*)
> >> -+#else
> >> -+                                                       const char*
> __name)
> >> -+#endif
> >> -+  {
> >> -+    if (!_M_data)
> >> -+      _M_data = new __moneypunct_cache<wchar_t, false>;
> >> -+
> >> -+    if (!__cloc)
> >> -+   {
> >> -+     // "C" locale
> >> -+     _M_data->_M_decimal_point = L'.';
> >> -+     _M_data->_M_thousands_sep = L',';
> >> -+     _M_data->_M_grouping = "";
> >> -+          _M_data->_M_grouping_size = 0;
> >> -+     _M_data->_M_curr_symbol = L"";
> >> -+     _M_data->_M_curr_symbol_size = 0;
> >> -+     _M_data->_M_positive_sign = L"";
> >> -+     _M_data->_M_positive_sign_size = 0;
> >> -+     _M_data->_M_negative_sign = L"";
> >> -+     _M_data->_M_negative_sign_size = 0;
> >> -+     _M_data->_M_frac_digits = 0;
> >> -+     _M_data->_M_pos_format = money_base::_S_default_pattern;
> >> -+     _M_data->_M_neg_format = money_base::_S_default_pattern;
> >> -+
> >> -+     // Use ctype::widen code without the facet...
> >> -+     for (size_t __i = 0; __i < money_base::_S_end; ++__i)
> >> -+       _M_data->_M_atoms[__i] =
> >> -+         static_cast<wchar_t>(money_base::_S_atoms[__i]);
> >> -+   }
> >> -+      else
> >> -+   {
> >> -+     // Named locale.
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+     __c_locale __old = __uselocale(__cloc);
> >> -+#else
> >> -+     // Switch to named locale so that mbsrtowcs will work.
> >> -+     char* __old = strdup(setlocale(LC_ALL, NULL));
> >> -+     setlocale(LC_ALL, __name);
> >> -+#endif
> >> -+
> >> -+#ifdef __UCLIBC_MJN3_ONLY__
> >> -+#warning fix this... should be monetary
> >> -+#endif
> >> -+#ifdef __UCLIBC__
> >> -+# ifdef __UCLIBC_HAS_XLOCALE__
> >> -+     _M_data->_M_decimal_point = __cloc->decimal_point_wc;
> >> -+     _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
> >> -+# else
> >> -+     _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
> >> -+     _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
> >> -+# endif
> >> -+#else
> >> -+          union { char *__s; wchar_t __w; } __u;
> >> -+     __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
> >> -+     _M_data->_M_decimal_point = __u.__w;
> >> -+
> >> -+     __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
> >> -+     _M_data->_M_thousands_sep = __u.__w;
> >> -+#endif
> >> -+     _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
> >> -+          _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
> >> -+
> >> -+     const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN,
> __cloc);
> >> -+     const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN,
> __cloc);
> >> -+     const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
> >> -+
> >> -+     wchar_t* __wcs_ps = 0;
> >> -+     wchar_t* __wcs_ns = 0;
> >> -+     const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
> >> -+     try
> >> -+            {
> >> -+              mbstate_t __state;
> >> -+              size_t __len;
> >> -+              __len = strlen(__cpossign);
> >> -+              if (__len)
> >> -+                {
> >> -+             ++__len;
> >> -+             memset(&__state, 0, sizeof(mbstate_t));
> >> -+             __wcs_ps = new wchar_t[__len];
> >> -+             mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
> >> -+             _M_data->_M_positive_sign = __wcs_ps;
> >> -+           }
> >> -+         else
> >> -+           _M_data->_M_positive_sign = L"";
> >> -+              _M_data->_M_positive_sign_size =
> wcslen(_M_data->_M_positive_sign);
> >> -+
> >> -+         __len = strlen(__cnegsign);
> >> -+         if (!__nposn)
> >> -+           _M_data->_M_negative_sign = L"()";
> >> -+         else if (__len)
> >> -+           {
> >> -+             ++__len;
> >> -+             memset(&__state, 0, sizeof(mbstate_t));
> >> -+             __wcs_ns = new wchar_t[__len];
> >> -+             mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
> >> -+             _M_data->_M_negative_sign = __wcs_ns;
> >> -+           }
> >> -+         else
> >> -+           _M_data->_M_negative_sign = L"";
> >> -+              _M_data->_M_negative_sign_size =
> wcslen(_M_data->_M_negative_sign);
> >> -+
> >> -+         // _Intl == true.
> >> -+         __len = strlen(__ccurr);
> >> -+         if (__len)
> >> -+           {
> >> -+             ++__len;
> >> -+             memset(&__state, 0, sizeof(mbstate_t));
> >> -+             wchar_t* __wcs = new wchar_t[__len];
> >> -+             mbsrtowcs(__wcs, &__ccurr, __len, &__state);
> >> -+             _M_data->_M_curr_symbol = __wcs;
> >> -+           }
> >> -+         else
> >> -+           _M_data->_M_curr_symbol = L"";
> >> -+              _M_data->_M_curr_symbol_size =
> wcslen(_M_data->_M_curr_symbol);
> >> -+       }
> >> -+          catch (...)
> >> -+       {
> >> -+         delete _M_data;
> >> -+              _M_data = 0;
> >> -+         delete __wcs_ps;
> >> -+         delete __wcs_ns;
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+         __uselocale(__old);
> >> -+#else
> >> -+         setlocale(LC_ALL, __old);
> >> -+         free(__old);
> >> -+#endif
> >> -+              __throw_exception_again;
> >> -+       }
> >> -+
> >> -+     _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS,
> __cloc));
> >> -+     char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
> >> -+     char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
> >> -+     char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
> >> -+     _M_data->_M_pos_format = _S_construct_pattern(__pprecedes,
> __pspace,
> >> -+                                                   __pposn);
> >> -+     char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
> >> -+     char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
> >> -+     _M_data->_M_neg_format = _S_construct_pattern(__nprecedes,
> __nspace,
> >> -+                                                   __nposn);
> >> -+
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+     __uselocale(__old);
> >> -+#else
> >> -+     setlocale(LC_ALL, __old);
> >> -+     free(__old);
> >> -+#endif
> >> -+   }
> >> -+    }
> >> -+
> >> -+  template<>
> >> -+    moneypunct<wchar_t, true>::~moneypunct()
> >> -+    {
> >> -+      if (_M_data->_M_positive_sign_size)
> >> -+   delete [] _M_data->_M_positive_sign;
> >> -+      if (_M_data->_M_negative_sign_size
> >> -+          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
> >> -+   delete [] _M_data->_M_negative_sign;
> >> -+      if (_M_data->_M_curr_symbol_size)
> >> -+   delete [] _M_data->_M_curr_symbol;
> >> -+      delete _M_data;
> >> -+    }
> >> -+
> >> -+  template<>
> >> -+    moneypunct<wchar_t, false>::~moneypunct()
> >> -+    {
> >> -+      if (_M_data->_M_positive_sign_size)
> >> -+   delete [] _M_data->_M_positive_sign;
> >> -+      if (_M_data->_M_negative_sign_size
> >> -+          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
> >> -+   delete [] _M_data->_M_negative_sign;
> >> -+      if (_M_data->_M_curr_symbol_size)
> >> -+   delete [] _M_data->_M_curr_symbol;
> >> -+      delete _M_data;
> >> -+    }
> >> -+#endif
> >> -+}
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc
> >> -===================================================================
> >> ---- /dev/null
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc
> >> -@@ -0,0 +1,160 @@
> >> -+// std::numpunct implementation details, GNU version -*- C++ -*-
> >> -+
> >> -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
> >> -+//
> >> -+// This file is part of the GNU ISO C++ Library.  This library is free
> >> -+// software; you can redistribute it and/or modify it under the
> >> -+// terms of the GNU General Public License as published by the
> >> -+// Free Software Foundation; either version 2, or (at your option)
> >> -+// any later version.
> >> -+
> >> -+// This library is distributed in the hope that it will be useful,
> >> -+// but WITHOUT ANY WARRANTY; without even the implied warranty of
> >> -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >> -+// GNU General Public License for more details.
> >> -+
> >> -+// You should have received a copy of the GNU General Public License
> along
> >> -+// with this library; see the file COPYING.  If not, write to the Free
> >> -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA
> 02111-1307,
> >> -+// USA.
> >> -+
> >> -+// As a special exception, you may use this file as part of a free
> software
> >> -+// library without restriction.  Specifically, if other files
> instantiate
> >> -+// templates or use macros or inline functions from this file, or you
> compile
> >> -+// this file and link it with other files to produce an executable,
> this
> >> -+// file does not by itself cause the resulting executable to be
> covered by
> >> -+// the GNU General Public License.  This exception does not however
> >> -+// invalidate any other reasons why the executable file might be
> covered by
> >> -+// the GNU General Public License.
> >> -+
> >> -+//
> >> -+// ISO C++ 14882: 22.2.3.1.2  numpunct virtual functions
> >> -+//
> >> -+
> >> -+// Written by Benjamin Kosnik <bkoz at redhat.com>
> >> -+
> >> -+#define _LIBC
> >> -+#include <locale>
> >> -+#undef _LIBC
> >> -+#include <bits/c++locale_internal.h>
> >> -+
> >> -+#ifdef __UCLIBC_MJN3_ONLY__
> >> -+#warning tailor for stub locale support
> >> -+#endif
> >> -+#ifndef __UCLIBC_HAS_XLOCALE__
> >> -+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
> >> -+#endif
> >> -+
> >> -+namespace std
> >> -+{
> >> -+  template<>
> >> -+    void
> >> -+    numpunct<char>::_M_initialize_numpunct(__c_locale __cloc)
> >> -+    {
> >> -+      if (!_M_data)
> >> -+   _M_data = new __numpunct_cache<char>;
> >> -+
> >> -+      if (!__cloc)
> >> -+   {
> >> -+     // "C" locale
> >> -+     _M_data->_M_grouping = "";
> >> -+     _M_data->_M_grouping_size = 0;
> >> -+     _M_data->_M_use_grouping = false;
> >> -+
> >> -+     _M_data->_M_decimal_point = '.';
> >> -+     _M_data->_M_thousands_sep = ',';
> >> -+
> >> -+     for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
> >> -+       _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i];
> >> -+
> >> -+     for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
> >> -+       _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j];
> >> -+   }
> >> -+      else
> >> -+   {
> >> -+     // Named locale.
> >> -+     _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT,
> >> -+                                                   __cloc));
> >> -+     _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP,
> >> -+                                                   __cloc));
> >> -+
> >> -+     // Check for NULL, which implies no grouping.
> >> -+     if (_M_data->_M_thousands_sep == '\0')
> >> -+       _M_data->_M_grouping = "";
> >> -+     else
> >> -+       _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
> >> -+     _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
> >> -+   }
> >> -+
> >> -+      // NB: There is no way to extact this info from posix locales.
> >> -+      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
> >> -+      _M_data->_M_truename = "true";
> >> -+      _M_data->_M_truename_size = 4;
> >> -+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
> >> -+      _M_data->_M_falsename = "false";
> >> -+      _M_data->_M_falsename_size = 5;
> >> -+    }
> >> -+
> >> -+  template<>
> >> -+    numpunct<char>::~numpunct()
> >> -+    { delete _M_data; }
> >> -+
> >> -+#ifdef _GLIBCXX_USE_WCHAR_T
> >> -+  template<>
> >> -+    void
> >> -+    numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc)
> >> -+    {
> >> -+      if (!_M_data)
> >> -+   _M_data = new __numpunct_cache<wchar_t>;
> >> -+
> >> -+      if (!__cloc)
> >> -+   {
> >> -+     // "C" locale
> >> -+     _M_data->_M_grouping = "";
> >> -+     _M_data->_M_grouping_size = 0;
> >> -+     _M_data->_M_use_grouping = false;
> >> -+
> >> -+     _M_data->_M_decimal_point = L'.';
> >> -+     _M_data->_M_thousands_sep = L',';
> >> -+
> >> -+     // Use ctype::widen code without the facet...
> >> -+     for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
> >> -+       _M_data->_M_atoms_out[__i] =
> >> -+         static_cast<wchar_t>(__num_base::_S_atoms_out[__i]);
> >> -+
> >> -+     for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
> >> -+       _M_data->_M_atoms_in[__j] =
> >> -+         static_cast<wchar_t>(__num_base::_S_atoms_in[__j]);
> >> -+   }
> >> -+      else
> >> -+   {
> >> -+     // Named locale.
> >> -+     // NB: In the GNU model wchar_t is always 32 bit wide.
> >> -+     union { char *__s; wchar_t __w; } __u;
> >> -+     __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
> >> -+     _M_data->_M_decimal_point = __u.__w;
> >> -+
> >> -+     __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
> >> -+     _M_data->_M_thousands_sep = __u.__w;
> >> -+
> >> -+     if (_M_data->_M_thousands_sep == L'\0')
> >> -+       _M_data->_M_grouping = "";
> >> -+     else
> >> -+       _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
> >> -+     _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
> >> -+   }
> >> -+
> >> -+      // NB: There is no way to extact this info from posix locales.
> >> -+      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
> >> -+      _M_data->_M_truename = L"true";
> >> -+      _M_data->_M_truename_size = 4;
> >> -+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
> >> -+      _M_data->_M_falsename = L"false";
> >> -+      _M_data->_M_falsename_size = 5;
> >> -+    }
> >> -+
> >> -+  template<>
> >> -+    numpunct<wchar_t>::~numpunct()
> >> -+    { delete _M_data; }
> >> -+ #endif
> >> -+}
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/time_members.cc
> >> -===================================================================
> >> ---- /dev/null
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/time_members.cc
> >> -@@ -0,0 +1,406 @@
> >> -+// std::time_get, std::time_put implementation, GNU version -*- C++
> -*-
> >> -+
> >> -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
> >> -+//
> >> -+// This file is part of the GNU ISO C++ Library.  This library is free
> >> -+// software; you can redistribute it and/or modify it under the
> >> -+// terms of the GNU General Public License as published by the
> >> -+// Free Software Foundation; either version 2, or (at your option)
> >> -+// any later version.
> >> -+
> >> -+// This library is distributed in the hope that it will be useful,
> >> -+// but WITHOUT ANY WARRANTY; without even the implied warranty of
> >> -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >> -+// GNU General Public License for more details.
> >> -+
> >> -+// You should have received a copy of the GNU General Public License
> along
> >> -+// with this library; see the file COPYING.  If not, write to the Free
> >> -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA
> 02111-1307,
> >> -+// USA.
> >> -+
> >> -+// As a special exception, you may use this file as part of a free
> software
> >> -+// library without restriction.  Specifically, if other files
> instantiate
> >> -+// templates or use macros or inline functions from this file, or you
> compile
> >> -+// this file and link it with other files to produce an executable,
> this
> >> -+// file does not by itself cause the resulting executable to be
> covered by
> >> -+// the GNU General Public License.  This exception does not however
> >> -+// invalidate any other reasons why the executable file might be
> covered by
> >> -+// the GNU General Public License.
> >> -+
> >> -+//
> >> -+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
> >> -+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
> >> -+//
> >> -+
> >> -+// Written by Benjamin Kosnik <bkoz at redhat.com>
> >> -+
> >> -+#include <locale>
> >> -+#include <bits/c++locale_internal.h>
> >> -+
> >> -+#ifdef __UCLIBC_MJN3_ONLY__
> >> -+#warning tailor for stub locale support
> >> -+#endif
> >> -+#ifndef __UCLIBC_HAS_XLOCALE__
> >> -+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
> >> -+#endif
> >> -+
> >> -+namespace std
> >> -+{
> >> -+  template<>
> >> -+    void
> >> -+    __timepunct<char>::
> >> -+    _M_put(char* __s, size_t __maxlen, const char* __format,
> >> -+      const tm* __tm) const
> >> -+    {
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+      const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
> >> -+                                   _M_c_locale_timepunct);
> >> -+#else
> >> -+      char* __old = strdup(setlocale(LC_ALL, NULL));
> >> -+      setlocale(LC_ALL, _M_name_timepunct);
> >> -+      const size_t __len = strftime(__s, __maxlen, __format, __tm);
> >> -+      setlocale(LC_ALL, __old);
> >> -+      free(__old);
> >> -+#endif
> >> -+      // Make sure __s is null terminated.
> >> -+      if (__len == 0)
> >> -+   __s[0] = '\0';
> >> -+    }
> >> -+
> >> -+  template<>
> >> -+    void
> >> -+    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
> >> -+    {
> >> -+      if (!_M_data)
> >> -+   _M_data = new __timepunct_cache<char>;
> >> -+
> >> -+      if (!__cloc)
> >> -+   {
> >> -+     // "C" locale
> >> -+     _M_c_locale_timepunct = _S_get_c_locale();
> >> -+
> >> -+     _M_data->_M_date_format = "%m/%d/%y";
> >> -+     _M_data->_M_date_era_format = "%m/%d/%y";
> >> -+     _M_data->_M_time_format = "%H:%M:%S";
> >> -+     _M_data->_M_time_era_format = "%H:%M:%S";
> >> -+     _M_data->_M_date_time_format = "";
> >> -+     _M_data->_M_date_time_era_format = "";
> >> -+     _M_data->_M_am = "AM";
> >> -+     _M_data->_M_pm = "PM";
> >> -+     _M_data->_M_am_pm_format = "";
> >> -+
> >> -+     // Day names, starting with "C"'s Sunday.
> >> -+     _M_data->_M_day1 = "Sunday";
> >> -+     _M_data->_M_day2 = "Monday";
> >> -+     _M_data->_M_day3 = "Tuesday";
> >> -+     _M_data->_M_day4 = "Wednesday";
> >> -+     _M_data->_M_day5 = "Thursday";
> >> -+     _M_data->_M_day6 = "Friday";
> >> -+     _M_data->_M_day7 = "Saturday";
> >> -+
> >> -+     // Abbreviated day names, starting with "C"'s Sun.
> >> -+     _M_data->_M_aday1 = "Sun";
> >> -+     _M_data->_M_aday2 = "Mon";
> >> -+     _M_data->_M_aday3 = "Tue";
> >> -+     _M_data->_M_aday4 = "Wed";
> >> -+     _M_data->_M_aday5 = "Thu";
> >> -+     _M_data->_M_aday6 = "Fri";
> >> -+     _M_data->_M_aday7 = "Sat";
> >> -+
> >> -+     // Month names, starting with "C"'s January.
> >> -+     _M_data->_M_month01 = "January";
> >> -+     _M_data->_M_month02 = "February";
> >> -+     _M_data->_M_month03 = "March";
> >> -+     _M_data->_M_month04 = "April";
> >> -+     _M_data->_M_month05 = "May";
> >> -+     _M_data->_M_month06 = "June";
> >> -+     _M_data->_M_month07 = "July";
> >> -+     _M_data->_M_month08 = "August";
> >> -+     _M_data->_M_month09 = "September";
> >> -+     _M_data->_M_month10 = "October";
> >> -+     _M_data->_M_month11 = "November";
> >> -+     _M_data->_M_month12 = "December";
> >> -+
> >> -+     // Abbreviated month names, starting with "C"'s Jan.
> >> -+     _M_data->_M_amonth01 = "Jan";
> >> -+     _M_data->_M_amonth02 = "Feb";
> >> -+     _M_data->_M_amonth03 = "Mar";
> >> -+     _M_data->_M_amonth04 = "Apr";
> >> -+     _M_data->_M_amonth05 = "May";
> >> -+     _M_data->_M_amonth06 = "Jun";
> >> -+     _M_data->_M_amonth07 = "Jul";
> >> -+     _M_data->_M_amonth08 = "Aug";
> >> -+     _M_data->_M_amonth09 = "Sep";
> >> -+     _M_data->_M_amonth10 = "Oct";
> >> -+     _M_data->_M_amonth11 = "Nov";
> >> -+     _M_data->_M_amonth12 = "Dec";
> >> -+   }
> >> -+      else
> >> -+   {
> >> -+     _M_c_locale_timepunct = _S_clone_c_locale(__cloc);
> >> -+
> >> -+     _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
> >> -+     _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
> >> -+     _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
> >> -+     _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
> >> -+     _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
> >> -+     _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT,
> >> -+                                                        __cloc);
> >> -+     _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
> >> -+     _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
> >> -+     _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
> >> -+
> >> -+     // Day names, starting with "C"'s Sunday.
> >> -+     _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
> >> -+     _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
> >> -+     _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
> >> -+     _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
> >> -+     _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
> >> -+     _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
> >> -+     _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
> >> -+
> >> -+     // Abbreviated day names, starting with "C"'s Sun.
> >> -+     _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
> >> -+     _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
> >> -+     _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
> >> -+     _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
> >> -+     _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
> >> -+     _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
> >> -+     _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
> >> -+
> >> -+     // Month names, starting with "C"'s January.
> >> -+     _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
> >> -+     _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
> >> -+     _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
> >> -+     _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
> >> -+     _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
> >> -+     _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
> >> -+     _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
> >> -+     _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
> >> -+     _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
> >> -+     _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
> >> -+     _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
> >> -+     _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
> >> -+
> >> -+     // Abbreviated month names, starting with "C"'s Jan.
> >> -+     _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
> >> -+     _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
> >> -+     _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
> >> -+     _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
> >> -+     _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
> >> -+     _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
> >> -+     _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
> >> -+     _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
> >> -+     _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
> >> -+     _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
> >> -+     _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
> >> -+     _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
> >> -+   }
> >> -+    }
> >> -+
> >> -+#ifdef _GLIBCXX_USE_WCHAR_T
> >> -+  template<>
> >> -+    void
> >> -+    __timepunct<wchar_t>::
> >> -+    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format,
> >> -+      const tm* __tm) const
> >> -+    {
> >> -+#ifdef __UCLIBC_HAS_XLOCALE__
> >> -+      __wcsftime_l(__s, __maxlen, __format, __tm,
> _M_c_locale_timepunct);
> >> -+      const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
> >> -+                                   _M_c_locale_timepunct);
> >> -+#else
> >> -+      char* __old = strdup(setlocale(LC_ALL, NULL));
> >> -+      setlocale(LC_ALL, _M_name_timepunct);
> >> -+      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
> >> -+      setlocale(LC_ALL, __old);
> >> -+      free(__old);
> >> -+#endif
> >> -+      // Make sure __s is null terminated.
> >> -+      if (__len == 0)
> >> -+   __s[0] = L'\0';
> >> -+    }
> >> -+
> >> -+  template<>
> >> -+    void
> >> -+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
> >> -+    {
> >> -+      if (!_M_data)
> >> -+   _M_data = new __timepunct_cache<wchar_t>;
> >> -+
> >> -+#warning wide time stuff
> >> -+//       if (!__cloc)
> >> -+   {
> >> -+     // "C" locale
> >> -+     _M_c_locale_timepunct = _S_get_c_locale();
> >> -+
> >> -+     _M_data->_M_date_format = L"%m/%d/%y";
> >> -+     _M_data->_M_date_era_format = L"%m/%d/%y";
> >> -+     _M_data->_M_time_format = L"%H:%M:%S";
> >> -+     _M_data->_M_time_era_format = L"%H:%M:%S";
> >> -+     _M_data->_M_date_time_format = L"";
> >> -+     _M_data->_M_date_time_era_format = L"";
> >> -+     _M_data->_M_am = L"AM";
> >> -+     _M_data->_M_pm = L"PM";
> >> -+     _M_data->_M_am_pm_format = L"";
> >> -+
> >> -+     // Day names, starting with "C"'s Sunday.
> >> -+     _M_data->_M_day1 = L"Sunday";
> >> -+     _M_data->_M_day2 = L"Monday";
> >> -+     _M_data->_M_day3 = L"Tuesday";
> >> -+     _M_data->_M_day4 = L"Wednesday";
> >> -+     _M_data->_M_day5 = L"Thursday";
> >> -+     _M_data->_M_day6 = L"Friday";
> >> -+     _M_data->_M_day7 = L"Saturday";
> >> -+
> >> -+     // Abbreviated day names, starting with "C"'s Sun.
> >> -+     _M_data->_M_aday1 = L"Sun";
> >> -+     _M_data->_M_aday2 = L"Mon";
> >> -+     _M_data->_M_aday3 = L"Tue";
> >> -+     _M_data->_M_aday4 = L"Wed";
> >> -+     _M_data->_M_aday5 = L"Thu";
> >> -+     _M_data->_M_aday6 = L"Fri";
> >> -+     _M_data->_M_aday7 = L"Sat";
> >> -+
> >> -+     // Month names, starting with "C"'s January.
> >> -+     _M_data->_M_month01 = L"January";
> >> -+     _M_data->_M_month02 = L"February";
> >> -+     _M_data->_M_month03 = L"March";
> >> -+     _M_data->_M_month04 = L"April";
> >> -+     _M_data->_M_month05 = L"May";
> >> -+     _M_data->_M_month06 = L"June";
> >> -+     _M_data->_M_month07 = L"July";
> >> -+     _M_data->_M_month08 = L"August";
> >> -+     _M_data->_M_month09 = L"September";
> >> -+     _M_data->_M_month10 = L"October";
> >> -+     _M_data->_M_month11 = L"November";
> >> -+     _M_data->_M_month12 = L"December";
> >> -+
> >> -+     // Abbreviated month names, starting with "C"'s Jan.
> >> -+     _M_data->_M_amonth01 = L"Jan";
> >> -+     _M_data->_M_amonth02 = L"Feb";
> >> -+     _M_data->_M_amonth03 = L"Mar";
> >> -+     _M_data->_M_amonth04 = L"Apr";
> >> -+     _M_data->_M_amonth05 = L"May";
> >> -+     _M_data->_M_amonth06 = L"Jun";
> >> -+     _M_data->_M_amonth07 = L"Jul";
> >> -+     _M_data->_M_amonth08 = L"Aug";
> >> -+     _M_data->_M_amonth09 = L"Sep";
> >> -+     _M_data->_M_amonth10 = L"Oct";
> >> -+     _M_data->_M_amonth11 = L"Nov";
> >> -+     _M_data->_M_amonth12 = L"Dec";
> >> -+   }
> >> -+#if 0
> >> -+      else
> >> -+   {
> >> -+     _M_c_locale_timepunct = _S_clone_c_locale(__cloc);
> >> -+
> >> -+     union { char *__s; wchar_t *__w; } __u;
> >> -+
> >> -+     __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc);
> >> -+     _M_data->_M_date_format = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc);
> >> -+     _M_data->_M_date_era_format = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc);
> >> -+     _M_data->_M_time_format = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc);
> >> -+     _M_data->_M_time_era_format = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc);
> >> -+     _M_data->_M_date_time_format = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc);
> >> -+     _M_data->_M_date_time_era_format = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc);
> >> -+     _M_data->_M_am = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc);
> >> -+     _M_data->_M_pm = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc);
> >> -+     _M_data->_M_am_pm_format = __u.__w;
> >> -+
> >> -+     // Day names, starting with "C"'s Sunday.
> >> -+     __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc);
> >> -+     _M_data->_M_day1 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc);
> >> -+     _M_data->_M_day2 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc);
> >> -+     _M_data->_M_day3 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc);
> >> -+     _M_data->_M_day4 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc);
> >> -+     _M_data->_M_day5 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc);
> >> -+     _M_data->_M_day6 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc);
> >> -+     _M_data->_M_day7 = __u.__w;
> >> -+
> >> -+     // Abbreviated day names, starting with "C"'s Sun.
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc);
> >> -+     _M_data->_M_aday1 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc);
> >> -+     _M_data->_M_aday2 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc);
> >> -+     _M_data->_M_aday3 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc);
> >> -+     _M_data->_M_aday4 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc);
> >> -+     _M_data->_M_aday5 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc);
> >> -+     _M_data->_M_aday6 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc);
> >> -+     _M_data->_M_aday7 = __u.__w;
> >> -+
> >> -+     // Month names, starting with "C"'s January.
> >> -+     __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc);
> >> -+     _M_data->_M_month01 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc);
> >> -+     _M_data->_M_month02 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc);
> >> -+     _M_data->_M_month03 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc);
> >> -+     _M_data->_M_month04 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc);
> >> -+     _M_data->_M_month05 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc);
> >> -+     _M_data->_M_month06 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc);
> >> -+     _M_data->_M_month07 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc);
> >> -+     _M_data->_M_month08 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc);
> >> -+     _M_data->_M_month09 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc);
> >> -+     _M_data->_M_month10 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc);
> >> -+     _M_data->_M_month11 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc);
> >> -+     _M_data->_M_month12 = __u.__w;
> >> -+
> >> -+     // Abbreviated month names, starting with "C"'s Jan.
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc);
> >> -+     _M_data->_M_amonth01 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc);
> >> -+     _M_data->_M_amonth02 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc);
> >> -+     _M_data->_M_amonth03 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc);
> >> -+     _M_data->_M_amonth04 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc);
> >> -+     _M_data->_M_amonth05 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc);
> >> -+     _M_data->_M_amonth06 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc);
> >> -+     _M_data->_M_amonth07 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc);
> >> -+     _M_data->_M_amonth08 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc);
> >> -+     _M_data->_M_amonth09 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc);
> >> -+     _M_data->_M_amonth10 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc);
> >> -+     _M_data->_M_amonth11 = __u.__w;
> >> -+     __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc);
> >> -+     _M_data->_M_amonth12 = __u.__w;
> >> -+   }
> >> -+#endif // 0
> >> -+    }
> >> -+#endif
> >> -+}
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/time_members.h
> >> -===================================================================
> >> ---- /dev/null
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/time_members.h
> >> -@@ -0,0 +1,68 @@
> >> -+// std::time_get, std::time_put implementation, GNU version -*- C++
> -*-
> >> -+
> >> -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
> >> -+//
> >> -+// This file is part of the GNU ISO C++ Library.  This library is free
> >> -+// software; you can redistribute it and/or modify it under the
> >> -+// terms of the GNU General Public License as published by the
> >> -+// Free Software Foundation; either version 2, or (at your option)
> >> -+// any later version.
> >> -+
> >> -+// This library is distributed in the hope that it will be useful,
> >> -+// but WITHOUT ANY WARRANTY; without even the implied warranty of
> >> -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >> -+// GNU General Public License for more details.
> >> -+
> >> -+// You should have received a copy of the GNU General Public License
> along
> >> -+// with this library; see the file COPYING.  If not, write to the Free
> >> -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA
> 02111-1307,
> >> -+// USA.
> >> -+
> >> -+// As a special exception, you may use this file as part of a free
> software
> >> -+// library without restriction.  Specifically, if other files
> instantiate
> >> -+// templates or use macros or inline functions from this file, or you
> compile
> >> -+// this file and link it with other files to produce an executable,
> this
> >> -+// file does not by itself cause the resulting executable to be
> covered by
> >> -+// the GNU General Public License.  This exception does not however
> >> -+// invalidate any other reasons why the executable file might be
> covered by
> >> -+// the GNU General Public License.
> >> -+
> >> -+//
> >> -+// ISO C++ 14882: 22.2.5.1.2 - time_get functions
> >> -+// ISO C++ 14882: 22.2.5.3.2 - time_put functions
> >> -+//
> >> -+
> >> -+// Written by Benjamin Kosnik <bkoz at redhat.com>
> >> -+
> >> -+  template<typename _CharT>
> >> -+    __timepunct<_CharT>::__timepunct(size_t __refs)
> >> -+    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
> >> -+    _M_name_timepunct(_S_get_c_name())
> >> -+    { _M_initialize_timepunct(); }
> >> -+
> >> -+  template<typename _CharT>
> >> -+    __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t
> __refs)
> >> -+    : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL),
> >> -+    _M_name_timepunct(_S_get_c_name())
> >> -+    { _M_initialize_timepunct(); }
> >> -+
> >> -+  template<typename _CharT>
> >> -+    __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char*
> __s,
> >> -+                                size_t __refs)
> >> -+    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
> >> -+    _M_name_timepunct(__s)
> >> -+    {
> >> -+      char* __tmp = new char[std::strlen(__s) + 1];
> >> -+      std::strcpy(__tmp, __s);
> >> -+      _M_name_timepunct = __tmp;
> >> -+      _M_initialize_timepunct(__cloc);
> >> -+    }
> >> -+
> >> -+  template<typename _CharT>
> >> -+    __timepunct<_CharT>::~__timepunct()
> >> -+    {
> >> -+      if (_M_name_timepunct != _S_get_c_name())
> >> -+   delete [] _M_name_timepunct;
> >> -+      delete _M_data;
> >> -+      _S_destroy_c_locale(_M_c_locale_timepunct);
> >> -+    }
> >> -Index: gcc-4.6.0/libstdc++-v3/configure
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/configure
> >> -+++ gcc-4.6.0/libstdc++-v3/configure
> >> -@@ -15642,7 +15642,7 @@ $as_echo "stdio" >&6; }
> >> - if test "${enable_clocale+set}" = set; then :
> >> -   enableval=$enable_clocale;
> >> -       case "$enableval" in
> >> --       generic|gnu|ieee_1003.1-2001|yes|no|auto) ;;
> >> -+       generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;;
> >> -        *) as_fn_error "Unknown argument to enable/disable clocale"
> "$LINENO" 5 ;;
> >> -                    esac
> >> -
> >> -@@ -15674,6 +15674,9 @@ fi
> >> -   # Default to "generic".
> >> -   if test $enable_clocale_flag = auto; then
> >> -     case ${target_os} in
> >> -+      *-uclibc*)
> >> -+        enable_clocale_flag=uclibc
> >> -+        ;;
> >> -       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
> >> -    enable_clocale_flag=gnu
> >> -    ;;
> >> -@@ -15907,6 +15910,76 @@ $as_echo "IEEE 1003.1" >&6; }
> >> -       CTIME_CC=config/locale/generic/time_members.cc
> >> -       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
> >> -       ;;
> >> -+    uclibc)
> >> -+      echo "$as_me:$LINENO: result: uclibc" >&5
> >> -+echo "${ECHO_T}uclibc" >&6
> >> -+
> >> -+      # Declare intention to use gettext, and add support for specific
> >> -+      # languages.
> >> -+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
> >> -+      ALL_LINGUAS="de fr"
> >> -+
> >> -+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
> >> -+      # Extract the first word of "msgfmt", so it can be a program
> name with args.
> >> -+set dummy msgfmt; ac_word=$2
> >> -+echo "$as_me:$LINENO: checking for $ac_word" >&5
> >> -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
> >> -+if test "${ac_cv_prog_check_msgfmt+set}" = set; then
> >> -+  echo $ECHO_N "(cached) $ECHO_C" >&6
> >> -+else
> >> -+  if test -n "$check_msgfmt"; then
> >> -+  ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the
> test.
> >> -+else
> >> -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
> >> -+for as_dir in $PATH
> >> -+do
> >> -+  IFS=$as_save_IFS
> >> -+  test -z "$as_dir" && as_dir=.
> >> -+  for ac_exec_ext in '' $ac_executable_extensions; do
> >> -+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
> >> -+    ac_cv_prog_check_msgfmt="yes"
> >> -+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
> >> -+    break 2
> >> -+  fi
> >> -+done
> >> -+done
> >> -+
> >> -+  test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no"
> >> -+fi
> >> -+fi
> >> -+check_msgfmt=$ac_cv_prog_check_msgfmt
> >> -+if test -n "$check_msgfmt"; then
> >> -+  echo "$as_me:$LINENO: result: $check_msgfmt" >&5
> >> -+echo "${ECHO_T}$check_msgfmt" >&6
> >> -+else
> >> -+  echo "$as_me:$LINENO: result: no" >&5
> >> -+echo "${ECHO_T}no" >&6
> >> -+fi
> >> -+
> >> -+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" =
> x"yes"; then
> >> -+        USE_NLS=yes
> >> -+      fi
> >> -+      # Export the build objects.
> >> -+      for ling in $ALL_LINGUAS; do \
> >> -+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
> >> -+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
> >> -+      done
> >> -+
> >> -+
> >> -+
> >> -+      CLOCALE_H=config/locale/uclibc/c_locale.h
> >> -+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
> >> -+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
> >> -+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
> >> -+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
> >> -+      CMESSAGES_H=config/locale/uclibc/messages_members.h
> >> -+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
> >> -+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
> >> -+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
> >> -+      CTIME_H=config/locale/uclibc/time_members.h
> >> -+      CTIME_CC=config/locale/uclibc/time_members.cc
> >> -+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
> >> -+      ;;
> >> -   esac
> >> -
> >> -   # This is where the testsuite looks for locale catalogs, using the
> >> -@@ -16957,6 +17030,7 @@ rm -f core conftest.err conftest.$ac_obj
> >> -
> >> -     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> >> - /* end confdefs.h.  */
> >> -+#line 17016 "configure"
> >> - #include <wctype.h>
> >> - int
> >> - main ()
> >> -@@ -64172,7 +64246,6 @@ $as_echo_n "checking for shared libgcc..
> >> - fi
> >> - cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> >> - /* end confdefs.h.  */
> >> --
> >> - int
> >> - main ()
> >> - {
> >> -Index: gcc-4.6.0/libstdc++-v3/include/c_compatibility/wchar.h
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/include/c_compatibility/wchar.h
> >> -+++ gcc-4.6.0/libstdc++-v3/include/c_compatibility/wchar.h
> >> -@@ -101,7 +101,9 @@ using std::wmemcmp;
> >> - using std::wmemcpy;
> >> - using std::wmemmove;
> >> - using std::wmemset;
> >> -+#if _GLIBCXX_HAVE_WCSFTIME
> >> - using std::wcsftime;
> >> -+#endif
> >> -
> >> - #if _GLIBCXX_USE_C99
> >> - using std::wcstold;
> >> -Index: gcc-4.6.0/libstdc++-v3/include/c_std/cwchar
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/include/c_std/cwchar
> >> -+++ gcc-4.6.0/libstdc++-v3/include/c_std/cwchar
> >> -@@ -177,7 +177,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> >> -   using ::wcscoll;
> >> -   using ::wcscpy;
> >> -   using ::wcscspn;
> >> -+#if _GLIBCXX_HAVE_WCSFTIME
> >> -   using ::wcsftime;
> >> -+#endif
> >> -   using ::wcslen;
> >> -   using ::wcsncat;
> >> -   using ::wcsncmp;
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/203-uclibc-locale-no__x.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/203-uclibc-locale-no__x.patch
> >> deleted file mode 100644
> >> index c602e91..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/203-uclibc-locale-no__x.patch
> >> +++ /dev/null
> >> @@ -1,235 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
> >> -===================================================================
> >> ----
> gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
> >> -@@ -60,4 +60,49 @@ extern "C" __typeof(wcsxfrm_l) __wcsxfrm
> >> - extern "C" __typeof(wctype_l) __wctype_l;
> >> - #endif
> >> -
> >> -+# define __nl_langinfo_l nl_langinfo_l
> >> -+# define __strcoll_l strcoll_l
> >> -+# define __strftime_l strftime_l
> >> -+# define __strtod_l strtod_l
> >> -+# define __strtof_l strtof_l
> >> -+# define __strtold_l strtold_l
> >> -+# define __strxfrm_l strxfrm_l
> >> -+# define __newlocale newlocale
> >> -+# define __freelocale freelocale
> >> -+# define __duplocale duplocale
> >> -+# define __uselocale uselocale
> >> -+
> >> -+# ifdef _GLIBCXX_USE_WCHAR_T
> >> -+#  define __iswctype_l iswctype_l
> >> -+#  define __towlower_l towlower_l
> >> -+#  define __towupper_l towupper_l
> >> -+#  define __wcscoll_l wcscoll_l
> >> -+#  define __wcsftime_l wcsftime_l
> >> -+#  define __wcsxfrm_l wcsxfrm_l
> >> -+#  define __wctype_l wctype_l
> >> -+# endif
> >> -+
> >> -+#else
> >> -+# define __nl_langinfo_l(N, L)       nl_langinfo((N))
> >> -+# define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
> >> -+# define __strtod_l(S, E, L)         strtod((S), (E))
> >> -+# define __strtof_l(S, E, L)         strtof((S), (E))
> >> -+# define __strtold_l(S, E, L)        strtold((S), (E))
> >> -+# define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
> >> -+# warning should dummy __newlocale check for C|POSIX ?
> >> -+# define __newlocale(a, b, c)        NULL
> >> -+# define __freelocale(a)             ((void)0)
> >> -+# define __duplocale(a)              __c_locale()
> >> -+//# define __uselocale ?
> >> -+//
> >> -+# ifdef _GLIBCXX_USE_WCHAR_T
> >> -+#  define __iswctype_l(C, M, L)       iswctype((C), (M))
> >> -+#  define __towlower_l(C, L)          towlower((C))
> >> -+#  define __towupper_l(C, L)          towupper((C))
> >> -+#  define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
> >> -+//#  define __wcsftime_l(S, M, F, T, L)  wcsftime((S), (M), (F), (T))
> >> -+#  define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
> >> -+#  define __wctype_l(S, L)            wctype((S))
> >> -+# endif
> >> -+
> >> - #endif // GLIBC 2.3 and later
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c_locale.cc
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/c_locale.cc
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c_locale.cc
> >> -@@ -39,20 +39,6 @@
> >> - #include <langinfo.h>
> >> - #include <bits/c++locale_internal.h>
> >> -
> >> --#ifndef __UCLIBC_HAS_XLOCALE__
> >> --#define __strtol_l(S, E, B, L)      strtol((S), (E), (B))
> >> --#define __strtoul_l(S, E, B, L)     strtoul((S), (E), (B))
> >> --#define __strtoll_l(S, E, B, L)     strtoll((S), (E), (B))
> >> --#define __strtoull_l(S, E, B, L)    strtoull((S), (E), (B))
> >> --#define __strtof_l(S, E, L)         strtof((S), (E))
> >> --#define __strtod_l(S, E, L)         strtod((S), (E))
> >> --#define __strtold_l(S, E, L)        strtold((S), (E))
> >> --#warning should dummy __newlocale check for C|POSIX ?
> >> --#define __newlocale(a, b, c)        NULL
> >> --#define __freelocale(a)             ((void)0)
> >> --#define __duplocale(a)              __c_locale()
> >> --#endif
> >> --
> >> - namespace std
> >> - {
> >> -   template<>
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/collate_members.cc
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/collate_members.cc
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/collate_members.cc
> >> -@@ -36,13 +36,6 @@
> >> - #include <locale>
> >> - #include <bits/c++locale_internal.h>
> >> -
> >> --#ifndef __UCLIBC_HAS_XLOCALE__
> >> --#define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
> >> --#define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
> >> --#define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
> >> --#define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
> >> --#endif
> >> --
> >> - namespace std
> >> - {
> >> -   // These are basically extensions to char_traits, and perhaps should
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc
> >> -===================================================================
> >> ----
> gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc
> >> -@@ -43,10 +43,6 @@
> >> - #warning tailor for stub locale support
> >> - #endif
> >> -
> >> --#ifndef __UCLIBC_HAS_XLOCALE__
> >> --#define __nl_langinfo_l(N, L)         nl_langinfo((N))
> >> --#endif
> >> --
> >> - namespace std
> >> - {
> >> -   // Construct and return valid pattern consisting of some
> combination of:
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc
> >> -@@ -41,9 +41,6 @@
> >> - #ifdef __UCLIBC_MJN3_ONLY__
> >> - #warning tailor for stub locale support
> >> - #endif
> >> --#ifndef __UCLIBC_HAS_XLOCALE__
> >> --#define __nl_langinfo_l(N, L)         nl_langinfo((N))
> >> --#endif
> >> -
> >> - namespace std
> >> - {
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/time_members.cc
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/time_members.cc
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/time_members.cc
> >> -@@ -40,9 +40,6 @@
> >> - #ifdef __UCLIBC_MJN3_ONLY__
> >> - #warning tailor for stub locale support
> >> - #endif
> >> --#ifndef __UCLIBC_HAS_XLOCALE__
> >> --#define __nl_langinfo_l(N, L)         nl_langinfo((N))
> >> --#endif
> >> -
> >> - namespace std
> >> - {
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/ctype_members.cc
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc
> >> -@@ -38,13 +38,6 @@
> >> - #undef _LIBC
> >> - #include <bits/c++locale_internal.h>
> >> -
> >> --#ifndef __UCLIBC_HAS_XLOCALE__
> >> --#define __wctype_l(S, L)           wctype((S))
> >> --#define __towupper_l(C, L)         towupper((C))
> >> --#define __towlower_l(C, L)         towlower((C))
> >> --#define __iswctype_l(C, M, L)      iswctype((C), (M))
> >> --#endif
> >> --
> >> - namespace std
> >> - {
> >> -   // NB: The other ctype<char> specializations are in src/locale.cc
> and
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/messages_members.cc
> >> -===================================================================
> >> ----
> gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/messages_members.cc
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/messages_members.cc
> >> -@@ -39,13 +39,10 @@
> >> - #ifdef __UCLIBC_MJN3_ONLY__
> >> - #warning fix gettext stuff
> >> - #endif
> >> --#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
> >> --extern "C" char *__dcgettext(const char *domainname,
> >> --                        const char *msgid, int category);
> >> - #undef gettext
> >> --#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
> >> -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
> >> -+#define gettext(msgid) dcgettext(NULL, msgid, LC_MESSAGES)
> >> - #else
> >> --#undef gettext
> >> - #define gettext(msgid) (msgid)
> >> - #endif
> >> -
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/messages_members.h
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/messages_members.h
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/messages_members.h
> >> -@@ -36,15 +36,11 @@
> >> - #ifdef __UCLIBC_MJN3_ONLY__
> >> - #warning fix prototypes for *textdomain funcs
> >> - #endif
> >> --#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
> >> --extern "C" char *__textdomain(const char *domainname);
> >> --extern "C" char *__bindtextdomain(const char *domainname,
> >> --                             const char *dirname);
> >> --#else
> >> --#undef __textdomain
> >> --#undef __bindtextdomain
> >> --#define __textdomain(D)           ((void)0)
> >> --#define __bindtextdomain(D,P)     ((void)0)
> >> -+#ifndef __UCLIBC_HAS_GETTEXT_AWARENESS__
> >> -+#undef textdomain
> >> -+#undef bindtextdomain
> >> -+#define textdomain(D)           ((void)0)
> >> -+#define bindtextdomain(D,P)     ((void)0)
> >> - #endif
> >> -
> >> -   // Non-virtual member functions.
> >> -@@ -70,7 +66,7 @@ extern "C" char *__bindtextdomain(const
> >> -     messages<_CharT>::open(const basic_string<char>& __s, const
> locale& __loc,
> >> -                       const char* __dir) const
> >> -     {
> >> --      __bindtextdomain(__s.c_str(), __dir);
> >> -+      bindtextdomain(__s.c_str(), __dir);
> >> -       return this->do_open(__s, __loc);
> >> -     }
> >> -
> >> -@@ -90,7 +86,7 @@ extern "C" char *__bindtextdomain(const
> >> -     {
> >> -       // No error checking is done, assume the catalog exists and can
> >> -       // be used.
> >> --      __textdomain(__s.c_str());
> >> -+      textdomain(__s.c_str());
> >> -       return 0;
> >> -     }
> >> -
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c_locale.h
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/c_locale.h
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c_locale.h
> >> -@@ -68,6 +68,7 @@ namespace __gnu_cxx
> >> - {
> >> -   extern "C" __typeof(uselocale) __uselocale;
> >> - }
> >> -+#define __uselocale uselocale
> >> - #endif
> >> -
> >> - namespace std
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/204-uclibc-locale-wchar_fix.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/204-uclibc-locale-wchar_fix.patch
> >> deleted file mode 100644
> >> index 896d2a5..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/204-uclibc-locale-wchar_fix.patch
> >> +++ /dev/null
> >> @@ -1,54 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc
> >> -===================================================================
> >> ----
> gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc
> >> -@@ -401,7 +401,7 @@ namespace std
> >> - # ifdef __UCLIBC_HAS_XLOCALE__
> >> -      _M_data->_M_decimal_point = __cloc->decimal_point_wc;
> >> -      _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
> >> --# else
> >> -+# elif defined __UCLIBC_HAS_LOCALE__
> >> -      _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
> >> -      _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
> >> - # endif
> >> -@@ -556,7 +556,7 @@ namespace std
> >> - # ifdef __UCLIBC_HAS_XLOCALE__
> >> -      _M_data->_M_decimal_point = __cloc->decimal_point_wc;
> >> -      _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
> >> --# else
> >> -+# elif defined __UCLIBC_HAS_LOCALE__
> >> -      _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
> >> -      _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
> >> - # endif
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc
> >> -@@ -127,12 +127,25 @@ namespace std
> >> -    {
> >> -      // Named locale.
> >> -      // NB: In the GNU model wchar_t is always 32 bit wide.
> >> -+#ifdef __UCLIBC_MJN3_ONLY__
> >> -+#warning fix this... should be numeric
> >> -+#endif
> >> -+#ifdef __UCLIBC__
> >> -+# ifdef __UCLIBC_HAS_XLOCALE__
> >> -+     _M_data->_M_decimal_point = __cloc->decimal_point_wc;
> >> -+     _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
> >> -+# elif defined __UCLIBC_HAS_LOCALE__
> >> -+     _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
> >> -+     _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
> >> -+# endif
> >> -+#else
> >> -      union { char *__s; wchar_t __w; } __u;
> >> -      __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
> >> -      _M_data->_M_decimal_point = __u.__w;
> >> -
> >> -      __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
> >> -      _M_data->_M_thousands_sep = __u.__w;
> >> -+#endif
> >> -
> >> -      if (_M_data->_M_thousands_sep == L'\0')
> >> -        _M_data->_M_grouping = "";
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/205-uclibc-locale-update.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/205-uclibc-locale-update.patch
> >> deleted file mode 100644
> >> index 743017b..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/205-uclibc-locale-update.patch
> >> +++ /dev/null
> >> @@ -1,521 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c_locale.cc
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/c_locale.cc
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c_locale.cc
> >> -@@ -39,23 +39,20 @@
> >> - #include <langinfo.h>
> >> - #include <bits/c++locale_internal.h>
> >> -
> >> --namespace std
> >> --{
> >> -+_GLIBCXX_BEGIN_NAMESPACE(std)
> >> -+
> >> -   template<>
> >> -     void
> >> -     __convert_to_v(const char* __s, float& __v, ios_base::iostate&
> __err,
> >> -               const __c_locale& __cloc)
> >> -     {
> >> --      if (!(__err & ios_base::failbit))
> >> --   {
> >> --     char* __sanity;
> >> --     errno = 0;
> >> --     float __f = __strtof_l(__s, &__sanity, __cloc);
> >> --          if (__sanity != __s && errno != ERANGE)
> >> --       __v = __f;
> >> --     else
> >> --       __err |= ios_base::failbit;
> >> --   }
> >> -+      char* __sanity;
> >> -+      errno = 0;
> >> -+      float __f = __strtof_l(__s, &__sanity, __cloc);
> >> -+      if (__sanity != __s && errno != ERANGE)
> >> -+   __v = __f;
> >> -+      else
> >> -+   __err |= ios_base::failbit;
> >> -     }
> >> -
> >> -   template<>
> >> -@@ -63,16 +60,13 @@ namespace std
> >> -     __convert_to_v(const char* __s, double& __v, ios_base::iostate&
> __err,
> >> -               const __c_locale& __cloc)
> >> -     {
> >> --      if (!(__err & ios_base::failbit))
> >> --   {
> >> --     char* __sanity;
> >> --     errno = 0;
> >> --     double __d = __strtod_l(__s, &__sanity, __cloc);
> >> --          if (__sanity != __s && errno != ERANGE)
> >> --       __v = __d;
> >> --     else
> >> --       __err |= ios_base::failbit;
> >> --   }
> >> -+      char* __sanity;
> >> -+      errno = 0;
> >> -+      double __d = __strtod_l(__s, &__sanity, __cloc);
> >> -+      if (__sanity != __s && errno != ERANGE)
> >> -+   __v = __d;
> >> -+      else
> >> -+   __err |= ios_base::failbit;
> >> -     }
> >> -
> >> -   template<>
> >> -@@ -80,16 +74,13 @@ namespace std
> >> -     __convert_to_v(const char* __s, long double& __v,
> ios_base::iostate& __err,
> >> -               const __c_locale& __cloc)
> >> -     {
> >> --      if (!(__err & ios_base::failbit))
> >> --   {
> >> --     char* __sanity;
> >> --     errno = 0;
> >> --     long double __ld = __strtold_l(__s, &__sanity, __cloc);
> >> --          if (__sanity != __s && errno != ERANGE)
> >> --       __v = __ld;
> >> --     else
> >> --       __err |= ios_base::failbit;
> >> --   }
> >> -+      char* __sanity;
> >> -+      errno = 0;
> >> -+      long double __ld = __strtold_l(__s, &__sanity, __cloc);
> >> -+      if (__sanity != __s && errno != ERANGE)
> >> -+   __v = __ld;
> >> -+      else
> >> -+   __err |= ios_base::failbit;
> >> -     }
> >> -
> >> -   void
> >> -@@ -110,17 +101,18 @@ namespace std
> >> -   void
> >> -   locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
> >> -   {
> >> --    if (_S_get_c_locale() != __cloc)
> >> -+    if (__cloc && _S_get_c_locale() != __cloc)
> >> -       __freelocale(__cloc);
> >> -   }
> >> -
> >> -   __c_locale
> >> -   locale::facet::_S_clone_c_locale(__c_locale& __cloc)
> >> -   { return __duplocale(__cloc); }
> >> --} // namespace std
> >> -
> >> --namespace __gnu_cxx
> >> --{
> >> -+_GLIBCXX_END_NAMESPACE
> >> -+
> >> -+_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
> >> -+
> >> -   const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
> >> -     {
> >> -       "LC_CTYPE",
> >> -@@ -138,9 +130,11 @@ namespace __gnu_cxx
> >> -       "LC_IDENTIFICATION"
> >> - #endif
> >> -     };
> >> --}
> >> -
> >> --namespace std
> >> --{
> >> -+_GLIBCXX_END_NAMESPACE
> >> -+
> >> -+_GLIBCXX_BEGIN_NAMESPACE(std)
> >> -+
> >> -   const char* const* const locale::_S_categories =
> __gnu_cxx::category_names;
> >> --}  // namespace std
> >> -+
> >> -+_GLIBCXX_END_NAMESPACE
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/ctype_members.cc
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc
> >> -@@ -33,16 +33,20 @@
> >> -
> >> - // Written by Benjamin Kosnik <bkoz at redhat.com>
> >> -
> >> -+#include <features.h>
> >> -+#ifdef __UCLIBC_HAS_LOCALE__
> >> - #define _LIBC
> >> - #include <locale>
> >> - #undef _LIBC
> >> -+#else
> >> -+#include <locale>
> >> -+#endif
> >> - #include <bits/c++locale_internal.h>
> >> -
> >> --namespace std
> >> --{
> >> -+_GLIBCXX_BEGIN_NAMESPACE(std)
> >> -+
> >> -   // NB: The other ctype<char> specializations are in src/locale.cc
> and
> >> -   // various /config/os/* files.
> >> --  template<>
> >> -     ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
> >> -     : ctype<char>(0, false, __refs)
> >> -     {
> >> -@@ -57,6 +61,8 @@ namespace std
> >> - #endif
> >> -    }
> >> -     }
> >> -+    ctype_byname<char>::~ctype_byname()
> >> -+    { }
> >> -
> >> - #ifdef _GLIBCXX_USE_WCHAR_T
> >> -   ctype<wchar_t>::__wmask_type
> >> -@@ -138,17 +144,33 @@ namespace std
> >> -   ctype<wchar_t>::
> >> -   do_is(mask __m, wchar_t __c) const
> >> -   {
> >> --    // Highest bitmask in ctype_base == 10, but extra in "C"
> >> --    // library for blank.
> >> -+    // The case of __m == ctype_base::space is particularly important,
> >> -+    // due to its use in many istream functions.  Therefore we deal
> with
> >> -+    // it first, exploiting the knowledge that on GNU systems
> _M_bit[5]
> >> -+    // is the mask corresponding to ctype_base::space.  NB: an
> encoding
> >> -+    // change would not affect correctness!
> >> -+
> >> -     bool __ret = false;
> >> --    const size_t __bitmasksize = 11;
> >> --    for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
> >> --      if (__m & _M_bit[__bitcur]
> >> --     && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
> >> --   {
> >> --     __ret = true;
> >> --     break;
> >> --   }
> >> -+    if (__m == _M_bit[5])
> >> -+      __ret = __iswctype_l(__c, _M_wmask[5], _M_c_locale_ctype);
> >> -+    else
> >> -+      {
> >> -+   // Highest bitmask in ctype_base == 10, but extra in "C"
> >> -+   // library for blank.
> >> -+   const size_t __bitmasksize = 11;
> >> -+   for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
> >> -+     if (__m & _M_bit[__bitcur])
> >> -+       {
> >> -+         if (__iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
> >> -+           {
> >> -+             __ret = true;
> >> -+             break;
> >> -+           }
> >> -+         else if (__m == _M_bit[__bitcur])
> >> -+           break;
> >> -+       }
> >> -+      }
> >> -+
> >> -     return __ret;
> >> -   }
> >> -
> >> -@@ -290,4 +312,5 @@ namespace std
> >> - #endif
> >> -   }
> >> - #endif //  _GLIBCXX_USE_WCHAR_T
> >> --}
> >> -+
> >> -+_GLIBCXX_END_NAMESPACE
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/messages_members.h
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/messages_members.h
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/messages_members.h
> >> -@@ -53,12 +53,16 @@
> >> -   template<typename _CharT>
> >> -      messages<_CharT>::messages(__c_locale __cloc, const char* __s,
> >> -                            size_t __refs)
> >> --     : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
> >> --     _M_name_messages(__s)
> >> -+     : facet(__refs), _M_c_locale_messages(NULL),
> >> -+     _M_name_messages(NULL)
> >> -      {
> >> --       char* __tmp = new char[std::strlen(__s) + 1];
> >> --       std::strcpy(__tmp, __s);
> >> -+       const size_t __len = std::strlen(__s) + 1;
> >> -+       char* __tmp = new char[__len];
> >> -+       std::memcpy(__tmp, __s, __len);
> >> -        _M_name_messages = __tmp;
> >> -+
> >> -+       // Last to avoid leaking memory if new throws.
> >> -+       _M_c_locale_messages = _S_clone_c_locale(__cloc);
> >> -      }
> >> -
> >> -   template<typename _CharT>
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc
> >> -===================================================================
> >> ----
> gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc
> >> -@@ -33,9 +33,14 @@
> >> -
> >> - // Written by Benjamin Kosnik <bkoz at redhat.com>
> >> -
> >> -+#include <features.h>
> >> -+#ifdef __UCLIBC_HAS_LOCALE__
> >> - #define _LIBC
> >> - #include <locale>
> >> - #undef _LIBC
> >> -+#else
> >> -+#include <locale>
> >> -+#endif
> >> - #include <bits/c++locale_internal.h>
> >> -
> >> - #ifdef __UCLIBC_MJN3_ONLY__
> >> -@@ -206,7 +211,7 @@ namespace std
> >> -      }
> >> -    break;
> >> -       default:
> >> --   ;
> >> -+   __ret = pattern();
> >> -       }
> >> -     return __ret;
> >> -   }
> >> -@@ -390,7 +395,9 @@ namespace std
> >> -      __c_locale __old = __uselocale(__cloc);
> >> - #else
> >> -      // Switch to named locale so that mbsrtowcs will work.
> >> --     char* __old = strdup(setlocale(LC_ALL, NULL));
> >> -+     char* __old = setlocale(LC_ALL, NULL);
> >> -+          const size_t __llen = strlen(__old) + 1;
> >> -+          char* __sav = new char[__llen];
> >> -      setlocale(LC_ALL, __name);
> >> - #endif
> >> -
> >> -@@ -477,8 +484,8 @@ namespace std
> >> - #ifdef __UCLIBC_HAS_XLOCALE__
> >> -          __uselocale(__old);
> >> - #else
> >> --         setlocale(LC_ALL, __old);
> >> --         free(__old);
> >> -+         setlocale(LC_ALL, __sav);
> >> -+         delete [] __sav;
> >> - #endif
> >> -          __throw_exception_again;
> >> -        }
> >> -@@ -498,8 +505,8 @@ namespace std
> >> - #ifdef __UCLIBC_HAS_XLOCALE__
> >> -      __uselocale(__old);
> >> - #else
> >> --     setlocale(LC_ALL, __old);
> >> --     free(__old);
> >> -+     setlocale(LC_ALL, __sav);
> >> -+     delete [] __sav;
> >> - #endif
> >> -    }
> >> -     }
> >> -@@ -545,8 +552,11 @@ namespace std
> >> -      __c_locale __old = __uselocale(__cloc);
> >> - #else
> >> -      // Switch to named locale so that mbsrtowcs will work.
> >> --     char* __old = strdup(setlocale(LC_ALL, NULL));
> >> --     setlocale(LC_ALL, __name);
> >> -+          char* __old = setlocale(LC_ALL, NULL);
> >> -+          const size_t __llen = strlen(__old) + 1;
> >> -+          char* __sav = new char[__llen];
> >> -+          memcpy(__sav, __old, __llen);
> >> -+          setlocale(LC_ALL, __name);
> >> - #endif
> >> -
> >> - #ifdef __UCLIBC_MJN3_ONLY__
> >> -@@ -633,8 +643,8 @@ namespace std
> >> - #ifdef __UCLIBC_HAS_XLOCALE__
> >> -          __uselocale(__old);
> >> - #else
> >> --         setlocale(LC_ALL, __old);
> >> --         free(__old);
> >> -+         setlocale(LC_ALL, __sav);
> >> -+         delete [] __sav;
> >> - #endif
> >> -               __throw_exception_again;
> >> -        }
> >> -@@ -653,8 +663,8 @@ namespace std
> >> - #ifdef __UCLIBC_HAS_XLOCALE__
> >> -      __uselocale(__old);
> >> - #else
> >> --     setlocale(LC_ALL, __old);
> >> --     free(__old);
> >> -+     setlocale(LC_ALL, __sav);
> >> -+     delete [] __sav;
> >> - #endif
> >> -    }
> >> -     }
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc
> >> -@@ -33,9 +33,14 @@
> >> -
> >> - // Written by Benjamin Kosnik <bkoz at redhat.com>
> >> -
> >> -+#include <features.h>
> >> -+#ifdef __UCLIBC_HAS_LOCALE__
> >> - #define _LIBC
> >> - #include <locale>
> >> - #undef _LIBC
> >> -+#else
> >> -+#include <locale>
> >> -+#endif
> >> - #include <bits/c++locale_internal.h>
> >> -
> >> - #ifdef __UCLIBC_MJN3_ONLY__
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/time_members.h
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/time_members.h
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/time_members.h
> >> -@@ -50,12 +50,21 @@
> >> -     __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char*
> __s,
> >> -                                 size_t __refs)
> >> -     : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
> >> --    _M_name_timepunct(__s)
> >> -+    _M_name_timepunct(NULL)
> >> -     {
> >> --      char* __tmp = new char[std::strlen(__s) + 1];
> >> --      std::strcpy(__tmp, __s);
> >> -+      const size_t __len = std::strlen(__s) + 1;
> >> -+      char* __tmp = new char[__len];
> >> -+      std::memcpy(__tmp, __s, __len);
> >> -       _M_name_timepunct = __tmp;
> >> --      _M_initialize_timepunct(__cloc);
> >> -+
> >> -+      try
> >> -+   { _M_initialize_timepunct(__cloc); }
> >> -+      catch(...)
> >> -+   {
> >> -+     delete [] _M_name_timepunct;
> >> -+     __throw_exception_again;
> >> -+   }
> >> -+
> >> -     }
> >> -
> >> -   template<typename _CharT>
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c_locale.h
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/c_locale.h
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c_locale.h
> >> -@@ -39,21 +39,23 @@
> >> - #pragma GCC system_header
> >> -
> >> - #include <cstring>              // get std::strlen
> >> --#include <cstdio>               // get std::snprintf or std::sprintf
> >> -+#include <cstdio>               // get std::vsnprintf or std::vsprintf
> >> - #include <clocale>
> >> - #include <langinfo.h>              // For codecvt
> >> - #ifdef __UCLIBC_MJN3_ONLY__
> >> - #warning fix this
> >> - #endif
> >> --#ifdef __UCLIBC_HAS_LOCALE__
> >> -+#ifdef _GLIBCXX_USE_ICONV
> >> - #include <iconv.h>         // For codecvt using iconv, iconv_t
> >> - #endif
> >> --#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
> >> --#include <libintl.h>               // For messages
> >> -+#ifdef HAVE_LIBINTL_H
> >> -+#include <libintl.h>               // For messages
> >> - #endif
> >> -+#include <cstdarg>
> >> -
> >> - #ifdef __UCLIBC_MJN3_ONLY__
> >> - #warning what is _GLIBCXX_C_LOCALE_GNU for
> >> -+// psm: used in os/gnu-linux/ctype_noninline.h
> >> - #endif
> >> - #define _GLIBCXX_C_LOCALE_GNU 1
> >> -
> >> -@@ -78,23 +80,25 @@ namespace std
> >> - #else
> >> -   typedef int*                     __c_locale;
> >> - #endif
> >> --
> >> --  // Convert numeric value of type _Tv to string and return length of
> >> --  // string.  If snprintf is available use it, otherwise fall back to
> >> --  // the unsafe sprintf which, in general, can be dangerous and should
> >> -+  // Convert numeric value of type double to string and return length
> of
> >> -+  // string.  If vsnprintf is available use it, otherwise fall back to
> >> -+  // the unsafe vsprintf which, in general, can be dangerous and
> should
> >> -   // be avoided.
> >> --  template<typename _Tv>
> >> --    int
> >> --    __convert_from_v(char* __out,
> >> --                const int __size __attribute__ ((__unused__)),
> >> --                const char* __fmt,
> >> --#ifdef __UCLIBC_HAS_XCLOCALE__
> >> --                _Tv __v, const __c_locale& __cloc, int __prec)
> >> -+    inline int
> >> -+    __convert_from_v(const __c_locale&
> >> -+#ifndef __UCLIBC_HAS_XCLOCALE__
> >> -+   __cloc __attribute__ ((__unused__))
> >> -+#endif
> >> -+                ,
> >> -+                char* __out,
> >> -+                const int __size,
> >> -+                const char* __fmt, ...)
> >> -     {
> >> -+      va_list __args;
> >> -+#ifdef __UCLIBC_HAS_XCLOCALE__
> >> -+
> >> -       __c_locale __old = __gnu_cxx::__uselocale(__cloc);
> >> - #else
> >> --                _Tv __v, const __c_locale&, int __prec)
> >> --    {
> >> - # ifdef __UCLIBC_HAS_LOCALE__
> >> -       char* __old = std::setlocale(LC_ALL, NULL);
> >> -       char* __sav = new char[std::strlen(__old) + 1];
> >> -@@ -103,7 +107,9 @@ namespace std
> >> - # endif
> >> - #endif
> >> -
> >> --      const int __ret = std::snprintf(__out, __size, __fmt, __prec,
> __v);
> >> -+      va_start(__args, __fmt);
> >> -+      const int __ret = std::vsnprintf(__out, __size, __fmt, __args);
> >> -+      va_end(__args);
> >> -
> >> - #ifdef __UCLIBC_HAS_XCLOCALE__
> >> -       __gnu_cxx::__uselocale(__old);
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/time_members.cc
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/time_members.cc
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/time_members.cc
> >> -@@ -53,11 +53,14 @@ namespace std
> >> -       const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
> >> -                                    _M_c_locale_timepunct);
> >> - #else
> >> --      char* __old = strdup(setlocale(LC_ALL, NULL));
> >> -+      char* __old = setlocale(LC_ALL, NULL);
> >> -+      const size_t __llen = strlen(__old) + 1;
> >> -+      char* __sav = new char[__llen];
> >> -+      memcpy(__sav, __old, __llen);
> >> -       setlocale(LC_ALL, _M_name_timepunct);
> >> -       const size_t __len = strftime(__s, __maxlen, __format, __tm);
> >> --      setlocale(LC_ALL, __old);
> >> --      free(__old);
> >> -+      setlocale(LC_ALL, __sav);
> >> -+      delete [] __sav;
> >> - #endif
> >> -       // Make sure __s is null terminated.
> >> -       if (__len == 0)
> >> -@@ -207,11 +210,14 @@ namespace std
> >> -       const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
> >> -                                    _M_c_locale_timepunct);
> >> - #else
> >> --      char* __old = strdup(setlocale(LC_ALL, NULL));
> >> -+      char* __old = setlocale(LC_ALL, NULL);
> >> -+      const size_t __llen = strlen(__old) + 1;
> >> -+      char* __sav = new char[__llen];
> >> -+      memcpy(__sav, __old, __llen);
> >> -       setlocale(LC_ALL, _M_name_timepunct);
> >> -       const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
> >> --      setlocale(LC_ALL, __old);
> >> --      free(__old);
> >> -+      setlocale(LC_ALL, __sav);
> >> -+      delete [] __sav;
> >> - #endif
> >> -       // Make sure __s is null terminated.
> >> -       if (__len == 0)
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
> >> -===================================================================
> >> ----
> gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
> >> -@@ -31,6 +31,9 @@
> >> -
> >> - #include <bits/c++config.h>
> >> - #include <clocale>
> >> -+#include <cstdlib>
> >> -+#include <cstring>
> >> -+#include <cstddef>
> >> -
> >> - #ifdef __UCLIBC_MJN3_ONLY__
> >> - #warning clean this up
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/301-missing-execinfo_h.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/301-missing-execinfo_h.patch
> >> deleted file mode 100644
> >> index 9589822..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/301-missing-execinfo_h.patch
> >> +++ /dev/null
> >> @@ -1,15 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Index: gcc-4.6.0/boehm-gc/include/gc.h
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/boehm-gc/include/gc.h
> >> -+++ gcc-4.6.0/boehm-gc/include/gc.h
> >> -@@ -503,7 +503,7 @@ GC_API GC_PTR GC_malloc_atomic_ignore_of
> >> - #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/toolchain-layer/recipes-devtools/gcc/gcc-4.6/302-c99-snprintf.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/302-c99-snprintf.patch
> >> deleted file mode 100644
> >> index f02c98d..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/302-c99-snprintf.patch
> >> +++ /dev/null
> >> @@ -1,15 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Index: gcc-4.6.0/libstdc++-v3/include/c_std/cstdio
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/include/c_std/cstdio
> >> -+++ gcc-4.6.0/libstdc++-v3/include/c_std/cstdio
> >> -@@ -136,7 +136,7 @@ namespace std
> >> -   using ::vsprintf;
> >> - } // namespace std
> >> -
> >> --#if _GLIBCXX_USE_C99
> >> -+#if _GLIBCXX_USE_C99 || defined(__UCLIBC__)
> >> -
> >> - #undef snprintf
> >> - #undef vfscanf
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/303-c99-complex-ugly-hack.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/303-c99-complex-ugly-hack.patch
> >> deleted file mode 100644
> >> index db594cb..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/303-c99-complex-ugly-hack.patch
> >> +++ /dev/null
> >> @@ -1,16 +0,0 @@
> >> -Upstream-Status: Inappropriate [embedded specific]
> >> -
> >> -Index: gcc-4.6.0/libstdc++-v3/configure
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/configure
> >> -+++ gcc-4.6.0/libstdc++-v3/configure
> >> -@@ -18302,6 +18302,9 @@ $as_echo_n "checking for ISO C99 support
> >> -     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> >> - /* end confdefs.h.  */
> >> - #include <complex.h>
> >> -+#ifdef __UCLIBC__
> >> -+#error ugly hack to make sure configure test fails here for cross
> until uClibc supports the complex funcs
> >> -+#endif
> >> - int
> >> - main ()
> >> - {
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/304-index_macro.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/304-index_macro.patch
> >> deleted file mode 100644
> >> index f103765..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/304-index_macro.patch
> >> +++ /dev/null
> >> @@ -1,30 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Index: gcc-4.6.0/libstdc++-v3/include/ext/rope
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/include/ext/rope
> >> -+++ gcc-4.6.0/libstdc++-v3/include/ext/rope
> >> -@@ -54,6 +54,9 @@
> >> - #include <bits/gthr.h>
> >> - #include <tr1/functional>
> >> -
> >> -+/* cope w/ index defined as macro, SuSv3 proposal */
> >> -+#undef index
> >> -+
> >> - # ifdef __GC
> >> - #   define __GC_CONST const
> >> - # else
> >> -Index: gcc-4.6.0/libstdc++-v3/include/ext/ropeimpl.h
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/include/ext/ropeimpl.h
> >> -+++ gcc-4.6.0/libstdc++-v3/include/ext/ropeimpl.h
> >> -@@ -49,6 +49,9 @@
> >> - #include <ext/memory> // For uninitialized_copy_n
> >> - #include <ext/numeric> // For power
> >> -
> >> -+/* cope w/ index defined as macro, SuSv3 proposal */
> >> -+#undef index
> >> -+
> >> - namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
> >> - {
> >> - _GLIBCXX_BEGIN_NAMESPACE_VERSION
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/305-libmudflap-susv3-legacy.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/305-libmudflap-susv3-legacy.patch
> >> deleted file mode 100644
> >> index 8d9a4d8..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/305-libmudflap-susv3-legacy.patch
> >> +++ /dev/null
> >> @@ -1,51 +0,0 @@
> >> -Upstream-Status: Inappropriate [embedded specific]
> >> -
> >> -Index: gcc-4.6.0/libmudflap/mf-hooks2.c
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libmudflap/mf-hooks2.c
> >> -+++ gcc-4.6.0/libmudflap/mf-hooks2.c
> >> -@@ -421,7 +421,7 @@ WRAPPER2(void, bzero, void *s, size_t n)
> >> - {
> >> -   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 @@ WRAPPER2(void, bcopy, const void *src, v
> >> -   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 @@ WRAPPER2(int, bcmp, const void *s1, cons
> >> -   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 @@ WRAPPER2(char *, index, const char *s, i
> >> -   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 @@ WRAPPER2(char *, rindex, const char *s,
> >> -   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/toolchain-layer/recipes-devtools/gcc/gcc-4.6/306-libstdc++-namespace.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/306-libstdc++-namespace.patch
> >> deleted file mode 100644
> >> index e99bf96..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/306-libstdc++-namespace.patch
> >> +++ /dev/null
> >> @@ -1,40 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/messages_members.h
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/messages_members.h
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/messages_members.h
> >> -@@ -32,7 +32,8 @@
> >> - //
> >> -
> >> - // Written by Benjamin Kosnik <bkoz at redhat.com>
> >> --
> >> -+namespace std
> >> -+{
> >> - #ifdef __UCLIBC_MJN3_ONLY__
> >> - #warning fix prototypes for *textdomain funcs
> >> - #endif
> >> -@@ -116,3 +117,4 @@
> >> -       this->_S_create_c_locale(this->_M_c_locale_messages, __s);
> >> -     }
> >> -      }
> >> -+}
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/uclibc/time_members.h
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/uclibc/time_members.h
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/uclibc/time_members.h
> >> -@@ -33,7 +33,8 @@
> >> - //
> >> -
> >> - // Written by Benjamin Kosnik <bkoz at redhat.com>
> >> --
> >> -+namespace std
> >> -+{
> >> -   template<typename _CharT>
> >> -     __timepunct<_CharT>::__timepunct(size_t __refs)
> >> -     : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
> >> -@@ -75,3 +76,4 @@
> >> -       delete _M_data;
> >> -       _S_destroy_c_locale(_M_c_locale_timepunct);
> >> -     }
> >> -+}
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/64bithack.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/64bithack.patch
> >> deleted file mode 100644
> >> index d35753a..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/64bithack.patch
> >> +++ /dev/null
> >> @@ -1,68 +0,0 @@
> >> -Upstream-Status: Inappropriate [embedded specific]
> >> -
> >> -GCC has internal multilib handling code but it assumes a very specific
> rigid directory
> >> -layout. The build system implementation of multilib layout is very
> generic and allows
> >> -complete customisation of the library directories.
> >> -
> >> -This patch is a partial solution to allow any custom directories to be
> passed into gcc
> >> -and handled correctly. It forces gcc to use the base_libdir (which is
> the current
> >> -directory, "."). We need to do this for each multilib that is
> configured as we don't
> >> -know which compiler options may be being passed into the compiler.
> Since we have a compiler
> >> -per mulitlib at this point that isn't an issue.
> >> -
> >> -The one problem is the target compiler is only going to work for the
> default multlilib at
> >> -this point. Ideally we'd figure out which multilibs were being enabled
> with which paths
> >> -and be able to patch these entries with a complete set of correct
> paths but this we
> >> -don't have such code at this point. This is something the target gcc
> recipe should do
> >> -and override these platform defaults in its build config.
> >> -
> >> -RP 15/8/11
> >> -
> >> -Index: gcc-4_6-branch/gcc/config/i386/t-linux64
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config/i386/t-linux64   2011-06-23
> 15:15:29.000000000 +0100
> >> -+++ gcc-4_6-branch/gcc/config/i386/t-linux64        2011-08-15
> 13:09:03.772415848 +0100
> >> -@@ -24,8 +24,8 @@
> >> - # MULTILIB_OSDIRNAMES according to what is found on the target.
> >> -
> >> - MULTILIB_OPTIONS = m64/m32
> >> --MULTILIB_DIRNAMES = 64 32
> >> --MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo
> $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
> >> -+MULTILIB_DIRNAMES = . .
> >> -+MULTILIB_OSDIRNAMES = ../$(shell basename $(base_libdir)) ../$(shell
> basename $(base_libdir))
> >> -
> >> - LIBGCC = stmp-multilib
> >> - INSTALL_LIBGCC = install-multilib
> >> -Index: gcc-4_6-branch/gcc/config/mips/t-linux64
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config/mips/t-linux64   2011-08-15
> 13:06:13.732415763 +0100
> >> -+++ gcc-4_6-branch/gcc/config/mips/t-linux64        2011-08-15
> 13:09:11.452419446 +0100
> >> -@@ -17,8 +17,8 @@
> >> - # <http://www.gnu.org/licenses/>.
> >> -
> >> - MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64
> >> --MULTILIB_DIRNAMES = n32 32 64
> >> --MULTILIB_OSDIRNAMES = ../lib32 ../lib ../lib64
> >> -+MULTILIB_DIRNAMES = . . .
> >> -+MULTILIB_OSDIRNAMES = ../$(shell basename $(base_libdir)) ../$(shell
> basename $(base_libdir)) ../$(shell basename $(base_libdir))
> >> -
> >> - EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o
> crtbeginT.o
> >> -
> >> -Index: gcc-4_6-branch/gcc/config/rs6000/t-linux64
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config/rs6000/t-linux64 2011-08-15
> 13:06:25.272415822 +0100
> >> -+++ gcc-4_6-branch/gcc/config/rs6000/t-linux64      2011-08-15
> 13:09:21.062415878 +0100
> >> -@@ -32,11 +32,11 @@
> >> - # MULTILIB_OSDIRNAMES according to what is found on the target.
> >> -
> >> - MULTILIB_OPTIONS        = m64/m32 msoft-float
> >> --MULTILIB_DIRNAMES       = 64 32 nof
> >> -+MULTILIB_DIRNAMES       = . . .
> >> - MULTILIB_EXTRA_OPTS     = fPIC mstrict-align
> >> - MULTILIB_EXCEPTIONS     = m64/msoft-float
> >> - MULTILIB_EXCLUSIONS     = m64/!m32/msoft-float
> >> --MULTILIB_OSDIRNAMES        = ../lib64 $(if $(wildcard $(shell echo
> $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) nof
> >> -+MULTILIB_OSDIRNAMES        = ../$(shell basename $(base_libdir))
> ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
> >> - MULTILIB_MATCHES        = $(MULTILIB_MATCHES_FLOAT)
> >> -
> >> - softfp_wrap_start := '\#ifndef __powerpc64__'
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/740-sh-pr24836.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/740-sh-pr24836.patch
> >> deleted file mode 100644
> >> index bc4ea5d..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/740-sh-pr24836.patch
> >> +++ /dev/null
> >> @@ -1,31 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -
> http://sourceforge.net/mailarchive/forum.php?thread_id=8959304&forum_id=5348
> >> -http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24836
> >> -
> >> -Index: gcc-4.6.0/gcc/configure.ac
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/configure.ac
> >> -+++ gcc-4.6.0/gcc/configure.ac
> >> -@@ -2926,7 +2926,7 @@ foo:  .long   25
> >> -    tls_first_minor=14
> >> -    tls_as_opt="-m64 -Aesame --fatal-warnings"
> >> -    ;;
> >> --  sh-*-* | sh[34]-*-*)
> >> -+  sh-*-* | sh[34]*-*-*)
> >> -     conftest_s='
> >> -    .section ".tdata","awT", at progbits
> >> - foo:       .long   25
> >> -Index: gcc-4.6.0/gcc/configure
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/configure
> >> -+++ gcc-4.6.0/gcc/configure
> >> -@@ -22756,7 +22756,7 @@ foo:        .long   25
> >> -    tls_first_minor=14
> >> -    tls_as_opt="-m64 -Aesame --fatal-warnings"
> >> -    ;;
> >> --  sh-*-* | sh[34]-*-*)
> >> -+  sh-*-* | sh[34]*-*-*)
> >> -     conftest_s='
> >> -    .section ".tdata","awT", at progbits
> >> - foo:       .long   25
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/800-arm-bigendian.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/800-arm-bigendian.patch
> >> deleted file mode 100644
> >> index 8c8046d..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/800-arm-bigendian.patch
> >> +++ /dev/null
> >> @@ -1,36 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -By Lennert Buytenhek <buytenh at wantstofly.org>
> >> -Adds support for arm*b-linux* big-endian ARM targets
> >> -
> >> -See http://gcc.gnu.org/PR16350
> >> -
> >> -Index: gcc-4.6.0/gcc/config/arm/linux-elf.h
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/config/arm/linux-elf.h
> >> -+++ gcc-4.6.0/gcc/config/arm/linux-elf.h
> >> -@@ -51,7 +51,7 @@
> >> -
> >> - #undef  MULTILIB_DEFAULTS
> >> - #define MULTILIB_DEFAULTS \
> >> --   { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
> >> -+   { "marm", TARGET_ENDIAN_OPTION, "mhard-float",
> "mno-thumb-interwork" }
> >> -
> >> - /* Now we define the strings used to build the spec file.  */
> >> - #undef  LIB_SPEC
> >> -Index: gcc-4.6.0/gcc/config.gcc
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/config.gcc
> >> -+++ gcc-4.6.0/gcc/config.gcc
> >> -@@ -822,6 +822,11 @@ arm*-*-linux*)                 # ARM GNU/Linux
> with EL
> >> -    esac
> >> -    tmake_file="${tmake_file} t-linux arm/t-arm"
> >> -    case ${target} in
> >> -+   arm*b-*)
> >> -+           tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
> >> -+           ;;
> >> -+   esac
> >> -+   case ${target} in
> >> -    arm*-*-linux-*eabi)
> >> -        tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
> >> -        tm_file="$tm_file ../../libgcc/config/arm/bpabi-lib.h"
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/904-flatten-switch-stmt-00.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/904-flatten-switch-stmt-00.patch
> >> deleted file mode 100644
> >> index ce3e6b5..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/904-flatten-switch-stmt-00.patch
> >> +++ /dev/null
> >> @@ -1,76 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -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"
> >> -
> >> -Index: gcc-4.6.0/gcc/stmt.c
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/stmt.c
> >> -+++ gcc-4.6.0/gcc/stmt.c
> >> -@@ -2478,7 +2478,11 @@ expand_case (gimple stmt)
> >> -         default code is emitted.  */
> >> -
> >> -      use_cost_table = 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);
> >> -@@ -3046,6 +3050,7 @@ emit_case_nodes (rtx index, case_node_pt
> >> -        {
> >> -          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/toolchain-layer/recipes-devtools/gcc/gcc-4.6/COLLECT_GCC_OPTIONS.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/COLLECT_GCC_OPTIONS.patch
> >> deleted file mode 100644
> >> index 38856c2..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/COLLECT_GCC_OPTIONS.patch
> >> +++ /dev/null
> >> @@ -1,25 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -#This patck added --sysroot into COLLECT_GCC_OPTIONS which is used to
> >> -#invoke collect2.
> >> -
> >> -Index: gcc-4.6.0/gcc/gcc.c
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/gcc.c
> >> -+++ gcc-4.6.0/gcc/gcc.c
> >> -@@ -3948,6 +3948,15 @@ set_collect_gcc_options (void)
> >> -            sizeof ("COLLECT_GCC_OPTIONS=") - 1);
> >> -
> >> -   first_time = TRUE;
> >> -+#ifdef HAVE_LD_SYSROOT
> >> -+  if (target_system_root_changed && target_system_root)
> >> -+    {
> >> -+      obstack_grow (&collect_obstack, "'--sysroot=",
> sizeof("'--sysroot=")-1);
> >> -+      obstack_grow (&collect_obstack,
> target_system_root,strlen(target_system_root));
> >> -+      obstack_grow (&collect_obstack, "'", 1);
> >> -+      first_time = FALSE;
> >> -+    }
> >> -+#endif
> >> -   for (i = 0; (int) i < n_switches; i++)
> >> -     {
> >> -       const char *const *args;
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch
> >> deleted file mode 100644
> >> index 575e0e4..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch
> >> +++ /dev/null
> >> @@ -1,186 +0,0 @@
> >> -source: http://patchwork.ozlabs.org/patch/129800/
> >> -Upstream-Status: Submitted
> >> -
> >> -ChangeLog
> >> -        * Makefile.in (gcc_gxx_include_dir_add_sysroot): New.
> >> -          (PREPROCESSOR_DEFINES): Define
> GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT.
> >> -
> >> -        * cppdefault.c (cpp_include_defaults): replace hard coded "1"
> with
> >> -          GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT for "add_sysroot" field.
> >> -
> >> -        * configure.ac (AC_SUBST): Add
> gcc_gxx_include_dir_add_sysroot to
> >> -          control whether sysroot should be prepended to gxx include
> dir.
> >> -
> >> -        * configure: Regenerate.
> >> -
> >> -Hi, this is a follow up for issue "
> http://codereview.appspot.com/4641076".
> >> -
> >> -The rationale for the patch copied from previous thread:
> >> -=======================================
> >> -The setup:
> >> -
> >> -Configuring a toolchain targeting x86-64 GNU Linux (Ubuntu Lucid), as a
> >> -cross-compiler.  Using a sysroot to provide the Lucid
> headers+libraries,
> >> -with the sysroot path being within the GCC install tree.  Want to use
> the
> >> -Lucid system libstdc++ and headers, which means that I'm not
> >> -building/installing libstdc++-v3.
> >> -
> >> -So, configuring with:
> >> -  --with-sysroot="$SYSROOT"
> >> -  --disable-libstdc++-v3 \
> >> -  --with-gxx-include-dir="$SYSROOT/usr/include/c++/4.4" \
> >> -(among other options).
> >> -
> >> -Hoping to support two usage models with this configuration, w.r.t. use
> of
> >> -the sysroot:
> >> -
> >> -(1) somebody installs the sysroot in the normal location relative to
> the
> >> -GCC install, and relocates the whole bundle (sysroot+GCC).  This works
> >> -great AFAICT, GCC finds its includes (including the C++ includes)
> thanks
> >> -to the add_standard_paths iprefix handling.
> >> -
> >> -(2) somebody installs the sysroot in a non-standard location, and uses
> >> ---sysroot to try to access it.  This works fine for the C headers, but
> >> -doesn't work.
> >> -
> >> -For the C headers, add_standard_paths prepends the sysroot location to
> >> -the /usr/include path (since that's what's specified in cppdefault.c
> for
> >> -that path).  It doesn't do the same for the C++ include path, though
> >> -(again, as specified in cppdefault.c).
> >> -
> >> -add_standard_paths doesn't attempt to relocate built-in include paths
> that
> >> -start with the compiled-in sysroot location (e.g., the g++ include
> dir, in
> >> -this case).  This isn't surprising really: normally you either prepend
> the
> >> -sysroot location or you don't (as specified by cppdefault.c); none of
> the
> >> -built-in paths normally *start* with the sysroot location and need to
> be
> >> -relocated.  However, in this odd-ball case of trying to use the C++
> headers
> >> -from the sysroot, one of the paths *does* need to be relocated in this
> way.
> >> -===========================
> >> -Index: gcc-4_6-branch/gcc/Makefile.in
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/Makefile.in     2012-03-04
> 09:33:36.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/Makefile.in  2012-03-04 09:41:06.858672113 -0800
> >> -@@ -587,6 +587,7 @@
> >> - build_tooldir = $(exec_prefix)/$(target_noncanonical)
> >> - # Directory in which the compiler finds target-independent g++
> includes.
> >> - gcc_gxx_include_dir = @gcc_gxx_include_dir@
> >> -+gcc_gxx_include_dir_add_sysroot = @gcc_gxx_include_dir_add_sysroot@
> >> - # Directory to search for site-specific includes.
> >> - local_includedir = $(local_prefix)/include
> >> - includedir = $(prefix)/include
> >> -@@ -3964,6 +3965,7 @@
> >> -   -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
> >> -   -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \
> >> -   -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
> >> -+
> -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \
> >> -
>  -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\"
> \
> >> -
>  -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \
> >> -   -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \
> >> -Index: gcc-4_6-branch/gcc/configure.ac
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/configure.ac    2012-03-04
> 09:33:36.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/configure.ac 2012-03-04 09:41:06.862671939
> -0800
> >> -@@ -144,6 +144,15 @@
> >> -   fi
> >> - fi
> >> -
> >> -+gcc_gxx_include_dir_add_sysroot=0
> >> -+if test "${with_sysroot+set}" = set; then :
> >> -+  gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" :
> "${with_sysroot}"'\(.*\)'`
> >> -+  if test "${gcc_gxx_without_sysroot}"; then :
> >> -+    gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
> >> -+    gcc_gxx_include_dir_add_sysroot=1
> >> -+  fi
> >> -+fi
> >> -+
> >> - AC_ARG_WITH(cpp_install_dir,
> >> - [  --with-cpp-install-dir=DIR
> >> -                           install the user visible C preprocessor in
> DIR
> >> -@@ -4727,6 +4736,7 @@
> >> - AC_SUBST(float_h_file)
> >> - AC_SUBST(gcc_config_arguments)
> >> - AC_SUBST(gcc_gxx_include_dir)
> >> -+AC_SUBST(gcc_gxx_include_dir_add_sysroot)
> >> - AC_SUBST(host_exeext)
> >> - AC_SUBST(host_xm_file_list)
> >> - AC_SUBST(host_xm_include_list)
> >> -Index: gcc-4_6-branch/gcc/cppdefault.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/cppdefault.c    2012-03-03
> 01:03:17.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/cppdefault.c 2012-03-04 09:41:06.862671939 -0800
> >> -@@ -48,15 +48,18 @@
> >> - = {
> >> - #ifdef GPLUSPLUS_INCLUDE_DIR
> >> -     /* Pick up GNU C++ generic include files.  */
> >> --    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
> >> -+    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,
> >> -+      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
> >> - #endif
> >> - #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
> >> -     /* Pick up GNU C++ target-dependent include files.  */
> >> --    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0, 1 },
> >> -+    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,
> >> -+      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },
> >> - #endif
> >> - #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
> >> -     /* Pick up GNU C++ backward and deprecated include files.  */
> >> --    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
> >> -+    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,
> >> -+      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
> >> - #endif
> >> - #ifdef GCC_INCLUDE_DIR
> >> -     /* This is the dir for gcc's private headers.  */
> >> -Index: gcc-4_6-branch/gcc/configure
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/configure       2012-03-04
> 09:33:36.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/configure    2012-03-04 09:41:12.462671816 -0800
> >> -@@ -636,6 +636,7 @@
> >> - host_xm_include_list
> >> - host_xm_file_list
> >> - host_exeext
> >> -+gcc_gxx_include_dir_add_sysroot
> >> - gcc_gxx_include_dir
> >> - gcc_config_arguments
> >> - float_h_file
> >> -@@ -3313,6 +3314,15 @@
> >> -   fi
> >> - fi
> >> -
> >> -+gcc_gxx_include_dir_add_sysroot=0
> >> -+if test "${with_sysroot+set}" = set; then :
> >> -+  gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" :
> "${with_sysroot}"'\(.*\)'`
> >> -+  if test "${gcc_gxx_without_sysroot}"; then :
> >> -+    gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
> >> -+    gcc_gxx_include_dir_add_sysroot=1
> >> -+  fi
> >> -+fi
> >> -+
> >> -
> >> - # Check whether --with-cpp_install_dir was given.
> >> - if test "${with_cpp_install_dir+set}" = set; then :
> >> -@@ -17504,7 +17514,7 @@
> >> -   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
> >> -   lt_status=$lt_dlunknown
> >> -   cat > conftest.$ac_ext <<_LT_EOF
> >> --#line 17507 "configure"
> >> -+#line 17517 "configure"
> >> - #include "confdefs.h"
> >> -
> >> - #if HAVE_DLFCN_H
> >> -@@ -17610,7 +17620,7 @@
> >> -   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
> >> -   lt_status=$lt_dlunknown
> >> -   cat > conftest.$ac_ext <<_LT_EOF
> >> --#line 17613 "configure"
> >> -+#line 17623 "configure"
> >> - #include "confdefs.h"
> >> -
> >> - #if HAVE_DLFCN_H
> >> -@@ -26141,6 +26151,7 @@
> >> -
> >> -
> >> -
> >> -+
> >> -
> >> -
> >> -
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/arm-nolibfloat.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/arm-nolibfloat.patch
> >> deleted file mode 100644
> >> index 59a9ec3..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/arm-nolibfloat.patch
> >> +++ /dev/null
> >> @@ -1,26 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -# Dimitry Andric <dimitry at andric.com>, 2004-05-01
> >> -#
> >> -# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't
> needed
> >> -#   anymore.  (The required functions are now in libgcc.)
> >> -#
> >> -# Fixes errors like
> >> -#
> arm-softfloat-linux-gnu/3.4.0/../../../../arm-softfloat-linux-gnu/bin/ld:
> cannot find -lfloat
> >> -# collect2: ld returned 1 exit status
> >> -# make[2]: ***
> [arm-softfloat-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/iconvdata/ISO8859-1.so]
> Error 1
> >> -# when building glibc-2.3.3 with gcc-3.4.0 for arm-softfloat
> >> -
> >> -Index: gcc-4.6.0/gcc/config/arm/linux-elf.h
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/config/arm/linux-elf.h
> >> -+++ gcc-4.6.0/gcc/config/arm/linux-elf.h
> >> -@@ -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"
> >> -
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/arm-softfloat.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/arm-softfloat.patch
> >> deleted file mode 100644
> >> index 01bf80d..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/arm-softfloat.patch
> >> +++ /dev/null
> >> @@ -1,18 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Index: gcc-4.6.0/gcc/config/arm/t-linux
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/config/arm/t-linux
> >> -+++ gcc-4.6.0/gcc/config/arm/t-linux
> >> -@@ -23,7 +23,10 @@ TARGET_LIBGCC2_CFLAGS = -fomit-frame-poi
> >> -
> >> - LIB1ASMSRC = arm/lib1funcs.asm
> >> - LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2
> _clzdi2 \
> >> --   _arm_addsubdf3 _arm_addsubsf3
> >> -+    _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi
> _fixunsdfsi \
> >> -+    _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
> >> -+    _fixsfsi _fixunssfsi _floatdidf _floatdisf _floatundisf
> _floatundidf
> >> -+#  _arm_addsubdf3 _arm_addsubsf3
> >> -
> >> - # MULTILIB_OPTIONS = mhard-float/msoft-float
> >> - # MULTILIB_DIRNAMES = hard-float soft-float
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/cache-amnesia.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/cache-amnesia.patch
> >> deleted file mode 100644
> >> index 72ead31..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/cache-amnesia.patch
> >> +++ /dev/null
> >> @@ -1,33 +0,0 @@
> >> -Upstream-Status: Inappropriate [embedded specific]
> >> -
> >> ----
> >> - gcc/configure    |    2 +-
> >> - gcc/configure.ac |    2 +-
> >> - 2 files changed, 2 insertions(+), 2 deletions(-)
> >> -
> >> -Index: gcc-4.6.0/gcc/configure
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/configure
> >> -+++ gcc-4.6.0/gcc/configure
> >> -@@ -10898,7 +10898,7 @@ else
> >> -    saved_CFLAGS="${CFLAGS}"
> >> -    CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
> >> -    LDFLAGS="${LDFLAGS_FOR_BUILD}" \
> >> --   ${realsrcdir}/configure \
> >> -+   CONFIG_SITE= ${realsrcdir}/configure --cache-file=./other.cache \
> >> -            --enable-languages=${enable_languages-all} \
> >> -            --target=$target_alias --host=$build_alias
> --build=$build_alias
> >> -    CFLAGS="${saved_CFLAGS}"
> >> -Index: gcc-4.6.0/gcc/configure.ac
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/configure.ac
> >> -+++ gcc-4.6.0/gcc/configure.ac
> >> -@@ -1435,7 +1435,7 @@ else
> >> -    saved_CFLAGS="${CFLAGS}"
> >> -    CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
> >> -    LDFLAGS="${LDFLAGS_FOR_BUILD}" \
> >> --   ${realsrcdir}/configure \
> >> -+   CONFIG_SITE= ${realsrcdir}/configure --cache-file=./other.cache \
> >> -            --enable-languages=${enable_languages-all} \
> >> -            --target=$target_alias --host=$build_alias
> --build=$build_alias
> >> -    CFLAGS="${saved_CFLAGS}"
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/cpp-honour-sysroot.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/cpp-honour-sysroot.patch
> >> deleted file mode 100644
> >> index 7310677..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/cpp-honour-sysroot.patch
> >> +++ /dev/null
> >> @@ -1,40 +0,0 @@
> >> -Currently, if the gcc toolchain is relocated and installed from
> sstate, then you try and compile
> >> -preprocessed source (.i or .ii files), the compiler will try and
> access the builtin sysroot location
> >> -rather than the --sysroot option specified on the commandline. If
> access to that directory is
> >> -permission denied (unreadable), gcc will error.
> >> -
> >> -This happens when ccache is in use due to the fact it uses
> preprocessed source files.
> >> -
> >> -The fix below adds %I to the cpp-output spec macro so the default
> substitutions for -iprefix,
> >> --isystem, -isysroot happen and the correct sysroot is used.
> >> -
> >> -[YOCTO #2074]
> >> -
> >> -Upstream-Status: Pending
> >> -
> >> -RP 2012/04/13
> >> -
> >> -Index: gcc-4_6-branch/gcc/gcc.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/gcc.c   2012-04-13 12:24:37.939671140 +0000
> >> -+++ gcc-4_6-branch/gcc/gcc.c        2012-04-13 12:24:54.439670688 +0000
> >> -@@ -953,7 +953,7 @@
> >> -                     %W{o*:--output-pch=%*}}%V}}}}}}", 0, 0, 0},
> >> -   {".i", "@cpp-output", 0, 0, 0},
> >> -   {"@cpp-output",
> >> --   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options)
> %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
> >> -+   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %I %(cc1_options)
> %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
> >> -   {".s", "@assembler", 0, 0, 0},
> >> -   {"@assembler",
> >> -    "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}",
> 0, 0, 0},
> >> -Index: gcc-4_6-branch/gcc/cp/lang-specs.h
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/cp/lang-specs.h 2012-04-13
> 12:25:01.019670594 +0000
> >> -+++ gcc-4_6-branch/gcc/cp/lang-specs.h      2012-04-13
> 12:25:07.567670180 +0000
> >> -@@ -64,5 +64,5 @@
> >> -   {".ii", "@c++-cpp-output", 0, 0, 0},
> >> -   {"@c++-cpp-output",
> >> -    "%{!M:%{!MM:%{!E:\
> >> --    cc1plus -fpreprocessed %i %(cc1_options) %2\
> >> -+    cc1plus -fpreprocessed %i %I %(cc1_options) %2\
> >> -     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/disable_relax_pic_calls_flag.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/disable_relax_pic_calls_flag.patch
> >> deleted file mode 100644
> >> index 22c106d..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/disable_relax_pic_calls_flag.patch
> >> +++ /dev/null
> >> @@ -1,48 +0,0 @@
> >> -Upstream-Status: Inappropriate [configuration]
> >> -
> >> -GCC: disable MASK_RELAX_PIC_CALLS bit
> >> -
> >> -The new feature added after 4.3.3
> >> -"
> http://www.pubbs.net/200909/gcc/94048-patch-add-support-for-rmipsjalr.html
> "
> >> -will cause cc1plus eat up all the system memory when build webkit-gtk.
> >> -The function mips_get_pic_call_symbol keeps on recursively calling
> itself.
> >> -Disable this feature to walk aside the bug.
> >> -
> >> -Signed-off-by: Dongxiao Xu <dongxiao.xu at intel.com>
> >> -
> >> -Index: gcc-4.6.0/gcc/configure
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/configure
> >> -+++ gcc-4.6.0/gcc/configure
> >> -@@ -24887,13 +24887,6 @@ $as_echo_n "checking assembler and linke
> >> -         rm -f conftest.*
> >> -       fi
> >> -     fi
> >> --    if test $gcc_cv_as_ld_jalr_reloc = yes; then
> >> --      if test x$target_cpu_default = x; then
> >> --        target_cpu_default=MASK_RELAX_PIC_CALLS
> >> --      else
> >> --
> target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
> >> --      fi
> >> --    fi
> >> -     { $as_echo "$as_me:${as_lineno-$LINENO}: result:
> $gcc_cv_as_ld_jalr_reloc" >&5
> >> - $as_echo "$gcc_cv_as_ld_jalr_reloc" >&6; }
> >> -
> >> -Index: gcc-4.6.0/gcc/configure.ac
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/configure.ac
> >> -+++ gcc-4.6.0/gcc/configure.ac
> >> -@@ -3764,13 +3764,6 @@ x:
> >> -         rm -f conftest.*
> >> -       fi
> >> -     fi
> >> --    if test $gcc_cv_as_ld_jalr_reloc = yes; then
> >> --      if test x$target_cpu_default = x; then
> >> --        target_cpu_default=MASK_RELAX_PIC_CALLS
> >> --      else
> >> --
> target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
> >> --      fi
> >> --    fi
> >> -     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
> >> -
> >> -     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/fix-for-ice-50099.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/fix-for-ice-50099.patch
> >> deleted file mode 100644
> >> index 57b03d2..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/fix-for-ice-50099.patch
> >> +++ /dev/null
> >> @@ -1,49 +0,0 @@
> >> -
> >> -This patch address an issue with the compiler generating an ICE
> >> -during compliation of lttng-ust.
> >> -
> >> -http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50099
> >> -
> >> -Upstream-Status: Pending
> >> -
> >> -Signed-off-by: Khem Raj <khem.raj at gmail.com>
> >> -Signed-off-by: Saul Wold <sgw at linux.intel.com>
> >> -
> >> -Index: gcc/config/arm/arm.md
> >> -===================================================================
> >> ---- gcc-4.6.0/gcc/config/arm/arm.md (revision 178135)
> >> -+++ gcc-4.6.0/gcc/config/arm/arm.md (working copy)
> >> -@@ -4217,6 +4217,7 @@ (define_split
> >> -   "TARGET_32BIT"
> >> -   [(set (match_dup 0) (ashiftrt:SI (match_dup 1) (const_int 31)))]
> >> - {
> >> -+  rtx srcop = operands[1];
> >> -   rtx lo_part = gen_lowpart (SImode, operands[0]);
> >> -   enum machine_mode src_mode = GET_MODE (operands[1]);
> >> -
> >> -@@ -4224,14 +4225,21 @@ (define_split
> >> -       && !reg_overlap_mentioned_p (operands[0], operands[1]))
> >> -     emit_clobber (operands[0]);
> >> -
> >> -+  if (TARGET_ARM && src_mode == QImode
> >> -+      && !arm_reg_or_extendqisi_mem_op (srcop, QImode))
> >> -+    {
> >> -+      rtx dest = gen_lowpart (QImode, lo_part);
> >> -+      emit_move_insn (dest, srcop);
> >> -+      srcop = dest;
> >> -+    }
> >> -   if (!REG_P (lo_part) || src_mode != SImode
> >> --      || !rtx_equal_p (lo_part, operands[1]))
> >> -+      || !rtx_equal_p (lo_part, srcop))
> >> -     {
> >> -       if (src_mode == SImode)
> >> --        emit_move_insn (lo_part, operands[1]);
> >> -+        emit_move_insn (lo_part, srcop);
> >> -       else
> >> -         emit_insn (gen_rtx_SET (VOIDmode, lo_part,
> >> --                           gen_rtx_SIGN_EXTEND (SImode,
> operands[1])));
> >> -+                           gen_rtx_SIGN_EXTEND (SImode, srcop)));
> >> -       operands[1] = lo_part;
> >> -     }
> >> -   operands[0] = gen_highpart (SImode, operands[0]);
> >> -
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/fortran-cross-compile-hack.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/fortran-cross-compile-hack.patch
> >> deleted file mode 100644
> >> index 5a89559..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/fortran-cross-compile-hack.patch
> >> +++ /dev/null
> >> @@ -1,32 +0,0 @@
> >> -Upstream-Status: Inappropriate [embedded specific]
> >> -
> >> -* Fortran would have searched for arm-angstrom-gnueabi-gfortran but
> would have used
> >> -  used gfortan. For gcc_4.2.2.bb we want to use the gfortran compiler
> from our cross
> >> -  directory.
> >> -
> >> -Index: gcc-4.5+svnr155514/libgfortran/configure
> >> -===================================================================
> >> ---- gcc-4.5+svnr155514.orig/libgfortran/configure   2009-12-29
> 22:02:01.000000000 -0800
> >> -+++ gcc-4.5+svnr155514/libgfortran/configure        2009-12-30
> 08:12:40.889091657 -0800
> >> -@@ -11655,7 +11655,7 @@ CC="$lt_save_CC"
> >> -
> >> - # We need gfortran to compile parts of the library
> >> - #AC_PROG_FC(gfortran)
> >> --FC="$GFORTRAN"
> >> -+#FC="$GFORTRAN"
> >> - ac_ext=${ac_fc_srcext-f}
> >> - ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
> >> - ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS
> $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
> >> -Index: gcc-4.5+svnr155514/libgfortran/configure.ac
> >> -===================================================================
> >> ---- gcc-4.5+svnr155514.orig/libgfortran/configure.ac
> 2009-12-29 22:02:01.000000000 -0800
> >> -+++ gcc-4.5+svnr155514/libgfortran/configure.ac     2009-12-30
> 08:12:13.453094218 -0800
> >> -@@ -187,7 +187,7 @@ AC_SUBST(enable_static)
> >> -
> >> - # We need gfortran to compile parts of the library
> >> - #AC_PROG_FC(gfortran)
> >> --FC="$GFORTRAN"
> >> -+#FC="$GFORTRAN"
> >> - AC_PROG_FC(gfortran)
> >> -
> >> - # extra LD Flags which are required for targets
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
> >> deleted file mode 100644
> >> index ce82740..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
> >> +++ /dev/null
> >> @@ -1,33 +0,0 @@
> >> -Upstream-Status: Inappropriate [embedded specific]
> >> -
> >> ----
> >> - configure    |    2 +-
> >> - configure.ac |    2 +-
> >> - 2 files changed, 2 insertions(+), 2 deletions(-)
> >> -
> >> -Index: gcc-4.6.0/configure.ac
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/configure.ac
> >> -+++ gcc-4.6.0/configure.ac
> >> -@@ -3073,7 +3073,7 @@ fi
> >> - # for target_alias and gcc doesn't manage it consistently.
> >> - target_configargs="--cache-file=./config.cache ${target_configargs}"
> >> -
> >> --FLAGS_FOR_TARGET=
> >> -+FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
> >> - case " $target_configdirs " in
> >> -  *" newlib "*)
> >> -   case " $target_configargs " in
> >> -Index: gcc-4.6.0/configure
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/configure
> >> -+++ gcc-4.6.0/configure
> >> -@@ -7594,7 +7594,7 @@ fi
> >> - # for target_alias and gcc doesn't manage it consistently.
> >> - target_configargs="--cache-file=./config.cache ${target_configargs}"
> >> -
> >> --FLAGS_FOR_TARGET=
> >> -+FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
> >> - case " $target_configdirs " in
> >> -  *" newlib "*)
> >> -   case " $target_configargs " in
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
> >> deleted file mode 100644
> >> index 6d02f71..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
> >> +++ /dev/null
> >> @@ -1,116 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Before committing, I noticed that PR/32161 was marked as a dup of
> PR/32009, but my previous patch did not fix it.
> >> -
> >> -This alternative patch is better because it lets you just use
> CFLAGS_FOR_TARGET to set the compilation flags for libgcc. Since
> bootstrapped target libraries are never compiled with the native compiler,
> it makes little sense to use different flags for stage1 and later stages.
> And it also makes little sense to use a different variable than
> CFLAGS_FOR_TARGET.
> >> -
> >> -Other changes I had to do include:
> >> -
> >> -- moving the creation of default CFLAGS_FOR_TARGET from Makefile.am to
> configure.ac, because otherwise the BOOT_CFLAGS are substituted into
> CFLAGS_FOR_TARGET (which is "-O2 -g $(CFLAGS)") via $(CFLAGS). It is also
> cleaner this way though.
> >> -
> >> -- passing the right CFLAGS to configure scripts as exported
> environment variables
> >> -
> >> -I also stopped passing LIBCFLAGS to configure scripts since they are
> unused in the whole src tree. And I updated the documentation as H-P
> reminded me to do.
> >> -
> >> -Bootstrapped/regtested i686-pc-linux-gnu, will commit to 4.4 shortly.
> Ok for 4.3?
> >> -
> >> -Paolo
> >> -
> >> -2008-02-19  Paolo Bonzini  <bonzini at gnu.org>
> >> -
> >> -        PR bootstrap/32009
> >> -        PR bootstrap/32161
> >> -
> >> -    * configure.ac (CFLAGS_FOR_TARGET, CXXFLAGS_FOR_TARGET): Compute
> here.
> >> -    * configure: Regenerate.
> >> -
> >> -    * Makefile.def: Define stage_libcflags for all bootstrap stages.
> >> -    * Makefile.tpl (BOOT_LIBCFLAGS, STAGE2_LIBCFLAGS, STAGE3_LIBCFLAGS,
> >> -    STAGE4_LIBCFLAGS): New.
> >> -    (CFLAGS_FOR_TARGET, CXXFLAGS_FOR_TARGET): Subst from autoconf,
> without
> >> -    $(SYSROOT_CFLAGS_FOR_TARGET) and $(DEBUG_PREFIX_CFLAGS_FOR_TARGET).
> >> -    (BASE_TARGET_EXPORTS): Append them here to C{,XX}FLAGS.
> >> -    (EXTRA_TARGET_FLAGS): Append them here to {LIB,}C{,XX}FLAGS.
> >> -    (configure-stage[+id+]-[+prefix+][+module+]): Pass stage_libcflags
> >> -    for target modules.  Don't export LIBCFLAGS.
> >> -    (all-stage[+id+]-[+prefix+][+module+]): Pass stage_libcflags; pass
> >> -    $(BASE_FLAGS_TO_PASS) where [+args+] was passed, and [+args+] after
> >> -    the overridden CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET.
> >> -    (invocations of `all'): Replace $(TARGET_FLAGS_TO_PASS) with
> >> -    $(EXTRA_TARGET_FLAGS), $(FLAGS_TO_PASS) with $(EXTRA_HOST_FLAGS).
> >> -    * Makefile.in: Regenerate.
> >> -
> >> -config:
> >> -2008-02-19  Paolo Bonzini  <bonzini at gnu.org>
> >> -
> >> -    PR bootstrap/32009
> >> -    * mh-ppc-darwin (BOOT_CFLAGS): Reenable.
> >> -
> >> -gcc:
> >> -2008-02-19  Paolo Bonzini  <bonzini at gnu.org>
> >> -
> >> -    PR bootstrap/32009
> >> -    * doc/install.texi: Correct references to CFLAGS, replacing them
> >> -    with BOOT_CFLAGS.  Document flags used during bootstrap for
> >> -    target libraries.
> >> -
> >> -
> >> ----
> >> - Makefile.def           |   25
> >> - Makefile.in            | 1845
> ++++++++++++++++++++++++++++++-------------------
> >> - Makefile.tpl           |   91 +-
> >> - config/mh-ppc-darwin   |    3
> >> - configure              |   36
> >> - configure.ac           |   32
> >> - gcc/Makefile.in        |    2
> >> - gcc/configure          |    6
> >> - gcc/configure.ac       |    3
> >> - gcc/doc/install.texi   |   56 -
> >> - libiberty/Makefile.in  |  162 ++--
> >> - libiberty/configure    |   46 -
> >> - libiberty/configure.ac |   43 -
> >> - 13 files changed, 1454 insertions(+), 896 deletions(-)
> >> -
> >> -Index: gcc-4.6.0/configure
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/configure
> >> -+++ gcc-4.6.0/configure
> >> -@@ -6785,6 +6785,38 @@ if test "x$CXXFLAGS_FOR_TARGET" = x; the
> >> - fi
> >> -
> >> -
> >> -+# During gcc bootstrap, if we use some random cc for stage1 then
> CFLAGS
> >> -+# might be empty or "-g".  We don't require a C++ compiler, so
> CXXFLAGS
> >> -+# might also be empty (or "-g", if a non-GCC C++ compiler is in the
> path).
> >> -+# We want to ensure that TARGET libraries (which we know are built
> with
> >> -+# gcc) are built with "-O2 -g", so include those options when setting
> >> -+# CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET.
> >> -+if test "x$CFLAGS_FOR_TARGET" = x; then
> >> -+  CFLAGS_FOR_TARGET=$CFLAGS
> >> -+  case " $CFLAGS " in
> >> -+    *" -O2 "*) ;;
> >> -+    *) CFLAGS_FOR_TARGET="-O2 $CFLAGS" ;;
> >> -+  esac
> >> -+  case " $CFLAGS " in
> >> -+    *" -g "* | *" -g3 "*) ;;
> >> -+    *) CFLAGS_FOR_TARGET="-g $CFLAGS" ;;
> >> -+  esac
> >> -+fi
> >> -+
> >> -+
> >> -+if test "x$CXXFLAGS_FOR_TARGET" = x; then
> >> -+  CXXFLAGS_FOR_TARGET=$CXXFLAGS
> >> -+  case " $CXXFLAGS " in
> >> -+    *" -O2 "*) ;;
> >> -+    *) CXXFLAGS_FOR_TARGET="-O2 $CXXFLAGS" ;;
> >> -+  esac
> >> -+  case " $CXXFLAGS " in
> >> -+    *" -g "* | *" -g3 "*) ;;
> >> -+    *) CXXFLAGS_FOR_TARGET="-g $CXXFLAGS" ;;
> >> -+  esac
> >> -+fi
> >> -+
> >> -+
> >> - # Handle --with-headers=XXX.  If the value is not "yes", the contents
> of
> >> - # the named directory are copied to $(tooldir)/sys-include.
> >> - if test x"${with_headers}" != x && test x"${with_headers}" != xno ;
> then
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-argument-list-too-long.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-argument-list-too-long.patch
> >> deleted file mode 100644
> >> index 70d3c53..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-argument-list-too-long.patch
> >> +++ /dev/null
> >> @@ -1,33 +0,0 @@
> >> -There would be an "Argument list too long" error when the
> >> -build directory is longer than 200, this is caused by:
> >> -
> >> -headers=`echo $(PLUGIN_HEADERS) | tr ' ' '\012' | sort -u`
> >> -
> >> -The PLUGIN_HEADERS is too long before sort, so the "echo" can't handle
> >> -it, use the $(sort list) of GNU make which can handle the too long list
> >> -would fix the problem, the header would be short enough after sorted.
> >> -The "tr ' ' '\012'" was used for translating the space to "\n", the
> >> -$(sort list) doesn't need this.
> >> -
> >> -Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
> >> -
> >> -Upstream-Status: Pending
> >> ----
> >> - gcc/Makefile.in |    2 +-
> >> - 1 file changed, 1 insertion(+), 1 deletion(-)
> >> -
> >> -diff --git a/gcc/Makefile.in b/gcc/Makefile.in
> >> ---- a/gcc/Makefile.in
> >> -+++ b/gcc/Makefile.in
> >> -@@ -4553,7 +4553,7 @@ install-plugin: installdirs lang.install-plugin
> s-header-vars install-gengtype
> >> - # We keep the directory structure for files in config or c-family and
> .def
> >> - # files. All other files are flattened to a single directory.
> >> -    $(mkinstalldirs) $(DESTDIR)$(plugin_includedir)
> >> --   headers=`echo $(PLUGIN_HEADERS) | tr ' ' '\012' | sort -u`; \
> >> -+   headers="$(sort $(PLUGIN_HEADERS))"; \
> >> -    srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`; \
> >> -    for file in $$headers; do \
> >> -      if [ -f $$file ] ; then \
> >> ---
> >> -1.7.10.2
> >> -
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-arm-set-cost.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-arm-set-cost.patch
> >> deleted file mode 100644
> >> index 4419a20..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-arm-set-cost.patch
> >> +++ /dev/null
> >> @@ -1,35 +0,0 @@
> >> -Upstream-Status:Backport
> >> -2011-08-18  Richard Sandiford  <richard.sandiford at linaro.org>
> >> -
> >> -    gcc/
> >> -    Backport from mainline:
> >> -
> >> -    2011-08-18  Richard Sandiford  <richard.sandiford at linaro.org>
> >> -
> >> -    * config/arm/arm.c (arm_rtx_costs_1): Don't modify the costs of
> SET.
> >> -    (arm_size_rtx_costs): Likewise.
> >> -
> >> -=== modified file 'gcc/config/arm/arm.c'
> >> ---- old/gcc/config/arm/arm.c        2011-08-12 08:08:31 +0000
> >> -+++ new/gcc/config/arm/arm.c        2011-08-18 13:53:37 +0000
> >> -@@ -7464,6 +7464,9 @@
> >> -    *total = COSTS_N_INSNS (4);
> >> -       return true;
> >> -
> >> -+    case SET:
> >> -+      return false;
> >> -+
> >> -     default:
> >> -       *total = COSTS_N_INSNS (4);
> >> -       return false;
> >> -@@ -7811,6 +7814,9 @@
> >> -       *total = COSTS_N_INSNS (1) + 1;
> >> -       return true;
> >> -
> >> -+    case SET:
> >> -+      return false;
> >> -+
> >> -     default:
> >> -       if (mode != VOIDmode)
> >> -    *total = COSTS_N_INSNS (ARM_NUM_REGS (mode));
> >> -
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-flags-for-build.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-flags-for-build.patch
> >> deleted file mode 100644
> >> index 5eaeb05..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-flags-for-build.patch
> >> +++ /dev/null
> >> @@ -1,189 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Index: gcc-4_6-branch/Makefile.def
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/Makefile.def        2012-03-03
> 01:08:03.000000000 -0800
> >> -+++ gcc-4_6-branch/Makefile.def     2012-03-04 09:19:02.430607447 -0800
> >> -@@ -242,6 +242,7 @@
> >> - flags_to_pass = { flag= BISON ; };
> >> - flags_to_pass = { flag= CC_FOR_BUILD ; };
> >> - flags_to_pass = { flag= CFLAGS_FOR_BUILD ; };
> >> -+flags_to_pass = { flag= CPPFLAGS_FOR_BUILD ; };
> >> - flags_to_pass = { flag= CXX_FOR_BUILD ; };
> >> - flags_to_pass = { flag= EXPECT ; };
> >> - flags_to_pass = { flag= FLEX ; };
> >> -Index: gcc-4_6-branch/gcc/Makefile.in
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/Makefile.in     2012-03-03
> 01:03:17.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/Makefile.in  2012-03-04 09:19:02.430607447 -0800
> >> -@@ -770,7 +770,7 @@
> >> -
> >> - # Native linker and preprocessor flags.  For x-fragment overrides.
> >> - BUILD_LDFLAGS=@BUILD_LDFLAGS@
> >> --BUILD_CPPFLAGS=$(ALL_CPPFLAGS)
> >> -+BUILD_CPPFLAGS=$(INCLUDES) @BUILD_CPPFLAGS@ $(X_CPPFLAGS)
> >> -
> >> - # Actual name to use when installing a native compiler.
> >> - GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
> >> -Index: gcc-4_6-branch/gcc/configure.ac
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/configure.ac    2012-03-03
> 01:17:45.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/configure.ac 2012-03-04 09:19:02.430607447
> -0800
> >> -@@ -1774,16 +1774,18 @@
> >> - # Also, we cannot run fixincludes.
> >> -
> >> - # These are the normal (build=host) settings:
> >> --CC_FOR_BUILD='$(CC)'               AC_SUBST(CC_FOR_BUILD)
> >> --BUILD_CFLAGS='$(ALL_CFLAGS)'       AC_SUBST(BUILD_CFLAGS)
> >> --BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
> >> --STMP_FIXINC=stmp-fixinc            AC_SUBST(STMP_FIXINC)
> >> -+CC_FOR_BUILD='$(CC)'                       AC_SUBST(CC_FOR_BUILD)
> >> -+BUILD_CFLAGS='$(ALL_CFLAGS)'               AC_SUBST(BUILD_CFLAGS)
> >> -+BUILD_LDFLAGS='$(LDFLAGS)'         AC_SUBST(BUILD_LDFLAGS)
> >> -+BUILD_CPPFLAGS='$(ALL_CPPFLAGS)'   AC_SUBST(BUILD_CPPFLAGS)
> >> -+STMP_FIXINC=stmp-fixinc                    AC_SUBST(STMP_FIXINC)
> >> -
> >> - # And these apply if build != host, or we are generating coverage data
> >> - if test x$build != x$host || test "x$coverage_flags" != x
> >> - then
> >> -     BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
> >> -     BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
> >> -+    BUILD_CPPFLAGS='$(CPPFLAGS_FOR_BUILD)'
> >> - fi
> >> -
> >> - # Expand extra_headers to include complete path.
> >> -Index: gcc-4_6-branch/Makefile.in
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/Makefile.in 2012-03-03 01:08:03.000000000 -0800
> >> -+++ gcc-4_6-branch/Makefile.in      2012-03-04 09:19:02.446607448 -0800
> >> -@@ -338,6 +338,7 @@
> >> - AS_FOR_BUILD = @AS_FOR_BUILD@
> >> - CC_FOR_BUILD = @CC_FOR_BUILD@
> >> - CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
> >> -+CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
> >> - CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
> >> - CXX_FOR_BUILD = @CXX_FOR_BUILD@
> >> - DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
> >> -@@ -691,6 +692,7 @@
> >> -    "BISON=$(BISON)" \
> >> -    "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
> >> -    "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
> >> -+   "CPPFLAGS_FOR_BUILD=$(CPPFLAGS_FOR_BUILD)" \
> >> -    "CXX_FOR_BUILD=$(CXX_FOR_BUILD)" \
> >> -    "EXPECT=$(EXPECT)" \
> >> -    "FLEX=$(FLEX)" \
> >> -Index: gcc-4_6-branch/gcc/configure
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/configure       2012-03-03
> 01:17:45.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/configure    2012-03-04 09:19:15.638608087 -0800
> >> -@@ -703,6 +703,7 @@
> >> - LIBTOOL
> >> - collect2
> >> - STMP_FIXINC
> >> -+BUILD_CPPFLAGS
> >> - BUILD_LDFLAGS
> >> - BUILD_CFLAGS
> >> - CC_FOR_BUILD
> >> -@@ -4842,7 +4843,7 @@
> >> - { $as_echo "$as_me:${as_lineno-$LINENO}: result:
> $acx_cv_cc_gcc_supports_ada" >&5
> >> - $as_echo "$acx_cv_cc_gcc_supports_ada" >&6; }
> >> -
> >> --if test x$GNATBIND != xno && test x$GNATMAKE != xno && test
> x$acx_cv_cc_gcc_supports_ada != xno; then
> >> -+if test "x$GNATBIND" != xno && test "x$GNATMAKE" != xno && test
> x$acx_cv_cc_gcc_supports_ada != xno; then
> >> -   have_gnat=yes
> >> - else
> >> -   have_gnat=no
> >> -@@ -11372,6 +11373,7 @@
> >> - CC_FOR_BUILD='$(CC)'
> >> - BUILD_CFLAGS='$(ALL_CFLAGS)'
> >> - BUILD_LDFLAGS='$(LDFLAGS)'
> >> -+BUILD_CPPFLAGS='$(ALL_CPPFLAGS)'
> >> - STMP_FIXINC=stmp-fixinc
> >> -
> >> - # And these apply if build != host, or we are generating coverage data
> >> -@@ -11379,6 +11381,7 @@
> >> - then
> >> -     BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
> >> -     BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
> >> -+    BUILD_CPPFLAGS='$(CPPFLAGS_FOR_BUILD)'
> >> - fi
> >> -
> >> - # Expand extra_headers to include complete path.
> >> -@@ -17495,7 +17498,7 @@
> >> -   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
> >> -   lt_status=$lt_dlunknown
> >> -   cat > conftest.$ac_ext <<_LT_EOF
> >> --#line 17498 "configure"
> >> -+#line 17501 "configure"
> >> - #include "confdefs.h"
> >> -
> >> - #if HAVE_DLFCN_H
> >> -@@ -17601,7 +17604,7 @@
> >> -   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
> >> -   lt_status=$lt_dlunknown
> >> -   cat > conftest.$ac_ext <<_LT_EOF
> >> --#line 17604 "configure"
> >> -+#line 17607 "configure"
> >> - #include "confdefs.h"
> >> -
> >> - #if HAVE_DLFCN_H
> >> -Index: gcc-4_6-branch/Makefile.tpl
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/Makefile.tpl        2012-03-03
> 01:08:03.000000000 -0800
> >> -+++ gcc-4_6-branch/Makefile.tpl     2012-03-04 09:19:02.454607448 -0800
> >> -@@ -341,6 +341,7 @@
> >> - AS_FOR_BUILD = @AS_FOR_BUILD@
> >> - CC_FOR_BUILD = @CC_FOR_BUILD@
> >> - CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
> >> -+CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
> >> - CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
> >> - CXX_FOR_BUILD = @CXX_FOR_BUILD@
> >> - DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
> >> -Index: gcc-4_6-branch/configure.ac
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/configure.ac        2012-03-03
> 01:17:45.000000000 -0800
> >> -+++ gcc-4_6-branch/configure.ac     2012-03-04 09:19:02.454607448
> -0800
> >> -@@ -3123,6 +3123,7 @@
> >> - # our build compiler if desired.
> >> - if test x"${build}" = x"${host}" ; then
> >> -   CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
> >> -+  CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
> >> -   CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
> >> -   LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
> >> - fi
> >> -@@ -3189,6 +3190,7 @@
> >> - AC_SUBST(AS_FOR_BUILD)
> >> - AC_SUBST(CC_FOR_BUILD)
> >> - AC_SUBST(CFLAGS_FOR_BUILD)
> >> -+AC_SUBST(CPPFLAGS_FOR_BUILD)
> >> - AC_SUBST(CXXFLAGS_FOR_BUILD)
> >> - AC_SUBST(CXX_FOR_BUILD)
> >> - AC_SUBST(DLLTOOL_FOR_BUILD)
> >> -Index: gcc-4_6-branch/configure
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/configure   2012-03-03 01:17:45.000000000 -0800
> >> -+++ gcc-4_6-branch/configure        2012-03-04 09:19:02.458607448 -0800
> >> -@@ -617,6 +617,7 @@
> >> - DLLTOOL_FOR_BUILD
> >> - CXX_FOR_BUILD
> >> - CXXFLAGS_FOR_BUILD
> >> -+CPPFLAGS_FOR_BUILD
> >> - CFLAGS_FOR_BUILD
> >> - CC_FOR_BUILD
> >> - AS_FOR_BUILD
> >> -@@ -7644,6 +7645,7 @@
> >> - # our build compiler if desired.
> >> - if test x"${build}" = x"${host}" ; then
> >> -   CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
> >> -+  CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
> >> -   CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
> >> -   LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
> >> - fi
> >> -@@ -7709,6 +7711,7 @@
> >> -
> >> -
> >> -
> >> -+
> >> -
> >> -
> >> -
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-poison-dir-extend.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-poison-dir-extend.patch
> >> deleted file mode 100644
> >> index 35170e2..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-poison-dir-extend.patch
> >> +++ /dev/null
> >> @@ -1,27 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Add /sw/include and /opt/include based on the original
> >> -zecke-no-host-includes.patch patch.  The original patch checked for
> >> -/usr/include, /sw/include and /opt/include and then triggered a
> failure and
> >> -aborted.
> >> -
> >> -Instead, we add the two missing items to the current scan.  If the user
> >> -wants this to be a failure, they can add
> "-Werror=poison-system-directories".
> >> -
> >> -Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
> >> -
> >> -Index: gcc-4.6.0/gcc/incpath.c
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/incpath.c
> >> -+++ gcc-4.6.0/gcc/incpath.c
> >> -@@ -363,7 +363,9 @@ merge_include_chains (const char *sysroo
> >> -          {
> >> -           if ((!strncmp (p->name, "/usr/include", 12))
> >> -               || (!strncmp (p->name, "/usr/local/include", 18))
> >> --              || (!strncmp (p->name, "/usr/X11R6/include", 18)))
> >> -+              || (!strncmp (p->name, "/usr/X11R6/include", 18))
> >> -+              || (!strncmp (p->name, "/sw/include", 11))
> >> -+              || (!strncmp (p->name, "/opt/include", 12)))
> >> -             warning (OPT_Wpoison_system_directories,
> >> -                      "include location \"%s\" is unsafe for "
> >> -                      "cross-compilation",
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-poison-system-directories.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-poison-system-directories.patch
> >> deleted file mode 100644
> >> index a44e86c..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-poison-system-directories.patch
> >> +++ /dev/null
> >> @@ -1,223 +0,0 @@
> >> -Upstream-Status: Inappropriate [distribution: codesourcery]
> >> -
> >> -       gcc/
> >> -       2008-07-02  Joseph Myers  <joseph at codesourcery.com>
> >> -       * c-incpath.c: Include toplev.h.
> >> -       (merge_include_chains): Use warning instead of cpp_error for
> >> -       system directory poisoning diagnostic.
> >> -       * Makefile.in (c-incpath.o): Depend on toplev.h.
> >> -       * gcc.c (LINK_COMMAND_SPEC): Pass
> >> -       --error-poison-system-directories if
> >> -       -Werror=poison-system-directories.
> >> -
> >> -       2007-06-13  Joseph Myers  <joseph at codesourcery.com>
> >> -       * common.opt (--Wno-poison-system-directories): New.
> >> -       * doc/invoke.texi (-Wno-poison-system-directories): Document.
> >> -       * c-incpath.c: Include flags.h.
> >> -       (merge_include_chains): Check flag_poison_system_directories.
> >> -       * gcc.c (LINK_COMMAND_SPEC): Pass --no-poison-system-directories
> >> -       to linker if -Wno-poison-system-directories.
> >> -       * Makefile.in (c-incpath.o): Depend on $(FLAGS_H).
> >> -
> >> -       2007-03-20  Daniel Jacobowitz  <dan at codesourcery.com>
> >> -                   Joseph Myers  <joseph at codesourcery.com>
> >> -       * configure.ac (--enable-poison-system-directories): New
> option.
> >> -       * configure, config.in: Regenerate.
> >> -       * c-incpath.c (merge_include_chains): If
> >> -       ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of
> >> -       /usr/include, /usr/local/include or /usr/X11R6/include.
> >> -
> >> -Index: gcc-4_6-branch/gcc/common.opt
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/common.opt      2012-03-03
> 01:03:17.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/common.opt   2012-03-04 09:24:54.410624483 -0800
> >> -@@ -567,6 +567,10 @@
> >> - Common Var(warn_padded) Warning
> >> - Warn when padding is required to align structure members
> >> -
> >> -+Wpoison-system-directories
> >> -+Common Var(flag_poison_system_directories) Init(1) Warning
> >> -+Warn for -I and -L options using system directories if cross compiling
> >> -+
> >> - Wshadow
> >> - Common Var(warn_shadow) Warning
> >> - Warn when one local variable shadows another
> >> -Index: gcc-4_6-branch/gcc/config.in
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config.in       2012-03-03
> 01:03:17.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/config.in    2012-03-04 09:24:54.410624483
> -0800
> >> -@@ -144,6 +144,12 @@
> >> - #endif
> >> -
> >> -
> >> -+/* Define to warn for use of native system header directories */
> >> -+#ifndef USED_FOR_TARGET
> >> -+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
> >> -+#endif
> >> -+
> >> -+
> >> - /* Define if you want all operations on RTL (the basic data structure
> of the
> >> -    optimizer and back end) to be checked for dynamic type safety at
> runtime.
> >> -    This is quite expensive. */
> >> -Index: gcc-4_6-branch/gcc/configure.ac
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/configure.ac    2012-03-04
> 09:22:07.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/configure.ac 2012-03-04 09:24:54.410624483
> -0800
> >> -@@ -4692,6 +4692,16 @@
> >> - fi)
> >> - AC_SUBST(slibdir)
> >> -
> >> -+AC_ARG_ENABLE([poison-system-directories],
> >> -+             AS_HELP_STRING([--enable-poison-system-directories],
> >> -+                            [warn for use of native system header
> directories]),,
> >> -+             [enable_poison_system_directories=no])
> >> -+if test "x${enable_poison_system_directories}" = "xyes"; then
> >> -+  AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
> >> -+           [1],
> >> -+           [Define to warn for use of native system header
> directories])
> >> -+fi
> >> -+
> >> - # Substitute configuration variables
> >> - AC_SUBST(subdirs)
> >> - AC_SUBST(srcdir)
> >> -Index: gcc-4_6-branch/gcc/doc/invoke.texi
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/doc/invoke.texi 2012-03-03
> 00:46:39.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/doc/invoke.texi      2012-03-04
> 09:24:54.414624482 -0800
> >> -@@ -257,6 +257,7 @@
> >> - -Woverlength-strings  -Wpacked  -Wpacked-bitfield-compat  -Wpadded
> @gol
> >> - -Wparentheses  -Wpedantic-ms-format -Wno-pedantic-ms-format @gol
> >> - -Wpointer-arith  -Wno-pointer-to-int-cast @gol
> >> -+-Wno-poison-system-directories @gol
> >> - -Wredundant-decls @gol
> >> - -Wreturn-type  -Wsequence-point  -Wshadow @gol
> >> - -Wsign-compare  -Wsign-conversion  -Wstack-protector @gol
> >> -@@ -3782,6 +3783,14 @@
> >> -  for most targets, it is made up of code and thus requires the stack
> >> -  to be made executable in order for the program to work properly.
> >> -
> >> -+ at item -Wno-poison-system-directories
> >> -+ at opindex Wno-poison-system-directories
> >> -+Do not warn for @option{-I} or @option{-L} options using system
> >> -+directories such as @file{/usr/include} when cross compiling.  This
> >> -+option is intended for use in chroot environments when such
> >> -+directories contain the correct headers and libraries for the target
> >> -+system rather than the host.
> >> -+
> >> - @item -Wfloat-equal
> >> - @opindex Wfloat-equal
> >> - @opindex Wno-float-equal
> >> -Index: gcc-4_6-branch/gcc/gcc.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/gcc.c   2012-03-03 01:03:17.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/gcc.c        2012-03-04 09:24:54.418624482 -0800
> >> -@@ -659,6 +659,8 @@
> >> -     %{flto} %{flto=*} %l " LINK_PIE_SPEC \
> >> -    "%X %{o*} %{e*} %{N} %{n} %{r}\
> >> -     %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}}\
> >> -+    %{Wno-poison-system-directories:--no-poison-system-directories}\
> >> -+
> %{Werror=poison-system-directories:--error-poison-system-directories}\
> >> -     %{static:} %{L*} %(mfwrap) %(link_libgcc) %o\
> >> -
>  %{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)}\
> >> -     %(mflib) " STACK_SPLIT_SPEC "\
> >> -Index: gcc-4_6-branch/gcc/incpath.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/incpath.c       2012-03-03
> 01:03:17.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/incpath.c    2012-03-04 09:24:54.418624482 -0800
> >> -@@ -353,6 +353,24 @@
> >> -    }
> >> -       fprintf (stderr, _("End of search list.\n"));
> >> -     }
> >> -+
> >> -+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
> >> -+  if (flag_poison_system_directories)
> >> -+    {
> >> -+       struct cpp_dir *p;
> >> -+
> >> -+       for (p = heads[QUOTE]; p; p = p->next)
> >> -+         {
> >> -+          if ((!strncmp (p->name, "/usr/include", 12))
> >> -+              || (!strncmp (p->name, "/usr/local/include", 18))
> >> -+              || (!strncmp (p->name, "/usr/X11R6/include", 18)))
> >> -+            warning (OPT_Wpoison_system_directories,
> >> -+                     "include location \"%s\" is unsafe for "
> >> -+                     "cross-compilation",
> >> -+                     p->name);
> >> -+         }
> >> -+    }
> >> -+#endif
> >> - }
> >> -
> >> - /* Use given -I paths for #include "..." but not #include <...>, and
> >> -Index: gcc-4_6-branch/gcc/Makefile.in
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/Makefile.in     2012-03-04
> 09:22:05.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/Makefile.in  2012-03-04 09:24:54.418624482 -0800
> >> -@@ -2179,7 +2179,7 @@
> >> -
> >> - incpath.o: incpath.c incpath.h $(CONFIG_H) $(SYSTEM_H) $(CPPLIB_H) \
> >> -            intl.h prefix.h coretypes.h $(TM_H) cppdefault.h
> $(TARGET_H) \
> >> --           $(MACHMODE_H)
> >> -+           $(MACHMODE_H) $(FLAGS_H) toplev.h
> >> -
> >> - prefix.o: prefix.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H)
> prefix.h \
> >> -    Makefile $(BASEVER)
> >> -Index: gcc-4_6-branch/gcc/configure
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/configure       2012-03-04
> 09:22:07.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/configure    2012-03-04 09:25:31.502626277 -0800
> >> -@@ -912,6 +912,7 @@
> >> - enable_maintainer_mode
> >> - enable_version_specific_runtime_libs
> >> - with_slibdir
> >> -+enable_poison_system_directories
> >> - enable_plugin
> >> - enable_libquadmath_support
> >> - '
> >> -@@ -1623,6 +1624,8 @@
> >> -   --enable-version-specific-runtime-libs
> >> -                           specify that runtime libraries should be
> >> -                           installed in a compiler-specific directory
> >> -+  --enable-poison-system-directories
> >> -+                          warn for use of native system header
> directories
> >> -   --enable-plugin         enable plugin support
> >> -   --disable-libquadmath-support
> >> -                           disable libquadmath support for Fortran
> >> -@@ -17498,7 +17501,7 @@
> >> -   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
> >> -   lt_status=$lt_dlunknown
> >> -   cat > conftest.$ac_ext <<_LT_EOF
> >> --#line 17501 "configure"
> >> -+#line 17504 "configure"
> >> - #include "confdefs.h"
> >> -
> >> - #if HAVE_DLFCN_H
> >> -@@ -17604,7 +17607,7 @@
> >> -   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
> >> -   lt_status=$lt_dlunknown
> >> -   cat > conftest.$ac_ext <<_LT_EOF
> >> --#line 17607 "configure"
> >> -+#line 17610 "configure"
> >> - #include "confdefs.h"
> >> -
> >> - #if HAVE_DLFCN_H
> >> -@@ -26125,6 +26128,19 @@
> >> -
> >> -
> >> -
> >> -+# Check whether --enable-poison-system-directories was given.
> >> -+if test "${enable_poison_system_directories+set}" = set; then :
> >> -+  enableval=$enable_poison_system_directories;
> >> -+else
> >> -+  enable_poison_system_directories=no
> >> -+fi
> >> -+
> >> -+if test "x${enable_poison_system_directories}" = "xyes"; then
> >> -+
> >> -+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
> >> -+
> >> -+fi
> >> -+
> >> - # Substitute configuration variables
> >> -
> >> -
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-uclibc-locale-ctype_touplow_t.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-uclibc-locale-ctype_touplow_t.patch
> >> deleted file mode 100644
> >> index 1648b3b..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-uclibc-locale-ctype_touplow_t.patch
> >> +++ /dev/null
> >> @@ -1,72 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/generic/c_locale.h
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/generic/c_locale.h
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/generic/c_locale.h
> >> -@@ -41,13 +41,22 @@
> >> -
> >> - #include <clocale>
> >> -
> >> -+#ifdef __UCLIBC__
> >> -+#include <features.h>
> >> -+#include <ctype.h>
> >> -+#endif
> >> -+
> >> - #define _GLIBCXX_NUM_CATEGORIES 0
> >> -
> >> - namespace std _GLIBCXX_VISIBILITY(default)
> >> - {
> >> - _GLIBCXX_BEGIN_NAMESPACE_VERSION
> >> -
> >> -+#ifdef __UCLIBC__
> >> -+  typedef __ctype_touplow_t*       __c_locale;
> >> -+#else
> >> -   typedef int*                     __c_locale;
> >> -+#endif
> >> -
> >> -   // Convert numeric value of type double and long double to string
> and
> >> -   // return length of string.  If vsnprintf is available use it,
> otherwise
> >> -Index: gcc-4.6.0/libstdc++-v3/config/os/gnu-linux/ctype_base.h
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/os/gnu-linux/ctype_base.h
> >> -+++ gcc-4.6.0/libstdc++-v3/config/os/gnu-linux/ctype_base.h
> >> -@@ -34,6 +34,11 @@
> >> -
> >> - // Information as gleaned from /usr/include/ctype.h
> >> -
> >> -+#ifdef __UCLIBC__
> >> -+#include <features.h>
> >> -+#include <ctype.h>
> >> -+#endif
> >> -+
> >> - namespace std _GLIBCXX_VISIBILITY(default)
> >> - {
> >> - _GLIBCXX_BEGIN_NAMESPACE_VERSION
> >> -@@ -42,7 +47,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
> >> -   struct ctype_base
> >> -   {
> >> -     // Non-standard typedefs.
> >> -+#ifdef __UCLIBC__
> >> -+    typedef const __ctype_touplow_t*       __to_type;
> >> -+#else
> >> -     typedef const int*             __to_type;
> >> -+#endif
> >> -
> >> -     // NB: Offsets into ctype<char>::_M_table force a particular size
> >> -     // on the mask type. Because of this, we don't use an enum.
> >> -Index: gcc-4.6.0/libstdc++-v3/config/locale/generic/c_locale.cc
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/libstdc++-v3/config/locale/generic/c_locale.cc
> >> -+++ gcc-4.6.0/libstdc++-v3/config/locale/generic/c_locale.cc
> >> -@@ -264,5 +264,10 @@ _GLIBCXX_END_NAMESPACE_VERSION
> >> - #ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
> >> - #define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
> >> -   extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
> >> -+#ifdef __UCLIBC__
> >> -+// This is because __c_locale is of type __ctype_touplow_t* which is
> short on uclibc. for glibc its int*
> >>
> -+_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPs,
> _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPs);
> >> -+#else
> >> -
> _GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi,
> _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi);
> >> -+#endif
> >> - #endif // _GLIBCXX_LONG_DOUBLE_COMPAT
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-with-linker-hash-style.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-with-linker-hash-style.patch
> >> deleted file mode 100644
> >> index 94b61cd..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/gcc-with-linker-hash-style.patch
> >> +++ /dev/null
> >> @@ -1,196 +0,0 @@
> >> -Upstream-Status: Backport
> >> -Signed-off-by: Khem Raj <raj.khem at gmail.com>
> >> -
> >> -commit 3cb9bbfa927aa187048534f9069202c017a78e38
> >> -Author: ppluzhnikov <ppluzhnikov at 138bc75d-0d04-0410-961f-82ee72b054a4>
> >> -Date:   Wed May 11 18:28:14 2011 +0000
> >> -
> >> -    2011-05-11  Satoru Takabayashi  <satorux at google.com>
> >> -                Paul Pluzhnikov  <ppluzhnikov at google.com>
> >> -
> >> -            * gcc/doc/install.texi (Configuration): Document
> >> -            --with-linker-hash-style.
> >> -            * gcc/gcc.c (init_spec): Handle LINKER_HASH_STYLE.
> >> -            * gcc/config.in: Add LINKER_HASH_STYLE.
> >> -            * gcc/configure.ac: Add --with-linker-hash-style.
> >> -            * gcc/configure: Regenerate.
> >> -
> >> -
> >> -
> >> -    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173668
> 138bc75d-0d04-0410-961f-82ee72b054a4
> >> -
> >> -Index: gcc-4_6-branch/gcc/config.in
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config.in       2012-03-04
> 09:30:04.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/config.in    2012-03-04 09:32:30.878646575
> -0800
> >> -@@ -1583,6 +1583,12 @@
> >> - #endif
> >> -
> >> -
> >> -+/* The linker hash style */
> >> -+#ifndef USED_FOR_TARGET
> >> -+#undef LINKER_HASH_STYLE
> >> -+#endif
> >> -+
> >> -+
> >> - /* Define to the name of the LTO plugin DSO that must be passed to the
> >> -    linker's -plugin=LIB option. */
> >> - #ifndef USED_FOR_TARGET
> >> -Index: gcc-4_6-branch/gcc/configure
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/configure       2012-03-04
> 09:30:05.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/configure    2012-03-04 09:32:39.918647011 -0800
> >> -@@ -915,6 +915,7 @@
> >> - enable_poison_system_directories
> >> - enable_plugin
> >> - enable_libquadmath_support
> >> -+with_linker_hash_style
> >> - '
> >> -       ac_precious_vars='build_alias
> >> - host_alias
> >> -@@ -1667,6 +1668,8 @@
> >> -                           with the compiler
> >> -   --with-system-zlib      use installed libz
> >> -   --with-slibdir=DIR      shared libraries in DIR [LIBDIR]
> >> -+  --with-linker-hash-style={sysv,gnu,both}
> >> -+                          specify the linker hash style
> >> -
> >> - Some influential environment variables:
> >> -   CC          C compiler command
> >> -@@ -17501,7 +17504,7 @@
> >> -   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
> >> -   lt_status=$lt_dlunknown
> >> -   cat > conftest.$ac_ext <<_LT_EOF
> >> --#line 17504 "configure"
> >> -+#line 17507 "configure"
> >> - #include "confdefs.h"
> >> -
> >> - #if HAVE_DLFCN_H
> >> -@@ -17607,7 +17610,7 @@
> >> -   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
> >> -   lt_status=$lt_dlunknown
> >> -   cat > conftest.$ac_ext <<_LT_EOF
> >> --#line 17610 "configure"
> >> -+#line 17613 "configure"
> >> - #include "confdefs.h"
> >> -
> >> - #if HAVE_DLFCN_H
> >> -@@ -26432,6 +26435,36 @@
> >> - fi
> >> -
> >> -
> >> -+# Specify what hash style to use by default.
> >> -+
> >> -+# Check whether --with-linker-hash-style was given.
> >> -+if test "${with_linker_hash_style+set}" = set; then :
> >> -+  withval=$with_linker_hash_style; case x"$withval" in
> >> -+   xsysv)
> >> -+     LINKER_HASH_STYLE=sysv
> >> -+     ;;
> >> -+   xgnu)
> >> -+     LINKER_HASH_STYLE=gnu
> >> -+     ;;
> >> -+   xboth)
> >> -+     LINKER_HASH_STYLE=both
> >> -+     ;;
> >> -+   *)
> >> -+     as_fn_error "$withval is an invalid option to
> --with-linker-hash-style" "$LINENO" 5
> >> -+     ;;
> >> -+ esac
> >> -+else
> >> -+  LINKER_HASH_STYLE=''
> >> -+fi
> >> -+
> >> -+if test x"${LINKER_HASH_STYLE}" != x; then
> >> -+
> >> -+cat >>confdefs.h <<_ACEOF
> >> -+#define LINKER_HASH_STYLE "$LINKER_HASH_STYLE"
> >> -+_ACEOF
> >> -+
> >> -+fi
> >> -+
> >> - # Configure the subdirectories
> >> - # AC_CONFIG_SUBDIRS($subdirs)
> >> -
> >> -Index: gcc-4_6-branch/gcc/configure.ac
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/configure.ac    2012-03-04
> 09:30:05.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/configure.ac 2012-03-04 09:32:30.890646574
> -0800
> >> -@@ -4905,6 +4905,30 @@
> >> - fi
> >> -
> >> -
> >> -+# Specify what hash style to use by default.
> >> -+AC_ARG_WITH([linker-hash-style],
> >> -+[AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
> >> -+                [specify the linker hash style])],
> >> -+[case x"$withval" in
> >> -+   xsysv)
> >> -+     LINKER_HASH_STYLE=sysv
> >> -+     ;;
> >> -+   xgnu)
> >> -+     LINKER_HASH_STYLE=gnu
> >> -+     ;;
> >> -+   xboth)
> >> -+     LINKER_HASH_STYLE=both
> >> -+     ;;
> >> -+   *)
> >> -+     AC_MSG_ERROR([$withval is an invalid option to
> --with-linker-hash-style])
> >> -+     ;;
> >> -+ esac],
> >> -+[LINKER_HASH_STYLE=''])
> >> -+if test x"${LINKER_HASH_STYLE}" != x; then
> >> -+  AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
> >> -+                                         [The linker hash style])
> >> -+fi
> >> -+
> >> - # Configure the subdirectories
> >> - # AC_CONFIG_SUBDIRS($subdirs)
> >> -
> >> -Index: gcc-4_6-branch/gcc/doc/install.texi
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/doc/install.texi        2012-03-03
> 00:46:39.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/doc/install.texi     2012-03-04
> 09:32:30.894646574 -0800
> >> -@@ -1665,6 +1665,11 @@
> >> - support @option{--build-id} option, a warning is issued and the
> >> - @option{--enable-linker-build-id} option is ignored.  The default is
> off.
> >> -
> >> -+ at item --with-linker-hash-style=@var{choice}
> >> -+Tells GCC to pass @option{--hash-style=@var{choice}} option to the
> >> -+linker for all final links. @var{choice} can be one of
> >> -+ at samp{sysv}, @samp{gnu}, and @samp{both} where @samp{sysv} is the
> default.
> >> -+
> >> - @item --enable-gnu-unique-object
> >> - @itemx --disable-gnu-unique-object
> >> - Tells GCC to use the gnu_unique_object relocation for C++ template
> >> -Index: gcc-4_6-branch/gcc/gcc.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/gcc.c   2012-03-04 09:30:04.000000000 -0800
> >> -+++ gcc-4_6-branch/gcc/gcc.c        2012-03-04 09:32:30.894646574 -0800
> >> -@@ -1427,7 +1427,8 @@
> >> -   }
> >> - #endif
> >> -
> >> --#if defined LINK_EH_SPEC || defined LINK_BUILDID_SPEC
> >> -+#if defined LINK_EH_SPEC || defined LINK_BUILDID_SPEC || \
> >> -+    defined LINKER_HASH_STYLE
> >> - # ifdef LINK_BUILDID_SPEC
> >> -   /* Prepend LINK_BUILDID_SPEC to whatever link_spec we had before.
> */
> >> -   obstack_grow (&obstack, LINK_BUILDID_SPEC,
> sizeof(LINK_BUILDID_SPEC) - 1);
> >> -@@ -1436,6 +1437,16 @@
> >> -   /* Prepend LINK_EH_SPEC to whatever link_spec we had before.  */
> >> -   obstack_grow (&obstack, LINK_EH_SPEC, sizeof(LINK_EH_SPEC) - 1);
> >> - # endif
> >> -+# ifdef LINKER_HASH_STYLE
> >> -+  /* Prepend --hash-style=LINKER_HASH_STYLE to whatever link_spec we
> had
> >> -+     before.  */
> >> -+  {
> >> -+    static const char hash_style[] = "--hash-style=";
> >> -+    obstack_grow (&obstack, hash_style, sizeof(hash_style) - 1);
> >> -+    obstack_grow (&obstack, LINKER_HASH_STYLE,
> sizeof(LINKER_HASH_STYLE) - 1);
> >> -+    obstack_1grow (&obstack, ' ');
> >> -+  }
> >> -+# endif
> >> -   obstack_grow0 (&obstack, link_spec, strlen (link_spec));
> >> -   link_spec = XOBFINISH (&obstack, const char *);
> >> - #endif
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/mips64-default-n64.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/mips64-default-n64.patch
> >> deleted file mode 100644
> >> index bf930ec..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/mips64-default-n64.patch
> >> +++ /dev/null
> >> @@ -1,32 +0,0 @@
> >> -MIPS64 defaults to n32 ABI, this patch makes it
> >> -so that it defaults to N64 ABI
> >> -
> >> -Upstream-Status: Inappropriate [OE config specific]
> >> -
> >> -Signed-off-by: Khem Raj <raj.khem at gmail.com>
> >> -Index: gcc-4_6-branch/gcc/config.gcc
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config.gcc      2012-04-22
> 19:12:12.431061229 -0700
> >> -+++ gcc-4_6-branch/gcc/config.gcc   2012-04-22 19:13:36.307065289 -0700
> >> -@@ -1882,7 +1882,7 @@
> >> - mips64*-*-linux* | mipsisa64*-*-linux*)
> >> -    tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h
> ${tm_file} mips/linux.h mips/linux64.h"
> >> -    tmake_file="${tmake_file} mips/t-linux64 mips/t-libgcc-mips16"
> >> --   tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
> >> -+   tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_64"
> >> -    case ${target} in
> >> -            mips64el-st-linux-gnu)
> >> -                    tm_file="${tm_file} mips/st.h"
> >> -Index: gcc-4_6-branch/gcc/config/mips/linux64.h
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config/mips/linux64.h   2012-04-22
> 19:10:59.743057711 -0700
> >> -+++ gcc-4_6-branch/gcc/config/mips/linux64.h        2012-04-22
> 19:11:56.919060479 -0700
> >> -@@ -26,7 +26,7 @@
> >> -   BASE_DRIVER_SELF_SPECS, \
> >> -   LINUX_DRIVER_SELF_SPECS \
> >> -   " %{!EB:%{!EL:%(endian_spec)}}" \
> >> --  " %{!mabi=*: -mabi=n32}"
> >> -+  " %{!mabi=*: -mabi=64}"
> >> -
> >> - #undef LIB_SPEC
> >> - #define LIB_SPEC "\
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/optional_libstdc.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/optional_libstdc.patch
> >> deleted file mode 100644
> >> index fe157a8..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/optional_libstdc.patch
> >> +++ /dev/null
> >> @@ -1,86 +0,0 @@
> >> -Upstream-Status: Inappropriate [embedded specific]
> >> -
> >> -gcc-runtime builds libstdc++ separately from gcc-cross-*. Its
> configure tests using g++
> >> -will not run correctly since by default the linker will try to link
> against libstdc++
> >> -which shouldn't exist yet. We need an option to disable -lstdc++
> >> -option whilst leaving -lc, -lgcc and other automatic library
> dependencies added by gcc
> >> -driver. This patch adds such an option which only disables the
> -lstdc++.
> >> -
> >> -A "standard" gcc build uses xgcc and hence avoids this. We should ask
> upstream how to
> >> -do this officially, the likely answer is don't build libstdc++
> separately.
> >> -
> >> -RP 29/6/10
> >> -
> >> -Index: gcc-4.6.0/gcc/cp/g++spec.c
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/cp/g++spec.c
> >> -+++ gcc-4.6.0/gcc/cp/g++spec.c
> >> -@@ -127,6 +127,7 @@ lang_specific_driver (struct cl_decoded_
> >> -       switch (decoded_options[i].opt_index)
> >> -    {
> >> -    case OPT_nostdlib:
> >> -+   case OPT_nostdlib__:
> >> -    case OPT_nodefaultlibs:
> >> -      library = -1;
> >> -      break;
> >> -Index: gcc-4.6.0/gcc/doc/invoke.texi
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/doc/invoke.texi
> >> -+++ gcc-4.6.0/gcc/doc/invoke.texi
> >> -@@ -193,7 +193,7 @@ in the following sections.
> >> - -fno-pretty-templates @gol
> >> - -frepo  -fno-rtti  -fstats  -ftemplate-depth=@var{n} @gol
> >> - -fno-threadsafe-statics -fuse-cxa-atexit  -fno-weak  -nostdinc++ @gol
> >> ---fno-default-inline  -fvisibility-inlines-hidden @gol
> >> -+-nostdlib++ -fno-default-inline  -fvisibility-inlines-hidden @gol
> >> - -fvisibility-ms-compat @gol
> >> - -Wabi  -Wconversion-null  -Wctor-dtor-privacy @gol
> >> - -Wnoexcept -Wnon-virtual-dtor  -Wreorder @gol
> >> -@@ -431,7 +431,7 @@ Objective-C and Objective-C++ Dialects}.
> >> - @gccoptlist{@var{object-file-name}  -l at var{library} @gol
> >> - -nostartfiles  -nodefaultlibs  -nostdlib -pie -rdynamic @gol
> >> - -s  -static  -static-libgcc  -static-libstdc++ -shared  @gol
> >> ---shared-libgcc  -symbolic @gol
> >> -+-shared-libgcc  -symbolic -nostdlib++ @gol
> >> - -T @var{script}  -Wl, at var{option}  -Xlinker @var{option} @gol
> >> - -u @var{symbol}}
> >> -
> >> -@@ -9069,6 +9069,11 @@ These entries are usually resolved by en
> >> - libc.  These entry points should be supplied through some other
> >> - mechanism when this option is specified.
> >> -
> >> -+ at item -nostdlib++
> >> -+ at opindex nostdlib++
> >> -+Do not use the standard system C++ runtime libraries when linking.
> >> -+Only the libraries you specify will be passed to the linker.
> >> -+
> >> - @cindex @option{-lgcc}, use with @option{-nostdlib}
> >> - @cindex @option{-nostdlib} and unresolved references
> >> - @cindex unresolved references and @option{-nostdlib}
> >> -Index: gcc-4.6.0/gcc/c-family/c.opt
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/c-family/c.opt
> >> -+++ gcc-4.6.0/gcc/c-family/c.opt
> >> -@@ -1111,6 +1111,10 @@ nostdinc++
> >> - C++ ObjC++
> >> - Do not search standard system include directories for C++
> >> -
> >> -+nostdlib++
> >> -+Driver
> >> -+Do not link standard C++ runtime library
> >> -+
> >> - o
> >> - C ObjC C++ ObjC++ Joined Separate
> >> - ; Documented in common.opt
> >> -Index: gcc-4.6.0/gcc/gcc.c
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/gcc/gcc.c
> >> -+++ gcc-4.6.0/gcc/gcc.c
> >> -@@ -666,6 +666,7 @@ proper position among the other output f
> >> -     %(mflib) " STACK_SPLIT_SPEC "\
> >> -     %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\
> >> -     %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\
> >> -+    %{!nostdlib++:}\
> >> -     %{!nostdlib:%{!nostartfiles:%E}} %{T*} }}}}}}"
> >> - #endif
> >> -
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/powerpc-e5500.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/powerpc-e5500.patch
> >> deleted file mode 100644
> >> index 1f478f3..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/powerpc-e5500.patch
> >> +++ /dev/null
> >> @@ -1,465 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Implements basic e5500 enablement in gcc, with a scheduler, -mcpu
> >> -flag, etc...
> >> -
> >> -Also splits the masks for popcntb, popcntd, and cmpb. Originally those
> >> -masks would also control other instructions that e5500 does not
> >> -support (so, we either get none or all).
> >> -
> >> -For the lack of means to do tests, those instructions were never
> >> -enabled until now. The new instructions enabled with this patch are:
> >> -popcntb, popcntw, popcntd, bpermd, prtyw, prtyd, cmpb, ldbrx, and
> >> -stdbrx.
> >> -
> >> -Signed-off-by: Edmar Wienskoski <edmar at freescale.com>
> >> -Signed-off-by: Kumar Gala <galak at kernel.crashing.org>
> >> -
> >> -Index: gcc-4_6-branch/gcc/config.gcc
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config.gcc
> >> -+++ gcc-4_6-branch/gcc/config.gcc
> >> -@@ -395,7 +395,7 @@ powerpc*-*-*)
> >> -    extra_headers="ppc-asm.h altivec.h spe.h ppu_intrinsics.h paired.h
> spu2vmx.h vec_types.h si2vmx.h"
> >> -    need_64bit_hwint=yes
> >> -    case x$with_cpu in
> >> --
>  xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[34567]|xpower6x|xrs64a|xcell|xa2|xe500mc64)
> >> -+
>  xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[34567]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500)
> >> -            cpu_is_64bit=yes
> >> -            ;;
> >> -    esac
> >> -@@ -3493,7 +3493,7 @@ case "${target}" in
> >> -                    | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 |
> 464fp \
> >> -                    | 476 | 476fp | 505 | 601 | 602 | 603 | 603e |
> ec603e \
> >> -                    | 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450
> \
> >> --                   | a2 | e300c[23] | 854[08] | e500mc | e500mc64 |
> titan\
> >> -+                   | a2 | e300c[23] | 854[08] | e500mc | e500mc64 |
> e5500 | titan\
> >> -                    | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 |
> cell)
> >> -                            # OK
> >> -                            ;;
> >> -Index: gcc-4_6-branch/gcc/config/rs6000/e5500.md
> >> -===================================================================
> >> ---- /dev/null
> >> -+++ gcc-4_6-branch/gcc/config/rs6000/e5500.md
> >> -@@ -0,0 +1,176 @@
> >> -+;; Pipeline description for Freescale PowerPC e5500 core.
> >> -+;;   Copyright (C) 2011 Free Software Foundation, Inc.
> >> -+;;   Contributed by Edmar Wienskoski (edmar at freescale.com)
> >> -+;;
> >> -+;; This file is part of GCC.
> >> -+;;
> >> -+;; GCC is free software; you can redistribute it and/or modify it
> >> -+;; under the terms of the GNU General Public License as published
> >> -+;; by the Free Software Foundation; either version 3, or (at your
> >> -+;; option) any later version.
> >> -+;;
> >> -+;; GCC is distributed in the hope that it will be useful, but WITHOUT
> >> -+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> >> -+;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
> >> -+;; License for more details.
> >> -+;;
> >> -+;; You should have received a copy of the GNU General Public License
> >> -+;; along with GCC; see the file COPYING3.  If not see
> >> -+;; <http://www.gnu.org/licenses/>.
> >> -+;;
> >> -+;; e5500 64-bit SFX(2), CFX, LSU, FPU, BU
> >> -+;; Max issue 3 insns/clock cycle (includes 1 branch)
> >> -+
> >> -+(define_automaton "e5500_most,e5500_long")
> >> -+(define_cpu_unit "e5500_decode_0,e5500_decode_1" "e5500_most")
> >> -+
> >> -+;; SFX.
> >> -+(define_cpu_unit "e5500_sfx_0,e5500_sfx_1" "e5500_most")
> >> -+
> >> -+;; CFX.
> >> -+(define_cpu_unit "e5500_cfx_stage0,e5500_cfx_stage1" "e5500_most")
> >> -+
> >> -+;; Non-pipelined division.
> >> -+(define_cpu_unit "e5500_cfx_div" "e5500_long")
> >> -+
> >> -+;; LSU.
> >> -+(define_cpu_unit "e5500_lsu" "e5500_most")
> >> -+
> >> -+;; FPU.
> >> -+(define_cpu_unit "e5500_fpu" "e5500_long")
> >> -+
> >> -+;; BU.
> >> -+(define_cpu_unit "e5500_bu" "e5500_most")
> >> -+
> >> -+;; The following units are used to make the automata deterministic.
> >> -+(define_cpu_unit "present_e5500_decode_0" "e5500_most")
> >> -+(define_cpu_unit "present_e5500_sfx_0" "e5500_most")
> >> -+(presence_set "present_e5500_decode_0" "e5500_decode_0")
> >> -+(presence_set "present_e5500_sfx_0" "e5500_sfx_0")
> >> -+
> >> -+;; Some useful abbreviations.
> >> -+(define_reservation "e5500_decode"
> >> -+    "e5500_decode_0|e5500_decode_1+present_e5500_decode_0")
> >> -+(define_reservation "e5500_sfx"
> >> -+   "e5500_sfx_0|e5500_sfx_1+present_e5500_sfx_0")
> >> -+
> >> -+;; SFX.
> >> -+(define_insn_reservation "e5500_sfx" 1
> >> -+  (and (eq_attr "type"
> "integer,insert_word,insert_dword,delayed_compare,\
> >> -+   shift,cntlz,exts")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_sfx")
> >> -+
> >> -+(define_insn_reservation "e5500_sfx2" 2
> >> -+  (and (eq_attr "type" "cmp,compare,fast_compare,trap")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_sfx")
> >> -+
> >> -+(define_insn_reservation "e5500_delayed" 2
> >> -+  (and (eq_attr "type" "var_shift_rotate,var_delayed_compare,popcnt")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_sfx*2")
> >> -+
> >> -+(define_insn_reservation "e5500_two" 2
> >> -+  (and (eq_attr "type" "two")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_decode+e5500_sfx,e5500_sfx")
> >> -+
> >> -+(define_insn_reservation "e5500_three" 3
> >> -+  (and (eq_attr "type" "three")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,(e5500_decode+e5500_sfx)*2,e5500_sfx")
> >> -+
> >> -+;; SFX - Mfcr.
> >> -+(define_insn_reservation "e5500_mfcr" 4
> >> -+  (and (eq_attr "type" "mfcr")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_sfx_0*4")
> >> -+
> >> -+;; SFX - Mtcrf.
> >> -+(define_insn_reservation "e5500_mtcrf" 1
> >> -+  (and (eq_attr "type" "mtcr")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_sfx_0")
> >> -+
> >> -+;; SFX - Mtjmpr.
> >> -+(define_insn_reservation "e5500_mtjmpr" 1
> >> -+  (and (eq_attr "type" "mtjmpr,mfjmpr")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_sfx")
> >> -+
> >> -+;; CFX - Multiply.
> >> -+(define_insn_reservation "e5500_multiply" 4
> >> -+  (and (eq_attr "type" "imul")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_cfx_stage0,e5500_cfx_stage1")
> >> -+
> >> -+(define_insn_reservation "e5500_multiply_i" 5
> >> -+  (and (eq_attr "type" "imul2,imul3,imul_compare")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_cfx_stage0,\
> >> -+   e5500_cfx_stage0+e5500_cfx_stage1,e5500_cfx_stage1")
> >> -+
> >> -+;; CFX - Divide.
> >> -+(define_insn_reservation "e5500_divide" 16
> >> -+  (and (eq_attr "type" "idiv")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_cfx_stage0+e5500_cfx_div,\
> >> -+   e5500_cfx_div*15")
> >> -+
> >> -+(define_insn_reservation "e5500_divide_d" 26
> >> -+  (and (eq_attr "type" "ldiv")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_cfx_stage0+e5500_cfx_div,\
> >> -+   e5500_cfx_div*25")
> >> -+
> >> -+;; LSU - Loads.
> >> -+(define_insn_reservation "e5500_load" 3
> >> -+  (and (eq_attr "type"
> "load,load_ext,load_ext_u,load_ext_ux,load_ux,load_u,\
> >> -+                   load_l,sync")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_lsu")
> >> -+
> >> -+(define_insn_reservation "e5500_fpload" 4
> >> -+  (and (eq_attr "type" "fpload,fpload_ux,fpload_u")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_lsu")
> >> -+
> >> -+;; LSU - Stores.
> >> -+(define_insn_reservation "e5500_store" 3
> >> -+  (and (eq_attr "type" "store,store_ux,store_u,store_c")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_lsu")
> >> -+
> >> -+(define_insn_reservation "e5500_fpstore" 3
> >> -+  (and (eq_attr "type" "fpstore,fpstore_ux,fpstore_u")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_lsu")
> >> -+
> >> -+;; FP.
> >> -+(define_insn_reservation "e5500_float" 7
> >> -+  (and (eq_attr "type" "fpsimple,fp,fpcompare,dmul")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_fpu")
> >> -+
> >> -+(define_insn_reservation "e5500_sdiv" 20
> >> -+  (and (eq_attr "type" "sdiv")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_fpu*20")
> >> -+
> >> -+(define_insn_reservation "e5500_ddiv" 35
> >> -+  (and (eq_attr "type" "ddiv")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_fpu*35")
> >> -+
> >> -+;; BU.
> >> -+(define_insn_reservation "e5500_branch" 1
> >> -+  (and (eq_attr "type" "jmpreg,branch,isync")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_bu")
> >> -+
> >> -+;; BU - CR logical.
> >> -+(define_insn_reservation "e5500_cr_logical" 1
> >> -+  (and (eq_attr "type" "cr_logical,delayed_cr")
> >> -+       (eq_attr "cpu" "ppce5500"))
> >> -+  "e5500_decode,e5500_bu")
> >> -Index: gcc-4_6-branch/gcc/config/rs6000/rs6000-opts.h
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config/rs6000/rs6000-opts.h
> >> -+++ gcc-4_6-branch/gcc/config/rs6000/rs6000-opts.h
> >> -@@ -53,6 +53,7 @@ enum processor_type
> >> -    PROCESSOR_PPCE300C3,
> >> -    PROCESSOR_PPCE500MC,
> >> -    PROCESSOR_PPCE500MC64,
> >> -+   PROCESSOR_PPCE5500,
> >> -    PROCESSOR_POWER4,
> >> -    PROCESSOR_POWER5,
> >> -    PROCESSOR_POWER6,
> >> -Index: gcc-4_6-branch/gcc/config/rs6000/rs6000.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config/rs6000/rs6000.c
> >> -+++ gcc-4_6-branch/gcc/config/rs6000/rs6000.c
> >> -@@ -779,6 +779,25 @@ struct processor_costs ppce500mc64_cost
> >> -   1,                       /* prefetch streams /*/
> >> - };
> >> -
> >> -+/* Instruction costs on PPCE5500 processors.  */
> >> -+static const
> >> -+struct processor_costs ppce5500_cost = {
> >> -+  COSTS_N_INSNS (5),    /* mulsi */
> >> -+  COSTS_N_INSNS (5),    /* mulsi_const */
> >> -+  COSTS_N_INSNS (5),    /* mulsi_const9 */
> >> -+  COSTS_N_INSNS (5),    /* muldi */
> >> -+  COSTS_N_INSNS (14),   /* divsi */
> >> -+  COSTS_N_INSNS (14),   /* divdi */
> >> -+  COSTS_N_INSNS (7),    /* fp */
> >> -+  COSTS_N_INSNS (10),   /* dmul */
> >> -+  COSTS_N_INSNS (36),   /* sdiv */
> >> -+  COSTS_N_INSNS (66),   /* ddiv */
> >> -+  64,                      /* cache line size */
> >> -+  32,                      /* l1 cache */
> >> -+  128,                     /* l2 cache */
> >> -+  1,                       /* prefetch streams /*/
> >> -+};
> >> -+
> >> - /* Instruction costs on AppliedMicro Titan processors.  */
> >> - static const
> >> - struct processor_costs titan_cost = {
> >> -@@ -1784,6 +1803,9 @@ static struct rs6000_ptt const processor
> >> -    | MASK_ISEL},
> >> -   {"e500mc64", PROCESSOR_PPCE500MC64, POWERPC_BASE_MASK |
> MASK_POWERPC64
> >> -    | MASK_PPC_GFXOPT | MASK_ISEL},
> >> -+  {"e5500", PROCESSOR_PPCE5500, POWERPC_BASE_MASK | MASK_POWERPC64
> >> -+   | MASK_PPC_GFXOPT | MASK_ISEL | MASK_CMPB | MASK_POPCNTB
> >> -+   | MASK_POPCNTD},
> >> -   {"860", PROCESSOR_MPCCORE, POWERPC_BASE_MASK | MASK_SOFT_FLOAT},
> >> -   {"970", PROCESSOR_POWER4,
> >> -    POWERPC_7400_MASK | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64},
> >> -@@ -2741,7 +2763,8 @@ rs6000_option_override_internal (bool gl
> >> -               : PROCESSOR_DEFAULT));
> >> -
> >> -   if (rs6000_cpu == PROCESSOR_PPCE300C2 || rs6000_cpu ==
> PROCESSOR_PPCE300C3
> >> --      || rs6000_cpu == PROCESSOR_PPCE500MC || rs6000_cpu ==
> PROCESSOR_PPCE500MC64)
> >> -+      || rs6000_cpu == PROCESSOR_PPCE500MC || rs6000_cpu ==
> PROCESSOR_PPCE500MC64
> >> -+      || rs6000_cpu == PROCESSOR_PPCE5500)
> >> -     {
> >> -       if (TARGET_ALTIVEC)
> >> -    error ("AltiVec not supported in this target");
> >> -@@ -2842,9 +2865,14 @@ rs6000_option_override_internal (bool gl
> >> -      user's opinion, though.  */
> >> -   if (rs6000_block_move_inline_limit == 0
> >> -       && (rs6000_cpu == PROCESSOR_PPCE500MC
> >> --     || rs6000_cpu == PROCESSOR_PPCE500MC64))
> >> -+     || rs6000_cpu == PROCESSOR_PPCE500MC64
> >> -+     || rs6000_cpu == PROCESSOR_PPCE5500))
> >> -     rs6000_block_move_inline_limit = 128;
> >> -
> >> -+  /* Those machines does not have fsqrt instruction */
> >> -+  if (rs6000_cpu == PROCESSOR_PPCE5500)
> >> -+    target_flags &= ~MASK_PPC_GPOPT;
> >> -+
> >> -   /* store_one_arg depends on expand_block_move to handle at least the
> >> -      size of reg_parm_stack_space.  */
> >> -   if (rs6000_block_move_inline_limit < (TARGET_POWERPC64 ? 64 : 32))
> >> -@@ -2976,7 +3004,8 @@ rs6000_option_override_internal (bool gl
> >> - #endif
> >> -
> >> -   if (TARGET_E500 || rs6000_cpu == PROCESSOR_PPCE500MC
> >> --      || rs6000_cpu == PROCESSOR_PPCE500MC64)
> >> -+      || rs6000_cpu == PROCESSOR_PPCE500MC64
> >> -+      || rs6000_cpu == PROCESSOR_PPCE5500)
> >> -     {
> >> -       /* The e500 and e500mc do not have string instructions, and we
> set
> >> -     MASK_STRING above when optimizing for size.  */
> >> -@@ -3023,7 +3052,8 @@ rs6000_option_override_internal (bool gl
> >> -                             || rs6000_cpu == PROCESSOR_POWER6
> >> -                             || rs6000_cpu == PROCESSOR_POWER7
> >> -                             || rs6000_cpu == PROCESSOR_PPCE500MC
> >> --                            || rs6000_cpu == PROCESSOR_PPCE500MC64);
> >> -+                            || rs6000_cpu == PROCESSOR_PPCE500MC64
> >> -+                            || rs6000_cpu == PROCESSOR_PPCE5500);
> >> -
> >> -   /* Allow debug switches to override the above settings.  These are
> set to -1
> >> -      in rs6000.opt to indicate the user hasn't directly set the
> switch.  */
> >> -@@ -3245,6 +3275,10 @@ rs6000_option_override_internal (bool gl
> >> -    rs6000_cost = &ppce500mc64_cost;
> >> -    break;
> >> -
> >> -+      case PROCESSOR_PPCE5500:
> >> -+   rs6000_cost = &ppce5500_cost;
> >> -+   break;
> >> -+
> >> -       case PROCESSOR_TITAN:
> >> -    rs6000_cost = &titan_cost;
> >> -    break;
> >> -@@ -23227,6 +23261,7 @@ rs6000_adjust_cost (rtx insn, rtx link,
> >> -                  || rs6000_cpu_attr == CPU_PPC750
> >> -                  || rs6000_cpu_attr == CPU_PPC7400
> >> -                  || rs6000_cpu_attr == CPU_PPC7450
> >> -+                 || rs6000_cpu_attr == CPU_PPCE5500
> >> -                  || rs6000_cpu_attr == CPU_POWER4
> >> -                  || rs6000_cpu_attr == CPU_POWER5
> >> -             || rs6000_cpu_attr == CPU_POWER7
> >> -@@ -23771,6 +23806,7 @@ rs6000_issue_rate (void)
> >> -   case CPU_PPCE300C3:
> >> -   case CPU_PPCE500MC:
> >> -   case CPU_PPCE500MC64:
> >> -+  case CPU_PPCE5500:
> >> -   case CPU_TITAN:
> >> -     return 2;
> >> -   case CPU_RIOS2:
> >> -Index: gcc-4_6-branch/gcc/config/rs6000/rs6000.h
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config/rs6000/rs6000.h
> >> -+++ gcc-4_6-branch/gcc/config/rs6000/rs6000.h
> >> -@@ -168,6 +168,7 @@
> >> - %{mcpu=e300c3: -me300} \
> >> - %{mcpu=e500mc: -me500mc} \
> >> - %{mcpu=e500mc64: -me500mc64} \
> >> -+%{mcpu=e5500: -me5500} \
> >> - %{maltivec: -maltivec} \
> >> - %{mvsx: -mvsx %{!maltivec: -maltivec} %{!mcpu*: %(asm_cpu_power7)}} \
> >> - -many"
> >> -@@ -477,13 +478,13 @@ extern int rs6000_vector_align[];
> >> -
> >> - #define TARGET_FCTIDZ      TARGET_FCFID
> >> - #define TARGET_STFIWX      TARGET_PPC_GFXOPT
> >> --#define TARGET_LFIWAX      TARGET_CMPB
> >> --#define TARGET_LFIWZX      TARGET_POPCNTD
> >> --#define TARGET_FCFIDS      TARGET_POPCNTD
> >> --#define TARGET_FCFIDU      TARGET_POPCNTD
> >> --#define TARGET_FCFIDUS     TARGET_POPCNTD
> >> --#define TARGET_FCTIDUZ     TARGET_POPCNTD
> >> --#define TARGET_FCTIWUZ     TARGET_POPCNTD
> >> -+#define TARGET_LFIWAX      (TARGET_CMPB && rs6000_cpu !=
> PROCESSOR_PPCE5500)
> >> -+#define TARGET_LFIWZX      (TARGET_POPCNTD && rs6000_cpu !=
> PROCESSOR_PPCE5500)
> >> -+#define TARGET_FCFIDS      TARGET_LFIWZX
> >> -+#define TARGET_FCFIDU      TARGET_LFIWZX
> >> -+#define TARGET_FCFIDUS     TARGET_LFIWZX
> >> -+#define TARGET_FCTIDUZ     TARGET_LFIWZX
> >> -+#define TARGET_FCTIWUZ     TARGET_LFIWZX
> >> -
> >> - /* E500 processors only support plain "sync", not lwsync.  */
> >> - #define TARGET_NO_LWSYNC TARGET_E500
> >> -@@ -494,10 +495,12 @@ extern int rs6000_vector_align[];
> >> -
> >> - #define TARGET_FRE (TARGET_HARD_FLOAT && TARGET_FPRS \
> >> -                     && TARGET_DOUBLE_FLOAT \
> >> --                    && (TARGET_POPCNTB || VECTOR_UNIT_VSX_P (DFmode)))
> >> -+                    && (TARGET_POPCNTB || VECTOR_UNIT_VSX_P (DFmode))
> \
> >> -+                    && rs6000_cpu != PROCESSOR_PPCE5500)
> >> -
> >> - #define TARGET_FRSQRTES    (TARGET_HARD_FLOAT && TARGET_POPCNTB \
> >> --                    && TARGET_FPRS && TARGET_SINGLE_FLOAT)
> >> -+                    && TARGET_FPRS && TARGET_SINGLE_FLOAT \
> >> -+                    && rs6000_cpu != PROCESSOR_PPCE5500)
> >> -
> >> - #define TARGET_FRSQRTE     (TARGET_HARD_FLOAT && TARGET_FPRS \
> >> -                     && TARGET_DOUBLE_FLOAT \
> >> -Index: gcc-4_6-branch/gcc/config/rs6000/rs6000.md
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config/rs6000/rs6000.md
> >> -+++ gcc-4_6-branch/gcc/config/rs6000/rs6000.md
> >> -@@ -126,7 +126,7 @@
> >> -
> >> - ;; Define an insn type attribute.  This is used in function unit delay
> >> - ;; computations.
> >> --(define_attr "type"
> "integer,two,three,load,load_ext,load_ext_u,load_ext_ux,load_ux,load_u,store,store_ux,store_u,fpload,fpload_ux,fpload_u,fpstore,fpstore_ux,fpstore_u,vecload,vecstore,imul,imul2,imul3,lmul,idiv,ldiv,insert_word,branch,cmp,fast_compare,compare,var_delayed_compare,delayed_compare,imul_compare,lmul_compare,fpcompare,cr_logical,delayed_cr,mfcr,mfcrf,mtcr,mfjmpr,mtjmpr,fp,fpsimple,dmul,sdiv,ddiv,ssqrt,dsqrt,jmpreg,brinc,vecsimple,veccomplex,vecdiv,veccmp,veccmpsimple,vecperm,vecfloat,vecfdiv,isync,sync,load_l,store_c,shift,trap,insert_dword,var_shift_rotate,cntlz,exts,mffgpr,mftgpr,isel"
> >> -+(define_attr "type"
> "integer,two,three,load,load_ext,load_ext_u,load_ext_ux,load_ux,load_u,store,store_ux,store_u,fpload,fpload_ux,fpload_u,fpstore,fpstore_ux,fpstore_u,vecload,vecstore,imul,imul2,imul3,lmul,idiv,ldiv,insert_word,branch,cmp,fast_compare,compare,var_delayed_compare,delayed_compare,imul_compare,lmul_compare,fpcompare,cr_logical,delayed_cr,mfcr,mfcrf,mtcr,mfjmpr,mtjmpr,fp,fpsimple,dmul,sdiv,ddiv,ssqrt,dsqrt,jmpreg,brinc,vecsimple,veccomplex,vecdiv,veccmp,veccmpsimple,vecperm,vecfloat,vecfdiv,isync,sync,load_l,store_c,shift,trap,insert_dword,var_shift_rotate,cntlz,exts,mffgpr,mftgpr,isel,popcnt"
> >> -   (const_string "integer"))
> >> -
> >> - ;; Define floating point instruction sub-types for use with Xfpu.md
> >> -@@ -148,7 +148,7 @@
> >> - ;; Processor type -- this attribute must exactly match the
> processor_type
> >> - ;; enumeration in rs6000.h.
> >> -
> >> --(define_attr "cpu"
> "rios1,rios2,rs64a,mpccore,ppc403,ppc405,ppc440,ppc476,ppc601,ppc603,ppc604,ppc604e,ppc620,ppc630,ppc750,ppc7400,ppc7450,ppc8540,ppce300c2,ppce300c3,ppce500mc,ppce500mc64,power4,power5,power6,power7,cell,ppca2,titan"
> >> -+(define_attr "cpu"
> "rios1,rios2,rs64a,mpccore,ppc403,ppc405,ppc440,ppc476,ppc601,ppc603,ppc604,ppc604e,ppc620,ppc630,ppc750,ppc7400,ppc7450,ppc8540,ppce300c2,ppce300c3,ppce500mc,ppce500mc64,ppce5500,power4,power5,power6,power7,cell,ppca2,titan"
> >> -   (const (symbol_ref "rs6000_cpu_attr")))
> >> -
> >> -
> >> -@@ -176,6 +176,7 @@
> >> - (include "e300c2c3.md")
> >> - (include "e500mc.md")
> >> - (include "e500mc64.md")
> >> -+(include "e5500.md")
> >> - (include "power4.md")
> >> - (include "power5.md")
> >> - (include "power6.md")
> >> -@@ -2302,13 +2303,17 @@
> >> -         (unspec:GPR [(match_operand:GPR 1 "gpc_reg_operand" "r")]
> >> -                      UNSPEC_POPCNTB))]
> >> -   "TARGET_POPCNTB"
> >> --  "popcntb %0,%1")
> >> -+  "popcntb %0,%1"
> >> -+  [(set_attr "length" "4")
> >> -+   (set_attr "type" "popcnt")])
> >> -
> >> - (define_insn "popcntd<mode>2"
> >> -   [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
> >> -    (popcount:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")))]
> >> -   "TARGET_POPCNTD"
> >> --  "popcnt<wd> %0,%1")
> >> -+  "popcnt<wd> %0,%1"
> >> -+  [(set_attr "length" "4")
> >> -+   (set_attr "type" "popcnt")])
> >> -
> >> - (define_expand "popcount<mode>2"
> >> -   [(set (match_operand:GPR 0 "gpc_reg_operand" "")
> >> -@@ -5957,10 +5962,10 @@
> >> -    && ((TARGET_PPC_GFXOPT
> >> -         && !HONOR_NANS (<MODE>mode)
> >> -         && !HONOR_SIGNED_ZEROS (<MODE>mode))
> >> --       || TARGET_CMPB
> >> -+       || TARGET_LFIWAX
> >> -        || VECTOR_UNIT_VSX_P (<MODE>mode))"
> >> - {
> >> --  if (TARGET_CMPB || VECTOR_UNIT_VSX_P (<MODE>mode))
> >> -+  if (TARGET_LFIWAX || VECTOR_UNIT_VSX_P (<MODE>mode))
> >> -     {
> >> -       emit_insn (gen_copysign<mode>3_fcpsgn (operands[0], operands[1],
> >> -                                         operands[2]));
> >> -@@ -5979,7 +5984,7 @@
> >> -    (unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "<rreg2>")
> >> -                  (match_operand:SFDF 2 "gpc_reg_operand" "<rreg2>")]
> >> -                 UNSPEC_COPYSIGN))]
> >> --  "TARGET_CMPB && !VECTOR_UNIT_VSX_P (<MODE>mode)"
> >> -+  "TARGET_LFIWAX && !VECTOR_UNIT_VSX_P (<MODE>mode)"
> >> -   "fcpsgn %0,%2,%1"
> >> -   [(set_attr "type" "fp")])
> >> -
> >> diff --git a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/pr32219.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/pr32219.patch
> >> deleted file mode 100644
> >> index c0e3594..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/pr32219.patch
> >> +++ /dev/null
> >> @@ -1,72 +0,0 @@
> >> -Upstream-Status:Backport
> >> -Hi,
> >> -
> >> -As suggested by richi.
> >> -regtested on i686-linux-gnu with all default languages and no
> regressions.
> >> -Ok for trunk?
> >> -
> >> -gcc/ChangeLog
> >> -2010-03-15  Bernhard Reutner-Fischer  <aldot at gcc.gnu.org>
> >> -
> >> -    PR target/32219
> >> -    * varasm.c (default_binds_local_p_1): Weak data is not local.
> >> -
> >> -gcc/testsuite/ChangeLog
> >> -2010-03-15  Bernhard Reutner-Fischer  <aldot at gcc.gnu.org>
> >> -
> >> -    PR target/32219
> >> -    * gcc.dg/visibility-21.c: New test.
> >> -
> >> -Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
> >> ----
> >> - gcc/testsuite/gcc.dg/visibility-21.c |   14 ++++++++++++++
> >> - gcc/varasm.c                         |    8 ++++----
> >> - 2 files changed, 18 insertions(+), 4 deletions(-)
> >> - create mode 100644 gcc/testsuite/gcc.dg/visibility-21.c
> >> -
> >> -Index: gcc-4_6-branch/gcc/testsuite/gcc.dg/visibility-21.c
> >> -===================================================================
> >> ---- /dev/null       1970-01-01 00:00:00.000000000 +0000
> >> -+++ gcc-4_6-branch/gcc/testsuite/gcc.dg/visibility-21.c     2011-10-18
> 17:11:33.224827436 -0700
> >> -@@ -0,0 +1,14 @@
> >> -+/* PR target/32219 */
> >> -+/* { dg-do run } */
> >> -+/* { dg-require-visibility "" } */
> >> -+/* { dg-options "-fPIC" { target fpic } } */
> >> -+
> >> -+extern void f() __attribute__((weak,visibility("hidden")));
> >> -+extern int puts( char const* );
> >> -+int main()
> >> -+{
> >> -+   if (f)
> >> -+           f();
> >> -+   return 0;
> >> -+}
> >> -+
> >> -Index: gcc-4_6-branch/gcc/varasm.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/varasm.c        2011-09-16
> 19:58:21.000000000 -0700
> >> -+++ gcc-4_6-branch/gcc/varasm.c     2011-10-18 17:19:06.431074788 -0700
> >> -@@ -6760,6 +6760,10 @@
> >> -   /* Static variables are always local.  */
> >> -   else if (! TREE_PUBLIC (exp))
> >> -     local_p = true;
> >> -+  /* hidden weak can't be overridden by something non-local, all
> >> -+     that is possible is that it is not defined at all. */
> >> -+  else if (DECL_WEAK (exp))
> >> -+    local_p = false;
> >> -   /* A variable is local if the user has said explicitly that it will
> >> -      be.  */
> >> -   else if ((DECL_VISIBILITY_SPECIFIED (exp)
> >> -@@ -6773,11 +6777,6 @@
> >> -      local.  */
> >> -   else if (DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT)
> >> -     local_p = true;
> >> --  /* Default visibility weak data can be overridden by a strong symbol
> >> --     in another module and so are not local.  */
> >> --  else if (DECL_WEAK (exp)
> >> --      && !resolved_locally)
> >> --    local_p = false;
> >> -   /* If PIC, then assume that any global name can be overridden by
> >> -      symbols resolved from other modules.  */
> >> -   else if (shlib)
> >> diff --git a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/pr46934.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/pr46934.patch
> >> deleted file mode 100644
> >> index 60b7012..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/pr46934.patch
> >> +++ /dev/null
> >> @@ -1,393 +0,0 @@
> >> -Upstream-Status:Backport
> >> -2011-09-19  chengbin  <bin.cheng at arm.com>
> >> -
> >> -    Backport r174035 from mainline
> >> -    2011-05-22  Tom de Vries  <tom at codesourcery.com>
> >> -
> >> -    PR middle-end/48689
> >> -    * fold-const.c (fold_checksum_tree): Guard TREE_CHAIN use with
> >> -    CODE_CONTAINS_STRUCT (TS_COMMON).
> >> -
> >> -    Backport r172297 from mainline
> >> -    2011-04-11  Chung-Lin Tang  <cltang at codesourcery.com>
> >> -            Richard Earnshaw  <rearnsha at arm.com>
> >> -
> >> -    PR target/48250
> >> -    * config/arm/arm.c (arm_legitimize_reload_address): Update cases
> >> -    to use sign-magnitude offsets. Reject unsupported unaligned
> >> -    cases. Add detailed description in comments.
> >> -    * config/arm/arm.md (reload_outdf): Disable for ARM mode; change
> >> -    condition from TARGET_32BIT to TARGET_ARM.
> >> -
> >> -    Backport r171978 from mainline
> >> -    2011-04-05  Tom de Vries  <tom at codesourcery.com>
> >> -
> >> -    PR target/43920
> >> -    * config/arm/arm.h (BRANCH_COST): Set to 1 for Thumb-2 when
> optimizing
> >> -    for size.
> >> -
> >> -    Backport r171632 from mainline
> >> -    2011-03-28  Richard Sandiford  <richard.sandiford at linaro.org>
> >> -
> >> -    * builtins.c (expand_builtin_memset_args): Use gen_int_mode
> >> -    instead of GEN_INT.
> >> -
> >> -    Backport r171379 from mainline
> >> -    2011-03-23  Chung-Lin Tang  <cltang at codesourcery.com>
> >> -
> >> -    PR target/46934
> >> -    * config/arm/arm.md (casesi): Use the gen_int_mode() function
> >> -    to subtract lower bound instead of GEN_INT().
> >> -
> >> -    Backport r171251 from mainline
> >> -    2011-03-21  Daniel Jacobowitz  <dan at codesourcery.com>
> >> -
> >> -    * config/arm/unwind-arm.c (__gnu_unwind_pr_common): Correct test
> >> -    for barrier handlers.
> >> -
> >> -    Backport r171096 from mainline
> >> -    2011-03-17  Chung-Lin Tang  <cltang at codesourcery.com>
> >> -
> >> -    PR target/43872
> >> -    * config/arm/arm.c (arm_get_frame_offsets): Adjust early
> >> -    return condition with !cfun->calls_alloca.
> >> -
> >> -Index: gcc-4_6-branch/gcc/builtins.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/builtins.c      2011-10-17
> 17:45:32.050502963 -0700
> >> -+++ gcc-4_6-branch/gcc/builtins.c   2011-10-17 17:46:11.154696878 -0700
> >> -@@ -3972,6 +3972,7 @@
> >> - {
> >> -   tree fndecl, fn;
> >> -   enum built_in_function fcode;
> >> -+  enum machine_mode val_mode;
> >> -   char c;
> >> -   unsigned int dest_align;
> >> -   rtx dest_mem, dest_addr, len_rtx;
> >> -@@ -4006,14 +4007,14 @@
> >> -
> >> -   len_rtx = expand_normal (len);
> >> -   dest_mem = get_memory_rtx (dest, len);
> >> -+  val_mode = TYPE_MODE (unsigned_char_type_node);
> >> -
> >> -   if (TREE_CODE (val) != INTEGER_CST)
> >> -     {
> >> -       rtx val_rtx;
> >> -
> >> -       val_rtx = expand_normal (val);
> >> --      val_rtx = convert_to_mode (TYPE_MODE (unsigned_char_type_node),
> >> --                            val_rtx, 0);
> >> -+      val_rtx = convert_to_mode (val_mode, val_rtx, 0);
> >> -
> >> -       /* Assume that we can memset by pieces if we can store
> >> -        * the coefficients by pieces (in the required modes).
> >> -@@ -4024,8 +4025,7 @@
> >> -                              builtin_memset_read_str, &c, dest_align,
> >> -                              true))
> >> -    {
> >> --     val_rtx = force_reg (TYPE_MODE (unsigned_char_type_node),
> >> --                          val_rtx);
> >> -+     val_rtx = force_reg (val_mode, val_rtx);
> >> -      store_by_pieces (dest_mem, tree_low_cst (len, 1),
> >> -                       builtin_memset_gen_str, val_rtx, dest_align,
> >> -                       true, 0);
> >> -@@ -4051,7 +4051,8 @@
> >> -                              true))
> >> -    store_by_pieces (dest_mem, tree_low_cst (len, 1),
> >> -                     builtin_memset_read_str, &c, dest_align, true, 0);
> >> --      else if (!set_storage_via_setmem (dest_mem, len_rtx, GEN_INT
> (c),
> >> -+      else if (!set_storage_via_setmem (dest_mem, len_rtx,
> >> -+                                   gen_int_mode (c, val_mode),
> >> -                                    dest_align, expected_align,
> >> -                                    expected_size))
> >> -    goto do_libcall;
> >> -Index: gcc-4_6-branch/gcc/config/arm/arm.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config/arm/arm.c        2011-10-17
> 17:45:41.914551883 -0700
> >> -+++ gcc-4_6-branch/gcc/config/arm/arm.c     2011-10-17
> 17:48:35.447412371 -0700
> >> -@@ -6406,23 +6406,126 @@
> >> -       HOST_WIDE_INT val = INTVAL (XEXP (*p, 1));
> >> -       HOST_WIDE_INT low, high;
> >> -
> >> --      if (mode == DImode || (mode == DFmode && TARGET_SOFT_FLOAT))
> >> --   low = ((val & 0xf) ^ 0x8) - 0x8;
> >> --      else if (TARGET_MAVERICK && TARGET_HARD_FLOAT)
> >> --   /* Need to be careful, -256 is not a valid offset.  */
> >> --   low = val >= 0 ? (val & 0xff) : -((-val) & 0xff);
> >> --      else if (mode == SImode
> >> --          || (mode == SFmode && TARGET_SOFT_FLOAT)
> >> --          || ((mode == HImode || mode == QImode) && ! arm_arch4))
> >> --   /* Need to be careful, -4096 is not a valid offset.  */
> >> --   low = val >= 0 ? (val & 0xfff) : -((-val) & 0xfff);
> >> --      else if ((mode == HImode || mode == QImode) && arm_arch4)
> >> --   /* Need to be careful, -256 is not a valid offset.  */
> >> --   low = val >= 0 ? (val & 0xff) : -((-val) & 0xff);
> >> --      else if (GET_MODE_CLASS (mode) == MODE_FLOAT
> >> --          && TARGET_HARD_FLOAT && TARGET_FPA)
> >> --   /* Need to be careful, -1024 is not a valid offset.  */
> >> --   low = val >= 0 ? (val & 0x3ff) : -((-val) & 0x3ff);
> >> -+      /* Detect coprocessor load/stores.  */
> >> -+      bool coproc_p = ((TARGET_HARD_FLOAT
> >> -+                   && (TARGET_VFP || TARGET_FPA || TARGET_MAVERICK)
> >> -+                   && (mode == SFmode || mode == DFmode
> >> -+                       || (mode == DImode && TARGET_MAVERICK)))
> >> -+                  || (TARGET_REALLY_IWMMXT
> >> -+                      && VALID_IWMMXT_REG_MODE (mode))
> >> -+                  || (TARGET_NEON
> >> -+                      && (VALID_NEON_DREG_MODE (mode)
> >> -+                          || VALID_NEON_QREG_MODE (mode))));
> >> -+
> >> -+      /* For some conditions, bail out when lower two bits are
> unaligned.  */
> >> -+      if ((val & 0x3) != 0
> >> -+     /* Coprocessor load/store indexes are 8-bits + '00' appended.  */
> >> -+     && (coproc_p
> >> -+         /* For DI, and DF under soft-float: */
> >> -+         || ((mode == DImode || mode == DFmode)
> >> -+             /* Without ldrd, we use stm/ldm, which does not
> >> -+                fair well with unaligned bits.  */
> >> -+             && (! TARGET_LDRD
> >> -+                 /* Thumb-2 ldrd/strd is [-1020,+1020] in steps of
> 4.  */
> >> -+                 || TARGET_THUMB2))))
> >> -+   return false;
> >> -+
> >> -+      /* When breaking down a [reg+index] reload address into
> [(reg+high)+low],
> >> -+    of which the (reg+high) gets turned into a reload add insn,
> >> -+    we try to decompose the index into high/low values that can often
> >> -+    also lead to better reload CSE.
> >> -+    For example:
> >> -+            ldr r0, [r2, #4100]  // Offset too large
> >> -+            ldr r1, [r2, #4104]  // Offset too large
> >> -+
> >> -+    is best reloaded as:
> >> -+            add t1, r2, #4096
> >> -+            ldr r0, [t1, #4]
> >> -+            add t2, r2, #4096
> >> -+            ldr r1, [t2, #8]
> >> -+
> >> -+    which post-reload CSE can simplify in most cases to eliminate the
> >> -+    second add instruction:
> >> -+            add t1, r2, #4096
> >> -+            ldr r0, [t1, #4]
> >> -+            ldr r1, [t1, #8]
> >> -+
> >> -+    The idea here is that we want to split out the bits of the
> constant
> >> -+    as a mask, rather than as subtracting the maximum offset that the
> >> -+    respective type of load/store used can handle.
> >> -+
> >> -+    When encountering negative offsets, we can still utilize it even
> if
> >> -+    the overall offset is positive; sometimes this may lead to an
> immediate
> >> -+    that can be constructed with fewer instructions.
> >> -+    For example:
> >> -+            ldr r0, [r2, #0x3FFFFC]
> >> -+
> >> -+    This is best reloaded as:
> >> -+            add t1, r2, #0x400000
> >> -+            ldr r0, [t1, #-4]
> >> -+
> >> -+    The trick for spotting this for a load insn with N bits of offset
> >> -+    (i.e. bits N-1:0) is to look at bit N; if it is set, then chose a
> >> -+    negative offset that is going to make bit N and all the bits below
> >> -+    it become zero in the remainder part.
> >> -+
> >> -+    The SIGN_MAG_LOW_ADDR_BITS macro below implements this, with
> respect
> >> -+    to sign-magnitude addressing (i.e. separate +- bit, or 1's
> complement),
> >> -+    used in most cases of ARM load/store instructions.  */
> >> -+
> >> -+#define SIGN_MAG_LOW_ADDR_BITS(VAL, N)
>      \
> >> -+      (((VAL) & ((1 << (N)) - 1))                                  \
> >> -+       ? (((VAL) & ((1 << ((N) + 1)) - 1)) ^ (1 << (N))) - (1 <<
> (N))      \
> >> -+       : 0)
> >> -+
> >> -+      if (coproc_p)
> >> -+   low = SIGN_MAG_LOW_ADDR_BITS (val, 10);
> >> -+      else if (GET_MODE_SIZE (mode) == 8)
> >> -+   {
> >> -+     if (TARGET_LDRD)
> >> -+       low = (TARGET_THUMB2
> >> -+              ? SIGN_MAG_LOW_ADDR_BITS (val, 10)
> >> -+              : SIGN_MAG_LOW_ADDR_BITS (val, 8));
> >> -+     else
> >> -+       /* For pre-ARMv5TE (without ldrd), we use ldm/stm(db/da/ib)
> >> -+          to access doublewords. The supported load/store offsets are
> >> -+          -8, -4, and 4, which we try to produce here.  */
> >> -+       low = ((val & 0xf) ^ 0x8) - 0x8;
> >> -+   }
> >> -+      else if (GET_MODE_SIZE (mode) < 8)
> >> -+   {
> >> -+     /* NEON element load/stores do not have an offset.  */
> >> -+     if (TARGET_NEON_FP16 && mode == HFmode)
> >> -+       return false;
> >> -+
> >> -+     if (TARGET_THUMB2)
> >> -+       {
> >> -+         /* Thumb-2 has an asymmetrical index range of (-256,4096).
> >> -+            Try the wider 12-bit range first, and re-try if the result
> >> -+            is out of range.  */
> >> -+         low = SIGN_MAG_LOW_ADDR_BITS (val, 12);
> >> -+         if (low < -255)
> >> -+           low = SIGN_MAG_LOW_ADDR_BITS (val, 8);
> >> -+       }
> >> -+     else
> >> -+       {
> >> -+         if (mode == HImode || mode == HFmode)
> >> -+           {
> >> -+             if (arm_arch4)
> >> -+               low = SIGN_MAG_LOW_ADDR_BITS (val, 8);
> >> -+             else
> >> -+               {
> >> -+                 /* The storehi/movhi_bytes fallbacks can use only
> >> -+                    [-4094,+4094] of the full ldrb/strb index range.
> */
> >> -+                 low = SIGN_MAG_LOW_ADDR_BITS (val, 12);
> >> -+                 if (low == 4095 || low == -4095)
> >> -+                   return false;
> >> -+               }
> >> -+           }
> >> -+         else
> >> -+           low = SIGN_MAG_LOW_ADDR_BITS (val, 12);
> >> -+       }
> >> -+   }
> >> -       else
> >> -    return false;
> >> -
> >> -@@ -15415,7 +15518,10 @@
> >> -   offsets->soft_frame = offsets->saved_regs +
> CALLER_INTERWORKING_SLOT_SIZE;
> >> -   /* A leaf function does not need any stack alignment if it has
> nothing
> >> -      on the stack.  */
> >> --  if (leaf && frame_size == 0)
> >> -+  if (leaf && frame_size == 0
> >> -+      /* However if it calls alloca(), we have a dynamically allocated
> >> -+    block of BIGGEST_ALIGNMENT on stack, so still do stack
> alignment.  */
> >> -+      && ! cfun->calls_alloca)
> >> -     {
> >> -       offsets->outgoing_args = offsets->soft_frame;
> >> -       offsets->locals_base = offsets->soft_frame;
> >> -Index: gcc-4_6-branch/gcc/config/arm/arm.h
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config/arm/arm.h        2011-10-17
> 17:45:41.910551858 -0700
> >> -+++ gcc-4_6-branch/gcc/config/arm/arm.h     2011-10-17
> 17:48:35.447412371 -0700
> >> -@@ -2041,7 +2041,8 @@
> >> - /* Try to generate sequences that don't involve branches, we can then
> use
> >> -    conditional instructions */
> >> - #define BRANCH_COST(speed_p, predictable_p) \
> >> --  (TARGET_32BIT ? 4 : (optimize > 0 ? 2 : 0))
> >> -+  (TARGET_32BIT ? (TARGET_THUMB2 && !speed_p ? 1 : 4) \
> >> -+           : (optimize > 0 ? 2 : 0))
> >> -
> >> - /* Position Independent Code.  */
> >> - /* We decide which register to use based on the compilation options
> and
> >> -Index: gcc-4_6-branch/gcc/config/arm/arm.md
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config/arm/arm.md       2011-10-17
> 17:46:11.002696119 -0700
> >> -+++ gcc-4_6-branch/gcc/config/arm/arm.md    2011-10-17
> 17:46:11.202697111 -0700
> >> -@@ -6187,7 +6187,7 @@
> >> -   [(match_operand:DF 0 "arm_reload_memory_operand" "=o")
> >> -    (match_operand:DF 1 "s_register_operand" "r")
> >> -    (match_operand:SI 2 "s_register_operand" "=&r")]
> >> --  "TARGET_32BIT"
> >> -+  "TARGET_THUMB2"
> >> -   "
> >> -   {
> >> -     enum rtx_code code = GET_CODE (XEXP (operands[0], 0));
> >> -@@ -8359,7 +8359,8 @@
> >> -    rtx reg = gen_reg_rtx (SImode);
> >> -
> >> -    emit_insn (gen_addsi3 (reg, operands[0],
> >> --                          GEN_INT (-INTVAL (operands[1]))));
> >> -+                          gen_int_mode (-INTVAL (operands[1]),
> >> -+                                        SImode)));
> >> -    operands[0] = reg;
> >> -       }
> >> -
> >> -Index: gcc-4_6-branch/gcc/config/arm/unwind-arm.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/config/arm/unwind-arm.c 2011-10-17
> 17:45:41.390549278 -0700
> >> -+++ gcc-4_6-branch/gcc/config/arm/unwind-arm.c      2011-10-17
> 17:46:11.000000000 -0700
> >> -@@ -1196,8 +1196,6 @@
> >> -              ucbp->barrier_cache.bitpattern[4] = (_uw) &data[1];
> >> -
> >> -              if (data[0] & uint32_highbit)
> >> --               phase2_call_unexpected_after_unwind = 1;
> >> --             else
> >> -                {
> >> -                  data += rtti_count + 1;
> >> -                  /* Setup for entry to the handler.  */
> >> -@@ -1207,6 +1205,8 @@
> >> -                  _Unwind_SetGR (context, 0, (_uw) ucbp);
> >> -                  return _URC_INSTALL_CONTEXT;
> >> -                }
> >> -+             else
> >> -+               phase2_call_unexpected_after_unwind = 1;
> >> -            }
> >> -          if (data[0] & uint32_highbit)
> >> -            data++;
> >> -Index: gcc-4_6-branch/gcc/fold-const.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/fold-const.c    2011-10-17
> 17:45:32.050502963 -0700
> >> -+++ gcc-4_6-branch/gcc/fold-const.c 2011-10-17 17:46:11.178696990 -0700
> >> -@@ -13788,7 +13788,8 @@
> >> -   if (TREE_CODE_CLASS (code) != tcc_type
> >> -       && TREE_CODE_CLASS (code) != tcc_declaration
> >> -       && code != TREE_LIST
> >> --      && code != SSA_NAME)
> >> -+      && code != SSA_NAME
> >> -+      && CODE_CONTAINS_STRUCT (code, TS_COMMON))
> >> -     fold_checksum_tree (TREE_CHAIN (expr), ctx, ht);
> >> -   switch (TREE_CODE_CLASS (code))
> >> -     {
> >> -Index: gcc-4_6-branch/gcc/testsuite/gcc.target/arm/pr40887.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/testsuite/gcc.target/arm/pr40887.c
> 2011-06-24 08:13:47.000000000 -0700
> >> -+++ gcc-4_6-branch/gcc/testsuite/gcc.target/arm/pr40887.c   2011-10-17
> 17:46:11.182697014 -0700
> >> -@@ -1,5 +1,6 @@
> >> - /* { dg-options "-O2 -march=armv5te" }  */
> >> - /* { dg-final { scan-assembler "blx" } } */
> >> -+/* { dg-prune-output "switch .* conflicts with" } */
> >> -
> >> - int (*indirect_func)();
> >> -
> >> -Index: gcc-4_6-branch/gcc/testsuite/gcc.target/arm/pr42575.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/testsuite/gcc.target/arm/pr42575.c
> 2011-06-24 08:13:47.000000000 -0700
> >> -+++ gcc-4_6-branch/gcc/testsuite/gcc.target/arm/pr42575.c   2011-10-17
> 17:46:11.182697014 -0700
> >> -@@ -1,4 +1,4 @@
> >> --/* { dg-options "-O2 -march=armv7-a" }  */
> >> -+/* { dg-options "-O2" }  */
> >> - /* Make sure RA does good job allocating registers and avoids
> >> -    unnecessary moves.  */
> >> - /* { dg-final { scan-assembler-not "mov" } } */
> >> -Index: gcc-4_6-branch/gcc/testsuite/gcc.target/arm/pr43698.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/testsuite/gcc.target/arm/pr43698.c
> 2011-06-24 08:13:47.000000000 -0700
> >> -+++ gcc-4_6-branch/gcc/testsuite/gcc.target/arm/pr43698.c   2011-10-17
> 17:46:11.182697014 -0700
> >> -@@ -1,5 +1,5 @@
> >> - /* { dg-do run } */
> >> --/* { dg-options "-Os -march=armv7-a" } */
> >> -+/* { dg-options "-Os" } */
> >> - #include <stdint.h>
> >> - #include <stdlib.h>
> >> -
> >> -Index: gcc-4_6-branch/gcc/testsuite/gcc.target/arm/pr44788.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/testsuite/gcc.target/arm/pr44788.c
> 2011-06-24 08:13:47.000000000 -0700
> >> -+++ gcc-4_6-branch/gcc/testsuite/gcc.target/arm/pr44788.c   2011-10-17
> 17:46:11.182697014 -0700
> >> -@@ -1,6 +1,6 @@
> >> - /* { dg-do compile } */
> >> - /* { dg-require-effective-target arm_thumb2_ok } */
> >> --/* { dg-options "-Os -fno-strict-aliasing -fPIC -mthumb
> -march=armv7-a -mfpu=vfp3 -mfloat-abi=softfp" } */
> >> -+/* { dg-options "-Os -fno-strict-aliasing -fPIC -mthumb -mfpu=vfp3
> -mfloat-abi=softfp" } */
> >> -
> >> - void joint_decode(float* mlt_buffer1, int t) {
> >> -     int i;
> >> -Index: gcc-4_6-branch/gcc/testsuite/gcc.target/arm/sync-1.c
> >> -===================================================================
> >> ---- gcc-4_6-branch.orig/gcc/testsuite/gcc.target/arm/sync-1.c
>  2011-06-24 08:13:47.000000000 -0700
> >> -+++ gcc-4_6-branch/gcc/testsuite/gcc.target/arm/sync-1.c    2011-10-17
> 17:46:11.182697014 -0700
> >> -@@ -1,5 +1,6 @@
> >> --/* { dg-do run } */
> >> --/* { dg-options "-O2 -march=armv7-a" } */
> >> -+
> >> -+/* { dg-do run { target sync_int_long } } */
> >> -+/* { dg-options "-O2" } */
> >> -
> >> - volatile int mem;
> >> -
> >> diff --git a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/pr47551.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/pr47551.patch
> >> deleted file mode 100644
> >> index 2c6bcda..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/pr47551.patch
> >> +++ /dev/null
> >> @@ -1,64 +0,0 @@
> >> -Upstream-Status:Backport
> >> -2011-02-02  Richard Sandiford  <richard.sandiford at linaro.org>
> >> -
> >> -    gcc/
> >> -    PR target/47551
> >> -    * config/arm/arm.c (coproc_secondary_reload_class): Handle
> >> -    structure modes.  Don't check neon_vector_mem_operand for
> >> -    vector or structure modes.
> >> -
> >> -    gcc/testsuite/
> >> -    PR target/47551
> >> -    * gcc.target/arm/neon-modes-2.c: New test.
> >> -
> >> -=== modified file 'gcc/config/arm/arm.c'
> >> ---- old/gcc/config/arm/arm.c        2011-02-21 14:04:51 +0000
> >> -+++ new/gcc/config/arm/arm.c        2011-03-02 11:38:43 +0000
> >> -@@ -9139,11 +9139,14 @@
> >> -       return GENERAL_REGS;
> >> -     }
> >> -
> >> -+  /* The neon move patterns handle all legitimate vector and struct
> >> -+     addresses.  */
> >> -   if (TARGET_NEON
> >> -+      && MEM_P (x)
> >> -       && (GET_MODE_CLASS (mode) == MODE_VECTOR_INT
> >> --          || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
> >> --      && neon_vector_mem_operand (x, 0))
> >> --     return NO_REGS;
> >> -+     || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT
> >> -+     || VALID_NEON_STRUCT_MODE (mode)))
> >> -+    return NO_REGS;
> >> -
> >> -   if (arm_coproc_mem_operand (x, wb) || s_register_operand (x, mode))
> >> -     return NO_REGS;
> >> -
> >> -=== added file 'gcc/testsuite/gcc.target/arm/neon-modes-2.c'
> >> ---- old/gcc/testsuite/gcc.target/arm/neon-modes-2.c 1970-01-01
> 00:00:00 +0000
> >> -+++ new/gcc/testsuite/gcc.target/arm/neon-modes-2.c 2011-02-02
> 10:02:45 +0000
> >> -@@ -0,0 +1,24 @@
> >> -+/* { dg-do compile } */
> >> -+/* { dg-require-effective-target arm_neon_ok } */
> >> -+/* { dg-options "-O1" } */
> >> -+/* { dg-add-options arm_neon } */
> >> -+
> >> -+#include "arm_neon.h"
> >> -+
> >> -+#define SETUP(A) x##A = vld3_u32 (ptr + A * 0x20)
> >> -+#define MODIFY(A) x##A = vld3_lane_u32 (ptr + A * 0x20 + 0x10, x##A,
> 1)
> >> -+#define STORE(A) vst3_u32 (ptr + A * 0x20, x##A)
> >> -+
> >> -+#define MANY(A) A (0), A (1), A (2), A (3), A (4), A (5)
> >> -+
> >> -+void
> >> -+bar (uint32_t *ptr, int y)
> >> -+{
> >> -+  uint32x2x3_t MANY (SETUP);
> >> -+  int *x = __builtin_alloca (y);
> >> -+  int z[0x1000];
> >> -+  foo (x, z);
> >> -+  MANY (MODIFY);
> >> -+  foo (x, z);
> >> -+  MANY (STORE);
> >> -+}
> >> -
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/use-defaults.h-and-t-oe-in-B.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/use-defaults.h-and-t-oe-in-B.patch
> >> deleted file mode 100644
> >> index b4351ee..0000000
> >> ---
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/use-defaults.h-and-t-oe-in-B.patch
> >> +++ /dev/null
> >> @@ -1,80 +0,0 @@
> >> -Upstream-Status: Pending
> >> -
> >> -Use the defaults.h in ${B} instead of ${S}, and t-oe in ${B}, so that
> >> -the source can be shared between gcc-cross-initial,
> >> -gcc-cross-intermediate, gcc-cross, gcc-runtime, and also the sdk build.
> >> ----
> >> - gcc/Makefile.in  |    2 +-
> >> - gcc/configure    |    4 ++--
> >> - gcc/configure.ac |    4 ++--
> >> - gcc/mkconfig.sh  |    4 ++--
> >> - 4 files changed, 7 insertions(+), 7 deletions(-)
> >> -
> >> -diff --git a/gcc/Makefile.in b/gcc/Makefile.in
> >> -index 7790915..3a0c34a 100644
> >> ---- a/gcc/Makefile.in
> >> -+++ b/gcc/Makefile.in
> >> -@@ -463,7 +463,7 @@ LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h
> ]
> >> - TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@
> >> -
> >> - xmake_file=@xmake_file@
> >> --tmake_file=@tmake_file@
> >> -+tmake_file=@tmake_file@ ./t-oe
> >> - TM_ENDIAN_CONFIG=@TM_ENDIAN_CONFIG@
> >> - TM_MULTILIB_CONFIG=@TM_MULTILIB_CONFIG@
> >> - TM_MULTILIB_EXCEPTIONS_CONFIG=@TM_MULTILIB_EXCEPTIONS_CONFIG@
> >> -diff --git a/gcc/configure b/gcc/configure
> >> -index 82fa3e4..d4711b5 100755
> >> ---- a/gcc/configure
> >> -+++ b/gcc/configure
> >> -@@ -11227,8 +11227,8 @@ for f in $tm_file; do
> >> -        tm_include_list="${tm_include_list} $f"
> >> -        ;;
> >> -     defaults.h )
> >> --       tm_file_list="${tm_file_list} \$(srcdir)/$f"
> >> --       tm_include_list="${tm_include_list} $f"
> >> -+       tm_file_list="${tm_file_list} ./$f"
> >> -+       tm_include_list="${tm_include_list} ./$f"
> >> -        ;;
> >> -     * )
> >> -        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
> >> -diff --git a/gcc/configure.ac b/gcc/configure.ac
> >> -index 844d8da..a960343 100644
> >> ---- a/gcc/configure.ac
> >> -+++ b/gcc/configure.ac
> >> -@@ -1628,8 +1628,8 @@ for f in $tm_file; do
> >> -        tm_include_list="${tm_include_list} $f"
> >> -        ;;
> >> -     defaults.h )
> >> --       tm_file_list="${tm_file_list} \$(srcdir)/$f"
> >> --       tm_include_list="${tm_include_list} $f"
> >> -+       tm_file_list="${tm_file_list} ./$f"
> >> -+       tm_include_list="${tm_include_list} ./$f"
> >> -        ;;
> >> -     * )
> >> -        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
> >> -diff --git a/gcc/mkconfig.sh b/gcc/mkconfig.sh
> >> -index d56df8c..875d0f1 100644
> >> ---- a/gcc/mkconfig.sh
> >> -+++ b/gcc/mkconfig.sh
> >> -@@ -77,7 +77,7 @@ if [ -n "$HEADERS" ]; then
> >> -     if [ $# -ge 1 ]; then
> >> -    echo '#ifdef IN_GCC' >> ${output}T
> >> -    for file in "$@"; do
> >> --       if test x"$file" = x"defaults.h"; then
> >> -+       if test x"$file" = x"./defaults.h"; then
> >> -            postpone_defaults_h="yes"
> >> -        else
> >> -            echo "# include \"$file\"" >> ${output}T
> >> -@@ -103,7 +103,7 @@ esac
> >> -
> >> - # If we postponed including defaults.h, add the #include now.
> >> - if test x"$postpone_defaults_h" = x"yes"; then
> >> --    echo "# include \"defaults.h\"" >> ${output}T
> >> -+    echo "# include \"./defaults.h\"" >> ${output}T
> >> - fi
> >> -
> >> - # Add multiple inclusion protection guard, part two.
> >> ---
> >> -1.7.1
> >> -
> >> diff --git
> a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/zecke-xgcc-cpp.patch
> b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/zecke-xgcc-cpp.patch
> >> deleted file mode 100644
> >> index 6192c48..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/zecke-xgcc-cpp.patch
> >> +++ /dev/null
> >> @@ -1,30 +0,0 @@
> >> -Upstream-Status: Inappropriate [embedded specific]
> >> -
> >> -upstream: n/a
> >> -comment: Use the preprocessor we have just compiled instead the one of
> >> -the system. There might be incompabilities between us and them.
> >> -
> >> -Index: gcc-4.6.0/Makefile.in
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/Makefile.in
> >> -+++ gcc-4.6.0/Makefile.in
> >> -@@ -270,6 +270,7 @@ BASE_TARGET_EXPORTS = \
> >> -    AR="$(AR_FOR_TARGET)"; export AR; \
> >> -    AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
> >> -    CC="$(CC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export
> CC; \
> >> -+   CPP="$(CC_FOR_TARGET) -E"; export CPP; \
> >> -    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
> >> -    CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
> >> -    CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
> >> -Index: gcc-4.6.0/Makefile.tpl
> >> -===================================================================
> >> ---- gcc-4.6.0.orig/Makefile.tpl
> >> -+++ gcc-4.6.0/Makefile.tpl
> >> -@@ -273,6 +273,7 @@ BASE_TARGET_EXPORTS = \
> >> -    AR="$(AR_FOR_TARGET)"; export AR; \
> >> -    AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
> >> -    CC="$(CC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export
> CC; \
> >> -+   CPP="$(CC_FOR_TARGET) -E"; export CPP; \
> >> -    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
> >> -    CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
> >> -    CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
> >> diff --git a/toolchain-layer/recipes-devtools/gcc/gcc-common-4.6.inc
> b/toolchain-layer/recipes-devtools/gcc/gcc-common-4.6.inc
> >> deleted file mode 100644
> >> index f6b4929..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-common-4.6.inc
> >> +++ /dev/null
> >> @@ -1,4 +0,0 @@
> >> -# this will prepend this layer to FILESPATH
> >> -FILESEXTRAPATHS := "${THISDIR}/gcc-4.6"
> >> -PRINC := "${@int(PRINC) + 6}"
> >> -ARM_INSTRUCTION_SET = "arm"
> >> diff --git a/toolchain-layer/recipes-devtools/gcc/
> gcc-cross-canadian_4.6.bb b/toolchain-layer/recipes-devtools/gcc/
> gcc-cross-canadian_4.6.bb
> >> deleted file mode 100644
> >> index 29ddd67..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-cross-canadian_4.6.bb
> >> +++ /dev/null
> >> @@ -1,4 +0,0 @@
> >> -inherit cross-canadian
> >> -
> >> -require recipes-devtools/gcc/gcc-${PV}.inc
> >> -require recipes-devtools/gcc/gcc-cross-canadian.inc
> >> diff --git a/toolchain-layer/recipes-devtools/gcc/
> gcc-cross-initial_4.6.bb b/toolchain-layer/recipes-devtools/gcc/
> gcc-cross-initial_4.6.bb
> >> deleted file mode 100644
> >> index 22d4b05..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-cross-initial_4.6.bb
> >> +++ /dev/null
> >> @@ -1,2 +0,0 @@
> >> -require recipes-devtools/gcc/gcc-cross_${PV}.bb
> >> -require recipes-devtools/gcc/gcc-cross-initial.inc
> >> diff --git a/toolchain-layer/recipes-devtools/gcc/gcc-cross_4.6.bb
> b/toolchain-layer/recipes-devtools/gcc/gcc-cross_4.6.bb
> >> deleted file mode 100644
> >> index cdaa7e8..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-cross_4.6.bb
> >> +++ /dev/null
> >> @@ -1,2 +0,0 @@
> >> -require recipes-devtools/gcc/gcc-${PV}.inc
> >> -require recipes-devtools/gcc/gcc-cross.inc
> >> diff --git a/toolchain-layer/recipes-devtools/gcc/
> gcc-crosssdk-initial_4.6.bb b/toolchain-layer/recipes-devtools/gcc/
> gcc-crosssdk-initial_4.6.bb
> >> deleted file mode 100644
> >> index eff4df1..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-crosssdk-initial_4.6.bb
> >> +++ /dev/null
> >> @@ -1,2 +0,0 @@
> >> -require recipes-devtools/gcc/gcc-cross-initial_${PV}.bb
> >> -require recipes-devtools/gcc/gcc-crosssdk-initial.inc
> >> diff --git a/toolchain-layer/recipes-devtools/gcc/gcc-crosssdk_4.6.bb
> b/toolchain-layer/recipes-devtools/gcc/gcc-crosssdk_4.6.bb
> >> deleted file mode 100644
> >> index 0a9f98a..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-crosssdk_4.6.bb
> >> +++ /dev/null
> >> @@ -1,2 +0,0 @@
> >> -require recipes-devtools/gcc/gcc-cross_${PV}.bb
> >> -require recipes-devtools/gcc/gcc-crosssdk.inc
> >> diff --git a/toolchain-layer/recipes-devtools/gcc/gcc-runtime_4.6.bb
> b/toolchain-layer/recipes-devtools/gcc/gcc-runtime_4.6.bb
> >> deleted file mode 100644
> >> index b755f55..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc-runtime_4.6.bb
> >> +++ /dev/null
> >> @@ -1,2 +0,0 @@
> >> -require recipes-devtools/gcc/gcc-${PV}.inc
> >> -require recipes-devtools/gcc/gcc-runtime.inc
> >> diff --git a/toolchain-layer/recipes-devtools/gcc/gcc_4.6.bb
> b/toolchain-layer/recipes-devtools/gcc/gcc_4.6.bb
> >> deleted file mode 100644
> >> index 6ad8973..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/gcc_4.6.bb
> >> +++ /dev/null
> >> @@ -1,2 +0,0 @@
> >> -require recipes-devtools/gcc/gcc-${PV}.inc
> >> -require recipes-devtools/gcc/gcc-target.inc
> >> diff --git a/toolchain-layer/recipes-devtools/gcc/libgcc_4.6.bb
> b/toolchain-layer/recipes-devtools/gcc/libgcc_4.6.bb
> >> deleted file mode 100644
> >> index fc2c1e3..0000000
> >> --- a/toolchain-layer/recipes-devtools/gcc/libgcc_4.6.bb
> >> +++ /dev/null
> >> @@ -1,71 +0,0 @@
> >> -require recipes-devtools/gcc/gcc-${PV}.inc
> >> -
> >> -INHIBIT_DEFAULT_DEPS = "1"
> >> -
> >> -DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
> >> -
> >> -PKGSUFFIX = ""
> >> -PKGSUFFIX_class-nativesdk = "-nativesdk"
> >> -
> >> -PACKAGES = "\
> >> -    ${PN} \
> >> -    ${PN}-dev \
> >> -    ${PN}-dbg \
> >> -    libgcov${PKGSUFFIX}-dev \
> >> -"
> >> -
> >> -FILES_${PN} = "${base_libdir}/libgcc*.so.*"
> >> -FILES_${PN}-dev = " \
> >> -    ${base_libdir}/libgcc*.so \
> >> -    ${libdir}/${TARGET_SYS}/${BINV}/*crt* \
> >> -    ${libdir}/${TARGET_SYS}/${BINV}/libgcc*"
> >> -FILES_libgcov${PKGSUFFIX}-dev = " \
> >> -    ${libdir}/${TARGET_SYS}/${BINV}/libgcov.a \
> >> -"
> >> -FILES_${PN}-dbg += "${base_libdir}/.debug/"
> >> -
> >> -do_configure () {
> >> -    target=`echo ${MULTIMACH_TARGET_SYS} | sed -e s#-nativesdk##`
> >> -    install -d ${D}${base_libdir} ${D}${libdir}
> >> -    cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/* ${B}
> >> -    mkdir -p ${B}/${BPN}
> >> -    cd ${B}/${BPN}
> >> -    chmod a+x ${S}/${BPN}/configure
> >> -    ${S}/${BPN}/configure ${CONFIGUREOPTS} ${EXTRA_OECONF}
> >> -}
> >> -
> >> -do_compile () {
> >> -    target=`echo ${TARGET_SYS} | sed -e s#-nativesdk##`
> >> -    cd ${B}/${BPN}
> >> -    oe_runmake MULTIBUILDTOP=${B}/$target/${BPN}/
> >> -}
> >> -
> >> -do_install () {
> >> -    target=`echo ${TARGET_SYS} | sed -e s#-nativesdk##`
> >> -    cd ${B}/${BPN}
> >> -    oe_runmake 'DESTDIR=${D}' MULTIBUILDTOP=${B}/$target/${BPN}/
> install
> >> -
> >> -    # Move libgcc_s into /lib
> >> -    mkdir -p ${D}${base_libdir}
> >> -    if [ -f ${D}${libdir}/nof/libgcc_s.so ]; then
> >> -        mv ${D}${libdir}/nof/libgcc* ${D}${base_libdir}
> >> -    else
> >> -        mv ${D}${libdir}/libgcc* ${D}${base_libdir} || true
> >> -    fi
> >> -
> >> -    # install the runtime in /usr/lib/ not in /usr/lib/gcc on target
> >> -    # so that cross-gcc can find it in the sysroot
> >> -
> >> -    mv ${D}${libdir}/gcc/* ${D}${libdir}
> >> -    rm -rf ${D}${libdir}/gcc/
> >> -}
> >> -
> >> -do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_package"
> >> -do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_package"
> >> -do_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_package"
> >> -
> >> -BBCLASSEXTEND = "nativesdk"
> >> -
> >> -INSANE_SKIP_${PN}-dev = "staticdev"
> >> -INSANE_SKIP_libgcov${PKGSUFFIX}-dev = "staticdev"
> >> -
> >> --
> >> 1.9.1
> >>
> >> --
> >> _______________________________________________
> >> Openembedded-devel mailing list
> >> Openembedded-devel at lists.openembedded.org
> >> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
> >
> >
> >
>
>
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
>
>



More information about the Openembedded-devel mailing list