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