diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 6375e5db74eae6f252891f6775cb2e19212aca8c..74be8ddd3068798b7dee46693ad2bf6676442fbf 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,15 @@
+2011-08-29  Kai Tietz  <ktietz@redhat.com>
+
+	* configure: Regenerated.
+	* config.h.in: Regenerated.
+	* acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR)  Add
+	checks for ECHILD, ENOSPC, EPERM, ETIMEDOUT, and
+	EWOULDBLOCK.
+	*  config/os/mingw32/error_constants.h (errc): Add
+	enumerator values no_child_process, no_space_on_device,
+	not_supported, operation_not_permitted, operation_would_block,
+	timed_out, and value_too_large,
+
 2011-08-29  Paolo Carlini  <paolo.carlini@oracle.com>
 
 	PR libstdc++/50118
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 44ae98469a743d6529e775a35d18931c0d89a5cb..a3e059864d1479205d84e08078f7378876fb8b4b 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -1794,7 +1794,9 @@ AC_DEFUN([GLIBCXX_CHECK_SYSTEM_ERROR], [
 m4_pushdef([n_syserr], [1])dnl
 m4_foreach([syserr], [EOWNERDEAD, ENOTRECOVERABLE, ENOLINK, EPROTO, ENODATA,
 		      ENOSR, ENOSTR, ETIME, EBADMSG, ECANCELED,
-		      EOVERFLOW, ENOTSUP, EIDRM, ETXTBSY],
+		      EOVERFLOW, ENOTSUP, EIDRM, ETXTBSY,
+		      ECHILD, ENOSPC, EPERM,
+		      ETIMEDOUT, EWOULDBLOCK],
 [m4_pushdef([SYSERR], m4_toupper(syserr))dnl
 AC_MSG_CHECKING([for syserr])
 AC_CACHE_VAL([glibcxx_cv_system_error[]n_syserr], [
diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in
index 837e2c7d082d844f6ede9f00f0ca40bd5faa1f84..167f574ffc56eaeaacb7bbf9aaac82ecc8c24d72 100644
--- a/libstdc++-v3/config.h.in
+++ b/libstdc++-v3/config.h.in
@@ -60,6 +60,9 @@
 /* Define if ECANCELED exists. */
 #undef HAVE_ECANCELED
 
+/* Define if ECHILD exists. */
+#undef HAVE_ECHILD
+
 /* Define if EIDRM exists. */
 #undef HAVE_EIDRM
 
@@ -72,6 +75,9 @@
 /* Define if ENOLINK exists. */
 #undef HAVE_ENOLINK
 
+/* Define if ENOSPC exists. */
+#undef HAVE_ENOSPC
+
 /* Define if ENOSR exists. */
 #undef HAVE_ENOSR
 
@@ -90,15 +96,24 @@
 /* Define if EOWNERDEAD exists. */
 #undef HAVE_EOWNERDEAD
 
+/* Define if EPERM exists. */
+#undef HAVE_EPERM
+
 /* Define if EPROTO exists. */
 #undef HAVE_EPROTO
 
 /* Define if ETIME exists. */
 #undef HAVE_ETIME
 
+/* Define if ETIMEDOUT exists. */
+#undef HAVE_ETIMEDOUT
+
 /* Define if ETXTBSY exists. */
 #undef HAVE_ETXTBSY
 
+/* Define if EWOULDBLOCK exists. */
+#undef HAVE_EWOULDBLOCK
+
 /* Define to 1 if you have the <execinfo.h> header file. */
 #undef HAVE_EXECINFO_H
 
diff --git a/libstdc++-v3/config/os/mingw32/error_constants.h b/libstdc++-v3/config/os/mingw32/error_constants.h
index f2a9116ba9ea5a463feddcf8119abe0a25ffde04..15f99671ff87260a2dfe2d3904768cc63a266910 100644
--- a/libstdc++-v3/config/os/mingw32/error_constants.h
+++ b/libstdc++-v3/config/os/mingw32/error_constants.h
@@ -79,13 +79,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 //    network_reset = 				ENETRESET,
 //    network_unreachable = 			ENETUNREACH,
 //    no_buffer_space = 			ENOBUFS,
-//    no_child_process = 			ECHILD,
+#ifdef _GLIBCXX_HAVE_ECHILD
+      no_child_process = 			ECHILD,
+#endif
 //    no_link = 				ENOLINK,
       no_lock_available = 			ENOLCK,
 //    no_message_available = 			ENODATA,
 //    no_message = 				ENOMSG,
 //    no_protocol_option = 			ENOPROTOOPT,
-//    no_space_on_device = 			ENOSPC,
+#ifdef _GLIBCXX_HAVE_ENOSPC
+      no_space_on_device = 			ENOSPC,
+#endif
 //    no_stream_resources = 			ENOSR,
       no_such_device_or_address = 		ENXIO,
       no_such_device = 				ENODEV,
@@ -96,12 +100,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 //    not_a_stream = 				ENOSTR,
 //    not_connected = 				ENOTCONN,
       not_enough_memory = 			ENOMEM,
-//    not_supported = 				ENOTSUP,
+#ifdef _GLIBCXX_HAVE_ENOTSUP
+      not_supported = 				ENOTSUP,
+#endif
 //    operation_canceled = 			ECANCELED,
 //    operation_in_progress = 			EINPROGRESS,
-//    operation_not_permitted = 		EPERM,
+#ifdef _GLIBCXX_HAVE_EPERM
+      operation_not_permitted = 		EPERM,
+#endif
 //    operation_not_supported = 		EOPNOTSUPP,
-//    operation_would_block = 			EWOULDBLOCK,
+#ifdef _GLIBCXX_HAVE_EWOULDBLOCK
+      operation_would_block = 			EWOULDBLOCK,
+#endif
 //    owner_dead = 				EOWNERDEAD,
       permission_denied = 			EACCES,
 //    protocol_error = 				EPROTO,
@@ -113,12 +123,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 //    state_not_recoverable = 			ENOTRECOVERABLE,
 //    stream_timeout = 				ETIME,
 //    text_file_busy = 				ETXTBSY,
-//    timed_out = 				ETIMEDOUT,
+#ifdef _GLIBCXX_HAVE_ETIMEDOUT
+      timed_out = 				ETIMEDOUT,
+#endif
       too_many_files_open_in_system = 		ENFILE,
       too_many_files_open = 			EMFILE,
       too_many_links = 				EMLINK
  //   too_many_symbolic_link_levels = 		ELOOP,
- //   value_too_large = 			EOVERFLOW,
+#ifdef _GLIBCXX_HAVE_EOVERFLOW
+      value_too_large = 			EOVERFLOW,
+#endif
  //   wrong_protocol_type = 			EPROTOTYPE
    };
 
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index dab2637f24ffb36079a398c0ca9ff81c33b8e90b..c160bd99c11a46edd4e2fc26ce0c9e4f273dcb6c 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -17771,6 +17771,171 @@ if test x"$glibcxx_cv_system_error14" = x"yes"; then
 $as_echo "#define HAVE_ETXTBSY 1" >>confdefs.h
 
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ECHILD" >&5
+$as_echo_n "checking for ECHILD... " >&6; }
+if test "${glibcxx_cv_system_error15+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = ECHILD;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error15=yes
+else
+  glibcxx_cv_system_error15=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error15" >&5
+$as_echo "$glibcxx_cv_system_error15" >&6; }
+if test x"$glibcxx_cv_system_error15" = x"yes"; then
+
+$as_echo "#define HAVE_ECHILD 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOSPC" >&5
+$as_echo_n "checking for ENOSPC... " >&6; }
+if test "${glibcxx_cv_system_error16+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = ENOSPC;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error16=yes
+else
+  glibcxx_cv_system_error16=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error16" >&5
+$as_echo "$glibcxx_cv_system_error16" >&6; }
+if test x"$glibcxx_cv_system_error16" = x"yes"; then
+
+$as_echo "#define HAVE_ENOSPC 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EPERM" >&5
+$as_echo_n "checking for EPERM... " >&6; }
+if test "${glibcxx_cv_system_error17+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = EPERM;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error17=yes
+else
+  glibcxx_cv_system_error17=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error17" >&5
+$as_echo "$glibcxx_cv_system_error17" >&6; }
+if test x"$glibcxx_cv_system_error17" = x"yes"; then
+
+$as_echo "#define HAVE_EPERM 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ETIMEDOUT" >&5
+$as_echo_n "checking for ETIMEDOUT... " >&6; }
+if test "${glibcxx_cv_system_error18+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = ETIMEDOUT;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error18=yes
+else
+  glibcxx_cv_system_error18=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error18" >&5
+$as_echo "$glibcxx_cv_system_error18" >&6; }
+if test x"$glibcxx_cv_system_error18" = x"yes"; then
+
+$as_echo "#define HAVE_ETIMEDOUT 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EWOULDBLOCK" >&5
+$as_echo_n "checking for EWOULDBLOCK... " >&6; }
+if test "${glibcxx_cv_system_error19+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = EWOULDBLOCK;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error19=yes
+else
+  glibcxx_cv_system_error19=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_system_error19" >&5
+$as_echo "$glibcxx_cv_system_error19" >&6; }
+if test x"$glibcxx_cv_system_error19" = x"yes"; then
+
+$as_echo "#define HAVE_EWOULDBLOCK 1" >>confdefs.h
+
+fi