2010-09-20  Jie Zhang  <jie@codesourcery.com>

	Issue #5256

	libstdc++-v3/

	Backport from mainline:

	2010-05-21  Joseph Myers  <joseph@codesourcery.com>
	* acinclude.m4 (GLIBCXX_ENABLE_CLOCALE): Use GNU locale model for
	glibc 2.3 and later, but not uClibc, without an execution test.
	* configure: Regenerate.
	* doc/xml/manual/configure.xml, doc/xml/manual/prerequisites.xml,
	doc/xml/faq.xml: Update.

=== modified file 'libstdc++-v3/acinclude.m4'
Index: gcc-4.5/libstdc++-v3/acinclude.m4
===================================================================
--- gcc-4.5.orig/libstdc++-v3/acinclude.m4
+++ gcc-4.5/libstdc++-v3/acinclude.m4
@@ -1740,41 +1740,11 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
   if test $enable_clocale_flag = gnu; then
     AC_EGREP_CPP([_GLIBCXX_ok], [
     #include <features.h>
-    #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
+    #if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined(__UCLIBC__)
       _GLIBCXX_ok
     #endif
     ], enable_clocale_flag=gnu, enable_clocale_flag=generic)
 
-    if test $enable_clocale = auto; then
-      # Test for bugs early in glibc-2.2.x series
-      AC_TRY_RUN([
-      #define _GNU_SOURCE 1
-      #include <locale.h>
-      #include <string.h>
-      #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-      extern __typeof(newlocale) __newlocale;
-      extern __typeof(duplocale) __duplocale;
-      extern __typeof(strcoll_l) __strcoll_l;
-      #endif
-      int main()
-      {
-	const char __one[] = "Äuglein Augmen";
-        const char __two[] = "Äuglein";
-       	int i;
-        int j;
-        __locale_t        loc;
-        __locale_t        loc_dup;
-        loc = __newlocale(1 << LC_ALL, "de_DE", 0);
-        loc_dup = __duplocale(loc);
-        i = __strcoll_l(__one, __two, loc);
-        j = __strcoll_l(__one, __two, loc_dup);
-        return 0;
-      }
-      ],
-      [enable_clocale_flag=gnu],[enable_clocale_flag=generic],
-      [enable_clocale_flag=generic])
-    fi
-
     # Set it to scream when it hurts.
     ac_save_CFLAGS="$CFLAGS"	
     CFLAGS="-Wimplicit-function-declaration -Werror"
Index: gcc-4.5/libstdc++-v3/configure
===================================================================
--- gcc-4.5.orig/libstdc++-v3/configure
+++ gcc-4.5/libstdc++-v3/configure
@@ -15627,7 +15627,7 @@ fi
 /* end confdefs.h.  */
 
     #include <features.h>
-    #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
+    #if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined(__UCLIBC__)
       _GLIBCXX_ok
     #endif
 
@@ -15641,49 +15641,6 @@ fi
 rm -f conftest*
 
 
-    if test $enable_clocale = auto; then
-      # Test for bugs early in glibc-2.2.x series
-      if test "$cross_compiling" = yes; then :
-  enable_clocale_flag=generic
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-      #define _GNU_SOURCE 1
-      #include <locale.h>
-      #include <string.h>
-      #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-      extern __typeof(newlocale) __newlocale;
-      extern __typeof(duplocale) __duplocale;
-      extern __typeof(strcoll_l) __strcoll_l;
-      #endif
-      int main()
-      {
-	const char __one[] = "Äuglein Augmen";
-        const char __two[] = "Äuglein";
-       	int i;
-        int j;
-        __locale_t        loc;
-        __locale_t        loc_dup;
-        loc = __newlocale(1 << LC_ALL, "de_DE", 0);
-        loc_dup = __duplocale(loc);
-        i = __strcoll_l(__one, __two, loc);
-        j = __strcoll_l(__one, __two, loc_dup);
-        return 0;
-      }
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  enable_clocale_flag=gnu
-else
-  enable_clocale_flag=generic
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-    fi
-
     # Set it to scream when it hurts.
     ac_save_CFLAGS="$CFLAGS"
     CFLAGS="-Wimplicit-function-declaration -Werror"
Index: gcc-4.5/libstdc++-v3/doc/xml/faq.xml
===================================================================
--- gcc-4.5.orig/libstdc++-v3/doc/xml/faq.xml
+++ gcc-4.5/libstdc++-v3/doc/xml/faq.xml
@@ -636,6 +636,8 @@
          C library (glibc) version 2.2.5.  That version of glibc is over a
          year old and contains necessary bugfixes.  Many GNU/Linux distros make
          glibc version 2.3.x available now.
+         libstdc++ 4.6.0 and later require glibc 2.3 or later for this
+         localization and formatting code.
       </para>
       <para>The guideline is simple:  the more recent the C++ library, the
          more recent the C library.  (This is also documented in the main
Index: gcc-4.5/libstdc++-v3/doc/xml/manual/configure.xml
===================================================================
--- gcc-4.5.orig/libstdc++-v3/doc/xml/manual/configure.xml
+++ gcc-4.5/libstdc++-v3/doc/xml/manual/configure.xml
@@ -113,8 +113,7 @@
      <para>If not explicitly specified, the configure proccess tries
       to guess the most suitable package from the choices above. The
       default is 'generic'. On glibc-based systems of sufficient
-      vintage (2.2.5 and newer) and capability (with installed DE and
-      FR locale data), 'gnu' is automatically selected. This option
+      vintage (2.3 and newer), 'gnu' is automatically selected. This option
       can change the library ABI.
      </para>
  </listitem></varlistentry>
Index: gcc-4.5/libstdc++-v3/doc/xml/manual/prerequisites.xml
===================================================================
--- gcc-4.5.orig/libstdc++-v3/doc/xml/manual/prerequisites.xml
+++ gcc-4.5/libstdc++-v3/doc/xml/manual/prerequisites.xml
@@ -52,16 +52,8 @@
 	<para>
 	  If gcc 3.1.0 or later on is being used on linux, an attempt
 	  will be made to use "C" library functionality necessary for
-	  C++ named locale support.  For gcc 3.2.1 and later, this
-	  means that glibc 2.2.5 or later is required and the "C"
-	  library de_DE locale information must be installed.
-	</para>
-
-	<para>
-	  Note however that the sanity checks involving the de_DE
-	  locale are skipped when an explicit --enable-clocale=gnu
-	  configure option is used: only the basic checks are carried
-	  out, defending against misconfigurations.
+	  C++ named locale support.  For gcc 4.6.0 and later, this
+	  means that glibc 2.3 or later is required.
 	</para>
 
 	<para>
