Hi, Ruben

    If you back port the std::thread to gcc4.6, you can use the patch.

ps: may you follow the binutils bug issue PR 12762 ( http://sourceware.org/bugzilla/show_bug.cgi?id=12762 )?

    I can't find the smallest testcase.

    Thanks.

--
Best Regards,
xunxun

diff -ruNa old/gcc/config/i386/mingw32.h build/gcc/config/i386/mingw32.h
--- old/gcc/config/i386/mingw32.h       2010-09-30 02:55:44 +0800
+++ build/gcc/config/i386/mingw32.h     2011-09-03 23:15:08 +0800
@@ -114,7 +114,7 @@
 #define REAL_LIBGCC_SPEC \
   "%{mthreads:-lmingwthrd} -lmingw32 \
    "SHARED_LIBGCC_SPEC" \
-   -lgcc \
+   -lgcc -lpthread \
    -lmoldname -lmingwex -lmsvcrt"
 
 #undef STARTFILE_SPEC
@@ -169,7 +169,8 @@
 
 /* mingw32 uses the  -mthreads option to enable thread support.  */
 #undef GOMP_SELF_SPECS
-#define GOMP_SELF_SPECS "%{fopenmp: -mthreads}"
+#define GOMP_SELF_SPECS "%{fopenmp|ftree-parallelize-loops=*: " \
+                        "-mthreads -lpthread}"
 
 /* mingw32 atexit function is safe to use in shared libraries.  Use it
    to register C++ static destructors.  */
diff -ruNa old/libstdc++-v3/acinclude.m4 build/libstdc++-v3/acinclude.m4
--- old/libstdc++-v3/acinclude.m4       2011-03-08 08:04:06 +0800
+++ build/libstdc++-v3/acinclude.m4     2011-09-03 23:28:45 +0800
@@ -1697,7 +1697,9 @@
 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 -ruNa old/libstdc++-v3/config/os/mingw32/error_constants.h 
build/libstdc++-v3/config/os/mingw32/error_constants.h
--- old/libstdc++-v3/config/os/mingw32/error_constants.h        2011-01-31 
06:39:36 +0800
+++ build/libstdc++-v3/config/os/mingw32/error_constants.h      2011-09-04 
00:38:25 +0800
@@ -79,13 +79,17 @@
 //    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 @@
 //    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 @@
 //    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_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 -ruNa old/libstdc++-v3/config.h.in build/libstdc++-v3/config.h.in
--- old/libstdc++-v3/config.h.in        2010-07-27 18:36:50 +0800
+++ build/libstdc++-v3/config.h.in      2011-09-03 23:22:02 +0800
@@ -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 -ruNa old/libstdc++-v3/configure build/libstdc++-v3/configure
--- old/libstdc++-v3/configure  2011-05-26 08:15:58 +0800
+++ build/libstdc++-v3/configure        2011-09-03 23:19:08 +0800
@@ -17629,6 +17629,173 @@
 
 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
+
+
 
 
 # For the streamoff typedef.
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to