Unhide __cxa_begin_cleanup and __cxa_type_match needed by libgcc.a
Refresh only sources/cxx-stl/gnu-libstdc++ to NDK r8d+ with the following
https://android-review.googlesource.com/#/c/52900
https://android-review.googlesource.com/#/c/52961
Also see
https://android-review.googlesource.com/#/c/52981
https://android-review.googlesource.com/#/c/53006
Internal bug ref: b/8247455
Change-Id: I864f33e389324a59deea8c8ca81cdf6597bf9620
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/include/bits/c++config.h b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/include/bits/c++config.h
index 389f6df..92e158b 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/include/bits/c++config.h
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/include/bits/c++config.h
@@ -319,13 +319,13 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the `acosf' function. */
-/* #undef _GLIBCXX_HAVE_ACOSF */
+#define _GLIBCXX_HAVE_ACOSF 1
/* Define to 1 if you have the `acosl' function. */
/* #undef _GLIBCXX_HAVE_ACOSL */
/* Define to 1 if you have the `asinf' function. */
-/* #undef _GLIBCXX_HAVE_ASINF */
+#define _GLIBCXX_HAVE_ASINF 1
/* Define to 1 if you have the `asinl' function. */
/* #undef _GLIBCXX_HAVE_ASINL */
@@ -334,13 +334,13 @@
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
/* Define to 1 if you have the `atan2f' function. */
-/* #undef _GLIBCXX_HAVE_ATAN2F */
+#define _GLIBCXX_HAVE_ATAN2F 1
/* Define to 1 if you have the `atan2l' function. */
/* #undef _GLIBCXX_HAVE_ATAN2L */
/* Define to 1 if you have the `atanf' function. */
-/* #undef _GLIBCXX_HAVE_ATANF */
+#define _GLIBCXX_HAVE_ATANF 1
/* Define to 1 if you have the `atanl' function. */
/* #undef _GLIBCXX_HAVE_ATANL */
@@ -349,19 +349,19 @@
/* #undef _GLIBCXX_HAVE_CC_TLS */
/* Define to 1 if you have the `ceilf' function. */
-/* #undef _GLIBCXX_HAVE_CEILF */
+#define _GLIBCXX_HAVE_CEILF 1
/* Define to 1 if you have the `ceill' function. */
-/* #undef _GLIBCXX_HAVE_CEILL */
+#define _GLIBCXX_HAVE_CEILL 1
/* Define to 1 if you have the <complex.h> header file. */
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
/* Define to 1 if you have the `cosf' function. */
-/* #undef _GLIBCXX_HAVE_COSF */
+#define _GLIBCXX_HAVE_COSF 1
/* Define to 1 if you have the `coshf' function. */
-/* #undef _GLIBCXX_HAVE_COSHF */
+#define _GLIBCXX_HAVE_COSHF 1
/* Define to 1 if you have the `coshl' function. */
/* #undef _GLIBCXX_HAVE_COSHL */
@@ -418,25 +418,25 @@
#define _GLIBCXX_HAVE_ETXTBSY 1
/* Define to 1 if you have the `expf' function. */
-/* #undef _GLIBCXX_HAVE_EXPF */
+#define _GLIBCXX_HAVE_EXPF 1
/* Define to 1 if you have the `expl' function. */
/* #undef _GLIBCXX_HAVE_EXPL */
/* Define to 1 if you have the `fabsf' function. */
-/* #undef _GLIBCXX_HAVE_FABSF */
+#define _GLIBCXX_HAVE_FABSF 1
/* Define to 1 if you have the `fabsl' function. */
-/* #undef _GLIBCXX_HAVE_FABSL */
+#define _GLIBCXX_HAVE_FABSL 1
/* Define to 1 if you have the <fenv.h> header file. */
#define _GLIBCXX_HAVE_FENV_H 1
/* Define to 1 if you have the `finite' function. */
-/* #undef _GLIBCXX_HAVE_FINITE */
+#define _GLIBCXX_HAVE_FINITE 1
/* Define to 1 if you have the `finitef' function. */
-/* #undef _GLIBCXX_HAVE_FINITEF */
+#define _GLIBCXX_HAVE_FINITEF 1
/* Define to 1 if you have the `finitel' function. */
/* #undef _GLIBCXX_HAVE_FINITEL */
@@ -445,13 +445,13 @@
#define _GLIBCXX_HAVE_FLOAT_H 1
/* Define to 1 if you have the `floorf' function. */
-/* #undef _GLIBCXX_HAVE_FLOORF */
+#define _GLIBCXX_HAVE_FLOORF 1
/* Define to 1 if you have the `floorl' function. */
-/* #undef _GLIBCXX_HAVE_FLOORL */
+#define _GLIBCXX_HAVE_FLOORL 1
/* Define to 1 if you have the `fmodf' function. */
-/* #undef _GLIBCXX_HAVE_FMODF */
+#define _GLIBCXX_HAVE_FMODF 1
/* Define to 1 if you have the `fmodl' function. */
/* #undef _GLIBCXX_HAVE_FMODL */
@@ -463,7 +463,7 @@
/* #undef _GLIBCXX_HAVE_FP_H */
/* Define to 1 if you have the `frexpf' function. */
-/* #undef _GLIBCXX_HAVE_FREXPF */
+#define _GLIBCXX_HAVE_FREXPF 1
/* Define to 1 if you have the `frexpl' function. */
/* #undef _GLIBCXX_HAVE_FREXPL */
@@ -476,10 +476,10 @@
#define _GLIBCXX_HAVE_GTHR_DEFAULT 1
/* Define to 1 if you have the `hypot' function. */
-/* #undef _GLIBCXX_HAVE_HYPOT */
+#define _GLIBCXX_HAVE_HYPOT 1
/* Define to 1 if you have the `hypotf' function. */
-/* #undef _GLIBCXX_HAVE_HYPOTF */
+#define _GLIBCXX_HAVE_HYPOTF 1
/* Define to 1 if you have the `hypotl' function. */
/* #undef _GLIBCXX_HAVE_HYPOTL */
@@ -515,7 +515,7 @@
/* #undef _GLIBCXX_HAVE_ISNAN */
/* Define to 1 if you have the `isnanf' function. */
-/* #undef _GLIBCXX_HAVE_ISNANF */
+#define _GLIBCXX_HAVE_ISNANF 1
/* Define to 1 if you have the `isnanl' function. */
/* #undef _GLIBCXX_HAVE_ISNANL */
@@ -527,10 +527,10 @@
#define _GLIBCXX_HAVE_LC_MESSAGES 1
/* Define to 1 if you have the `ldexpf' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPF */
+#define _GLIBCXX_HAVE_LDEXPF 1
/* Define to 1 if you have the `ldexpl' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPL */
+#define _GLIBCXX_HAVE_LDEXPL 1
/* Define to 1 if you have the <libintl.h> header file. */
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
@@ -557,13 +557,13 @@
#define _GLIBCXX_HAVE_LOCALE_H 1
/* Define to 1 if you have the `log10f' function. */
-/* #undef _GLIBCXX_HAVE_LOG10F */
+#define _GLIBCXX_HAVE_LOG10F 1
/* Define to 1 if you have the `log10l' function. */
/* #undef _GLIBCXX_HAVE_LOG10L */
/* Define to 1 if you have the `logf' function. */
-/* #undef _GLIBCXX_HAVE_LOGF */
+#define _GLIBCXX_HAVE_LOGF 1
/* Define to 1 if you have the `logl' function. */
/* #undef _GLIBCXX_HAVE_LOGL */
@@ -581,10 +581,10 @@
#define _GLIBCXX_HAVE_MEMORY_H 1
/* Define to 1 if you have the `modf' function. */
-/* #undef _GLIBCXX_HAVE_MODF */
+#define _GLIBCXX_HAVE_MODF 1
/* Define to 1 if you have the `modff' function. */
-/* #undef _GLIBCXX_HAVE_MODFF */
+#define _GLIBCXX_HAVE_MODFF 1
/* Define to 1 if you have the `modfl' function. */
/* #undef _GLIBCXX_HAVE_MODFL */
@@ -593,10 +593,10 @@
/* #undef _GLIBCXX_HAVE_NAN_H */
/* Define if poll is available in <poll.h>. */
-/* #undef _GLIBCXX_HAVE_POLL */
+#define _GLIBCXX_HAVE_POLL 1
/* Define to 1 if you have the `powf' function. */
-/* #undef _GLIBCXX_HAVE_POWF */
+#define _GLIBCXX_HAVE_POWF 1
/* Define to 1 if you have the `powl' function. */
/* #undef _GLIBCXX_HAVE_POWL */
@@ -617,10 +617,10 @@
/* #undef _GLIBCXX_HAVE_SINCOSL */
/* Define to 1 if you have the `sinf' function. */
-/* #undef _GLIBCXX_HAVE_SINF */
+#define _GLIBCXX_HAVE_SINF 1
/* Define to 1 if you have the `sinhf' function. */
-/* #undef _GLIBCXX_HAVE_SINHF */
+#define _GLIBCXX_HAVE_SINHF 1
/* Define to 1 if you have the `sinhl' function. */
/* #undef _GLIBCXX_HAVE_SINHL */
@@ -629,7 +629,7 @@
/* #undef _GLIBCXX_HAVE_SINL */
/* Define to 1 if you have the `sqrtf' function. */
-/* #undef _GLIBCXX_HAVE_SQRTF */
+#define _GLIBCXX_HAVE_SQRTF 1
/* Define to 1 if you have the `sqrtl' function. */
/* #undef _GLIBCXX_HAVE_SQRTL */
@@ -704,13 +704,13 @@
/* #undef _GLIBCXX_HAVE_S_IFREG */
/* Define if S_IFREG is available in <sys/stat.h>. */
-/* #undef _GLIBCXX_HAVE_S_ISREG */
+#define _GLIBCXX_HAVE_S_ISREG 1
/* Define to 1 if you have the `tanf' function. */
-/* #undef _GLIBCXX_HAVE_TANF */
+#define _GLIBCXX_HAVE_TANF 1
/* Define to 1 if you have the `tanhf' function. */
-/* #undef _GLIBCXX_HAVE_TANHF */
+#define _GLIBCXX_HAVE_TANHF 1
/* Define to 1 if you have the `tanhl' function. */
/* #undef _GLIBCXX_HAVE_TANHL */
@@ -746,7 +746,7 @@
#define _GLIBCXX_HAVE_WCTYPE_H 1
/* Define if writev is available in <sys/uio.h>. */
-/* #undef _GLIBCXX_HAVE_WRITEV */
+#define _GLIBCXX_HAVE_WRITEV 1
/* Define to 1 if you have the `_acosf' function. */
/* #undef _GLIBCXX_HAVE__ACOSF */
@@ -1055,7 +1055,7 @@
/* Define if C99 functions in <fenv.h> should be imported in <tr1/cfenv> in
namespace std::tr1. */
-#define _GLIBCXX_USE_C99_FENV_TR1 1
+/* #undef _GLIBCXX_USE_C99_FENV_TR1 */
/* Define if C99 functions in <inttypes.h> should be imported in
<tr1/cinttypes> in namespace std::tr1. */
@@ -1067,7 +1067,7 @@
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
in namespace std. */
-/* #undef _GLIBCXX_USE_C99_MATH */
+#define _GLIBCXX_USE_C99_MATH 1
/* Define if C99 functions or macros in <math.h> should be imported in
<tr1/cmath> in namespace std::tr1. */
@@ -1078,13 +1078,13 @@
#define _GLIBCXX_USE_C99_STDINT_TR1 1
/* Defined if clock_gettime has monotonic clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
+#define _GLIBCXX_USE_CLOCK_MONOTONIC 1
/* Defined if clock_gettime has realtime clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
+#define _GLIBCXX_USE_CLOCK_REALTIME 1
/* Defined if gettimeofday is available. */
-/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
+#define _GLIBCXX_USE_GETTIMEOFDAY 1
/* Define if LFS support is available. */
/* #undef _GLIBCXX_USE_LFS */
@@ -1093,7 +1093,7 @@
#define _GLIBCXX_USE_LONG_LONG 1
/* Defined if nanosleep is available. */
-/* #undef _GLIBCXX_USE_NANOSLEEP */
+#define _GLIBCXX_USE_NANOSLEEP 1
/* Define if NLS translations are to be used. */
/* #undef _GLIBCXX_USE_NLS */
@@ -1103,7 +1103,7 @@
#define _GLIBCXX_USE_RANDOM_TR1 1
/* Defined if sched_yield is available. */
-/* #undef _GLIBCXX_USE_SCHED_YIELD */
+#define _GLIBCXX_USE_SCHED_YIELD 1
/* Define if code specialized for wchar_t should be used. */
#define _GLIBCXX_USE_WCHAR_T 1
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/libgnustl_shared.so
index 1d6dea8..9be81cd 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/libgnustl_static.a
index d87a3af..f192521 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/libsupc++.a
index e2462ed..36f90f0 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/thumb/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/thumb/libgnustl_shared.so
index 0ece399..c6899ee 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/thumb/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/thumb/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/thumb/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/thumb/libgnustl_static.a
index 2a9ae1f..89bc710 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/thumb/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/thumb/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/thumb/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/thumb/libsupc++.a
index 331fdc2..781c7b6 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/thumb/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/thumb/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/include/bits/c++config.h b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/include/bits/c++config.h
index 389f6df..e8f9479 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/include/bits/c++config.h
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/include/bits/c++config.h
@@ -319,13 +319,13 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the `acosf' function. */
-/* #undef _GLIBCXX_HAVE_ACOSF */
+#define _GLIBCXX_HAVE_ACOSF 1
/* Define to 1 if you have the `acosl' function. */
/* #undef _GLIBCXX_HAVE_ACOSL */
/* Define to 1 if you have the `asinf' function. */
-/* #undef _GLIBCXX_HAVE_ASINF */
+#define _GLIBCXX_HAVE_ASINF 1
/* Define to 1 if you have the `asinl' function. */
/* #undef _GLIBCXX_HAVE_ASINL */
@@ -334,13 +334,13 @@
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
/* Define to 1 if you have the `atan2f' function. */
-/* #undef _GLIBCXX_HAVE_ATAN2F */
+#define _GLIBCXX_HAVE_ATAN2F 1
/* Define to 1 if you have the `atan2l' function. */
/* #undef _GLIBCXX_HAVE_ATAN2L */
/* Define to 1 if you have the `atanf' function. */
-/* #undef _GLIBCXX_HAVE_ATANF */
+#define _GLIBCXX_HAVE_ATANF 1
/* Define to 1 if you have the `atanl' function. */
/* #undef _GLIBCXX_HAVE_ATANL */
@@ -349,19 +349,19 @@
/* #undef _GLIBCXX_HAVE_CC_TLS */
/* Define to 1 if you have the `ceilf' function. */
-/* #undef _GLIBCXX_HAVE_CEILF */
+#define _GLIBCXX_HAVE_CEILF 1
/* Define to 1 if you have the `ceill' function. */
-/* #undef _GLIBCXX_HAVE_CEILL */
+#define _GLIBCXX_HAVE_CEILL 1
/* Define to 1 if you have the <complex.h> header file. */
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
/* Define to 1 if you have the `cosf' function. */
-/* #undef _GLIBCXX_HAVE_COSF */
+#define _GLIBCXX_HAVE_COSF 1
/* Define to 1 if you have the `coshf' function. */
-/* #undef _GLIBCXX_HAVE_COSHF */
+#define _GLIBCXX_HAVE_COSHF 1
/* Define to 1 if you have the `coshl' function. */
/* #undef _GLIBCXX_HAVE_COSHL */
@@ -418,25 +418,25 @@
#define _GLIBCXX_HAVE_ETXTBSY 1
/* Define to 1 if you have the `expf' function. */
-/* #undef _GLIBCXX_HAVE_EXPF */
+#define _GLIBCXX_HAVE_EXPF 1
/* Define to 1 if you have the `expl' function. */
/* #undef _GLIBCXX_HAVE_EXPL */
/* Define to 1 if you have the `fabsf' function. */
-/* #undef _GLIBCXX_HAVE_FABSF */
+#define _GLIBCXX_HAVE_FABSF 1
/* Define to 1 if you have the `fabsl' function. */
-/* #undef _GLIBCXX_HAVE_FABSL */
+#define _GLIBCXX_HAVE_FABSL 1
/* Define to 1 if you have the <fenv.h> header file. */
#define _GLIBCXX_HAVE_FENV_H 1
/* Define to 1 if you have the `finite' function. */
-/* #undef _GLIBCXX_HAVE_FINITE */
+#define _GLIBCXX_HAVE_FINITE 1
/* Define to 1 if you have the `finitef' function. */
-/* #undef _GLIBCXX_HAVE_FINITEF */
+#define _GLIBCXX_HAVE_FINITEF 1
/* Define to 1 if you have the `finitel' function. */
/* #undef _GLIBCXX_HAVE_FINITEL */
@@ -445,13 +445,13 @@
#define _GLIBCXX_HAVE_FLOAT_H 1
/* Define to 1 if you have the `floorf' function. */
-/* #undef _GLIBCXX_HAVE_FLOORF */
+#define _GLIBCXX_HAVE_FLOORF 1
/* Define to 1 if you have the `floorl' function. */
-/* #undef _GLIBCXX_HAVE_FLOORL */
+#define _GLIBCXX_HAVE_FLOORL 1
/* Define to 1 if you have the `fmodf' function. */
-/* #undef _GLIBCXX_HAVE_FMODF */
+#define _GLIBCXX_HAVE_FMODF 1
/* Define to 1 if you have the `fmodl' function. */
/* #undef _GLIBCXX_HAVE_FMODL */
@@ -463,7 +463,7 @@
/* #undef _GLIBCXX_HAVE_FP_H */
/* Define to 1 if you have the `frexpf' function. */
-/* #undef _GLIBCXX_HAVE_FREXPF */
+#define _GLIBCXX_HAVE_FREXPF 1
/* Define to 1 if you have the `frexpl' function. */
/* #undef _GLIBCXX_HAVE_FREXPL */
@@ -476,10 +476,10 @@
#define _GLIBCXX_HAVE_GTHR_DEFAULT 1
/* Define to 1 if you have the `hypot' function. */
-/* #undef _GLIBCXX_HAVE_HYPOT */
+#define _GLIBCXX_HAVE_HYPOT 1
/* Define to 1 if you have the `hypotf' function. */
-/* #undef _GLIBCXX_HAVE_HYPOTF */
+#define _GLIBCXX_HAVE_HYPOTF 1
/* Define to 1 if you have the `hypotl' function. */
/* #undef _GLIBCXX_HAVE_HYPOTL */
@@ -515,7 +515,7 @@
/* #undef _GLIBCXX_HAVE_ISNAN */
/* Define to 1 if you have the `isnanf' function. */
-/* #undef _GLIBCXX_HAVE_ISNANF */
+#define _GLIBCXX_HAVE_ISNANF 1
/* Define to 1 if you have the `isnanl' function. */
/* #undef _GLIBCXX_HAVE_ISNANL */
@@ -527,10 +527,10 @@
#define _GLIBCXX_HAVE_LC_MESSAGES 1
/* Define to 1 if you have the `ldexpf' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPF */
+#define _GLIBCXX_HAVE_LDEXPF 1
/* Define to 1 if you have the `ldexpl' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPL */
+#define _GLIBCXX_HAVE_LDEXPL 1
/* Define to 1 if you have the <libintl.h> header file. */
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
@@ -557,13 +557,13 @@
#define _GLIBCXX_HAVE_LOCALE_H 1
/* Define to 1 if you have the `log10f' function. */
-/* #undef _GLIBCXX_HAVE_LOG10F */
+#define _GLIBCXX_HAVE_LOG10F 1
/* Define to 1 if you have the `log10l' function. */
/* #undef _GLIBCXX_HAVE_LOG10L */
/* Define to 1 if you have the `logf' function. */
-/* #undef _GLIBCXX_HAVE_LOGF */
+#define _GLIBCXX_HAVE_LOGF 1
/* Define to 1 if you have the `logl' function. */
/* #undef _GLIBCXX_HAVE_LOGL */
@@ -581,10 +581,10 @@
#define _GLIBCXX_HAVE_MEMORY_H 1
/* Define to 1 if you have the `modf' function. */
-/* #undef _GLIBCXX_HAVE_MODF */
+#define _GLIBCXX_HAVE_MODF 1
/* Define to 1 if you have the `modff' function. */
-/* #undef _GLIBCXX_HAVE_MODFF */
+#define _GLIBCXX_HAVE_MODFF 1
/* Define to 1 if you have the `modfl' function. */
/* #undef _GLIBCXX_HAVE_MODFL */
@@ -593,10 +593,10 @@
/* #undef _GLIBCXX_HAVE_NAN_H */
/* Define if poll is available in <poll.h>. */
-/* #undef _GLIBCXX_HAVE_POLL */
+#define _GLIBCXX_HAVE_POLL 1
/* Define to 1 if you have the `powf' function. */
-/* #undef _GLIBCXX_HAVE_POWF */
+#define _GLIBCXX_HAVE_POWF 1
/* Define to 1 if you have the `powl' function. */
/* #undef _GLIBCXX_HAVE_POWL */
@@ -617,10 +617,10 @@
/* #undef _GLIBCXX_HAVE_SINCOSL */
/* Define to 1 if you have the `sinf' function. */
-/* #undef _GLIBCXX_HAVE_SINF */
+#define _GLIBCXX_HAVE_SINF 1
/* Define to 1 if you have the `sinhf' function. */
-/* #undef _GLIBCXX_HAVE_SINHF */
+#define _GLIBCXX_HAVE_SINHF 1
/* Define to 1 if you have the `sinhl' function. */
/* #undef _GLIBCXX_HAVE_SINHL */
@@ -629,7 +629,7 @@
/* #undef _GLIBCXX_HAVE_SINL */
/* Define to 1 if you have the `sqrtf' function. */
-/* #undef _GLIBCXX_HAVE_SQRTF */
+#define _GLIBCXX_HAVE_SQRTF 1
/* Define to 1 if you have the `sqrtl' function. */
/* #undef _GLIBCXX_HAVE_SQRTL */
@@ -704,13 +704,13 @@
/* #undef _GLIBCXX_HAVE_S_IFREG */
/* Define if S_IFREG is available in <sys/stat.h>. */
-/* #undef _GLIBCXX_HAVE_S_ISREG */
+#define _GLIBCXX_HAVE_S_ISREG 1
/* Define to 1 if you have the `tanf' function. */
-/* #undef _GLIBCXX_HAVE_TANF */
+#define _GLIBCXX_HAVE_TANF 1
/* Define to 1 if you have the `tanhf' function. */
-/* #undef _GLIBCXX_HAVE_TANHF */
+#define _GLIBCXX_HAVE_TANHF 1
/* Define to 1 if you have the `tanhl' function. */
/* #undef _GLIBCXX_HAVE_TANHL */
@@ -746,7 +746,7 @@
#define _GLIBCXX_HAVE_WCTYPE_H 1
/* Define if writev is available in <sys/uio.h>. */
-/* #undef _GLIBCXX_HAVE_WRITEV */
+#define _GLIBCXX_HAVE_WRITEV 1
/* Define to 1 if you have the `_acosf' function. */
/* #undef _GLIBCXX_HAVE__ACOSF */
@@ -1067,7 +1067,7 @@
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
in namespace std. */
-/* #undef _GLIBCXX_USE_C99_MATH */
+#define _GLIBCXX_USE_C99_MATH 1
/* Define if C99 functions or macros in <math.h> should be imported in
<tr1/cmath> in namespace std::tr1. */
@@ -1078,13 +1078,13 @@
#define _GLIBCXX_USE_C99_STDINT_TR1 1
/* Defined if clock_gettime has monotonic clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
+#define _GLIBCXX_USE_CLOCK_MONOTONIC 1
/* Defined if clock_gettime has realtime clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
+#define _GLIBCXX_USE_CLOCK_REALTIME 1
/* Defined if gettimeofday is available. */
-/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
+#define _GLIBCXX_USE_GETTIMEOFDAY 1
/* Define if LFS support is available. */
/* #undef _GLIBCXX_USE_LFS */
@@ -1093,7 +1093,7 @@
#define _GLIBCXX_USE_LONG_LONG 1
/* Defined if nanosleep is available. */
-/* #undef _GLIBCXX_USE_NANOSLEEP */
+#define _GLIBCXX_USE_NANOSLEEP 1
/* Define if NLS translations are to be used. */
/* #undef _GLIBCXX_USE_NLS */
@@ -1103,7 +1103,7 @@
#define _GLIBCXX_USE_RANDOM_TR1 1
/* Defined if sched_yield is available. */
-/* #undef _GLIBCXX_USE_SCHED_YIELD */
+#define _GLIBCXX_USE_SCHED_YIELD 1
/* Define if code specialized for wchar_t should be used. */
#define _GLIBCXX_USE_WCHAR_T 1
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/libgnustl_shared.so
index 45d5b61..bb6f526 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/libgnustl_static.a
index 8baedde..7a2b9c5 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/libsupc++.a
index 0c4c5ce..1680cd5 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/thumb/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/thumb/libgnustl_shared.so
index 09abc7f..7ea049a 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/thumb/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/thumb/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/thumb/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/thumb/libgnustl_static.a
index 68e6c04..c1389b2 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/thumb/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/thumb/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/thumb/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/thumb/libsupc++.a
index 9b8dd28..65fba28 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/thumb/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/thumb/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/include/bits/c++config.h b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/include/bits/c++config.h
index 772e35a..da7d2a3 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/include/bits/c++config.h
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/include/bits/c++config.h
@@ -319,13 +319,13 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the `acosf' function. */
-/* #undef _GLIBCXX_HAVE_ACOSF */
+#define _GLIBCXX_HAVE_ACOSF 1
/* Define to 1 if you have the `acosl' function. */
/* #undef _GLIBCXX_HAVE_ACOSL */
/* Define to 1 if you have the `asinf' function. */
-/* #undef _GLIBCXX_HAVE_ASINF */
+#define _GLIBCXX_HAVE_ASINF 1
/* Define to 1 if you have the `asinl' function. */
/* #undef _GLIBCXX_HAVE_ASINL */
@@ -334,13 +334,13 @@
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
/* Define to 1 if you have the `atan2f' function. */
-/* #undef _GLIBCXX_HAVE_ATAN2F */
+#define _GLIBCXX_HAVE_ATAN2F 1
/* Define to 1 if you have the `atan2l' function. */
/* #undef _GLIBCXX_HAVE_ATAN2L */
/* Define to 1 if you have the `atanf' function. */
-/* #undef _GLIBCXX_HAVE_ATANF */
+#define _GLIBCXX_HAVE_ATANF 1
/* Define to 1 if you have the `atanl' function. */
/* #undef _GLIBCXX_HAVE_ATANL */
@@ -349,19 +349,19 @@
/* #undef _GLIBCXX_HAVE_CC_TLS */
/* Define to 1 if you have the `ceilf' function. */
-/* #undef _GLIBCXX_HAVE_CEILF */
+#define _GLIBCXX_HAVE_CEILF 1
/* Define to 1 if you have the `ceill' function. */
-/* #undef _GLIBCXX_HAVE_CEILL */
+#define _GLIBCXX_HAVE_CEILL 1
/* Define to 1 if you have the <complex.h> header file. */
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
/* Define to 1 if you have the `cosf' function. */
-/* #undef _GLIBCXX_HAVE_COSF */
+#define _GLIBCXX_HAVE_COSF 1
/* Define to 1 if you have the `coshf' function. */
-/* #undef _GLIBCXX_HAVE_COSHF */
+#define _GLIBCXX_HAVE_COSHF 1
/* Define to 1 if you have the `coshl' function. */
/* #undef _GLIBCXX_HAVE_COSHL */
@@ -418,25 +418,25 @@
#define _GLIBCXX_HAVE_ETXTBSY 1
/* Define to 1 if you have the `expf' function. */
-/* #undef _GLIBCXX_HAVE_EXPF */
+#define _GLIBCXX_HAVE_EXPF 1
/* Define to 1 if you have the `expl' function. */
/* #undef _GLIBCXX_HAVE_EXPL */
/* Define to 1 if you have the `fabsf' function. */
-/* #undef _GLIBCXX_HAVE_FABSF */
+#define _GLIBCXX_HAVE_FABSF 1
/* Define to 1 if you have the `fabsl' function. */
-/* #undef _GLIBCXX_HAVE_FABSL */
+#define _GLIBCXX_HAVE_FABSL 1
/* Define to 1 if you have the <fenv.h> header file. */
#define _GLIBCXX_HAVE_FENV_H 1
/* Define to 1 if you have the `finite' function. */
-/* #undef _GLIBCXX_HAVE_FINITE */
+#define _GLIBCXX_HAVE_FINITE 1
/* Define to 1 if you have the `finitef' function. */
-/* #undef _GLIBCXX_HAVE_FINITEF */
+#define _GLIBCXX_HAVE_FINITEF 1
/* Define to 1 if you have the `finitel' function. */
/* #undef _GLIBCXX_HAVE_FINITEL */
@@ -445,13 +445,13 @@
#define _GLIBCXX_HAVE_FLOAT_H 1
/* Define to 1 if you have the `floorf' function. */
-/* #undef _GLIBCXX_HAVE_FLOORF */
+#define _GLIBCXX_HAVE_FLOORF 1
/* Define to 1 if you have the `floorl' function. */
-/* #undef _GLIBCXX_HAVE_FLOORL */
+#define _GLIBCXX_HAVE_FLOORL 1
/* Define to 1 if you have the `fmodf' function. */
-/* #undef _GLIBCXX_HAVE_FMODF */
+#define _GLIBCXX_HAVE_FMODF 1
/* Define to 1 if you have the `fmodl' function. */
/* #undef _GLIBCXX_HAVE_FMODL */
@@ -463,7 +463,7 @@
/* #undef _GLIBCXX_HAVE_FP_H */
/* Define to 1 if you have the `frexpf' function. */
-/* #undef _GLIBCXX_HAVE_FREXPF */
+#define _GLIBCXX_HAVE_FREXPF 1
/* Define to 1 if you have the `frexpl' function. */
/* #undef _GLIBCXX_HAVE_FREXPL */
@@ -473,13 +473,13 @@
/* Define if gthr-default.h exists (meaning that threading support is
enabled). */
-/* #undef _GLIBCXX_HAVE_GTHR_DEFAULT */
+#define _GLIBCXX_HAVE_GTHR_DEFAULT 1
/* Define to 1 if you have the `hypot' function. */
-/* #undef _GLIBCXX_HAVE_HYPOT */
+#define _GLIBCXX_HAVE_HYPOT 1
/* Define to 1 if you have the `hypotf' function. */
-/* #undef _GLIBCXX_HAVE_HYPOTF */
+#define _GLIBCXX_HAVE_HYPOTF 1
/* Define to 1 if you have the `hypotl' function. */
/* #undef _GLIBCXX_HAVE_HYPOTL */
@@ -515,7 +515,7 @@
/* #undef _GLIBCXX_HAVE_ISNAN */
/* Define to 1 if you have the `isnanf' function. */
-/* #undef _GLIBCXX_HAVE_ISNANF */
+#define _GLIBCXX_HAVE_ISNANF 1
/* Define to 1 if you have the `isnanl' function. */
/* #undef _GLIBCXX_HAVE_ISNANL */
@@ -527,10 +527,10 @@
#define _GLIBCXX_HAVE_LC_MESSAGES 1
/* Define to 1 if you have the `ldexpf' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPF */
+#define _GLIBCXX_HAVE_LDEXPF 1
/* Define to 1 if you have the `ldexpl' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPL */
+#define _GLIBCXX_HAVE_LDEXPL 1
/* Define to 1 if you have the <libintl.h> header file. */
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
@@ -557,13 +557,13 @@
#define _GLIBCXX_HAVE_LOCALE_H 1
/* Define to 1 if you have the `log10f' function. */
-/* #undef _GLIBCXX_HAVE_LOG10F */
+#define _GLIBCXX_HAVE_LOG10F 1
/* Define to 1 if you have the `log10l' function. */
/* #undef _GLIBCXX_HAVE_LOG10L */
/* Define to 1 if you have the `logf' function. */
-/* #undef _GLIBCXX_HAVE_LOGF */
+#define _GLIBCXX_HAVE_LOGF 1
/* Define to 1 if you have the `logl' function. */
/* #undef _GLIBCXX_HAVE_LOGL */
@@ -581,10 +581,10 @@
#define _GLIBCXX_HAVE_MEMORY_H 1
/* Define to 1 if you have the `modf' function. */
-/* #undef _GLIBCXX_HAVE_MODF */
+#define _GLIBCXX_HAVE_MODF 1
/* Define to 1 if you have the `modff' function. */
-/* #undef _GLIBCXX_HAVE_MODFF */
+#define _GLIBCXX_HAVE_MODFF 1
/* Define to 1 if you have the `modfl' function. */
/* #undef _GLIBCXX_HAVE_MODFL */
@@ -593,10 +593,10 @@
/* #undef _GLIBCXX_HAVE_NAN_H */
/* Define if poll is available in <poll.h>. */
-/* #undef _GLIBCXX_HAVE_POLL */
+#define _GLIBCXX_HAVE_POLL 1
/* Define to 1 if you have the `powf' function. */
-/* #undef _GLIBCXX_HAVE_POWF */
+#define _GLIBCXX_HAVE_POWF 1
/* Define to 1 if you have the `powl' function. */
/* #undef _GLIBCXX_HAVE_POWL */
@@ -608,19 +608,19 @@
/* #undef _GLIBCXX_HAVE_SETENV */
/* Define to 1 if you have the `sincos' function. */
-/* #undef _GLIBCXX_HAVE_SINCOS */
+#define _GLIBCXX_HAVE_SINCOS 1
/* Define to 1 if you have the `sincosf' function. */
-/* #undef _GLIBCXX_HAVE_SINCOSF */
+#define _GLIBCXX_HAVE_SINCOSF 1
/* Define to 1 if you have the `sincosl' function. */
-/* #undef _GLIBCXX_HAVE_SINCOSL */
+#define _GLIBCXX_HAVE_SINCOSL 1
/* Define to 1 if you have the `sinf' function. */
-/* #undef _GLIBCXX_HAVE_SINF */
+#define _GLIBCXX_HAVE_SINF 1
/* Define to 1 if you have the `sinhf' function. */
-/* #undef _GLIBCXX_HAVE_SINHF */
+#define _GLIBCXX_HAVE_SINHF 1
/* Define to 1 if you have the `sinhl' function. */
/* #undef _GLIBCXX_HAVE_SINHL */
@@ -629,7 +629,7 @@
/* #undef _GLIBCXX_HAVE_SINL */
/* Define to 1 if you have the `sqrtf' function. */
-/* #undef _GLIBCXX_HAVE_SQRTF */
+#define _GLIBCXX_HAVE_SQRTF 1
/* Define to 1 if you have the `sqrtl' function. */
/* #undef _GLIBCXX_HAVE_SQRTL */
@@ -704,13 +704,13 @@
/* #undef _GLIBCXX_HAVE_S_IFREG */
/* Define if S_IFREG is available in <sys/stat.h>. */
-/* #undef _GLIBCXX_HAVE_S_ISREG */
+#define _GLIBCXX_HAVE_S_ISREG 1
/* Define to 1 if you have the `tanf' function. */
-/* #undef _GLIBCXX_HAVE_TANF */
+#define _GLIBCXX_HAVE_TANF 1
/* Define to 1 if you have the `tanhf' function. */
-/* #undef _GLIBCXX_HAVE_TANHF */
+#define _GLIBCXX_HAVE_TANHF 1
/* Define to 1 if you have the `tanhl' function. */
/* #undef _GLIBCXX_HAVE_TANHL */
@@ -746,7 +746,7 @@
#define _GLIBCXX_HAVE_WCTYPE_H 1
/* Define if writev is available in <sys/uio.h>. */
-/* #undef _GLIBCXX_HAVE_WRITEV */
+#define _GLIBCXX_HAVE_WRITEV 1
/* Define to 1 if you have the `_acosf' function. */
/* #undef _GLIBCXX_HAVE__ACOSF */
@@ -1067,7 +1067,7 @@
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
in namespace std. */
-/* #undef _GLIBCXX_USE_C99_MATH */
+#define _GLIBCXX_USE_C99_MATH 1
/* Define if C99 functions or macros in <math.h> should be imported in
<tr1/cmath> in namespace std::tr1. */
@@ -1078,13 +1078,13 @@
#define _GLIBCXX_USE_C99_STDINT_TR1 1
/* Defined if clock_gettime has monotonic clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
+#define _GLIBCXX_USE_CLOCK_MONOTONIC 1
/* Defined if clock_gettime has realtime clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
+#define _GLIBCXX_USE_CLOCK_REALTIME 1
/* Defined if gettimeofday is available. */
-/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
+#define _GLIBCXX_USE_GETTIMEOFDAY 1
/* Define if LFS support is available. */
/* #undef _GLIBCXX_USE_LFS */
@@ -1093,7 +1093,7 @@
#define _GLIBCXX_USE_LONG_LONG 1
/* Defined if nanosleep is available. */
-/* #undef _GLIBCXX_USE_NANOSLEEP */
+#define _GLIBCXX_USE_NANOSLEEP 1
/* Define if NLS translations are to be used. */
/* #undef _GLIBCXX_USE_NLS */
@@ -1103,7 +1103,7 @@
#define _GLIBCXX_USE_RANDOM_TR1 1
/* Defined if sched_yield is available. */
-/* #undef _GLIBCXX_USE_SCHED_YIELD */
+#define _GLIBCXX_USE_SCHED_YIELD 1
/* Define if code specialized for wchar_t should be used. */
#define _GLIBCXX_USE_WCHAR_T 1
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/include/bits/gthr-default.h b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/include/bits/gthr-default.h
index f2b132a..1096dbe 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/include/bits/gthr-default.h
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/include/bits/gthr-default.h
@@ -1,7 +1,7 @@
/* Threads compatibility routines for libgcc2 and libobjc. */
/* Compile this one with gcc. */
-/* Copyright (C) 1997, 1999, 2000, 2004, 2008, 2009
- Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+ 2008, 2009 Free Software Foundation, Inc.
This file is part of GCC.
@@ -24,24 +24,341 @@
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H
-#define _GLIBCXX_GCC_GTHR_SINGLE_H
+#ifndef _GLIBCXX_GCC_GTHR_POSIX_H
+#define _GLIBCXX_GCC_GTHR_POSIX_H
-/* Just provide compatibility for mutex handling. */
+/* POSIX threads specific definitions.
+ Easy, since the interface is just one-to-one mapping. */
-typedef int __gthread_key_t;
-typedef int __gthread_once_t;
-typedef int __gthread_mutex_t;
-typedef int __gthread_recursive_mutex_t;
+#define __GTHREADS 1
+#define __GTHREADS_CXX0X 1
-#define __GTHREAD_ONCE_INIT 0
-#define __GTHREAD_MUTEX_INIT 0
-#define __GTHREAD_RECURSIVE_MUTEX_INIT 0
+/* Some implementations of <pthread.h> require this to be defined. */
+#if !defined(_REENTRANT) && defined(__osf__)
+#define _REENTRANT 1
+#endif
-#define _GLIBCXX_UNUSED __attribute__((unused))
+/* The following should normally be in a different header file,
+ * but I couldn't find the right location. The point of the macro
+ * definition below is to prevent libsupc++ and libstdc++ to reference
+ * weak symbols in their static C++ constructors. Such code crashes
+ * when a shared object linked statically to these libraries is
+ * loaded on Android 2.1 (Eclair) and older platform releases, due
+ * to a dynamic linker bug.
+ */
+#ifdef __ANDROID__
+#undef _GLIBCXX_GTHREAD_USE_WEAK
+#define _GLIBCXX_GTHREAD_USE_WEAK 0
+#endif
+
+#include <pthread.h>
+#include <unistd.h>
+
+typedef pthread_t __gthread_t;
+typedef pthread_key_t __gthread_key_t;
+typedef pthread_once_t __gthread_once_t;
+typedef pthread_mutex_t __gthread_mutex_t;
+typedef pthread_mutex_t __gthread_recursive_mutex_t;
+typedef pthread_cond_t __gthread_cond_t;
+typedef struct timespec __gthread_time_t;
+
+/* POSIX like conditional variables are supported. Please look at comments
+ in gthr.h for details. */
+#define __GTHREAD_HAS_COND 1
+
+#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
+#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT
+#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
+#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER
+#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
+#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+#else
+#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
+#endif
+#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER
+#define __GTHREAD_TIME_INIT {0,0}
+
+#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
+# ifndef __gthrw_pragma
+# define __gthrw_pragma(pragma)
+# endif
+# define __gthrw2(name,name2,type) \
+ static __typeof(type) name __attribute__ ((__weakref__(#name2))); \
+ __gthrw_pragma(weak type)
+# define __gthrw_(name) __gthrw_ ## name
+#else
+# define __gthrw2(name,name2,type)
+# define __gthrw_(name) name
+#endif
+
+/* Typically, __gthrw_foo is a weak reference to symbol foo. */
+#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name)
+
+/* On Tru64, /usr/include/pthread.h uses #pragma extern_prefix "__" to
+ map a subset of the POSIX pthread API to mangled versions of their
+ names. */
+#if defined(__osf__) && defined(_PTHREAD_USE_MANGLED_NAMES_)
+#define __gthrw3(name) __gthrw2(__gthrw_ ## name, __ ## name, name)
+__gthrw3(pthread_once)
+__gthrw3(pthread_getspecific)
+__gthrw3(pthread_setspecific)
+
+__gthrw3(pthread_create)
+__gthrw3(pthread_join)
+__gthrw3(pthread_detach)
+__gthrw3(pthread_equal)
+__gthrw3(pthread_self)
+__gthrw3(pthread_cancel)
+__gthrw3(sched_yield)
+
+__gthrw3(pthread_mutex_lock)
+__gthrw3(pthread_mutex_trylock)
+#ifdef _POSIX_TIMEOUTS
+#if _POSIX_TIMEOUTS >= 0
+__gthrw3(pthread_mutex_timedlock)
+#endif
+#endif /* _POSIX_TIMEOUTS */
+__gthrw3(pthread_mutex_unlock)
+__gthrw3(pthread_mutex_init)
+__gthrw3(pthread_mutex_destroy)
+
+__gthrw3(pthread_cond_broadcast)
+__gthrw3(pthread_cond_signal)
+__gthrw3(pthread_cond_wait)
+__gthrw3(pthread_cond_timedwait)
+__gthrw3(pthread_cond_destroy)
+#else
+__gthrw(pthread_once)
+__gthrw(pthread_getspecific)
+__gthrw(pthread_setspecific)
+
+__gthrw(pthread_create)
+__gthrw(pthread_join)
+__gthrw(pthread_equal)
+__gthrw(pthread_self)
+__gthrw(pthread_detach)
+#ifndef __BIONIC__
+__gthrw(pthread_cancel)
+#endif
+__gthrw(sched_yield)
+
+__gthrw(pthread_mutex_lock)
+__gthrw(pthread_mutex_trylock)
+#ifdef _POSIX_TIMEOUTS
+#if _POSIX_TIMEOUTS >= 0
+__gthrw(pthread_mutex_timedlock)
+#endif
+#endif /* _POSIX_TIMEOUTS */
+__gthrw(pthread_mutex_unlock)
+__gthrw(pthread_mutex_init)
+__gthrw(pthread_mutex_destroy)
+
+__gthrw(pthread_cond_broadcast)
+__gthrw(pthread_cond_signal)
+__gthrw(pthread_cond_wait)
+__gthrw(pthread_cond_timedwait)
+__gthrw(pthread_cond_destroy)
+#endif
+
+__gthrw(pthread_key_create)
+__gthrw(pthread_key_delete)
+__gthrw(pthread_mutexattr_init)
+__gthrw(pthread_mutexattr_settype)
+__gthrw(pthread_mutexattr_destroy)
+
+
+#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)
+/* Objective-C. */
+#if defined(__osf__) && defined(_PTHREAD_USE_MANGLED_NAMES_)
+__gthrw3(pthread_cond_init)
+__gthrw3(pthread_exit)
+#else
+__gthrw(pthread_cond_init)
+__gthrw(pthread_exit)
+#endif /* __osf__ && _PTHREAD_USE_MANGLED_NAMES_ */
+#ifdef _POSIX_PRIORITY_SCHEDULING
+#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
+__gthrw(sched_get_priority_max)
+__gthrw(sched_get_priority_min)
+#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
+#endif /* _POSIX_PRIORITY_SCHEDULING */
+__gthrw(pthread_attr_destroy)
+__gthrw(pthread_attr_init)
+__gthrw(pthread_attr_setdetachstate)
+#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
+__gthrw(pthread_getschedparam)
+__gthrw(pthread_setschedparam)
+#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
+#endif /* _LIBOBJC || _LIBOBJC_WEAK */
+
+#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
+
+/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if
+ -pthreads is not specified. The functions are dummies and most return an
+ error value. However pthread_once returns 0 without invoking the routine
+ it is passed so we cannot pretend that the interface is active if -pthreads
+ is not specified. On Solaris 2.5.1, the interface is not exposed at all so
+ we need to play the usual game with weak symbols. On Solaris 10 and up, a
+ working interface is always exposed. On FreeBSD 6 and later, libc also
+ exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up
+ to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc,
+ which means the alternate __gthread_active_p below cannot be used there. */
+
+#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__))
+
+static volatile int __gthread_active = -1;
+
+static void
+__gthread_trigger (void)
+{
+ __gthread_active = 1;
+}
+
+static inline int
+__gthread_active_p (void)
+{
+ static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER;
+ static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT;
+
+ /* Avoid reading __gthread_active twice on the main code path. */
+ int __gthread_active_latest_value = __gthread_active;
+
+ /* This test is not protected to avoid taking a lock on the main code
+ path so every update of __gthread_active in a threaded program must
+ be atomic with regard to the result of the test. */
+ if (__builtin_expect (__gthread_active_latest_value < 0, 0))
+ {
+ if (__gthrw_(pthread_once))
+ {
+ /* If this really is a threaded program, then we must ensure that
+ __gthread_active has been set to 1 before exiting this block. */
+ __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex);
+ __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger);
+ __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex);
+ }
+
+ /* Make sure we'll never enter this block again. */
+ if (__gthread_active < 0)
+ __gthread_active = 0;
+
+ __gthread_active_latest_value = __gthread_active;
+ }
+
+ return __gthread_active_latest_value != 0;
+}
+
+#else /* neither FreeBSD nor Solaris */
+
+static inline int
+__gthread_active_p (void)
+{
+ static void *const __gthread_active_ptr
+ = __extension__ (void *) &__gthrw_(
+/* Android's C library does not provide pthread_cancel, check for
+ `pthread_create' instead. */
+#ifndef __BIONIC__
+ pthread_cancel
+#else
+ pthread_create
+#endif
+ );
+ return __gthread_active_ptr != 0;
+}
+
+#endif /* FreeBSD or Solaris */
+
+#else /* not __GXX_WEAK__ */
+
+/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread
+ calls in shared flavors of the HP-UX C library. Most of the stubs
+ have no functionality. The details are described in the "libc cumulative
+ patch" for each subversion of HP-UX 11. There are two special interfaces
+ provided for checking whether an application is linked to a pthread
+ library or not. However, these interfaces aren't available in early
+ libc versions. We also can't use pthread_once as some libc versions
+ call the init function. So, we use pthread_create to check whether it
+ is possible to create a thread or not. The stub implementation returns
+ the error number ENOSYS. */
+
+#if defined(__hppa__) && defined(__hpux__)
+
+#include <errno.h>
+
+static volatile int __gthread_active = -1;
+
+static void *
+__gthread_start (void *__arg __attribute__((unused)))
+{
+ return NULL;
+}
+
+static void __gthread_active_init (void) __attribute__((noinline));
+static void
+__gthread_active_init (void)
+{
+ static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER;
+ pthread_t __t;
+ pthread_attr_t __a;
+ int __result;
+
+ __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex);
+ if (__gthread_active < 0)
+ {
+ __gthrw_(pthread_attr_init) (&__a);
+ __gthrw_(pthread_attr_setdetachstate) (&__a, PTHREAD_CREATE_DETACHED);
+ __result = __gthrw_(pthread_create) (&__t, &__a, __gthread_start, NULL);
+ if (__result != ENOSYS)
+ __gthread_active = 1;
+ else
+ __gthread_active = 0;
+ __gthrw_(pthread_attr_destroy) (&__a);
+ }
+ __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex);
+}
+
+static inline int
+__gthread_active_p (void)
+{
+ /* Avoid reading __gthread_active twice on the main code path. */
+ int __gthread_active_latest_value = __gthread_active;
+
+ /* This test is not protected to avoid taking a lock on the main code
+ path so every update of __gthread_active in a threaded program must
+ be atomic with regard to the result of the test. */
+ if (__builtin_expect (__gthread_active_latest_value < 0, 0))
+ {
+ __gthread_active_init ();
+ __gthread_active_latest_value = __gthread_active;
+ }
+
+ return __gthread_active_latest_value != 0;
+}
+
+#else /* not hppa-hpux */
+
+static inline int
+__gthread_active_p (void)
+{
+ return 1;
+}
+
+#endif /* hppa-hpux */
+
+#endif /* __GXX_WEAK__ */
#ifdef _LIBOBJC
+/* This is the config.h file in libobjc/ */
+#include <config.h>
+
+#ifdef HAVE_SCHED_H
+# include <sched.h>
+#endif
+
+/* Key structure for maintaining thread specific storage */
+static pthread_key_t _objc_thread_storage;
+static pthread_attr_t _objc_thread_attribs;
+
/* Thread local storage for a single thread */
static void *thread_local_storage = NULL;
@@ -51,7 +368,21 @@
static inline int
__gthread_objc_init_thread_system (void)
{
- /* No thread support available */
+ if (__gthread_active_p ())
+ {
+ /* Initialize the thread storage key. */
+ if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0)
+ {
+ /* The normal default detach state for threads is
+ * PTHREAD_CREATE_JOINABLE which causes threads to not die
+ * when you think they should. */
+ if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0
+ && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs,
+ PTHREAD_CREATE_DETACHED) == 0)
+ return 0;
+ }
+ }
+
return -1;
}
@@ -59,7 +390,11 @@
static inline int
__gthread_objc_close_thread_system (void)
{
- /* No thread support available */
+ if (__gthread_active_p ()
+ && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0
+ && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0)
+ return 0;
+
return -1;
}
@@ -67,41 +402,104 @@
/* Create a new thread of execution. */
static inline objc_thread_t
-__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED)
+__gthread_objc_thread_detach (void (*func)(void *), void *arg)
{
- /* No thread support available */
- return NULL;
+ objc_thread_t thread_id;
+ pthread_t new_thread_handle;
+
+ if (!__gthread_active_p ())
+ return NULL;
+
+ if (!(__gthrw_(pthread_create) (&new_thread_handle, NULL, (void *) func, arg)))
+ thread_id = (objc_thread_t) new_thread_handle;
+ else
+ thread_id = NULL;
+
+ return thread_id;
}
/* Set the current thread's priority. */
static inline int
-__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED)
+__gthread_objc_thread_set_priority (int priority)
{
- /* No thread support available */
- return -1;
+ if (!__gthread_active_p ())
+ return -1;
+ else
+ {
+#ifdef _POSIX_PRIORITY_SCHEDULING
+#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
+ pthread_t thread_id = __gthrw_(pthread_self) ();
+ int policy;
+ struct sched_param params;
+ int priority_min, priority_max;
+
+ if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0)
+ {
+ if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1)
+ return -1;
+
+ if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1)
+ return -1;
+
+ if (priority > priority_max)
+ priority = priority_max;
+ else if (priority < priority_min)
+ priority = priority_min;
+ params.sched_priority = priority;
+
+ /*
+ * The solaris 7 and several other man pages incorrectly state that
+ * this should be a pointer to policy but pthread.h is universally
+ * at odds with this.
+ */
+ if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0)
+ return 0;
+ }
+#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
+#endif /* _POSIX_PRIORITY_SCHEDULING */
+ return -1;
+ }
}
/* Return the current thread's priority. */
static inline int
__gthread_objc_thread_get_priority (void)
{
- return OBJC_THREAD_INTERACTIVE_PRIORITY;
+#ifdef _POSIX_PRIORITY_SCHEDULING
+#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
+ if (__gthread_active_p ())
+ {
+ int policy;
+ struct sched_param params;
+
+ if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0)
+ return params.sched_priority;
+ else
+ return -1;
+ }
+ else
+#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
+#endif /* _POSIX_PRIORITY_SCHEDULING */
+ return OBJC_THREAD_INTERACTIVE_PRIORITY;
}
/* Yield our process time to another thread. */
static inline void
__gthread_objc_thread_yield (void)
{
- return;
+ if (__gthread_active_p ())
+ __gthrw_(sched_yield) ();
}
/* Terminate the current thread. */
static inline int
__gthread_objc_thread_exit (void)
{
- /* No thread support available */
- /* Should we really exit the program */
- /* exit (&__objc_thread_exit_status); */
+ if (__gthread_active_p ())
+ /* exit the thread */
+ __gthrw_(pthread_exit) (&__objc_thread_exit_status);
+
+ /* Failed if we reached here */
return -1;
}
@@ -109,61 +507,122 @@
static inline objc_thread_t
__gthread_objc_thread_id (void)
{
- /* No thread support, use 1. */
- return (objc_thread_t) 1;
+ if (__gthread_active_p ())
+ return (objc_thread_t) __gthrw_(pthread_self) ();
+ else
+ return (objc_thread_t) 1;
}
/* Sets the thread's local storage pointer. */
static inline int
__gthread_objc_thread_set_data (void *value)
{
- thread_local_storage = value;
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_setspecific) (_objc_thread_storage, value);
+ else
+ {
+ thread_local_storage = value;
+ return 0;
+ }
}
/* Returns the thread's local storage pointer. */
static inline void *
__gthread_objc_thread_get_data (void)
{
- return thread_local_storage;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_getspecific) (_objc_thread_storage);
+ else
+ return thread_local_storage;
}
/* Backend mutex functions */
/* Allocate a mutex. */
static inline int
-__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_mutex_allocate (objc_mutex_t mutex)
{
+ if (__gthread_active_p ())
+ {
+ mutex->backend = objc_malloc (sizeof (pthread_mutex_t));
+
+ if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL))
+ {
+ objc_free (mutex->backend);
+ mutex->backend = NULL;
+ return -1;
+ }
+ }
+
return 0;
}
/* Deallocate a mutex. */
static inline int
-__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_mutex_deallocate (objc_mutex_t mutex)
{
+ if (__gthread_active_p ())
+ {
+ int count;
+
+ /*
+ * Posix Threads specifically require that the thread be unlocked
+ * for __gthrw_(pthread_mutex_destroy) to work.
+ */
+
+ do
+ {
+ count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend);
+ if (count < 0)
+ return -1;
+ }
+ while (count);
+
+ if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend))
+ return -1;
+
+ objc_free (mutex->backend);
+ mutex->backend = NULL;
+ }
return 0;
}
/* Grab a lock on a mutex. */
static inline int
-__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_mutex_lock (objc_mutex_t mutex)
{
- /* There can only be one thread, so we always get the lock */
+ if (__gthread_active_p ()
+ && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0)
+ {
+ return -1;
+ }
+
return 0;
}
/* Try to grab a lock on a mutex. */
static inline int
-__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_mutex_trylock (objc_mutex_t mutex)
{
- /* There can only be one thread, so we always get the lock */
+ if (__gthread_active_p ()
+ && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0)
+ {
+ return -1;
+ }
+
return 0;
}
/* Unlock the mutex */
static inline int
-__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_mutex_unlock (objc_mutex_t mutex)
{
+ if (__gthread_active_p ()
+ && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0)
+ {
+ return -1;
+ }
+
return 0;
}
@@ -171,101 +630,213 @@
/* Allocate a condition. */
static inline int
-__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED)
+__gthread_objc_condition_allocate (objc_condition_t condition)
{
+ if (__gthread_active_p ())
+ {
+ condition->backend = objc_malloc (sizeof (pthread_cond_t));
+
+ if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL))
+ {
+ objc_free (condition->backend);
+ condition->backend = NULL;
+ return -1;
+ }
+ }
+
return 0;
}
/* Deallocate a condition. */
static inline int
-__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED)
+__gthread_objc_condition_deallocate (objc_condition_t condition)
{
+ if (__gthread_active_p ())
+ {
+ if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend))
+ return -1;
+
+ objc_free (condition->backend);
+ condition->backend = NULL;
+ }
return 0;
}
/* Wait on the condition */
static inline int
-__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED,
- objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend,
+ (pthread_mutex_t *) mutex->backend);
+ else
+ return 0;
}
/* Wake up all threads waiting on this condition. */
static inline int
-__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED)
+__gthread_objc_condition_broadcast (objc_condition_t condition)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend);
+ else
+ return 0;
}
/* Wake up one thread waiting on this condition. */
static inline int
-__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED)
+__gthread_objc_condition_signal (objc_condition_t condition)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend);
+ else
+ return 0;
}
#else /* _LIBOBJC */
static inline int
-__gthread_active_p (void)
+__gthread_create (__gthread_t *__threadid, void *(*__func) (void*),
+ void *__args)
{
- return 0;
+ return __gthrw_(pthread_create) (__threadid, NULL, __func, __args);
}
-static inline int
-__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED)
+static inline int
+__gthread_join (__gthread_t __threadid, void **__value_ptr)
{
- return 0;
-}
-
-static inline int _GLIBCXX_UNUSED
-__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED)
-{
- return 0;
+ return __gthrw_(pthread_join) (__threadid, __value_ptr);
}
-static int _GLIBCXX_UNUSED
-__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED)
+static inline int
+__gthread_detach (__gthread_t __threadid)
{
- return 0;
+ return __gthrw_(pthread_detach) (__threadid);
}
-
+
+static inline int
+__gthread_equal (__gthread_t __t1, __gthread_t __t2)
+{
+ return __gthrw_(pthread_equal) (__t1, __t2);
+}
+
+static inline __gthread_t
+__gthread_self (void)
+{
+ return __gthrw_(pthread_self) ();
+}
+
+static inline int
+__gthread_yield (void)
+{
+ return __gthrw_(sched_yield) ();
+}
+
+static inline int
+__gthread_once (__gthread_once_t *__once, void (*__func) (void))
+{
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_once) (__once, __func);
+ else
+ return -1;
+}
+
+static inline int
+__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
+{
+ return __gthrw_(pthread_key_create) (__key, __dtor);
+}
+
+static inline int
+__gthread_key_delete (__gthread_key_t __key)
+{
+ return __gthrw_(pthread_key_delete) (__key);
+}
+
static inline void *
-__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED)
+__gthread_getspecific (__gthread_key_t __key)
{
- return 0;
-}
-
-static inline int
-__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED)
-{
- return 0;
+ return __gthrw_(pthread_getspecific) (__key);
}
static inline int
-__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
+__gthread_setspecific (__gthread_key_t __key, const void *__ptr)
{
- return 0;
+ return __gthrw_(pthread_setspecific) (__key, __ptr);
}
static inline int
-__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
+__gthread_mutex_destroy (__gthread_mutex_t *__mutex)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_mutex_destroy) (__mutex);
+ else
+ return 0;
}
static inline int
-__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
+__gthread_mutex_lock (__gthread_mutex_t *__mutex)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_mutex_lock) (__mutex);
+ else
+ return 0;
}
static inline int
-__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
+__gthread_mutex_trylock (__gthread_mutex_t *__mutex)
{
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_mutex_trylock) (__mutex);
+ else
+ return 0;
+}
+
+#ifdef _POSIX_TIMEOUTS
+#if _POSIX_TIMEOUTS >= 0
+static inline int
+__gthread_mutex_timedlock (__gthread_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout)
+{
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout);
+ else
+ return 0;
+}
+#endif
+#endif
+
+static inline int
+__gthread_mutex_unlock (__gthread_mutex_t *__mutex)
+{
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_mutex_unlock) (__mutex);
+ else
+ return 0;
+}
+
+#ifndef PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+static inline int
+__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex)
+{
+ if (__gthread_active_p ())
+ {
+ pthread_mutexattr_t __attr;
+ int __r;
+
+ __r = __gthrw_(pthread_mutexattr_init) (&__attr);
+ if (!__r)
+ __r = __gthrw_(pthread_mutexattr_settype) (&__attr,
+ PTHREAD_MUTEX_RECURSIVE);
+ if (!__r)
+ __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr);
+ if (!__r)
+ __r = __gthrw_(pthread_mutexattr_destroy) (&__attr);
+ return __r;
+ }
return 0;
}
+#endif
static inline int
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
@@ -279,14 +850,69 @@
return __gthread_mutex_trylock (__mutex);
}
+#ifdef _POSIX_TIMEOUTS
+#if _POSIX_TIMEOUTS >= 0
+static inline int
+__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout)
+{
+ return __gthread_mutex_timedlock (__mutex, __abs_timeout);
+}
+#endif
+#endif
+
static inline int
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
{
return __gthread_mutex_unlock (__mutex);
}
+static inline int
+__gthread_cond_broadcast (__gthread_cond_t *__cond)
+{
+ return __gthrw_(pthread_cond_broadcast) (__cond);
+}
+
+static inline int
+__gthread_cond_signal (__gthread_cond_t *__cond)
+{
+ return __gthrw_(pthread_cond_signal) (__cond);
+}
+
+static inline int
+__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex)
+{
+ return __gthrw_(pthread_cond_wait) (__cond, __mutex);
+}
+
+static inline int
+__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout)
+{
+ return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout);
+}
+
+static inline int
+__gthread_cond_wait_recursive (__gthread_cond_t *__cond,
+ __gthread_recursive_mutex_t *__mutex)
+{
+ return __gthread_cond_wait (__cond, __mutex);
+}
+
+static inline int
+__gthread_cond_timedwait_recursive (__gthread_cond_t *__cond,
+ __gthread_recursive_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout)
+{
+ return __gthread_cond_timedwait (__cond, __mutex, __abs_timeout);
+}
+
+static inline int
+__gthread_cond_destroy (__gthread_cond_t* __cond)
+{
+ return __gthrw_(pthread_cond_destroy) (__cond);
+}
+
#endif /* _LIBOBJC */
-#undef _GLIBCXX_UNUSED
-
-#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */
+#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/libgnustl_shared.so
index 532a02c..f70401e 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/libgnustl_static.a
index eede214..c0f6239 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/libsupc++.a
index 460dc9f..245d101 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/mips/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/include/bits/c++config.h b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/include/bits/c++config.h
index 49391c5..8aae2f7 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/include/bits/c++config.h
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/include/bits/c++config.h
@@ -319,13 +319,13 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the `acosf' function. */
-/* #undef _GLIBCXX_HAVE_ACOSF */
+#define _GLIBCXX_HAVE_ACOSF 1
/* Define to 1 if you have the `acosl' function. */
/* #undef _GLIBCXX_HAVE_ACOSL */
/* Define to 1 if you have the `asinf' function. */
-/* #undef _GLIBCXX_HAVE_ASINF */
+#define _GLIBCXX_HAVE_ASINF 1
/* Define to 1 if you have the `asinl' function. */
/* #undef _GLIBCXX_HAVE_ASINL */
@@ -334,13 +334,13 @@
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
/* Define to 1 if you have the `atan2f' function. */
-/* #undef _GLIBCXX_HAVE_ATAN2F */
+#define _GLIBCXX_HAVE_ATAN2F 1
/* Define to 1 if you have the `atan2l' function. */
/* #undef _GLIBCXX_HAVE_ATAN2L */
/* Define to 1 if you have the `atanf' function. */
-/* #undef _GLIBCXX_HAVE_ATANF */
+#define _GLIBCXX_HAVE_ATANF 1
/* Define to 1 if you have the `atanl' function. */
/* #undef _GLIBCXX_HAVE_ATANL */
@@ -349,19 +349,19 @@
/* #undef _GLIBCXX_HAVE_CC_TLS */
/* Define to 1 if you have the `ceilf' function. */
-/* #undef _GLIBCXX_HAVE_CEILF */
+#define _GLIBCXX_HAVE_CEILF 1
/* Define to 1 if you have the `ceill' function. */
-/* #undef _GLIBCXX_HAVE_CEILL */
+#define _GLIBCXX_HAVE_CEILL 1
/* Define to 1 if you have the <complex.h> header file. */
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
/* Define to 1 if you have the `cosf' function. */
-/* #undef _GLIBCXX_HAVE_COSF */
+#define _GLIBCXX_HAVE_COSF 1
/* Define to 1 if you have the `coshf' function. */
-/* #undef _GLIBCXX_HAVE_COSHF */
+#define _GLIBCXX_HAVE_COSHF 1
/* Define to 1 if you have the `coshl' function. */
/* #undef _GLIBCXX_HAVE_COSHL */
@@ -418,25 +418,25 @@
#define _GLIBCXX_HAVE_ETXTBSY 1
/* Define to 1 if you have the `expf' function. */
-/* #undef _GLIBCXX_HAVE_EXPF */
+#define _GLIBCXX_HAVE_EXPF 1
/* Define to 1 if you have the `expl' function. */
/* #undef _GLIBCXX_HAVE_EXPL */
/* Define to 1 if you have the `fabsf' function. */
-/* #undef _GLIBCXX_HAVE_FABSF */
+#define _GLIBCXX_HAVE_FABSF 1
/* Define to 1 if you have the `fabsl' function. */
-/* #undef _GLIBCXX_HAVE_FABSL */
+#define _GLIBCXX_HAVE_FABSL 1
/* Define to 1 if you have the <fenv.h> header file. */
#define _GLIBCXX_HAVE_FENV_H 1
/* Define to 1 if you have the `finite' function. */
-/* #undef _GLIBCXX_HAVE_FINITE */
+#define _GLIBCXX_HAVE_FINITE 1
/* Define to 1 if you have the `finitef' function. */
-/* #undef _GLIBCXX_HAVE_FINITEF */
+#define _GLIBCXX_HAVE_FINITEF 1
/* Define to 1 if you have the `finitel' function. */
/* #undef _GLIBCXX_HAVE_FINITEL */
@@ -445,13 +445,13 @@
#define _GLIBCXX_HAVE_FLOAT_H 1
/* Define to 1 if you have the `floorf' function. */
-/* #undef _GLIBCXX_HAVE_FLOORF */
+#define _GLIBCXX_HAVE_FLOORF 1
/* Define to 1 if you have the `floorl' function. */
-/* #undef _GLIBCXX_HAVE_FLOORL */
+#define _GLIBCXX_HAVE_FLOORL 1
/* Define to 1 if you have the `fmodf' function. */
-/* #undef _GLIBCXX_HAVE_FMODF */
+#define _GLIBCXX_HAVE_FMODF 1
/* Define to 1 if you have the `fmodl' function. */
/* #undef _GLIBCXX_HAVE_FMODL */
@@ -463,7 +463,7 @@
/* #undef _GLIBCXX_HAVE_FP_H */
/* Define to 1 if you have the `frexpf' function. */
-/* #undef _GLIBCXX_HAVE_FREXPF */
+#define _GLIBCXX_HAVE_FREXPF 1
/* Define to 1 if you have the `frexpl' function. */
/* #undef _GLIBCXX_HAVE_FREXPL */
@@ -476,10 +476,10 @@
#define _GLIBCXX_HAVE_GTHR_DEFAULT 1
/* Define to 1 if you have the `hypot' function. */
-/* #undef _GLIBCXX_HAVE_HYPOT */
+#define _GLIBCXX_HAVE_HYPOT 1
/* Define to 1 if you have the `hypotf' function. */
-/* #undef _GLIBCXX_HAVE_HYPOTF */
+#define _GLIBCXX_HAVE_HYPOTF 1
/* Define to 1 if you have the `hypotl' function. */
/* #undef _GLIBCXX_HAVE_HYPOTL */
@@ -515,7 +515,7 @@
/* #undef _GLIBCXX_HAVE_ISNAN */
/* Define to 1 if you have the `isnanf' function. */
-/* #undef _GLIBCXX_HAVE_ISNANF */
+#define _GLIBCXX_HAVE_ISNANF 1
/* Define to 1 if you have the `isnanl' function. */
/* #undef _GLIBCXX_HAVE_ISNANL */
@@ -527,10 +527,10 @@
#define _GLIBCXX_HAVE_LC_MESSAGES 1
/* Define to 1 if you have the `ldexpf' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPF */
+#define _GLIBCXX_HAVE_LDEXPF 1
/* Define to 1 if you have the `ldexpl' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPL */
+#define _GLIBCXX_HAVE_LDEXPL 1
/* Define to 1 if you have the <libintl.h> header file. */
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
@@ -557,13 +557,13 @@
#define _GLIBCXX_HAVE_LOCALE_H 1
/* Define to 1 if you have the `log10f' function. */
-/* #undef _GLIBCXX_HAVE_LOG10F */
+#define _GLIBCXX_HAVE_LOG10F 1
/* Define to 1 if you have the `log10l' function. */
/* #undef _GLIBCXX_HAVE_LOG10L */
/* Define to 1 if you have the `logf' function. */
-/* #undef _GLIBCXX_HAVE_LOGF */
+#define _GLIBCXX_HAVE_LOGF 1
/* Define to 1 if you have the `logl' function. */
/* #undef _GLIBCXX_HAVE_LOGL */
@@ -581,10 +581,10 @@
#define _GLIBCXX_HAVE_MEMORY_H 1
/* Define to 1 if you have the `modf' function. */
-/* #undef _GLIBCXX_HAVE_MODF */
+#define _GLIBCXX_HAVE_MODF 1
/* Define to 1 if you have the `modff' function. */
-/* #undef _GLIBCXX_HAVE_MODFF */
+#define _GLIBCXX_HAVE_MODFF 1
/* Define to 1 if you have the `modfl' function. */
/* #undef _GLIBCXX_HAVE_MODFL */
@@ -593,10 +593,10 @@
/* #undef _GLIBCXX_HAVE_NAN_H */
/* Define if poll is available in <poll.h>. */
-/* #undef _GLIBCXX_HAVE_POLL */
+#define _GLIBCXX_HAVE_POLL 1
/* Define to 1 if you have the `powf' function. */
-/* #undef _GLIBCXX_HAVE_POWF */
+#define _GLIBCXX_HAVE_POWF 1
/* Define to 1 if you have the `powl' function. */
/* #undef _GLIBCXX_HAVE_POWL */
@@ -608,19 +608,19 @@
/* #undef _GLIBCXX_HAVE_SETENV */
/* Define to 1 if you have the `sincos' function. */
-/* #undef _GLIBCXX_HAVE_SINCOS */
+#define _GLIBCXX_HAVE_SINCOS 1
/* Define to 1 if you have the `sincosf' function. */
-/* #undef _GLIBCXX_HAVE_SINCOSF */
+#define _GLIBCXX_HAVE_SINCOSF 1
/* Define to 1 if you have the `sincosl' function. */
-/* #undef _GLIBCXX_HAVE_SINCOSL */
+#define _GLIBCXX_HAVE_SINCOSL 1
/* Define to 1 if you have the `sinf' function. */
-/* #undef _GLIBCXX_HAVE_SINF */
+#define _GLIBCXX_HAVE_SINF 1
/* Define to 1 if you have the `sinhf' function. */
-/* #undef _GLIBCXX_HAVE_SINHF */
+#define _GLIBCXX_HAVE_SINHF 1
/* Define to 1 if you have the `sinhl' function. */
/* #undef _GLIBCXX_HAVE_SINHL */
@@ -629,7 +629,7 @@
/* #undef _GLIBCXX_HAVE_SINL */
/* Define to 1 if you have the `sqrtf' function. */
-/* #undef _GLIBCXX_HAVE_SQRTF */
+#define _GLIBCXX_HAVE_SQRTF 1
/* Define to 1 if you have the `sqrtl' function. */
/* #undef _GLIBCXX_HAVE_SQRTL */
@@ -704,13 +704,13 @@
/* #undef _GLIBCXX_HAVE_S_IFREG */
/* Define if S_IFREG is available in <sys/stat.h>. */
-/* #undef _GLIBCXX_HAVE_S_ISREG */
+#define _GLIBCXX_HAVE_S_ISREG 1
/* Define to 1 if you have the `tanf' function. */
-/* #undef _GLIBCXX_HAVE_TANF */
+#define _GLIBCXX_HAVE_TANF 1
/* Define to 1 if you have the `tanhf' function. */
-/* #undef _GLIBCXX_HAVE_TANHF */
+#define _GLIBCXX_HAVE_TANHF 1
/* Define to 1 if you have the `tanhl' function. */
/* #undef _GLIBCXX_HAVE_TANHL */
@@ -746,7 +746,7 @@
#define _GLIBCXX_HAVE_WCTYPE_H 1
/* Define if writev is available in <sys/uio.h>. */
-/* #undef _GLIBCXX_HAVE_WRITEV */
+#define _GLIBCXX_HAVE_WRITEV 1
/* Define to 1 if you have the `_acosf' function. */
/* #undef _GLIBCXX_HAVE__ACOSF */
@@ -1067,7 +1067,7 @@
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
in namespace std. */
-/* #undef _GLIBCXX_USE_C99_MATH */
+#define _GLIBCXX_USE_C99_MATH 1
/* Define if C99 functions or macros in <math.h> should be imported in
<tr1/cmath> in namespace std::tr1. */
@@ -1078,13 +1078,13 @@
#define _GLIBCXX_USE_C99_STDINT_TR1 1
/* Defined if clock_gettime has monotonic clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
+#define _GLIBCXX_USE_CLOCK_MONOTONIC 1
/* Defined if clock_gettime has realtime clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
+#define _GLIBCXX_USE_CLOCK_REALTIME 1
/* Defined if gettimeofday is available. */
-/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
+#define _GLIBCXX_USE_GETTIMEOFDAY 1
/* Define if LFS support is available. */
/* #undef _GLIBCXX_USE_LFS */
@@ -1093,7 +1093,7 @@
#define _GLIBCXX_USE_LONG_LONG 1
/* Defined if nanosleep is available. */
-/* #undef _GLIBCXX_USE_NANOSLEEP */
+#define _GLIBCXX_USE_NANOSLEEP 1
/* Define if NLS translations are to be used. */
/* #undef _GLIBCXX_USE_NLS */
@@ -1103,7 +1103,7 @@
#define _GLIBCXX_USE_RANDOM_TR1 1
/* Defined if sched_yield is available. */
-/* #undef _GLIBCXX_USE_SCHED_YIELD */
+#define _GLIBCXX_USE_SCHED_YIELD 1
/* Define if code specialized for wchar_t should be used. */
#define _GLIBCXX_USE_WCHAR_T 1
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/libgnustl_shared.so
index 25fe0f3..585cfbf 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/libgnustl_static.a
index b3aa31d..d21ffda 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/libsupc++.a
index 29400a9..d3d14fd 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/x86/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include/bits/c++config.h b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include/bits/c++config.h
index 2156f0d..1c99c4f 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include/bits/c++config.h
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include/bits/c++config.h
@@ -434,13 +434,13 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the `acosf' function. */
-/* #undef _GLIBCXX_HAVE_ACOSF */
+#define _GLIBCXX_HAVE_ACOSF 1
/* Define to 1 if you have the `acosl' function. */
/* #undef _GLIBCXX_HAVE_ACOSL */
/* Define to 1 if you have the `asinf' function. */
-/* #undef _GLIBCXX_HAVE_ASINF */
+#define _GLIBCXX_HAVE_ASINF 1
/* Define to 1 if you have the `asinl' function. */
/* #undef _GLIBCXX_HAVE_ASINL */
@@ -449,13 +449,13 @@
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
/* Define to 1 if you have the `atan2f' function. */
-/* #undef _GLIBCXX_HAVE_ATAN2F */
+#define _GLIBCXX_HAVE_ATAN2F 1
/* Define to 1 if you have the `atan2l' function. */
/* #undef _GLIBCXX_HAVE_ATAN2L */
/* Define to 1 if you have the `atanf' function. */
-/* #undef _GLIBCXX_HAVE_ATANF */
+#define _GLIBCXX_HAVE_ATANF 1
/* Define to 1 if you have the `atanl' function. */
/* #undef _GLIBCXX_HAVE_ATANL */
@@ -464,19 +464,19 @@
/* #undef _GLIBCXX_HAVE_CC_TLS */
/* Define to 1 if you have the `ceilf' function. */
-/* #undef _GLIBCXX_HAVE_CEILF */
+#define _GLIBCXX_HAVE_CEILF 1
/* Define to 1 if you have the `ceill' function. */
-/* #undef _GLIBCXX_HAVE_CEILL */
+#define _GLIBCXX_HAVE_CEILL 1
/* Define to 1 if you have the <complex.h> header file. */
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
/* Define to 1 if you have the `cosf' function. */
-/* #undef _GLIBCXX_HAVE_COSF */
+#define _GLIBCXX_HAVE_COSF 1
/* Define to 1 if you have the `coshf' function. */
-/* #undef _GLIBCXX_HAVE_COSHF */
+#define _GLIBCXX_HAVE_COSHF 1
/* Define to 1 if you have the `coshl' function. */
/* #undef _GLIBCXX_HAVE_COSHL */
@@ -536,25 +536,25 @@
/* #undef _GLIBCXX_HAVE_EXECINFO_H */
/* Define to 1 if you have the `expf' function. */
-/* #undef _GLIBCXX_HAVE_EXPF */
+#define _GLIBCXX_HAVE_EXPF 1
/* Define to 1 if you have the `expl' function. */
/* #undef _GLIBCXX_HAVE_EXPL */
/* Define to 1 if you have the `fabsf' function. */
-/* #undef _GLIBCXX_HAVE_FABSF */
+#define _GLIBCXX_HAVE_FABSF 1
/* Define to 1 if you have the `fabsl' function. */
-/* #undef _GLIBCXX_HAVE_FABSL */
+#define _GLIBCXX_HAVE_FABSL 1
/* Define to 1 if you have the <fenv.h> header file. */
#define _GLIBCXX_HAVE_FENV_H 1
/* Define to 1 if you have the `finite' function. */
-/* #undef _GLIBCXX_HAVE_FINITE */
+#define _GLIBCXX_HAVE_FINITE 1
/* Define to 1 if you have the `finitef' function. */
-/* #undef _GLIBCXX_HAVE_FINITEF */
+#define _GLIBCXX_HAVE_FINITEF 1
/* Define to 1 if you have the `finitel' function. */
/* #undef _GLIBCXX_HAVE_FINITEL */
@@ -563,13 +563,13 @@
#define _GLIBCXX_HAVE_FLOAT_H 1
/* Define to 1 if you have the `floorf' function. */
-/* #undef _GLIBCXX_HAVE_FLOORF */
+#define _GLIBCXX_HAVE_FLOORF 1
/* Define to 1 if you have the `floorl' function. */
-/* #undef _GLIBCXX_HAVE_FLOORL */
+#define _GLIBCXX_HAVE_FLOORL 1
/* Define to 1 if you have the `fmodf' function. */
-/* #undef _GLIBCXX_HAVE_FMODF */
+#define _GLIBCXX_HAVE_FMODF 1
/* Define to 1 if you have the `fmodl' function. */
/* #undef _GLIBCXX_HAVE_FMODL */
@@ -581,7 +581,7 @@
/* #undef _GLIBCXX_HAVE_FP_H */
/* Define to 1 if you have the `frexpf' function. */
-/* #undef _GLIBCXX_HAVE_FREXPF */
+#define _GLIBCXX_HAVE_FREXPF 1
/* Define to 1 if you have the `frexpl' function. */
/* #undef _GLIBCXX_HAVE_FREXPL */
@@ -594,10 +594,10 @@
#define _GLIBCXX_HAVE_GTHR_DEFAULT 1
/* Define to 1 if you have the `hypot' function. */
-/* #undef _GLIBCXX_HAVE_HYPOT */
+#define _GLIBCXX_HAVE_HYPOT 1
/* Define to 1 if you have the `hypotf' function. */
-/* #undef _GLIBCXX_HAVE_HYPOTF */
+#define _GLIBCXX_HAVE_HYPOTF 1
/* Define to 1 if you have the `hypotl' function. */
/* #undef _GLIBCXX_HAVE_HYPOTL */
@@ -633,7 +633,7 @@
/* #undef _GLIBCXX_HAVE_ISNAN */
/* Define to 1 if you have the `isnanf' function. */
-/* #undef _GLIBCXX_HAVE_ISNANF */
+#define _GLIBCXX_HAVE_ISNANF 1
/* Define to 1 if you have the `isnanl' function. */
/* #undef _GLIBCXX_HAVE_ISNANL */
@@ -645,10 +645,10 @@
#define _GLIBCXX_HAVE_LC_MESSAGES 1
/* Define to 1 if you have the `ldexpf' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPF */
+#define _GLIBCXX_HAVE_LDEXPF 1
/* Define to 1 if you have the `ldexpl' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPL */
+#define _GLIBCXX_HAVE_LDEXPL 1
/* Define to 1 if you have the <libintl.h> header file. */
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
@@ -675,13 +675,13 @@
#define _GLIBCXX_HAVE_LOCALE_H 1
/* Define to 1 if you have the `log10f' function. */
-/* #undef _GLIBCXX_HAVE_LOG10F */
+#define _GLIBCXX_HAVE_LOG10F 1
/* Define to 1 if you have the `log10l' function. */
/* #undef _GLIBCXX_HAVE_LOG10L */
/* Define to 1 if you have the `logf' function. */
-/* #undef _GLIBCXX_HAVE_LOGF */
+#define _GLIBCXX_HAVE_LOGF 1
/* Define to 1 if you have the `logl' function. */
/* #undef _GLIBCXX_HAVE_LOGL */
@@ -699,10 +699,10 @@
#define _GLIBCXX_HAVE_MEMORY_H 1
/* Define to 1 if you have the `modf' function. */
-/* #undef _GLIBCXX_HAVE_MODF */
+#define _GLIBCXX_HAVE_MODF 1
/* Define to 1 if you have the `modff' function. */
-/* #undef _GLIBCXX_HAVE_MODFF */
+#define _GLIBCXX_HAVE_MODFF 1
/* Define to 1 if you have the `modfl' function. */
/* #undef _GLIBCXX_HAVE_MODFL */
@@ -711,10 +711,10 @@
/* #undef _GLIBCXX_HAVE_NAN_H */
/* Define if poll is available in <poll.h>. */
-/* #undef _GLIBCXX_HAVE_POLL */
+#define _GLIBCXX_HAVE_POLL 1
/* Define to 1 if you have the `powf' function. */
-/* #undef _GLIBCXX_HAVE_POWF */
+#define _GLIBCXX_HAVE_POWF 1
/* Define to 1 if you have the `powl' function. */
/* #undef _GLIBCXX_HAVE_POWL */
@@ -735,10 +735,10 @@
/* #undef _GLIBCXX_HAVE_SINCOSL */
/* Define to 1 if you have the `sinf' function. */
-/* #undef _GLIBCXX_HAVE_SINF */
+#define _GLIBCXX_HAVE_SINF 1
/* Define to 1 if you have the `sinhf' function. */
-/* #undef _GLIBCXX_HAVE_SINHF */
+#define _GLIBCXX_HAVE_SINHF 1
/* Define to 1 if you have the `sinhl' function. */
/* #undef _GLIBCXX_HAVE_SINHL */
@@ -747,7 +747,7 @@
/* #undef _GLIBCXX_HAVE_SINL */
/* Define to 1 if you have the `sqrtf' function. */
-/* #undef _GLIBCXX_HAVE_SQRTF */
+#define _GLIBCXX_HAVE_SQRTF 1
/* Define to 1 if you have the `sqrtl' function. */
/* #undef _GLIBCXX_HAVE_SQRTL */
@@ -826,13 +826,13 @@
/* #undef _GLIBCXX_HAVE_S_IFREG */
/* Define if S_IFREG is available in <sys/stat.h>. */
-/* #undef _GLIBCXX_HAVE_S_ISREG */
+#define _GLIBCXX_HAVE_S_ISREG 1
/* Define to 1 if you have the `tanf' function. */
-/* #undef _GLIBCXX_HAVE_TANF */
+#define _GLIBCXX_HAVE_TANF 1
/* Define to 1 if you have the `tanhf' function. */
-/* #undef _GLIBCXX_HAVE_TANHF */
+#define _GLIBCXX_HAVE_TANHF 1
/* Define to 1 if you have the `tanhl' function. */
/* #undef _GLIBCXX_HAVE_TANHL */
@@ -868,7 +868,7 @@
#define _GLIBCXX_HAVE_WCTYPE_H 1
/* Define if writev is available in <sys/uio.h>. */
-/* #undef _GLIBCXX_HAVE_WRITEV */
+#define _GLIBCXX_HAVE_WRITEV 1
/* Define to 1 if you have the `_acosf' function. */
/* #undef _GLIBCXX_HAVE__ACOSF */
@@ -1201,7 +1201,7 @@
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
in namespace std. */
-/* #undef _GLIBCXX_USE_C99_MATH */
+#define _GLIBCXX_USE_C99_MATH 1
/* Define if C99 functions or macros in <math.h> should be imported in
<tr1/cmath> in namespace std::tr1. */
@@ -1212,17 +1212,17 @@
#define _GLIBCXX_USE_C99_STDINT_TR1 1
/* Defined if clock_gettime has monotonic clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
+#define _GLIBCXX_USE_CLOCK_MONOTONIC 1
/* Defined if clock_gettime has realtime clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
+#define _GLIBCXX_USE_CLOCK_REALTIME 1
/* Define if ISO/IEC TR 24733 decimal floating point types are supported on
this host. */
/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */
/* Defined if gettimeofday is available. */
-/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
+#define _GLIBCXX_USE_GETTIMEOFDAY 1
/* Define if LFS support is available. */
/* #undef _GLIBCXX_USE_LFS */
@@ -1231,7 +1231,7 @@
#define _GLIBCXX_USE_LONG_LONG 1
/* Defined if nanosleep is available. */
-/* #undef _GLIBCXX_USE_NANOSLEEP */
+#define _GLIBCXX_USE_NANOSLEEP 1
/* Define if NLS translations are to be used. */
/* #undef _GLIBCXX_USE_NLS */
@@ -1241,7 +1241,7 @@
#define _GLIBCXX_USE_RANDOM_TR1 1
/* Defined if sched_yield is available. */
-/* #undef _GLIBCXX_USE_SCHED_YIELD */
+#define _GLIBCXX_USE_SCHED_YIELD 1
/* Define if code specialized for wchar_t should be used. */
#define _GLIBCXX_USE_WCHAR_T 1
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libgnustl_shared.so
index d66454d..391b041 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libgnustl_static.a
index e464098..a8db844 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libsupc++.a
index c3e25e1..8c59669 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/thumb/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/thumb/libgnustl_shared.so
index b91ef90..b6e997a 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/thumb/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/thumb/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/thumb/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/thumb/libgnustl_static.a
index 145540c..2bd654a 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/thumb/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/thumb/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/thumb/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/thumb/libsupc++.a
index 6ede710..833e89a 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/thumb/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/thumb/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/include/bits/c++config.h b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/include/bits/c++config.h
index 2156f0d..1c99c4f 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/include/bits/c++config.h
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/include/bits/c++config.h
@@ -434,13 +434,13 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the `acosf' function. */
-/* #undef _GLIBCXX_HAVE_ACOSF */
+#define _GLIBCXX_HAVE_ACOSF 1
/* Define to 1 if you have the `acosl' function. */
/* #undef _GLIBCXX_HAVE_ACOSL */
/* Define to 1 if you have the `asinf' function. */
-/* #undef _GLIBCXX_HAVE_ASINF */
+#define _GLIBCXX_HAVE_ASINF 1
/* Define to 1 if you have the `asinl' function. */
/* #undef _GLIBCXX_HAVE_ASINL */
@@ -449,13 +449,13 @@
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
/* Define to 1 if you have the `atan2f' function. */
-/* #undef _GLIBCXX_HAVE_ATAN2F */
+#define _GLIBCXX_HAVE_ATAN2F 1
/* Define to 1 if you have the `atan2l' function. */
/* #undef _GLIBCXX_HAVE_ATAN2L */
/* Define to 1 if you have the `atanf' function. */
-/* #undef _GLIBCXX_HAVE_ATANF */
+#define _GLIBCXX_HAVE_ATANF 1
/* Define to 1 if you have the `atanl' function. */
/* #undef _GLIBCXX_HAVE_ATANL */
@@ -464,19 +464,19 @@
/* #undef _GLIBCXX_HAVE_CC_TLS */
/* Define to 1 if you have the `ceilf' function. */
-/* #undef _GLIBCXX_HAVE_CEILF */
+#define _GLIBCXX_HAVE_CEILF 1
/* Define to 1 if you have the `ceill' function. */
-/* #undef _GLIBCXX_HAVE_CEILL */
+#define _GLIBCXX_HAVE_CEILL 1
/* Define to 1 if you have the <complex.h> header file. */
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
/* Define to 1 if you have the `cosf' function. */
-/* #undef _GLIBCXX_HAVE_COSF */
+#define _GLIBCXX_HAVE_COSF 1
/* Define to 1 if you have the `coshf' function. */
-/* #undef _GLIBCXX_HAVE_COSHF */
+#define _GLIBCXX_HAVE_COSHF 1
/* Define to 1 if you have the `coshl' function. */
/* #undef _GLIBCXX_HAVE_COSHL */
@@ -536,25 +536,25 @@
/* #undef _GLIBCXX_HAVE_EXECINFO_H */
/* Define to 1 if you have the `expf' function. */
-/* #undef _GLIBCXX_HAVE_EXPF */
+#define _GLIBCXX_HAVE_EXPF 1
/* Define to 1 if you have the `expl' function. */
/* #undef _GLIBCXX_HAVE_EXPL */
/* Define to 1 if you have the `fabsf' function. */
-/* #undef _GLIBCXX_HAVE_FABSF */
+#define _GLIBCXX_HAVE_FABSF 1
/* Define to 1 if you have the `fabsl' function. */
-/* #undef _GLIBCXX_HAVE_FABSL */
+#define _GLIBCXX_HAVE_FABSL 1
/* Define to 1 if you have the <fenv.h> header file. */
#define _GLIBCXX_HAVE_FENV_H 1
/* Define to 1 if you have the `finite' function. */
-/* #undef _GLIBCXX_HAVE_FINITE */
+#define _GLIBCXX_HAVE_FINITE 1
/* Define to 1 if you have the `finitef' function. */
-/* #undef _GLIBCXX_HAVE_FINITEF */
+#define _GLIBCXX_HAVE_FINITEF 1
/* Define to 1 if you have the `finitel' function. */
/* #undef _GLIBCXX_HAVE_FINITEL */
@@ -563,13 +563,13 @@
#define _GLIBCXX_HAVE_FLOAT_H 1
/* Define to 1 if you have the `floorf' function. */
-/* #undef _GLIBCXX_HAVE_FLOORF */
+#define _GLIBCXX_HAVE_FLOORF 1
/* Define to 1 if you have the `floorl' function. */
-/* #undef _GLIBCXX_HAVE_FLOORL */
+#define _GLIBCXX_HAVE_FLOORL 1
/* Define to 1 if you have the `fmodf' function. */
-/* #undef _GLIBCXX_HAVE_FMODF */
+#define _GLIBCXX_HAVE_FMODF 1
/* Define to 1 if you have the `fmodl' function. */
/* #undef _GLIBCXX_HAVE_FMODL */
@@ -581,7 +581,7 @@
/* #undef _GLIBCXX_HAVE_FP_H */
/* Define to 1 if you have the `frexpf' function. */
-/* #undef _GLIBCXX_HAVE_FREXPF */
+#define _GLIBCXX_HAVE_FREXPF 1
/* Define to 1 if you have the `frexpl' function. */
/* #undef _GLIBCXX_HAVE_FREXPL */
@@ -594,10 +594,10 @@
#define _GLIBCXX_HAVE_GTHR_DEFAULT 1
/* Define to 1 if you have the `hypot' function. */
-/* #undef _GLIBCXX_HAVE_HYPOT */
+#define _GLIBCXX_HAVE_HYPOT 1
/* Define to 1 if you have the `hypotf' function. */
-/* #undef _GLIBCXX_HAVE_HYPOTF */
+#define _GLIBCXX_HAVE_HYPOTF 1
/* Define to 1 if you have the `hypotl' function. */
/* #undef _GLIBCXX_HAVE_HYPOTL */
@@ -633,7 +633,7 @@
/* #undef _GLIBCXX_HAVE_ISNAN */
/* Define to 1 if you have the `isnanf' function. */
-/* #undef _GLIBCXX_HAVE_ISNANF */
+#define _GLIBCXX_HAVE_ISNANF 1
/* Define to 1 if you have the `isnanl' function. */
/* #undef _GLIBCXX_HAVE_ISNANL */
@@ -645,10 +645,10 @@
#define _GLIBCXX_HAVE_LC_MESSAGES 1
/* Define to 1 if you have the `ldexpf' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPF */
+#define _GLIBCXX_HAVE_LDEXPF 1
/* Define to 1 if you have the `ldexpl' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPL */
+#define _GLIBCXX_HAVE_LDEXPL 1
/* Define to 1 if you have the <libintl.h> header file. */
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
@@ -675,13 +675,13 @@
#define _GLIBCXX_HAVE_LOCALE_H 1
/* Define to 1 if you have the `log10f' function. */
-/* #undef _GLIBCXX_HAVE_LOG10F */
+#define _GLIBCXX_HAVE_LOG10F 1
/* Define to 1 if you have the `log10l' function. */
/* #undef _GLIBCXX_HAVE_LOG10L */
/* Define to 1 if you have the `logf' function. */
-/* #undef _GLIBCXX_HAVE_LOGF */
+#define _GLIBCXX_HAVE_LOGF 1
/* Define to 1 if you have the `logl' function. */
/* #undef _GLIBCXX_HAVE_LOGL */
@@ -699,10 +699,10 @@
#define _GLIBCXX_HAVE_MEMORY_H 1
/* Define to 1 if you have the `modf' function. */
-/* #undef _GLIBCXX_HAVE_MODF */
+#define _GLIBCXX_HAVE_MODF 1
/* Define to 1 if you have the `modff' function. */
-/* #undef _GLIBCXX_HAVE_MODFF */
+#define _GLIBCXX_HAVE_MODFF 1
/* Define to 1 if you have the `modfl' function. */
/* #undef _GLIBCXX_HAVE_MODFL */
@@ -711,10 +711,10 @@
/* #undef _GLIBCXX_HAVE_NAN_H */
/* Define if poll is available in <poll.h>. */
-/* #undef _GLIBCXX_HAVE_POLL */
+#define _GLIBCXX_HAVE_POLL 1
/* Define to 1 if you have the `powf' function. */
-/* #undef _GLIBCXX_HAVE_POWF */
+#define _GLIBCXX_HAVE_POWF 1
/* Define to 1 if you have the `powl' function. */
/* #undef _GLIBCXX_HAVE_POWL */
@@ -735,10 +735,10 @@
/* #undef _GLIBCXX_HAVE_SINCOSL */
/* Define to 1 if you have the `sinf' function. */
-/* #undef _GLIBCXX_HAVE_SINF */
+#define _GLIBCXX_HAVE_SINF 1
/* Define to 1 if you have the `sinhf' function. */
-/* #undef _GLIBCXX_HAVE_SINHF */
+#define _GLIBCXX_HAVE_SINHF 1
/* Define to 1 if you have the `sinhl' function. */
/* #undef _GLIBCXX_HAVE_SINHL */
@@ -747,7 +747,7 @@
/* #undef _GLIBCXX_HAVE_SINL */
/* Define to 1 if you have the `sqrtf' function. */
-/* #undef _GLIBCXX_HAVE_SQRTF */
+#define _GLIBCXX_HAVE_SQRTF 1
/* Define to 1 if you have the `sqrtl' function. */
/* #undef _GLIBCXX_HAVE_SQRTL */
@@ -826,13 +826,13 @@
/* #undef _GLIBCXX_HAVE_S_IFREG */
/* Define if S_IFREG is available in <sys/stat.h>. */
-/* #undef _GLIBCXX_HAVE_S_ISREG */
+#define _GLIBCXX_HAVE_S_ISREG 1
/* Define to 1 if you have the `tanf' function. */
-/* #undef _GLIBCXX_HAVE_TANF */
+#define _GLIBCXX_HAVE_TANF 1
/* Define to 1 if you have the `tanhf' function. */
-/* #undef _GLIBCXX_HAVE_TANHF */
+#define _GLIBCXX_HAVE_TANHF 1
/* Define to 1 if you have the `tanhl' function. */
/* #undef _GLIBCXX_HAVE_TANHL */
@@ -868,7 +868,7 @@
#define _GLIBCXX_HAVE_WCTYPE_H 1
/* Define if writev is available in <sys/uio.h>. */
-/* #undef _GLIBCXX_HAVE_WRITEV */
+#define _GLIBCXX_HAVE_WRITEV 1
/* Define to 1 if you have the `_acosf' function. */
/* #undef _GLIBCXX_HAVE__ACOSF */
@@ -1201,7 +1201,7 @@
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
in namespace std. */
-/* #undef _GLIBCXX_USE_C99_MATH */
+#define _GLIBCXX_USE_C99_MATH 1
/* Define if C99 functions or macros in <math.h> should be imported in
<tr1/cmath> in namespace std::tr1. */
@@ -1212,17 +1212,17 @@
#define _GLIBCXX_USE_C99_STDINT_TR1 1
/* Defined if clock_gettime has monotonic clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
+#define _GLIBCXX_USE_CLOCK_MONOTONIC 1
/* Defined if clock_gettime has realtime clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
+#define _GLIBCXX_USE_CLOCK_REALTIME 1
/* Define if ISO/IEC TR 24733 decimal floating point types are supported on
this host. */
/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */
/* Defined if gettimeofday is available. */
-/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
+#define _GLIBCXX_USE_GETTIMEOFDAY 1
/* Define if LFS support is available. */
/* #undef _GLIBCXX_USE_LFS */
@@ -1231,7 +1231,7 @@
#define _GLIBCXX_USE_LONG_LONG 1
/* Defined if nanosleep is available. */
-/* #undef _GLIBCXX_USE_NANOSLEEP */
+#define _GLIBCXX_USE_NANOSLEEP 1
/* Define if NLS translations are to be used. */
/* #undef _GLIBCXX_USE_NLS */
@@ -1241,7 +1241,7 @@
#define _GLIBCXX_USE_RANDOM_TR1 1
/* Defined if sched_yield is available. */
-/* #undef _GLIBCXX_USE_SCHED_YIELD */
+#define _GLIBCXX_USE_SCHED_YIELD 1
/* Define if code specialized for wchar_t should be used. */
#define _GLIBCXX_USE_WCHAR_T 1
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/libgnustl_shared.so
index 0ddb173..9fbb778 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/libgnustl_static.a
index 419ee7b..c3b87e5 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/libsupc++.a
index 5bd8728..a33d04a 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/thumb/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/thumb/libgnustl_shared.so
index f105b19..293bc70 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/thumb/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/thumb/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/thumb/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/thumb/libgnustl_static.a
index 84df5ff..28ce982 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/thumb/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/thumb/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/thumb/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/thumb/libsupc++.a
index 34441ba..08bafdb 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/thumb/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/thumb/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/include/bits/c++config.h b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/include/bits/c++config.h
index 5872e27..9e1a0d9 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/include/bits/c++config.h
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/include/bits/c++config.h
@@ -434,13 +434,13 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the `acosf' function. */
-/* #undef _GLIBCXX_HAVE_ACOSF */
+#define _GLIBCXX_HAVE_ACOSF 1
/* Define to 1 if you have the `acosl' function. */
/* #undef _GLIBCXX_HAVE_ACOSL */
/* Define to 1 if you have the `asinf' function. */
-/* #undef _GLIBCXX_HAVE_ASINF */
+#define _GLIBCXX_HAVE_ASINF 1
/* Define to 1 if you have the `asinl' function. */
/* #undef _GLIBCXX_HAVE_ASINL */
@@ -449,13 +449,13 @@
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
/* Define to 1 if you have the `atan2f' function. */
-/* #undef _GLIBCXX_HAVE_ATAN2F */
+#define _GLIBCXX_HAVE_ATAN2F 1
/* Define to 1 if you have the `atan2l' function. */
/* #undef _GLIBCXX_HAVE_ATAN2L */
/* Define to 1 if you have the `atanf' function. */
-/* #undef _GLIBCXX_HAVE_ATANF */
+#define _GLIBCXX_HAVE_ATANF 1
/* Define to 1 if you have the `atanl' function. */
/* #undef _GLIBCXX_HAVE_ATANL */
@@ -464,19 +464,19 @@
/* #undef _GLIBCXX_HAVE_CC_TLS */
/* Define to 1 if you have the `ceilf' function. */
-/* #undef _GLIBCXX_HAVE_CEILF */
+#define _GLIBCXX_HAVE_CEILF 1
/* Define to 1 if you have the `ceill' function. */
-/* #undef _GLIBCXX_HAVE_CEILL */
+#define _GLIBCXX_HAVE_CEILL 1
/* Define to 1 if you have the <complex.h> header file. */
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
/* Define to 1 if you have the `cosf' function. */
-/* #undef _GLIBCXX_HAVE_COSF */
+#define _GLIBCXX_HAVE_COSF 1
/* Define to 1 if you have the `coshf' function. */
-/* #undef _GLIBCXX_HAVE_COSHF */
+#define _GLIBCXX_HAVE_COSHF 1
/* Define to 1 if you have the `coshl' function. */
/* #undef _GLIBCXX_HAVE_COSHL */
@@ -536,25 +536,25 @@
/* #undef _GLIBCXX_HAVE_EXECINFO_H */
/* Define to 1 if you have the `expf' function. */
-/* #undef _GLIBCXX_HAVE_EXPF */
+#define _GLIBCXX_HAVE_EXPF 1
/* Define to 1 if you have the `expl' function. */
/* #undef _GLIBCXX_HAVE_EXPL */
/* Define to 1 if you have the `fabsf' function. */
-/* #undef _GLIBCXX_HAVE_FABSF */
+#define _GLIBCXX_HAVE_FABSF 1
/* Define to 1 if you have the `fabsl' function. */
-/* #undef _GLIBCXX_HAVE_FABSL */
+#define _GLIBCXX_HAVE_FABSL 1
/* Define to 1 if you have the <fenv.h> header file. */
#define _GLIBCXX_HAVE_FENV_H 1
/* Define to 1 if you have the `finite' function. */
-/* #undef _GLIBCXX_HAVE_FINITE */
+#define _GLIBCXX_HAVE_FINITE 1
/* Define to 1 if you have the `finitef' function. */
-/* #undef _GLIBCXX_HAVE_FINITEF */
+#define _GLIBCXX_HAVE_FINITEF 1
/* Define to 1 if you have the `finitel' function. */
/* #undef _GLIBCXX_HAVE_FINITEL */
@@ -563,13 +563,13 @@
#define _GLIBCXX_HAVE_FLOAT_H 1
/* Define to 1 if you have the `floorf' function. */
-/* #undef _GLIBCXX_HAVE_FLOORF */
+#define _GLIBCXX_HAVE_FLOORF 1
/* Define to 1 if you have the `floorl' function. */
-/* #undef _GLIBCXX_HAVE_FLOORL */
+#define _GLIBCXX_HAVE_FLOORL 1
/* Define to 1 if you have the `fmodf' function. */
-/* #undef _GLIBCXX_HAVE_FMODF */
+#define _GLIBCXX_HAVE_FMODF 1
/* Define to 1 if you have the `fmodl' function. */
/* #undef _GLIBCXX_HAVE_FMODL */
@@ -581,7 +581,7 @@
/* #undef _GLIBCXX_HAVE_FP_H */
/* Define to 1 if you have the `frexpf' function. */
-/* #undef _GLIBCXX_HAVE_FREXPF */
+#define _GLIBCXX_HAVE_FREXPF 1
/* Define to 1 if you have the `frexpl' function. */
/* #undef _GLIBCXX_HAVE_FREXPL */
@@ -591,13 +591,13 @@
/* Define if gthr-default.h exists (meaning that threading support is
enabled). */
-/* #undef _GLIBCXX_HAVE_GTHR_DEFAULT */
+#define _GLIBCXX_HAVE_GTHR_DEFAULT 1
/* Define to 1 if you have the `hypot' function. */
-/* #undef _GLIBCXX_HAVE_HYPOT */
+#define _GLIBCXX_HAVE_HYPOT 1
/* Define to 1 if you have the `hypotf' function. */
-/* #undef _GLIBCXX_HAVE_HYPOTF */
+#define _GLIBCXX_HAVE_HYPOTF 1
/* Define to 1 if you have the `hypotl' function. */
/* #undef _GLIBCXX_HAVE_HYPOTL */
@@ -633,7 +633,7 @@
/* #undef _GLIBCXX_HAVE_ISNAN */
/* Define to 1 if you have the `isnanf' function. */
-/* #undef _GLIBCXX_HAVE_ISNANF */
+#define _GLIBCXX_HAVE_ISNANF 1
/* Define to 1 if you have the `isnanl' function. */
/* #undef _GLIBCXX_HAVE_ISNANL */
@@ -645,10 +645,10 @@
#define _GLIBCXX_HAVE_LC_MESSAGES 1
/* Define to 1 if you have the `ldexpf' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPF */
+#define _GLIBCXX_HAVE_LDEXPF 1
/* Define to 1 if you have the `ldexpl' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPL */
+#define _GLIBCXX_HAVE_LDEXPL 1
/* Define to 1 if you have the <libintl.h> header file. */
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
@@ -675,13 +675,13 @@
#define _GLIBCXX_HAVE_LOCALE_H 1
/* Define to 1 if you have the `log10f' function. */
-/* #undef _GLIBCXX_HAVE_LOG10F */
+#define _GLIBCXX_HAVE_LOG10F 1
/* Define to 1 if you have the `log10l' function. */
/* #undef _GLIBCXX_HAVE_LOG10L */
/* Define to 1 if you have the `logf' function. */
-/* #undef _GLIBCXX_HAVE_LOGF */
+#define _GLIBCXX_HAVE_LOGF 1
/* Define to 1 if you have the `logl' function. */
/* #undef _GLIBCXX_HAVE_LOGL */
@@ -699,10 +699,10 @@
#define _GLIBCXX_HAVE_MEMORY_H 1
/* Define to 1 if you have the `modf' function. */
-/* #undef _GLIBCXX_HAVE_MODF */
+#define _GLIBCXX_HAVE_MODF 1
/* Define to 1 if you have the `modff' function. */
-/* #undef _GLIBCXX_HAVE_MODFF */
+#define _GLIBCXX_HAVE_MODFF 1
/* Define to 1 if you have the `modfl' function. */
/* #undef _GLIBCXX_HAVE_MODFL */
@@ -711,10 +711,10 @@
/* #undef _GLIBCXX_HAVE_NAN_H */
/* Define if poll is available in <poll.h>. */
-/* #undef _GLIBCXX_HAVE_POLL */
+#define _GLIBCXX_HAVE_POLL 1
/* Define to 1 if you have the `powf' function. */
-/* #undef _GLIBCXX_HAVE_POWF */
+#define _GLIBCXX_HAVE_POWF 1
/* Define to 1 if you have the `powl' function. */
/* #undef _GLIBCXX_HAVE_POWL */
@@ -726,19 +726,19 @@
/* #undef _GLIBCXX_HAVE_SETENV */
/* Define to 1 if you have the `sincos' function. */
-/* #undef _GLIBCXX_HAVE_SINCOS */
+#define _GLIBCXX_HAVE_SINCOS 1
/* Define to 1 if you have the `sincosf' function. */
-/* #undef _GLIBCXX_HAVE_SINCOSF */
+#define _GLIBCXX_HAVE_SINCOSF 1
/* Define to 1 if you have the `sincosl' function. */
-/* #undef _GLIBCXX_HAVE_SINCOSL */
+#define _GLIBCXX_HAVE_SINCOSL 1
/* Define to 1 if you have the `sinf' function. */
-/* #undef _GLIBCXX_HAVE_SINF */
+#define _GLIBCXX_HAVE_SINF 1
/* Define to 1 if you have the `sinhf' function. */
-/* #undef _GLIBCXX_HAVE_SINHF */
+#define _GLIBCXX_HAVE_SINHF 1
/* Define to 1 if you have the `sinhl' function. */
/* #undef _GLIBCXX_HAVE_SINHL */
@@ -747,7 +747,7 @@
/* #undef _GLIBCXX_HAVE_SINL */
/* Define to 1 if you have the `sqrtf' function. */
-/* #undef _GLIBCXX_HAVE_SQRTF */
+#define _GLIBCXX_HAVE_SQRTF 1
/* Define to 1 if you have the `sqrtl' function. */
/* #undef _GLIBCXX_HAVE_SQRTL */
@@ -826,13 +826,13 @@
/* #undef _GLIBCXX_HAVE_S_IFREG */
/* Define if S_IFREG is available in <sys/stat.h>. */
-/* #undef _GLIBCXX_HAVE_S_ISREG */
+#define _GLIBCXX_HAVE_S_ISREG 1
/* Define to 1 if you have the `tanf' function. */
-/* #undef _GLIBCXX_HAVE_TANF */
+#define _GLIBCXX_HAVE_TANF 1
/* Define to 1 if you have the `tanhf' function. */
-/* #undef _GLIBCXX_HAVE_TANHF */
+#define _GLIBCXX_HAVE_TANHF 1
/* Define to 1 if you have the `tanhl' function. */
/* #undef _GLIBCXX_HAVE_TANHL */
@@ -868,7 +868,7 @@
#define _GLIBCXX_HAVE_WCTYPE_H 1
/* Define if writev is available in <sys/uio.h>. */
-/* #undef _GLIBCXX_HAVE_WRITEV */
+#define _GLIBCXX_HAVE_WRITEV 1
/* Define to 1 if you have the `_acosf' function. */
/* #undef _GLIBCXX_HAVE__ACOSF */
@@ -1201,7 +1201,7 @@
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
in namespace std. */
-/* #undef _GLIBCXX_USE_C99_MATH */
+#define _GLIBCXX_USE_C99_MATH 1
/* Define if C99 functions or macros in <math.h> should be imported in
<tr1/cmath> in namespace std::tr1. */
@@ -1212,17 +1212,17 @@
#define _GLIBCXX_USE_C99_STDINT_TR1 1
/* Defined if clock_gettime has monotonic clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
+#define _GLIBCXX_USE_CLOCK_MONOTONIC 1
/* Defined if clock_gettime has realtime clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
+#define _GLIBCXX_USE_CLOCK_REALTIME 1
/* Define if ISO/IEC TR 24733 decimal floating point types are supported on
this host. */
/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */
/* Defined if gettimeofday is available. */
-/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
+#define _GLIBCXX_USE_GETTIMEOFDAY 1
/* Define if LFS support is available. */
/* #undef _GLIBCXX_USE_LFS */
@@ -1231,7 +1231,7 @@
#define _GLIBCXX_USE_LONG_LONG 1
/* Defined if nanosleep is available. */
-/* #undef _GLIBCXX_USE_NANOSLEEP */
+#define _GLIBCXX_USE_NANOSLEEP 1
/* Define if NLS translations are to be used. */
/* #undef _GLIBCXX_USE_NLS */
@@ -1241,7 +1241,7 @@
#define _GLIBCXX_USE_RANDOM_TR1 1
/* Defined if sched_yield is available. */
-/* #undef _GLIBCXX_USE_SCHED_YIELD */
+#define _GLIBCXX_USE_SCHED_YIELD 1
/* Define if code specialized for wchar_t should be used. */
#define _GLIBCXX_USE_WCHAR_T 1
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/include/bits/gthr-default.h b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/include/bits/gthr-default.h
index 692688f..2ecfce2 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/include/bits/gthr-default.h
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/include/bits/gthr-default.h
@@ -1,7 +1,7 @@
/* Threads compatibility routines for libgcc2 and libobjc. */
/* Compile this one with gcc. */
-/* Copyright (C) 1997, 1999, 2000, 2004, 2008, 2009
- Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+ 2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of GCC.
@@ -24,24 +24,314 @@
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H
-#define _GLIBCXX_GCC_GTHR_SINGLE_H
+#ifndef _GLIBCXX_GCC_GTHR_POSIX_H
+#define _GLIBCXX_GCC_GTHR_POSIX_H
-/* Just provide compatibility for mutex handling. */
+/* POSIX threads specific definitions.
+ Easy, since the interface is just one-to-one mapping. */
-typedef int __gthread_key_t;
-typedef int __gthread_once_t;
-typedef int __gthread_mutex_t;
-typedef int __gthread_recursive_mutex_t;
+#define __GTHREADS 1
+#define __GTHREADS_CXX0X 1
-#define __GTHREAD_ONCE_INIT 0
-#define __GTHREAD_MUTEX_INIT 0
-#define __GTHREAD_RECURSIVE_MUTEX_INIT 0
+/* Some implementations of <pthread.h> require this to be defined. */
+#if !defined(_REENTRANT) && defined(__osf__)
+#define _REENTRANT 1
+#endif
-#define _GLIBCXX_UNUSED __attribute__((unused))
+/* The following should normally be in a different header file,
+ * but I couldn't find the right location. The point of the macro
+ * definition below is to prevent libsupc++ and libstdc++ to reference
+ * weak symbols in their static C++ constructors. Such code crashes
+ * when a shared object linked statically to these libraries is
+ * loaded on Android 2.1 (Eclair) and older platform releases, due
+ * to a dynamic linker bug.
+ */
+#ifdef __ANDROID__
+#undef _GLIBCXX_GTHREAD_USE_WEAK
+#define _GLIBCXX_GTHREAD_USE_WEAK 0
+#endif
+
+#include <pthread.h>
+#include <unistd.h>
+
+typedef pthread_t __gthread_t;
+typedef pthread_key_t __gthread_key_t;
+typedef pthread_once_t __gthread_once_t;
+typedef pthread_mutex_t __gthread_mutex_t;
+typedef pthread_mutex_t __gthread_recursive_mutex_t;
+typedef pthread_cond_t __gthread_cond_t;
+typedef struct timespec __gthread_time_t;
+
+/* POSIX like conditional variables are supported. Please look at comments
+ in gthr.h for details. */
+#define __GTHREAD_HAS_COND 1
+
+#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
+#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT
+#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
+#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER
+#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
+#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+#else
+#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
+#endif
+#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER
+#define __GTHREAD_TIME_INIT {0,0}
+
+#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
+# ifndef __gthrw_pragma
+# define __gthrw_pragma(pragma)
+# endif
+# define __gthrw2(name,name2,type) \
+ static __typeof(type) name __attribute__ ((__weakref__(#name2))); \
+ __gthrw_pragma(weak type)
+# define __gthrw_(name) __gthrw_ ## name
+#else
+# define __gthrw2(name,name2,type)
+# define __gthrw_(name) name
+#endif
+
+/* Typically, __gthrw_foo is a weak reference to symbol foo. */
+#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name)
+
+/* On Tru64, /usr/include/pthread.h uses #pragma extern_prefix "__" to
+ map a subset of the POSIX pthread API to mangled versions of their
+ names. */
+#if defined(__osf__) && defined(_PTHREAD_USE_MANGLED_NAMES_)
+#define __gthrw3(name) __gthrw2(__gthrw_ ## name, __ ## name, name)
+__gthrw3(pthread_once)
+__gthrw3(pthread_getspecific)
+__gthrw3(pthread_setspecific)
+
+__gthrw3(pthread_create)
+__gthrw3(pthread_join)
+__gthrw3(pthread_detach)
+__gthrw3(pthread_equal)
+__gthrw3(pthread_self)
+__gthrw3(pthread_cancel)
+__gthrw3(sched_yield)
+
+__gthrw3(pthread_mutex_lock)
+__gthrw3(pthread_mutex_trylock)
+#ifdef _POSIX_TIMEOUTS
+#if _POSIX_TIMEOUTS >= 0
+__gthrw3(pthread_mutex_timedlock)
+#endif
+#endif /* _POSIX_TIMEOUTS */
+__gthrw3(pthread_mutex_unlock)
+__gthrw3(pthread_mutex_init)
+__gthrw3(pthread_mutex_destroy)
+
+__gthrw3(pthread_cond_broadcast)
+__gthrw3(pthread_cond_signal)
+__gthrw3(pthread_cond_wait)
+__gthrw3(pthread_cond_timedwait)
+__gthrw3(pthread_cond_destroy)
+#else
+__gthrw(pthread_once)
+__gthrw(pthread_getspecific)
+__gthrw(pthread_setspecific)
+
+__gthrw(pthread_create)
+__gthrw(pthread_join)
+__gthrw(pthread_equal)
+__gthrw(pthread_self)
+__gthrw(pthread_detach)
+#ifndef __BIONIC__
+__gthrw(pthread_cancel)
+#endif
+__gthrw(sched_yield)
+
+__gthrw(pthread_mutex_lock)
+__gthrw(pthread_mutex_trylock)
+#ifdef _POSIX_TIMEOUTS
+#if _POSIX_TIMEOUTS >= 0
+__gthrw(pthread_mutex_timedlock)
+#endif
+#endif /* _POSIX_TIMEOUTS */
+__gthrw(pthread_mutex_unlock)
+__gthrw(pthread_mutex_init)
+__gthrw(pthread_mutex_destroy)
+
+__gthrw(pthread_cond_broadcast)
+__gthrw(pthread_cond_signal)
+__gthrw(pthread_cond_wait)
+__gthrw(pthread_cond_timedwait)
+__gthrw(pthread_cond_destroy)
+#endif
+
+__gthrw(pthread_key_create)
+__gthrw(pthread_key_delete)
+__gthrw(pthread_mutexattr_init)
+__gthrw(pthread_mutexattr_settype)
+__gthrw(pthread_mutexattr_destroy)
+
+
+#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)
+/* Objective-C. */
+#if defined(__osf__) && defined(_PTHREAD_USE_MANGLED_NAMES_)
+__gthrw3(pthread_cond_init)
+__gthrw3(pthread_exit)
+#else
+__gthrw(pthread_cond_init)
+__gthrw(pthread_exit)
+#endif /* __osf__ && _PTHREAD_USE_MANGLED_NAMES_ */
+#ifdef _POSIX_PRIORITY_SCHEDULING
+#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
+__gthrw(sched_get_priority_max)
+__gthrw(sched_get_priority_min)
+#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
+#endif /* _POSIX_PRIORITY_SCHEDULING */
+__gthrw(pthread_attr_destroy)
+__gthrw(pthread_attr_init)
+__gthrw(pthread_attr_setdetachstate)
+#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
+__gthrw(pthread_getschedparam)
+__gthrw(pthread_setschedparam)
+#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
+#endif /* _LIBOBJC || _LIBOBJC_WEAK */
+
+#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
+
+/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if
+ -pthreads is not specified. The functions are dummies and most return an
+ error value. However pthread_once returns 0 without invoking the routine
+ it is passed so we cannot pretend that the interface is active if -pthreads
+ is not specified. On Solaris 2.5.1, the interface is not exposed at all so
+ we need to play the usual game with weak symbols. On Solaris 10 and up, a
+ working interface is always exposed. On FreeBSD 6 and later, libc also
+ exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up
+ to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc,
+ which means the alternate __gthread_active_p below cannot be used there. */
+
+#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__))
+
+static volatile int __gthread_active = -1;
+
+static void
+__gthread_trigger (void)
+{
+ __gthread_active = 1;
+}
+
+static inline int
+__gthread_active_p (void)
+{
+ static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER;
+ static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT;
+
+ /* Avoid reading __gthread_active twice on the main code path. */
+ int __gthread_active_latest_value = __gthread_active;
+
+ /* This test is not protected to avoid taking a lock on the main code
+ path so every update of __gthread_active in a threaded program must
+ be atomic with regard to the result of the test. */
+ if (__builtin_expect (__gthread_active_latest_value < 0, 0))
+ {
+ if (__gthrw_(pthread_once))
+ {
+ /* If this really is a threaded program, then we must ensure that
+ __gthread_active has been set to 1 before exiting this block. */
+ __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex);
+ __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger);
+ __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex);
+ }
+
+ /* Make sure we'll never enter this block again. */
+ if (__gthread_active < 0)
+ __gthread_active = 0;
+
+ __gthread_active_latest_value = __gthread_active;
+ }
+
+ return __gthread_active_latest_value != 0;
+}
+
+#else /* neither FreeBSD nor Solaris */
+
+static inline int
+__gthread_active_p (void)
+{
+ static void *const __gthread_active_ptr
+ = __extension__ (void *) &__gthrw_(
+/* Android's C library does not provide pthread_cancel, check for
+ `pthread_create' instead. */
+#ifndef __BIONIC__
+ pthread_cancel
+#else
+ pthread_create
+#endif
+ );
+ return __gthread_active_ptr != 0;
+}
+
+#endif /* FreeBSD or Solaris */
+
+#else /* not __GXX_WEAK__ */
+
+/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread
+ calls in shared flavors of the HP-UX C library. Most of the stubs
+ have no functionality. The details are described in the "libc cumulative
+ patch" for each subversion of HP-UX 11. There are two special interfaces
+ provided for checking whether an application is linked to a shared pthread
+ library or not. However, these interfaces aren't available in early
+ libpthread libraries. We also need a test that works for archive
+ libraries. We can't use pthread_once as some libc versions call the
+ init function. We also can't use pthread_create or pthread_attr_init
+ as these create a thread and thereby prevent changing the default stack
+ size. The function pthread_default_stacksize_np is available in both
+ the archive and shared versions of libpthread. It can be used to
+ determine the default pthread stack size. There is a stub in some
+ shared libc versions which returns a zero size if pthreads are not
+ active. We provide an equivalent stub to handle cases where libc
+ doesn't provide one. */
+
+#if defined(__hppa__) && defined(__hpux__)
+
+static volatile int __gthread_active = -1;
+
+static inline int
+__gthread_active_p (void)
+{
+ /* Avoid reading __gthread_active twice on the main code path. */
+ int __gthread_active_latest_value = __gthread_active;
+ size_t __s;
+
+ if (__builtin_expect (__gthread_active_latest_value < 0, 0))
+ {
+ pthread_default_stacksize_np (0, &__s);
+ __gthread_active = __s ? 1 : 0;
+ __gthread_active_latest_value = __gthread_active;
+ }
+
+ return __gthread_active_latest_value != 0;
+}
+
+#else /* not hppa-hpux */
+
+static inline int
+__gthread_active_p (void)
+{
+ return 1;
+}
+
+#endif /* hppa-hpux */
+
+#endif /* __GXX_WEAK__ */
#ifdef _LIBOBJC
+/* This is the config.h file in libobjc/ */
+#include <config.h>
+
+#ifdef HAVE_SCHED_H
+# include <sched.h>
+#endif
+
+/* Key structure for maintaining thread specific storage */
+static pthread_key_t _objc_thread_storage;
+static pthread_attr_t _objc_thread_attribs;
+
/* Thread local storage for a single thread */
static void *thread_local_storage = NULL;
@@ -51,7 +341,21 @@
static inline int
__gthread_objc_init_thread_system (void)
{
- /* No thread support available */
+ if (__gthread_active_p ())
+ {
+ /* Initialize the thread storage key. */
+ if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0)
+ {
+ /* The normal default detach state for threads is
+ * PTHREAD_CREATE_JOINABLE which causes threads to not die
+ * when you think they should. */
+ if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0
+ && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs,
+ PTHREAD_CREATE_DETACHED) == 0)
+ return 0;
+ }
+ }
+
return -1;
}
@@ -59,7 +363,11 @@
static inline int
__gthread_objc_close_thread_system (void)
{
- /* No thread support available */
+ if (__gthread_active_p ()
+ && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0
+ && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0)
+ return 0;
+
return -1;
}
@@ -67,41 +375,105 @@
/* Create a new thread of execution. */
static inline objc_thread_t
-__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED)
+__gthread_objc_thread_detach (void (*func)(void *), void *arg)
{
- /* No thread support available */
- return NULL;
+ objc_thread_t thread_id;
+ pthread_t new_thread_handle;
+
+ if (!__gthread_active_p ())
+ return NULL;
+
+ if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs,
+ (void *) func, arg)))
+ thread_id = (objc_thread_t) new_thread_handle;
+ else
+ thread_id = NULL;
+
+ return thread_id;
}
/* Set the current thread's priority. */
static inline int
-__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED)
+__gthread_objc_thread_set_priority (int priority)
{
- /* No thread support available */
- return -1;
+ if (!__gthread_active_p ())
+ return -1;
+ else
+ {
+#ifdef _POSIX_PRIORITY_SCHEDULING
+#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
+ pthread_t thread_id = __gthrw_(pthread_self) ();
+ int policy;
+ struct sched_param params;
+ int priority_min, priority_max;
+
+ if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0)
+ {
+ if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1)
+ return -1;
+
+ if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1)
+ return -1;
+
+ if (priority > priority_max)
+ priority = priority_max;
+ else if (priority < priority_min)
+ priority = priority_min;
+ params.sched_priority = priority;
+
+ /*
+ * The solaris 7 and several other man pages incorrectly state that
+ * this should be a pointer to policy but pthread.h is universally
+ * at odds with this.
+ */
+ if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0)
+ return 0;
+ }
+#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
+#endif /* _POSIX_PRIORITY_SCHEDULING */
+ return -1;
+ }
}
/* Return the current thread's priority. */
static inline int
__gthread_objc_thread_get_priority (void)
{
- return OBJC_THREAD_INTERACTIVE_PRIORITY;
+#ifdef _POSIX_PRIORITY_SCHEDULING
+#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
+ if (__gthread_active_p ())
+ {
+ int policy;
+ struct sched_param params;
+
+ if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0)
+ return params.sched_priority;
+ else
+ return -1;
+ }
+ else
+#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
+#endif /* _POSIX_PRIORITY_SCHEDULING */
+ return OBJC_THREAD_INTERACTIVE_PRIORITY;
}
/* Yield our process time to another thread. */
static inline void
__gthread_objc_thread_yield (void)
{
- return;
+ if (__gthread_active_p ())
+ __gthrw_(sched_yield) ();
}
/* Terminate the current thread. */
static inline int
__gthread_objc_thread_exit (void)
{
- /* No thread support available */
- /* Should we really exit the program */
- /* exit (&__objc_thread_exit_status); */
+ if (__gthread_active_p ())
+ /* exit the thread */
+ __gthrw_(pthread_exit) (&__objc_thread_exit_status);
+
+ /* Failed if we reached here */
return -1;
}
@@ -109,61 +481,122 @@
static inline objc_thread_t
__gthread_objc_thread_id (void)
{
- /* No thread support, use 1. */
- return (objc_thread_t) 1;
+ if (__gthread_active_p ())
+ return (objc_thread_t) __gthrw_(pthread_self) ();
+ else
+ return (objc_thread_t) 1;
}
/* Sets the thread's local storage pointer. */
static inline int
__gthread_objc_thread_set_data (void *value)
{
- thread_local_storage = value;
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_setspecific) (_objc_thread_storage, value);
+ else
+ {
+ thread_local_storage = value;
+ return 0;
+ }
}
/* Returns the thread's local storage pointer. */
static inline void *
__gthread_objc_thread_get_data (void)
{
- return thread_local_storage;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_getspecific) (_objc_thread_storage);
+ else
+ return thread_local_storage;
}
/* Backend mutex functions */
/* Allocate a mutex. */
static inline int
-__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_mutex_allocate (objc_mutex_t mutex)
{
+ if (__gthread_active_p ())
+ {
+ mutex->backend = objc_malloc (sizeof (pthread_mutex_t));
+
+ if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL))
+ {
+ objc_free (mutex->backend);
+ mutex->backend = NULL;
+ return -1;
+ }
+ }
+
return 0;
}
/* Deallocate a mutex. */
static inline int
-__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_mutex_deallocate (objc_mutex_t mutex)
{
+ if (__gthread_active_p ())
+ {
+ int count;
+
+ /*
+ * Posix Threads specifically require that the thread be unlocked
+ * for __gthrw_(pthread_mutex_destroy) to work.
+ */
+
+ do
+ {
+ count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend);
+ if (count < 0)
+ return -1;
+ }
+ while (count);
+
+ if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend))
+ return -1;
+
+ objc_free (mutex->backend);
+ mutex->backend = NULL;
+ }
return 0;
}
/* Grab a lock on a mutex. */
static inline int
-__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_mutex_lock (objc_mutex_t mutex)
{
- /* There can only be one thread, so we always get the lock */
+ if (__gthread_active_p ()
+ && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0)
+ {
+ return -1;
+ }
+
return 0;
}
/* Try to grab a lock on a mutex. */
static inline int
-__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_mutex_trylock (objc_mutex_t mutex)
{
- /* There can only be one thread, so we always get the lock */
+ if (__gthread_active_p ()
+ && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0)
+ {
+ return -1;
+ }
+
return 0;
}
/* Unlock the mutex */
static inline int
-__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_mutex_unlock (objc_mutex_t mutex)
{
+ if (__gthread_active_p ()
+ && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0)
+ {
+ return -1;
+ }
+
return 0;
}
@@ -171,101 +604,213 @@
/* Allocate a condition. */
static inline int
-__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED)
+__gthread_objc_condition_allocate (objc_condition_t condition)
{
+ if (__gthread_active_p ())
+ {
+ condition->backend = objc_malloc (sizeof (pthread_cond_t));
+
+ if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL))
+ {
+ objc_free (condition->backend);
+ condition->backend = NULL;
+ return -1;
+ }
+ }
+
return 0;
}
/* Deallocate a condition. */
static inline int
-__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED)
+__gthread_objc_condition_deallocate (objc_condition_t condition)
{
+ if (__gthread_active_p ())
+ {
+ if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend))
+ return -1;
+
+ objc_free (condition->backend);
+ condition->backend = NULL;
+ }
return 0;
}
/* Wait on the condition */
static inline int
-__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED,
- objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend,
+ (pthread_mutex_t *) mutex->backend);
+ else
+ return 0;
}
/* Wake up all threads waiting on this condition. */
static inline int
-__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED)
+__gthread_objc_condition_broadcast (objc_condition_t condition)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend);
+ else
+ return 0;
}
/* Wake up one thread waiting on this condition. */
static inline int
-__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED)
+__gthread_objc_condition_signal (objc_condition_t condition)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend);
+ else
+ return 0;
}
#else /* _LIBOBJC */
static inline int
-__gthread_active_p (void)
+__gthread_create (__gthread_t *__threadid, void *(*__func) (void*),
+ void *__args)
{
- return 0;
+ return __gthrw_(pthread_create) (__threadid, NULL, __func, __args);
}
static inline int
-__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED)
+__gthread_join (__gthread_t __threadid, void **__value_ptr)
{
- return 0;
+ return __gthrw_(pthread_join) (__threadid, __value_ptr);
}
-static inline int _GLIBCXX_UNUSED
-__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED)
+static inline int
+__gthread_detach (__gthread_t __threadid)
{
- return 0;
+ return __gthrw_(pthread_detach) (__threadid);
}
-static int _GLIBCXX_UNUSED
-__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED)
+static inline int
+__gthread_equal (__gthread_t __t1, __gthread_t __t2)
{
- return 0;
+ return __gthrw_(pthread_equal) (__t1, __t2);
+}
+
+static inline __gthread_t
+__gthread_self (void)
+{
+ return __gthrw_(pthread_self) ();
+}
+
+static inline int
+__gthread_yield (void)
+{
+ return __gthrw_(sched_yield) ();
+}
+
+static inline int
+__gthread_once (__gthread_once_t *__once, void (*__func) (void))
+{
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_once) (__once, __func);
+ else
+ return -1;
+}
+
+static inline int
+__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
+{
+ return __gthrw_(pthread_key_create) (__key, __dtor);
+}
+
+static inline int
+__gthread_key_delete (__gthread_key_t __key)
+{
+ return __gthrw_(pthread_key_delete) (__key);
}
static inline void *
-__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED)
+__gthread_getspecific (__gthread_key_t __key)
{
- return 0;
+ return __gthrw_(pthread_getspecific) (__key);
}
static inline int
-__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED)
+__gthread_setspecific (__gthread_key_t __key, const void *__ptr)
{
- return 0;
+ return __gthrw_(pthread_setspecific) (__key, __ptr);
}
static inline int
-__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
+__gthread_mutex_destroy (__gthread_mutex_t *__mutex)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_mutex_destroy) (__mutex);
+ else
+ return 0;
}
static inline int
-__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
+__gthread_mutex_lock (__gthread_mutex_t *__mutex)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_mutex_lock) (__mutex);
+ else
+ return 0;
}
static inline int
-__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
+__gthread_mutex_trylock (__gthread_mutex_t *__mutex)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_mutex_trylock) (__mutex);
+ else
+ return 0;
}
+#ifdef _POSIX_TIMEOUTS
+#if _POSIX_TIMEOUTS >= 0
static inline int
-__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
+__gthread_mutex_timedlock (__gthread_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout)
{
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout);
+ else
+ return 0;
+}
+#endif
+#endif
+
+static inline int
+__gthread_mutex_unlock (__gthread_mutex_t *__mutex)
+{
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_mutex_unlock) (__mutex);
+ else
+ return 0;
+}
+
+#ifndef PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+static inline int
+__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex)
+{
+ if (__gthread_active_p ())
+ {
+ pthread_mutexattr_t __attr;
+ int __r;
+
+ __r = __gthrw_(pthread_mutexattr_init) (&__attr);
+ if (!__r)
+ __r = __gthrw_(pthread_mutexattr_settype) (&__attr,
+ PTHREAD_MUTEX_RECURSIVE);
+ if (!__r)
+ __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr);
+ if (!__r)
+ __r = __gthrw_(pthread_mutexattr_destroy) (&__attr);
+ return __r;
+ }
return 0;
}
+#endif
static inline int
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
@@ -279,14 +824,69 @@
return __gthread_mutex_trylock (__mutex);
}
+#ifdef _POSIX_TIMEOUTS
+#if _POSIX_TIMEOUTS >= 0
+static inline int
+__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout)
+{
+ return __gthread_mutex_timedlock (__mutex, __abs_timeout);
+}
+#endif
+#endif
+
static inline int
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
{
return __gthread_mutex_unlock (__mutex);
}
+static inline int
+__gthread_cond_broadcast (__gthread_cond_t *__cond)
+{
+ return __gthrw_(pthread_cond_broadcast) (__cond);
+}
+
+static inline int
+__gthread_cond_signal (__gthread_cond_t *__cond)
+{
+ return __gthrw_(pthread_cond_signal) (__cond);
+}
+
+static inline int
+__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex)
+{
+ return __gthrw_(pthread_cond_wait) (__cond, __mutex);
+}
+
+static inline int
+__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout)
+{
+ return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout);
+}
+
+static inline int
+__gthread_cond_wait_recursive (__gthread_cond_t *__cond,
+ __gthread_recursive_mutex_t *__mutex)
+{
+ return __gthread_cond_wait (__cond, __mutex);
+}
+
+static inline int
+__gthread_cond_timedwait_recursive (__gthread_cond_t *__cond,
+ __gthread_recursive_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout)
+{
+ return __gthread_cond_timedwait (__cond, __mutex, __abs_timeout);
+}
+
+static inline int
+__gthread_cond_destroy (__gthread_cond_t* __cond)
+{
+ return __gthrw_(pthread_cond_destroy) (__cond);
+}
+
#endif /* _LIBOBJC */
-#undef _GLIBCXX_UNUSED
-
-#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */
+#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/libgnustl_shared.so
index cdbec18..c53d134 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/libgnustl_static.a
index 7c100eb..ea574f1 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/libsupc++.a
index c500792..17ab24d 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/mips/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/include/bits/c++config.h b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/include/bits/c++config.h
index 8e571bd..86dad8f 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/include/bits/c++config.h
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/include/bits/c++config.h
@@ -434,13 +434,13 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the `acosf' function. */
-/* #undef _GLIBCXX_HAVE_ACOSF */
+#define _GLIBCXX_HAVE_ACOSF 1
/* Define to 1 if you have the `acosl' function. */
/* #undef _GLIBCXX_HAVE_ACOSL */
/* Define to 1 if you have the `asinf' function. */
-/* #undef _GLIBCXX_HAVE_ASINF */
+#define _GLIBCXX_HAVE_ASINF 1
/* Define to 1 if you have the `asinl' function. */
/* #undef _GLIBCXX_HAVE_ASINL */
@@ -449,13 +449,13 @@
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
/* Define to 1 if you have the `atan2f' function. */
-/* #undef _GLIBCXX_HAVE_ATAN2F */
+#define _GLIBCXX_HAVE_ATAN2F 1
/* Define to 1 if you have the `atan2l' function. */
/* #undef _GLIBCXX_HAVE_ATAN2L */
/* Define to 1 if you have the `atanf' function. */
-/* #undef _GLIBCXX_HAVE_ATANF */
+#define _GLIBCXX_HAVE_ATANF 1
/* Define to 1 if you have the `atanl' function. */
/* #undef _GLIBCXX_HAVE_ATANL */
@@ -464,19 +464,19 @@
/* #undef _GLIBCXX_HAVE_CC_TLS */
/* Define to 1 if you have the `ceilf' function. */
-/* #undef _GLIBCXX_HAVE_CEILF */
+#define _GLIBCXX_HAVE_CEILF 1
/* Define to 1 if you have the `ceill' function. */
-/* #undef _GLIBCXX_HAVE_CEILL */
+#define _GLIBCXX_HAVE_CEILL 1
/* Define to 1 if you have the <complex.h> header file. */
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
/* Define to 1 if you have the `cosf' function. */
-/* #undef _GLIBCXX_HAVE_COSF */
+#define _GLIBCXX_HAVE_COSF 1
/* Define to 1 if you have the `coshf' function. */
-/* #undef _GLIBCXX_HAVE_COSHF */
+#define _GLIBCXX_HAVE_COSHF 1
/* Define to 1 if you have the `coshl' function. */
/* #undef _GLIBCXX_HAVE_COSHL */
@@ -536,25 +536,25 @@
/* #undef _GLIBCXX_HAVE_EXECINFO_H */
/* Define to 1 if you have the `expf' function. */
-/* #undef _GLIBCXX_HAVE_EXPF */
+#define _GLIBCXX_HAVE_EXPF 1
/* Define to 1 if you have the `expl' function. */
/* #undef _GLIBCXX_HAVE_EXPL */
/* Define to 1 if you have the `fabsf' function. */
-/* #undef _GLIBCXX_HAVE_FABSF */
+#define _GLIBCXX_HAVE_FABSF 1
/* Define to 1 if you have the `fabsl' function. */
-/* #undef _GLIBCXX_HAVE_FABSL */
+#define _GLIBCXX_HAVE_FABSL 1
/* Define to 1 if you have the <fenv.h> header file. */
#define _GLIBCXX_HAVE_FENV_H 1
/* Define to 1 if you have the `finite' function. */
-/* #undef _GLIBCXX_HAVE_FINITE */
+#define _GLIBCXX_HAVE_FINITE 1
/* Define to 1 if you have the `finitef' function. */
-/* #undef _GLIBCXX_HAVE_FINITEF */
+#define _GLIBCXX_HAVE_FINITEF 1
/* Define to 1 if you have the `finitel' function. */
/* #undef _GLIBCXX_HAVE_FINITEL */
@@ -563,13 +563,13 @@
#define _GLIBCXX_HAVE_FLOAT_H 1
/* Define to 1 if you have the `floorf' function. */
-/* #undef _GLIBCXX_HAVE_FLOORF */
+#define _GLIBCXX_HAVE_FLOORF 1
/* Define to 1 if you have the `floorl' function. */
-/* #undef _GLIBCXX_HAVE_FLOORL */
+#define _GLIBCXX_HAVE_FLOORL 1
/* Define to 1 if you have the `fmodf' function. */
-/* #undef _GLIBCXX_HAVE_FMODF */
+#define _GLIBCXX_HAVE_FMODF 1
/* Define to 1 if you have the `fmodl' function. */
/* #undef _GLIBCXX_HAVE_FMODL */
@@ -581,7 +581,7 @@
/* #undef _GLIBCXX_HAVE_FP_H */
/* Define to 1 if you have the `frexpf' function. */
-/* #undef _GLIBCXX_HAVE_FREXPF */
+#define _GLIBCXX_HAVE_FREXPF 1
/* Define to 1 if you have the `frexpl' function. */
/* #undef _GLIBCXX_HAVE_FREXPL */
@@ -594,10 +594,10 @@
#define _GLIBCXX_HAVE_GTHR_DEFAULT 1
/* Define to 1 if you have the `hypot' function. */
-/* #undef _GLIBCXX_HAVE_HYPOT */
+#define _GLIBCXX_HAVE_HYPOT 1
/* Define to 1 if you have the `hypotf' function. */
-/* #undef _GLIBCXX_HAVE_HYPOTF */
+#define _GLIBCXX_HAVE_HYPOTF 1
/* Define to 1 if you have the `hypotl' function. */
/* #undef _GLIBCXX_HAVE_HYPOTL */
@@ -633,7 +633,7 @@
/* #undef _GLIBCXX_HAVE_ISNAN */
/* Define to 1 if you have the `isnanf' function. */
-/* #undef _GLIBCXX_HAVE_ISNANF */
+#define _GLIBCXX_HAVE_ISNANF 1
/* Define to 1 if you have the `isnanl' function. */
/* #undef _GLIBCXX_HAVE_ISNANL */
@@ -645,10 +645,10 @@
#define _GLIBCXX_HAVE_LC_MESSAGES 1
/* Define to 1 if you have the `ldexpf' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPF */
+#define _GLIBCXX_HAVE_LDEXPF 1
/* Define to 1 if you have the `ldexpl' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPL */
+#define _GLIBCXX_HAVE_LDEXPL 1
/* Define to 1 if you have the <libintl.h> header file. */
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
@@ -675,13 +675,13 @@
#define _GLIBCXX_HAVE_LOCALE_H 1
/* Define to 1 if you have the `log10f' function. */
-/* #undef _GLIBCXX_HAVE_LOG10F */
+#define _GLIBCXX_HAVE_LOG10F 1
/* Define to 1 if you have the `log10l' function. */
/* #undef _GLIBCXX_HAVE_LOG10L */
/* Define to 1 if you have the `logf' function. */
-/* #undef _GLIBCXX_HAVE_LOGF */
+#define _GLIBCXX_HAVE_LOGF 1
/* Define to 1 if you have the `logl' function. */
/* #undef _GLIBCXX_HAVE_LOGL */
@@ -699,10 +699,10 @@
#define _GLIBCXX_HAVE_MEMORY_H 1
/* Define to 1 if you have the `modf' function. */
-/* #undef _GLIBCXX_HAVE_MODF */
+#define _GLIBCXX_HAVE_MODF 1
/* Define to 1 if you have the `modff' function. */
-/* #undef _GLIBCXX_HAVE_MODFF */
+#define _GLIBCXX_HAVE_MODFF 1
/* Define to 1 if you have the `modfl' function. */
/* #undef _GLIBCXX_HAVE_MODFL */
@@ -711,10 +711,10 @@
/* #undef _GLIBCXX_HAVE_NAN_H */
/* Define if poll is available in <poll.h>. */
-/* #undef _GLIBCXX_HAVE_POLL */
+#define _GLIBCXX_HAVE_POLL 1
/* Define to 1 if you have the `powf' function. */
-/* #undef _GLIBCXX_HAVE_POWF */
+#define _GLIBCXX_HAVE_POWF 1
/* Define to 1 if you have the `powl' function. */
/* #undef _GLIBCXX_HAVE_POWL */
@@ -726,19 +726,19 @@
/* #undef _GLIBCXX_HAVE_SETENV */
/* Define to 1 if you have the `sincos' function. */
-/* #undef _GLIBCXX_HAVE_SINCOS */
+#define _GLIBCXX_HAVE_SINCOS 1
/* Define to 1 if you have the `sincosf' function. */
-/* #undef _GLIBCXX_HAVE_SINCOSF */
+#define _GLIBCXX_HAVE_SINCOSF 1
/* Define to 1 if you have the `sincosl' function. */
-/* #undef _GLIBCXX_HAVE_SINCOSL */
+#define _GLIBCXX_HAVE_SINCOSL 1
/* Define to 1 if you have the `sinf' function. */
-/* #undef _GLIBCXX_HAVE_SINF */
+#define _GLIBCXX_HAVE_SINF 1
/* Define to 1 if you have the `sinhf' function. */
-/* #undef _GLIBCXX_HAVE_SINHF */
+#define _GLIBCXX_HAVE_SINHF 1
/* Define to 1 if you have the `sinhl' function. */
/* #undef _GLIBCXX_HAVE_SINHL */
@@ -747,7 +747,7 @@
/* #undef _GLIBCXX_HAVE_SINL */
/* Define to 1 if you have the `sqrtf' function. */
-/* #undef _GLIBCXX_HAVE_SQRTF */
+#define _GLIBCXX_HAVE_SQRTF 1
/* Define to 1 if you have the `sqrtl' function. */
/* #undef _GLIBCXX_HAVE_SQRTL */
@@ -826,13 +826,13 @@
/* #undef _GLIBCXX_HAVE_S_IFREG */
/* Define if S_IFREG is available in <sys/stat.h>. */
-/* #undef _GLIBCXX_HAVE_S_ISREG */
+#define _GLIBCXX_HAVE_S_ISREG 1
/* Define to 1 if you have the `tanf' function. */
-/* #undef _GLIBCXX_HAVE_TANF */
+#define _GLIBCXX_HAVE_TANF 1
/* Define to 1 if you have the `tanhf' function. */
-/* #undef _GLIBCXX_HAVE_TANHF */
+#define _GLIBCXX_HAVE_TANHF 1
/* Define to 1 if you have the `tanhl' function. */
/* #undef _GLIBCXX_HAVE_TANHL */
@@ -868,7 +868,7 @@
#define _GLIBCXX_HAVE_WCTYPE_H 1
/* Define if writev is available in <sys/uio.h>. */
-/* #undef _GLIBCXX_HAVE_WRITEV */
+#define _GLIBCXX_HAVE_WRITEV 1
/* Define to 1 if you have the `_acosf' function. */
/* #undef _GLIBCXX_HAVE__ACOSF */
@@ -1201,7 +1201,7 @@
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
in namespace std. */
-/* #undef _GLIBCXX_USE_C99_MATH */
+#define _GLIBCXX_USE_C99_MATH 1
/* Define if C99 functions or macros in <math.h> should be imported in
<tr1/cmath> in namespace std::tr1. */
@@ -1212,17 +1212,17 @@
#define _GLIBCXX_USE_C99_STDINT_TR1 1
/* Defined if clock_gettime has monotonic clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
+#define _GLIBCXX_USE_CLOCK_MONOTONIC 1
/* Defined if clock_gettime has realtime clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
+#define _GLIBCXX_USE_CLOCK_REALTIME 1
/* Define if ISO/IEC TR 24733 decimal floating point types are supported on
this host. */
#define _GLIBCXX_USE_DECIMAL_FLOAT 1
/* Defined if gettimeofday is available. */
-/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
+#define _GLIBCXX_USE_GETTIMEOFDAY 1
/* Define if LFS support is available. */
/* #undef _GLIBCXX_USE_LFS */
@@ -1231,7 +1231,7 @@
#define _GLIBCXX_USE_LONG_LONG 1
/* Defined if nanosleep is available. */
-/* #undef _GLIBCXX_USE_NANOSLEEP */
+#define _GLIBCXX_USE_NANOSLEEP 1
/* Define if NLS translations are to be used. */
/* #undef _GLIBCXX_USE_NLS */
@@ -1241,7 +1241,7 @@
#define _GLIBCXX_USE_RANDOM_TR1 1
/* Defined if sched_yield is available. */
-/* #undef _GLIBCXX_USE_SCHED_YIELD */
+#define _GLIBCXX_USE_SCHED_YIELD 1
/* Define if code specialized for wchar_t should be used. */
#define _GLIBCXX_USE_WCHAR_T 1
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/libgnustl_shared.so
index f9fe907..a5cf56b 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/libgnustl_static.a
index 6acd433..0670b5f 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/libsupc++.a
index 6a4847f..da9c20a 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.6/libs/x86/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include/bits/c++config.h b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include/bits/c++config.h
index d2771a2..719265e 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include/bits/c++config.h
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include/bits/c++config.h
@@ -455,13 +455,13 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the `acosf' function. */
-/* #undef _GLIBCXX_HAVE_ACOSF */
+#define _GLIBCXX_HAVE_ACOSF 1
/* Define to 1 if you have the `acosl' function. */
/* #undef _GLIBCXX_HAVE_ACOSL */
/* Define to 1 if you have the `asinf' function. */
-/* #undef _GLIBCXX_HAVE_ASINF */
+#define _GLIBCXX_HAVE_ASINF 1
/* Define to 1 if you have the `asinl' function. */
/* #undef _GLIBCXX_HAVE_ASINL */
@@ -470,13 +470,13 @@
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
/* Define to 1 if you have the `atan2f' function. */
-/* #undef _GLIBCXX_HAVE_ATAN2F */
+#define _GLIBCXX_HAVE_ATAN2F 1
/* Define to 1 if you have the `atan2l' function. */
/* #undef _GLIBCXX_HAVE_ATAN2L */
/* Define to 1 if you have the `atanf' function. */
-/* #undef _GLIBCXX_HAVE_ATANF */
+#define _GLIBCXX_HAVE_ATANF 1
/* Define to 1 if you have the `atanl' function. */
/* #undef _GLIBCXX_HAVE_ATANL */
@@ -485,19 +485,19 @@
/* #undef _GLIBCXX_HAVE_CC_TLS */
/* Define to 1 if you have the `ceilf' function. */
-/* #undef _GLIBCXX_HAVE_CEILF */
+#define _GLIBCXX_HAVE_CEILF 1
/* Define to 1 if you have the `ceill' function. */
-/* #undef _GLIBCXX_HAVE_CEILL */
+#define _GLIBCXX_HAVE_CEILL 1
/* Define to 1 if you have the <complex.h> header file. */
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
/* Define to 1 if you have the `cosf' function. */
-/* #undef _GLIBCXX_HAVE_COSF */
+#define _GLIBCXX_HAVE_COSF 1
/* Define to 1 if you have the `coshf' function. */
-/* #undef _GLIBCXX_HAVE_COSHF */
+#define _GLIBCXX_HAVE_COSHF 1
/* Define to 1 if you have the `coshl' function. */
/* #undef _GLIBCXX_HAVE_COSHL */
@@ -572,25 +572,25 @@
/* #undef _GLIBCXX_HAVE_EXECINFO_H */
/* Define to 1 if you have the `expf' function. */
-/* #undef _GLIBCXX_HAVE_EXPF */
+#define _GLIBCXX_HAVE_EXPF 1
/* Define to 1 if you have the `expl' function. */
/* #undef _GLIBCXX_HAVE_EXPL */
/* Define to 1 if you have the `fabsf' function. */
-/* #undef _GLIBCXX_HAVE_FABSF */
+#define _GLIBCXX_HAVE_FABSF 1
/* Define to 1 if you have the `fabsl' function. */
-/* #undef _GLIBCXX_HAVE_FABSL */
+#define _GLIBCXX_HAVE_FABSL 1
/* Define to 1 if you have the <fenv.h> header file. */
#define _GLIBCXX_HAVE_FENV_H 1
/* Define to 1 if you have the `finite' function. */
-/* #undef _GLIBCXX_HAVE_FINITE */
+#define _GLIBCXX_HAVE_FINITE 1
/* Define to 1 if you have the `finitef' function. */
-/* #undef _GLIBCXX_HAVE_FINITEF */
+#define _GLIBCXX_HAVE_FINITEF 1
/* Define to 1 if you have the `finitel' function. */
/* #undef _GLIBCXX_HAVE_FINITEL */
@@ -599,13 +599,13 @@
#define _GLIBCXX_HAVE_FLOAT_H 1
/* Define to 1 if you have the `floorf' function. */
-/* #undef _GLIBCXX_HAVE_FLOORF */
+#define _GLIBCXX_HAVE_FLOORF 1
/* Define to 1 if you have the `floorl' function. */
-/* #undef _GLIBCXX_HAVE_FLOORL */
+#define _GLIBCXX_HAVE_FLOORL 1
/* Define to 1 if you have the `fmodf' function. */
-/* #undef _GLIBCXX_HAVE_FMODF */
+#define _GLIBCXX_HAVE_FMODF 1
/* Define to 1 if you have the `fmodl' function. */
/* #undef _GLIBCXX_HAVE_FMODL */
@@ -617,7 +617,7 @@
/* #undef _GLIBCXX_HAVE_FP_H */
/* Define to 1 if you have the `frexpf' function. */
-/* #undef _GLIBCXX_HAVE_FREXPF */
+#define _GLIBCXX_HAVE_FREXPF 1
/* Define to 1 if you have the `frexpl' function. */
/* #undef _GLIBCXX_HAVE_FREXPL */
@@ -629,10 +629,10 @@
#define _GLIBCXX_HAVE_GETS 1
/* Define to 1 if you have the `hypot' function. */
-/* #undef _GLIBCXX_HAVE_HYPOT */
+#define _GLIBCXX_HAVE_HYPOT 1
/* Define to 1 if you have the `hypotf' function. */
-/* #undef _GLIBCXX_HAVE_HYPOTF */
+#define _GLIBCXX_HAVE_HYPOTF 1
/* Define to 1 if you have the `hypotl' function. */
/* #undef _GLIBCXX_HAVE_HYPOTL */
@@ -668,7 +668,7 @@
/* #undef _GLIBCXX_HAVE_ISNAN */
/* Define to 1 if you have the `isnanf' function. */
-/* #undef _GLIBCXX_HAVE_ISNANF */
+#define _GLIBCXX_HAVE_ISNANF 1
/* Define to 1 if you have the `isnanl' function. */
/* #undef _GLIBCXX_HAVE_ISNANL */
@@ -680,10 +680,10 @@
#define _GLIBCXX_HAVE_LC_MESSAGES 1
/* Define to 1 if you have the `ldexpf' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPF */
+#define _GLIBCXX_HAVE_LDEXPF 1
/* Define to 1 if you have the `ldexpl' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPL */
+#define _GLIBCXX_HAVE_LDEXPL 1
/* Define to 1 if you have the <libintl.h> header file. */
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
@@ -710,13 +710,13 @@
#define _GLIBCXX_HAVE_LOCALE_H 1
/* Define to 1 if you have the `log10f' function. */
-/* #undef _GLIBCXX_HAVE_LOG10F */
+#define _GLIBCXX_HAVE_LOG10F 1
/* Define to 1 if you have the `log10l' function. */
/* #undef _GLIBCXX_HAVE_LOG10L */
/* Define to 1 if you have the `logf' function. */
-/* #undef _GLIBCXX_HAVE_LOGF */
+#define _GLIBCXX_HAVE_LOGF 1
/* Define to 1 if you have the `logl' function. */
/* #undef _GLIBCXX_HAVE_LOGL */
@@ -734,10 +734,10 @@
#define _GLIBCXX_HAVE_MEMORY_H 1
/* Define to 1 if you have the `modf' function. */
-/* #undef _GLIBCXX_HAVE_MODF */
+#define _GLIBCXX_HAVE_MODF 1
/* Define to 1 if you have the `modff' function. */
-/* #undef _GLIBCXX_HAVE_MODFF */
+#define _GLIBCXX_HAVE_MODFF 1
/* Define to 1 if you have the `modfl' function. */
/* #undef _GLIBCXX_HAVE_MODFL */
@@ -746,10 +746,10 @@
/* #undef _GLIBCXX_HAVE_NAN_H */
/* Define if poll is available in <poll.h>. */
-/* #undef _GLIBCXX_HAVE_POLL */
+#define _GLIBCXX_HAVE_POLL 1
/* Define to 1 if you have the `powf' function. */
-/* #undef _GLIBCXX_HAVE_POWF */
+#define _GLIBCXX_HAVE_POWF 1
/* Define to 1 if you have the `powl' function. */
/* #undef _GLIBCXX_HAVE_POWL */
@@ -770,10 +770,10 @@
/* #undef _GLIBCXX_HAVE_SINCOSL */
/* Define to 1 if you have the `sinf' function. */
-/* #undef _GLIBCXX_HAVE_SINF */
+#define _GLIBCXX_HAVE_SINF 1
/* Define to 1 if you have the `sinhf' function. */
-/* #undef _GLIBCXX_HAVE_SINHF */
+#define _GLIBCXX_HAVE_SINHF 1
/* Define to 1 if you have the `sinhl' function. */
/* #undef _GLIBCXX_HAVE_SINHL */
@@ -782,7 +782,7 @@
/* #undef _GLIBCXX_HAVE_SINL */
/* Define to 1 if you have the `sqrtf' function. */
-/* #undef _GLIBCXX_HAVE_SQRTF */
+#define _GLIBCXX_HAVE_SQRTF 1
/* Define to 1 if you have the `sqrtl' function. */
/* #undef _GLIBCXX_HAVE_SQRTL */
@@ -867,13 +867,13 @@
/* #undef _GLIBCXX_HAVE_S_IFREG */
/* Define if S_IFREG is available in <sys/stat.h>. */
-/* #undef _GLIBCXX_HAVE_S_ISREG */
+#define _GLIBCXX_HAVE_S_ISREG 1
/* Define to 1 if you have the `tanf' function. */
-/* #undef _GLIBCXX_HAVE_TANF */
+#define _GLIBCXX_HAVE_TANF 1
/* Define to 1 if you have the `tanhf' function. */
-/* #undef _GLIBCXX_HAVE_TANHF */
+#define _GLIBCXX_HAVE_TANHF 1
/* Define to 1 if you have the `tanhl' function. */
/* #undef _GLIBCXX_HAVE_TANHL */
@@ -909,7 +909,7 @@
#define _GLIBCXX_HAVE_WCTYPE_H 1
/* Define if writev is available in <sys/uio.h>. */
-/* #undef _GLIBCXX_HAVE_WRITEV */
+#define _GLIBCXX_HAVE_WRITEV 1
/* Define to 1 if you have the `_acosf' function. */
/* #undef _GLIBCXX_HAVE__ACOSF */
@@ -1157,7 +1157,7 @@
#define _GLIBCXX_FULLY_DYNAMIC_STRING 0
/* Define if gthreads library is available. */
-/* #undef _GLIBCXX_HAS_GTHREADS */
+#define _GLIBCXX_HAS_GTHREADS 1
/* Define to 1 if a full hosted library is built, or 0 if freestanding. */
#define _GLIBCXX_HOSTED 1
@@ -1232,7 +1232,7 @@
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
in namespace std. */
-/* #undef _GLIBCXX_USE_C99_MATH */
+#define _GLIBCXX_USE_C99_MATH 1
/* Define if C99 functions or macros in <math.h> should be imported in
<tr1/cmath> in namespace std::tr1. */
@@ -1243,10 +1243,10 @@
#define _GLIBCXX_USE_C99_STDINT_TR1 1
/* Defined if clock_gettime has monotonic clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
+#define _GLIBCXX_USE_CLOCK_MONOTONIC 1
/* Defined if clock_gettime has realtime clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
+#define _GLIBCXX_USE_CLOCK_REALTIME 1
/* Define if ISO/IEC TR 24733 decimal floating point types are supported on
this host. */
@@ -1256,7 +1256,7 @@
/* #undef _GLIBCXX_USE_FLOAT128 */
/* Defined if gettimeofday is available. */
-/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
+#define _GLIBCXX_USE_GETTIMEOFDAY 1
/* Define if get_nprocs is available in <sys/sysinfo.h>. */
/* #undef _GLIBCXX_USE_GET_NPROCS */
@@ -1271,7 +1271,7 @@
#define _GLIBCXX_USE_LONG_LONG 1
/* Defined if nanosleep is available. */
-/* #undef _GLIBCXX_USE_NANOSLEEP */
+#define _GLIBCXX_USE_NANOSLEEP 1
/* Define if NLS translations are to be used. */
/* #undef _GLIBCXX_USE_NLS */
@@ -1284,10 +1284,10 @@
#define _GLIBCXX_USE_RANDOM_TR1 1
/* Defined if sched_yield is available. */
-/* #undef _GLIBCXX_USE_SCHED_YIELD */
+#define _GLIBCXX_USE_SCHED_YIELD 1
/* Define if _SC_NPROCESSORS_ONLN is available in <unistd.h>. */
-/* #undef _GLIBCXX_USE_SC_NPROCESSORS_ONLN */
+#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1
/* Define if _SC_NPROC_ONLN is available in <unistd.h>. */
/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/libgnustl_shared.so
index 6c3fa48..45ec27d 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/libgnustl_static.a
index e5eb49c..88cd34b 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/libsupc++.a
index 52f9364..12d6295 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/thumb/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/thumb/libgnustl_shared.so
index 1285b5e..2be4412 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/thumb/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/thumb/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/thumb/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/thumb/libgnustl_static.a
index a72e65f..57858f8 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/thumb/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/thumb/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/thumb/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/thumb/libsupc++.a
index a28aad0..7123db5 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/thumb/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/thumb/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/include/bits/c++config.h b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/include/bits/c++config.h
index d2771a2..719265e 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/include/bits/c++config.h
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/include/bits/c++config.h
@@ -455,13 +455,13 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the `acosf' function. */
-/* #undef _GLIBCXX_HAVE_ACOSF */
+#define _GLIBCXX_HAVE_ACOSF 1
/* Define to 1 if you have the `acosl' function. */
/* #undef _GLIBCXX_HAVE_ACOSL */
/* Define to 1 if you have the `asinf' function. */
-/* #undef _GLIBCXX_HAVE_ASINF */
+#define _GLIBCXX_HAVE_ASINF 1
/* Define to 1 if you have the `asinl' function. */
/* #undef _GLIBCXX_HAVE_ASINL */
@@ -470,13 +470,13 @@
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
/* Define to 1 if you have the `atan2f' function. */
-/* #undef _GLIBCXX_HAVE_ATAN2F */
+#define _GLIBCXX_HAVE_ATAN2F 1
/* Define to 1 if you have the `atan2l' function. */
/* #undef _GLIBCXX_HAVE_ATAN2L */
/* Define to 1 if you have the `atanf' function. */
-/* #undef _GLIBCXX_HAVE_ATANF */
+#define _GLIBCXX_HAVE_ATANF 1
/* Define to 1 if you have the `atanl' function. */
/* #undef _GLIBCXX_HAVE_ATANL */
@@ -485,19 +485,19 @@
/* #undef _GLIBCXX_HAVE_CC_TLS */
/* Define to 1 if you have the `ceilf' function. */
-/* #undef _GLIBCXX_HAVE_CEILF */
+#define _GLIBCXX_HAVE_CEILF 1
/* Define to 1 if you have the `ceill' function. */
-/* #undef _GLIBCXX_HAVE_CEILL */
+#define _GLIBCXX_HAVE_CEILL 1
/* Define to 1 if you have the <complex.h> header file. */
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
/* Define to 1 if you have the `cosf' function. */
-/* #undef _GLIBCXX_HAVE_COSF */
+#define _GLIBCXX_HAVE_COSF 1
/* Define to 1 if you have the `coshf' function. */
-/* #undef _GLIBCXX_HAVE_COSHF */
+#define _GLIBCXX_HAVE_COSHF 1
/* Define to 1 if you have the `coshl' function. */
/* #undef _GLIBCXX_HAVE_COSHL */
@@ -572,25 +572,25 @@
/* #undef _GLIBCXX_HAVE_EXECINFO_H */
/* Define to 1 if you have the `expf' function. */
-/* #undef _GLIBCXX_HAVE_EXPF */
+#define _GLIBCXX_HAVE_EXPF 1
/* Define to 1 if you have the `expl' function. */
/* #undef _GLIBCXX_HAVE_EXPL */
/* Define to 1 if you have the `fabsf' function. */
-/* #undef _GLIBCXX_HAVE_FABSF */
+#define _GLIBCXX_HAVE_FABSF 1
/* Define to 1 if you have the `fabsl' function. */
-/* #undef _GLIBCXX_HAVE_FABSL */
+#define _GLIBCXX_HAVE_FABSL 1
/* Define to 1 if you have the <fenv.h> header file. */
#define _GLIBCXX_HAVE_FENV_H 1
/* Define to 1 if you have the `finite' function. */
-/* #undef _GLIBCXX_HAVE_FINITE */
+#define _GLIBCXX_HAVE_FINITE 1
/* Define to 1 if you have the `finitef' function. */
-/* #undef _GLIBCXX_HAVE_FINITEF */
+#define _GLIBCXX_HAVE_FINITEF 1
/* Define to 1 if you have the `finitel' function. */
/* #undef _GLIBCXX_HAVE_FINITEL */
@@ -599,13 +599,13 @@
#define _GLIBCXX_HAVE_FLOAT_H 1
/* Define to 1 if you have the `floorf' function. */
-/* #undef _GLIBCXX_HAVE_FLOORF */
+#define _GLIBCXX_HAVE_FLOORF 1
/* Define to 1 if you have the `floorl' function. */
-/* #undef _GLIBCXX_HAVE_FLOORL */
+#define _GLIBCXX_HAVE_FLOORL 1
/* Define to 1 if you have the `fmodf' function. */
-/* #undef _GLIBCXX_HAVE_FMODF */
+#define _GLIBCXX_HAVE_FMODF 1
/* Define to 1 if you have the `fmodl' function. */
/* #undef _GLIBCXX_HAVE_FMODL */
@@ -617,7 +617,7 @@
/* #undef _GLIBCXX_HAVE_FP_H */
/* Define to 1 if you have the `frexpf' function. */
-/* #undef _GLIBCXX_HAVE_FREXPF */
+#define _GLIBCXX_HAVE_FREXPF 1
/* Define to 1 if you have the `frexpl' function. */
/* #undef _GLIBCXX_HAVE_FREXPL */
@@ -629,10 +629,10 @@
#define _GLIBCXX_HAVE_GETS 1
/* Define to 1 if you have the `hypot' function. */
-/* #undef _GLIBCXX_HAVE_HYPOT */
+#define _GLIBCXX_HAVE_HYPOT 1
/* Define to 1 if you have the `hypotf' function. */
-/* #undef _GLIBCXX_HAVE_HYPOTF */
+#define _GLIBCXX_HAVE_HYPOTF 1
/* Define to 1 if you have the `hypotl' function. */
/* #undef _GLIBCXX_HAVE_HYPOTL */
@@ -668,7 +668,7 @@
/* #undef _GLIBCXX_HAVE_ISNAN */
/* Define to 1 if you have the `isnanf' function. */
-/* #undef _GLIBCXX_HAVE_ISNANF */
+#define _GLIBCXX_HAVE_ISNANF 1
/* Define to 1 if you have the `isnanl' function. */
/* #undef _GLIBCXX_HAVE_ISNANL */
@@ -680,10 +680,10 @@
#define _GLIBCXX_HAVE_LC_MESSAGES 1
/* Define to 1 if you have the `ldexpf' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPF */
+#define _GLIBCXX_HAVE_LDEXPF 1
/* Define to 1 if you have the `ldexpl' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPL */
+#define _GLIBCXX_HAVE_LDEXPL 1
/* Define to 1 if you have the <libintl.h> header file. */
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
@@ -710,13 +710,13 @@
#define _GLIBCXX_HAVE_LOCALE_H 1
/* Define to 1 if you have the `log10f' function. */
-/* #undef _GLIBCXX_HAVE_LOG10F */
+#define _GLIBCXX_HAVE_LOG10F 1
/* Define to 1 if you have the `log10l' function. */
/* #undef _GLIBCXX_HAVE_LOG10L */
/* Define to 1 if you have the `logf' function. */
-/* #undef _GLIBCXX_HAVE_LOGF */
+#define _GLIBCXX_HAVE_LOGF 1
/* Define to 1 if you have the `logl' function. */
/* #undef _GLIBCXX_HAVE_LOGL */
@@ -734,10 +734,10 @@
#define _GLIBCXX_HAVE_MEMORY_H 1
/* Define to 1 if you have the `modf' function. */
-/* #undef _GLIBCXX_HAVE_MODF */
+#define _GLIBCXX_HAVE_MODF 1
/* Define to 1 if you have the `modff' function. */
-/* #undef _GLIBCXX_HAVE_MODFF */
+#define _GLIBCXX_HAVE_MODFF 1
/* Define to 1 if you have the `modfl' function. */
/* #undef _GLIBCXX_HAVE_MODFL */
@@ -746,10 +746,10 @@
/* #undef _GLIBCXX_HAVE_NAN_H */
/* Define if poll is available in <poll.h>. */
-/* #undef _GLIBCXX_HAVE_POLL */
+#define _GLIBCXX_HAVE_POLL 1
/* Define to 1 if you have the `powf' function. */
-/* #undef _GLIBCXX_HAVE_POWF */
+#define _GLIBCXX_HAVE_POWF 1
/* Define to 1 if you have the `powl' function. */
/* #undef _GLIBCXX_HAVE_POWL */
@@ -770,10 +770,10 @@
/* #undef _GLIBCXX_HAVE_SINCOSL */
/* Define to 1 if you have the `sinf' function. */
-/* #undef _GLIBCXX_HAVE_SINF */
+#define _GLIBCXX_HAVE_SINF 1
/* Define to 1 if you have the `sinhf' function. */
-/* #undef _GLIBCXX_HAVE_SINHF */
+#define _GLIBCXX_HAVE_SINHF 1
/* Define to 1 if you have the `sinhl' function. */
/* #undef _GLIBCXX_HAVE_SINHL */
@@ -782,7 +782,7 @@
/* #undef _GLIBCXX_HAVE_SINL */
/* Define to 1 if you have the `sqrtf' function. */
-/* #undef _GLIBCXX_HAVE_SQRTF */
+#define _GLIBCXX_HAVE_SQRTF 1
/* Define to 1 if you have the `sqrtl' function. */
/* #undef _GLIBCXX_HAVE_SQRTL */
@@ -867,13 +867,13 @@
/* #undef _GLIBCXX_HAVE_S_IFREG */
/* Define if S_IFREG is available in <sys/stat.h>. */
-/* #undef _GLIBCXX_HAVE_S_ISREG */
+#define _GLIBCXX_HAVE_S_ISREG 1
/* Define to 1 if you have the `tanf' function. */
-/* #undef _GLIBCXX_HAVE_TANF */
+#define _GLIBCXX_HAVE_TANF 1
/* Define to 1 if you have the `tanhf' function. */
-/* #undef _GLIBCXX_HAVE_TANHF */
+#define _GLIBCXX_HAVE_TANHF 1
/* Define to 1 if you have the `tanhl' function. */
/* #undef _GLIBCXX_HAVE_TANHL */
@@ -909,7 +909,7 @@
#define _GLIBCXX_HAVE_WCTYPE_H 1
/* Define if writev is available in <sys/uio.h>. */
-/* #undef _GLIBCXX_HAVE_WRITEV */
+#define _GLIBCXX_HAVE_WRITEV 1
/* Define to 1 if you have the `_acosf' function. */
/* #undef _GLIBCXX_HAVE__ACOSF */
@@ -1157,7 +1157,7 @@
#define _GLIBCXX_FULLY_DYNAMIC_STRING 0
/* Define if gthreads library is available. */
-/* #undef _GLIBCXX_HAS_GTHREADS */
+#define _GLIBCXX_HAS_GTHREADS 1
/* Define to 1 if a full hosted library is built, or 0 if freestanding. */
#define _GLIBCXX_HOSTED 1
@@ -1232,7 +1232,7 @@
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
in namespace std. */
-/* #undef _GLIBCXX_USE_C99_MATH */
+#define _GLIBCXX_USE_C99_MATH 1
/* Define if C99 functions or macros in <math.h> should be imported in
<tr1/cmath> in namespace std::tr1. */
@@ -1243,10 +1243,10 @@
#define _GLIBCXX_USE_C99_STDINT_TR1 1
/* Defined if clock_gettime has monotonic clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
+#define _GLIBCXX_USE_CLOCK_MONOTONIC 1
/* Defined if clock_gettime has realtime clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
+#define _GLIBCXX_USE_CLOCK_REALTIME 1
/* Define if ISO/IEC TR 24733 decimal floating point types are supported on
this host. */
@@ -1256,7 +1256,7 @@
/* #undef _GLIBCXX_USE_FLOAT128 */
/* Defined if gettimeofday is available. */
-/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
+#define _GLIBCXX_USE_GETTIMEOFDAY 1
/* Define if get_nprocs is available in <sys/sysinfo.h>. */
/* #undef _GLIBCXX_USE_GET_NPROCS */
@@ -1271,7 +1271,7 @@
#define _GLIBCXX_USE_LONG_LONG 1
/* Defined if nanosleep is available. */
-/* #undef _GLIBCXX_USE_NANOSLEEP */
+#define _GLIBCXX_USE_NANOSLEEP 1
/* Define if NLS translations are to be used. */
/* #undef _GLIBCXX_USE_NLS */
@@ -1284,10 +1284,10 @@
#define _GLIBCXX_USE_RANDOM_TR1 1
/* Defined if sched_yield is available. */
-/* #undef _GLIBCXX_USE_SCHED_YIELD */
+#define _GLIBCXX_USE_SCHED_YIELD 1
/* Define if _SC_NPROCESSORS_ONLN is available in <unistd.h>. */
-/* #undef _GLIBCXX_USE_SC_NPROCESSORS_ONLN */
+#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1
/* Define if _SC_NPROC_ONLN is available in <unistd.h>. */
/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/libgnustl_shared.so
index 47623ac..a9ed845 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/libgnustl_static.a
index 73b2c0a..3ac2f54 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/libsupc++.a
index 5bd01e9..23c4703 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/thumb/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/thumb/libgnustl_shared.so
index 02bec9e..583f0ac 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/thumb/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/thumb/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/thumb/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/thumb/libgnustl_static.a
index f2a6dcf..1ac8f3f 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/thumb/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/thumb/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/thumb/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/thumb/libsupc++.a
index a5945b6..668a8da 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/thumb/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/thumb/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/include/bits/c++config.h b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/include/bits/c++config.h
index 2d5f5c3..63ce67e 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/include/bits/c++config.h
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/include/bits/c++config.h
@@ -455,13 +455,13 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the `acosf' function. */
-/* #undef _GLIBCXX_HAVE_ACOSF */
+#define _GLIBCXX_HAVE_ACOSF 1
/* Define to 1 if you have the `acosl' function. */
/* #undef _GLIBCXX_HAVE_ACOSL */
/* Define to 1 if you have the `asinf' function. */
-/* #undef _GLIBCXX_HAVE_ASINF */
+#define _GLIBCXX_HAVE_ASINF 1
/* Define to 1 if you have the `asinl' function. */
/* #undef _GLIBCXX_HAVE_ASINL */
@@ -470,13 +470,13 @@
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
/* Define to 1 if you have the `atan2f' function. */
-/* #undef _GLIBCXX_HAVE_ATAN2F */
+#define _GLIBCXX_HAVE_ATAN2F 1
/* Define to 1 if you have the `atan2l' function. */
/* #undef _GLIBCXX_HAVE_ATAN2L */
/* Define to 1 if you have the `atanf' function. */
-/* #undef _GLIBCXX_HAVE_ATANF */
+#define _GLIBCXX_HAVE_ATANF 1
/* Define to 1 if you have the `atanl' function. */
/* #undef _GLIBCXX_HAVE_ATANL */
@@ -485,19 +485,19 @@
/* #undef _GLIBCXX_HAVE_CC_TLS */
/* Define to 1 if you have the `ceilf' function. */
-/* #undef _GLIBCXX_HAVE_CEILF */
+#define _GLIBCXX_HAVE_CEILF 1
/* Define to 1 if you have the `ceill' function. */
-/* #undef _GLIBCXX_HAVE_CEILL */
+#define _GLIBCXX_HAVE_CEILL 1
/* Define to 1 if you have the <complex.h> header file. */
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
/* Define to 1 if you have the `cosf' function. */
-/* #undef _GLIBCXX_HAVE_COSF */
+#define _GLIBCXX_HAVE_COSF 1
/* Define to 1 if you have the `coshf' function. */
-/* #undef _GLIBCXX_HAVE_COSHF */
+#define _GLIBCXX_HAVE_COSHF 1
/* Define to 1 if you have the `coshl' function. */
/* #undef _GLIBCXX_HAVE_COSHL */
@@ -572,25 +572,25 @@
/* #undef _GLIBCXX_HAVE_EXECINFO_H */
/* Define to 1 if you have the `expf' function. */
-/* #undef _GLIBCXX_HAVE_EXPF */
+#define _GLIBCXX_HAVE_EXPF 1
/* Define to 1 if you have the `expl' function. */
/* #undef _GLIBCXX_HAVE_EXPL */
/* Define to 1 if you have the `fabsf' function. */
-/* #undef _GLIBCXX_HAVE_FABSF */
+#define _GLIBCXX_HAVE_FABSF 1
/* Define to 1 if you have the `fabsl' function. */
-/* #undef _GLIBCXX_HAVE_FABSL */
+#define _GLIBCXX_HAVE_FABSL 1
/* Define to 1 if you have the <fenv.h> header file. */
#define _GLIBCXX_HAVE_FENV_H 1
/* Define to 1 if you have the `finite' function. */
-/* #undef _GLIBCXX_HAVE_FINITE */
+#define _GLIBCXX_HAVE_FINITE 1
/* Define to 1 if you have the `finitef' function. */
-/* #undef _GLIBCXX_HAVE_FINITEF */
+#define _GLIBCXX_HAVE_FINITEF 1
/* Define to 1 if you have the `finitel' function. */
/* #undef _GLIBCXX_HAVE_FINITEL */
@@ -599,13 +599,13 @@
#define _GLIBCXX_HAVE_FLOAT_H 1
/* Define to 1 if you have the `floorf' function. */
-/* #undef _GLIBCXX_HAVE_FLOORF */
+#define _GLIBCXX_HAVE_FLOORF 1
/* Define to 1 if you have the `floorl' function. */
-/* #undef _GLIBCXX_HAVE_FLOORL */
+#define _GLIBCXX_HAVE_FLOORL 1
/* Define to 1 if you have the `fmodf' function. */
-/* #undef _GLIBCXX_HAVE_FMODF */
+#define _GLIBCXX_HAVE_FMODF 1
/* Define to 1 if you have the `fmodl' function. */
/* #undef _GLIBCXX_HAVE_FMODL */
@@ -617,7 +617,7 @@
/* #undef _GLIBCXX_HAVE_FP_H */
/* Define to 1 if you have the `frexpf' function. */
-/* #undef _GLIBCXX_HAVE_FREXPF */
+#define _GLIBCXX_HAVE_FREXPF 1
/* Define to 1 if you have the `frexpl' function. */
/* #undef _GLIBCXX_HAVE_FREXPL */
@@ -629,10 +629,10 @@
#define _GLIBCXX_HAVE_GETS 1
/* Define to 1 if you have the `hypot' function. */
-/* #undef _GLIBCXX_HAVE_HYPOT */
+#define _GLIBCXX_HAVE_HYPOT 1
/* Define to 1 if you have the `hypotf' function. */
-/* #undef _GLIBCXX_HAVE_HYPOTF */
+#define _GLIBCXX_HAVE_HYPOTF 1
/* Define to 1 if you have the `hypotl' function. */
/* #undef _GLIBCXX_HAVE_HYPOTL */
@@ -668,7 +668,7 @@
/* #undef _GLIBCXX_HAVE_ISNAN */
/* Define to 1 if you have the `isnanf' function. */
-/* #undef _GLIBCXX_HAVE_ISNANF */
+#define _GLIBCXX_HAVE_ISNANF 1
/* Define to 1 if you have the `isnanl' function. */
/* #undef _GLIBCXX_HAVE_ISNANL */
@@ -680,10 +680,10 @@
#define _GLIBCXX_HAVE_LC_MESSAGES 1
/* Define to 1 if you have the `ldexpf' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPF */
+#define _GLIBCXX_HAVE_LDEXPF 1
/* Define to 1 if you have the `ldexpl' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPL */
+#define _GLIBCXX_HAVE_LDEXPL 1
/* Define to 1 if you have the <libintl.h> header file. */
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
@@ -710,13 +710,13 @@
#define _GLIBCXX_HAVE_LOCALE_H 1
/* Define to 1 if you have the `log10f' function. */
-/* #undef _GLIBCXX_HAVE_LOG10F */
+#define _GLIBCXX_HAVE_LOG10F 1
/* Define to 1 if you have the `log10l' function. */
/* #undef _GLIBCXX_HAVE_LOG10L */
/* Define to 1 if you have the `logf' function. */
-/* #undef _GLIBCXX_HAVE_LOGF */
+#define _GLIBCXX_HAVE_LOGF 1
/* Define to 1 if you have the `logl' function. */
/* #undef _GLIBCXX_HAVE_LOGL */
@@ -734,10 +734,10 @@
#define _GLIBCXX_HAVE_MEMORY_H 1
/* Define to 1 if you have the `modf' function. */
-/* #undef _GLIBCXX_HAVE_MODF */
+#define _GLIBCXX_HAVE_MODF 1
/* Define to 1 if you have the `modff' function. */
-/* #undef _GLIBCXX_HAVE_MODFF */
+#define _GLIBCXX_HAVE_MODFF 1
/* Define to 1 if you have the `modfl' function. */
/* #undef _GLIBCXX_HAVE_MODFL */
@@ -746,10 +746,10 @@
/* #undef _GLIBCXX_HAVE_NAN_H */
/* Define if poll is available in <poll.h>. */
-/* #undef _GLIBCXX_HAVE_POLL */
+#define _GLIBCXX_HAVE_POLL 1
/* Define to 1 if you have the `powf' function. */
-/* #undef _GLIBCXX_HAVE_POWF */
+#define _GLIBCXX_HAVE_POWF 1
/* Define to 1 if you have the `powl' function. */
/* #undef _GLIBCXX_HAVE_POWL */
@@ -761,19 +761,19 @@
/* #undef _GLIBCXX_HAVE_SETENV */
/* Define to 1 if you have the `sincos' function. */
-/* #undef _GLIBCXX_HAVE_SINCOS */
+#define _GLIBCXX_HAVE_SINCOS 1
/* Define to 1 if you have the `sincosf' function. */
-/* #undef _GLIBCXX_HAVE_SINCOSF */
+#define _GLIBCXX_HAVE_SINCOSF 1
/* Define to 1 if you have the `sincosl' function. */
-/* #undef _GLIBCXX_HAVE_SINCOSL */
+#define _GLIBCXX_HAVE_SINCOSL 1
/* Define to 1 if you have the `sinf' function. */
-/* #undef _GLIBCXX_HAVE_SINF */
+#define _GLIBCXX_HAVE_SINF 1
/* Define to 1 if you have the `sinhf' function. */
-/* #undef _GLIBCXX_HAVE_SINHF */
+#define _GLIBCXX_HAVE_SINHF 1
/* Define to 1 if you have the `sinhl' function. */
/* #undef _GLIBCXX_HAVE_SINHL */
@@ -782,7 +782,7 @@
/* #undef _GLIBCXX_HAVE_SINL */
/* Define to 1 if you have the `sqrtf' function. */
-/* #undef _GLIBCXX_HAVE_SQRTF */
+#define _GLIBCXX_HAVE_SQRTF 1
/* Define to 1 if you have the `sqrtl' function. */
/* #undef _GLIBCXX_HAVE_SQRTL */
@@ -867,13 +867,13 @@
/* #undef _GLIBCXX_HAVE_S_IFREG */
/* Define if S_IFREG is available in <sys/stat.h>. */
-/* #undef _GLIBCXX_HAVE_S_ISREG */
+#define _GLIBCXX_HAVE_S_ISREG 1
/* Define to 1 if you have the `tanf' function. */
-/* #undef _GLIBCXX_HAVE_TANF */
+#define _GLIBCXX_HAVE_TANF 1
/* Define to 1 if you have the `tanhf' function. */
-/* #undef _GLIBCXX_HAVE_TANHF */
+#define _GLIBCXX_HAVE_TANHF 1
/* Define to 1 if you have the `tanhl' function. */
/* #undef _GLIBCXX_HAVE_TANHL */
@@ -909,7 +909,7 @@
#define _GLIBCXX_HAVE_WCTYPE_H 1
/* Define if writev is available in <sys/uio.h>. */
-/* #undef _GLIBCXX_HAVE_WRITEV */
+#define _GLIBCXX_HAVE_WRITEV 1
/* Define to 1 if you have the `_acosf' function. */
/* #undef _GLIBCXX_HAVE__ACOSF */
@@ -1157,7 +1157,7 @@
#define _GLIBCXX_FULLY_DYNAMIC_STRING 0
/* Define if gthreads library is available. */
-/* #undef _GLIBCXX_HAS_GTHREADS */
+#define _GLIBCXX_HAS_GTHREADS 1
/* Define to 1 if a full hosted library is built, or 0 if freestanding. */
#define _GLIBCXX_HOSTED 1
@@ -1232,7 +1232,7 @@
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
in namespace std. */
-/* #undef _GLIBCXX_USE_C99_MATH */
+#define _GLIBCXX_USE_C99_MATH 1
/* Define if C99 functions or macros in <math.h> should be imported in
<tr1/cmath> in namespace std::tr1. */
@@ -1243,10 +1243,10 @@
#define _GLIBCXX_USE_C99_STDINT_TR1 1
/* Defined if clock_gettime has monotonic clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
+#define _GLIBCXX_USE_CLOCK_MONOTONIC 1
/* Defined if clock_gettime has realtime clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
+#define _GLIBCXX_USE_CLOCK_REALTIME 1
/* Define if ISO/IEC TR 24733 decimal floating point types are supported on
this host. */
@@ -1256,7 +1256,7 @@
/* #undef _GLIBCXX_USE_FLOAT128 */
/* Defined if gettimeofday is available. */
-/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
+#define _GLIBCXX_USE_GETTIMEOFDAY 1
/* Define if get_nprocs is available in <sys/sysinfo.h>. */
/* #undef _GLIBCXX_USE_GET_NPROCS */
@@ -1271,7 +1271,7 @@
#define _GLIBCXX_USE_LONG_LONG 1
/* Defined if nanosleep is available. */
-/* #undef _GLIBCXX_USE_NANOSLEEP */
+#define _GLIBCXX_USE_NANOSLEEP 1
/* Define if NLS translations are to be used. */
/* #undef _GLIBCXX_USE_NLS */
@@ -1284,10 +1284,10 @@
#define _GLIBCXX_USE_RANDOM_TR1 1
/* Defined if sched_yield is available. */
-/* #undef _GLIBCXX_USE_SCHED_YIELD */
+#define _GLIBCXX_USE_SCHED_YIELD 1
/* Define if _SC_NPROCESSORS_ONLN is available in <unistd.h>. */
-/* #undef _GLIBCXX_USE_SC_NPROCESSORS_ONLN */
+#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1
/* Define if _SC_NPROC_ONLN is available in <unistd.h>. */
/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */
@@ -1299,7 +1299,7 @@
#define _GLIBCXX_USE_WCHAR_T 1
/* Define to 1 if mutex_timedlock is available. */
-#define _GTHREAD_USE_MUTEX_TIMEDLOCK 1
+#define _GTHREAD_USE_MUTEX_TIMEDLOCK 0
/* Define if all C++ overloads are available in <math.h>. */
#if __cplusplus >= 199711L
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/include/bits/gthr-default.h b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/include/bits/gthr-default.h
index 692688f..8c1f753 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/include/bits/gthr-default.h
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/include/bits/gthr-default.h
@@ -1,7 +1,7 @@
/* Threads compatibility routines for libgcc2 and libobjc. */
/* Compile this one with gcc. */
-/* Copyright (C) 1997, 1999, 2000, 2004, 2008, 2009
- Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+ 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
This file is part of GCC.
@@ -24,24 +24,332 @@
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H
-#define _GLIBCXX_GCC_GTHR_SINGLE_H
+#ifndef _GLIBCXX_GCC_GTHR_POSIX_H
+#define _GLIBCXX_GCC_GTHR_POSIX_H
-/* Just provide compatibility for mutex handling. */
+/* POSIX threads specific definitions.
+ Easy, since the interface is just one-to-one mapping. */
-typedef int __gthread_key_t;
-typedef int __gthread_once_t;
-typedef int __gthread_mutex_t;
-typedef int __gthread_recursive_mutex_t;
+#define __GTHREADS 1
+#define __GTHREADS_CXX0X 1
-#define __GTHREAD_ONCE_INIT 0
-#define __GTHREAD_MUTEX_INIT 0
-#define __GTHREAD_RECURSIVE_MUTEX_INIT 0
+/* Some implementations of <pthread.h> require this to be defined. */
+#if !defined(_REENTRANT) && defined(__osf__)
+#define _REENTRANT 1
+#endif
-#define _GLIBCXX_UNUSED __attribute__((unused))
+/* The following should normally be in a different header file,
+ * but I couldn't find the right location. The point of the macro
+ * definition below is to prevent libsupc++ and libstdc++ to reference
+ * weak symbols in their static C++ constructors. Such code crashes
+ * when a shared object linked statically to these libraries is
+ * loaded on Android 2.1 (Eclair) and older platform releases, due
+ * to a dynamic linker bug.
+ */
+#ifdef __ANDROID__
+#undef _GLIBCXX_GTHREAD_USE_WEAK
+#define _GLIBCXX_GTHREAD_USE_WEAK 0
+#endif
+
+#include <pthread.h>
+
+#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \
+ || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK))
+# include <unistd.h>
+# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0
+# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1
+# else
+# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0
+# endif
+#endif
+
+typedef pthread_t __gthread_t;
+typedef pthread_key_t __gthread_key_t;
+typedef pthread_once_t __gthread_once_t;
+typedef pthread_mutex_t __gthread_mutex_t;
+typedef pthread_mutex_t __gthread_recursive_mutex_t;
+typedef pthread_cond_t __gthread_cond_t;
+typedef struct timespec __gthread_time_t;
+
+/* POSIX like conditional variables are supported. Please look at comments
+ in gthr.h for details. */
+#define __GTHREAD_HAS_COND 1
+
+#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
+#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT
+#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
+#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER
+#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
+#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+#else
+#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
+#endif
+#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER
+#define __GTHREAD_TIME_INIT {0,0}
+
+#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC
+# undef __GTHREAD_MUTEX_INIT
+# define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function
+#endif
+#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC
+# undef __GTHREAD_RECURSIVE_MUTEX_INIT
+# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION
+# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
+#endif
+#ifdef _GTHREAD_USE_COND_INIT_FUNC
+# undef __GTHREAD_COND_INIT
+# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function
+#endif
+
+#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
+# ifndef __gthrw_pragma
+# define __gthrw_pragma(pragma)
+# endif
+# define __gthrw2(name,name2,type) \
+ static __typeof(type) name __attribute__ ((__weakref__(#name2))); \
+ __gthrw_pragma(weak type)
+# define __gthrw_(name) __gthrw_ ## name
+#else
+# define __gthrw2(name,name2,type)
+# define __gthrw_(name) name
+#endif
+
+/* Typically, __gthrw_foo is a weak reference to symbol foo. */
+#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name)
+
+/* On Tru64, /usr/include/pthread.h uses #pragma extern_prefix "__" to
+ map a subset of the POSIX pthread API to mangled versions of their
+ names. */
+#if defined(__osf__) && defined(_PTHREAD_USE_MANGLED_NAMES_)
+#define __gthrw3(name) __gthrw2(__gthrw_ ## name, __ ## name, name)
+__gthrw3(pthread_once)
+__gthrw3(pthread_getspecific)
+__gthrw3(pthread_setspecific)
+
+__gthrw3(pthread_create)
+__gthrw3(pthread_join)
+__gthrw3(pthread_detach)
+__gthrw3(pthread_equal)
+__gthrw3(pthread_self)
+__gthrw3(pthread_cancel)
+__gthrw3(sched_yield)
+
+__gthrw3(pthread_mutex_lock)
+__gthrw3(pthread_mutex_trylock)
+#if _GTHREAD_USE_MUTEX_TIMEDLOCK
+__gthrw3(pthread_mutex_timedlock)
+#endif
+__gthrw3(pthread_mutex_unlock)
+__gthrw3(pthread_mutex_init)
+__gthrw3(pthread_mutex_destroy)
+
+__gthrw3(pthread_cond_init)
+__gthrw3(pthread_cond_broadcast)
+__gthrw3(pthread_cond_signal)
+__gthrw3(pthread_cond_wait)
+__gthrw3(pthread_cond_timedwait)
+__gthrw3(pthread_cond_destroy)
+#else
+__gthrw(pthread_once)
+__gthrw(pthread_getspecific)
+__gthrw(pthread_setspecific)
+
+__gthrw(pthread_create)
+__gthrw(pthread_join)
+__gthrw(pthread_equal)
+__gthrw(pthread_self)
+__gthrw(pthread_detach)
+#ifndef __BIONIC__
+__gthrw(pthread_cancel)
+#endif
+__gthrw(sched_yield)
+
+__gthrw(pthread_mutex_lock)
+__gthrw(pthread_mutex_trylock)
+#if _GTHREAD_USE_MUTEX_TIMEDLOCK
+__gthrw(pthread_mutex_timedlock)
+#endif
+__gthrw(pthread_mutex_unlock)
+__gthrw(pthread_mutex_init)
+__gthrw(pthread_mutex_destroy)
+
+__gthrw(pthread_cond_init)
+__gthrw(pthread_cond_broadcast)
+__gthrw(pthread_cond_signal)
+__gthrw(pthread_cond_wait)
+__gthrw(pthread_cond_timedwait)
+__gthrw(pthread_cond_destroy)
+#endif
+
+__gthrw(pthread_key_create)
+__gthrw(pthread_key_delete)
+__gthrw(pthread_mutexattr_init)
+__gthrw(pthread_mutexattr_settype)
+__gthrw(pthread_mutexattr_destroy)
+
+
+#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)
+/* Objective-C. */
+#if defined(__osf__) && defined(_PTHREAD_USE_MANGLED_NAMES_)
+__gthrw3(pthread_exit)
+#else
+__gthrw(pthread_exit)
+#endif /* __osf__ && _PTHREAD_USE_MANGLED_NAMES_ */
+#ifdef _POSIX_PRIORITY_SCHEDULING
+#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
+__gthrw(sched_get_priority_max)
+__gthrw(sched_get_priority_min)
+#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
+#endif /* _POSIX_PRIORITY_SCHEDULING */
+__gthrw(pthread_attr_destroy)
+__gthrw(pthread_attr_init)
+__gthrw(pthread_attr_setdetachstate)
+#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
+__gthrw(pthread_getschedparam)
+__gthrw(pthread_setschedparam)
+#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
+#endif /* _LIBOBJC || _LIBOBJC_WEAK */
+
+#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
+
+/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if
+ -pthreads is not specified. The functions are dummies and most return an
+ error value. However pthread_once returns 0 without invoking the routine
+ it is passed so we cannot pretend that the interface is active if -pthreads
+ is not specified. On Solaris 2.5.1, the interface is not exposed at all so
+ we need to play the usual game with weak symbols. On Solaris 10 and up, a
+ working interface is always exposed. On FreeBSD 6 and later, libc also
+ exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up
+ to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc,
+ which means the alternate __gthread_active_p below cannot be used there. */
+
+#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__))
+
+static volatile int __gthread_active = -1;
+
+static void
+__gthread_trigger (void)
+{
+ __gthread_active = 1;
+}
+
+static inline int
+__gthread_active_p (void)
+{
+ static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER;
+ static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT;
+
+ /* Avoid reading __gthread_active twice on the main code path. */
+ int __gthread_active_latest_value = __gthread_active;
+
+ /* This test is not protected to avoid taking a lock on the main code
+ path so every update of __gthread_active in a threaded program must
+ be atomic with regard to the result of the test. */
+ if (__builtin_expect (__gthread_active_latest_value < 0, 0))
+ {
+ if (__gthrw_(pthread_once))
+ {
+ /* If this really is a threaded program, then we must ensure that
+ __gthread_active has been set to 1 before exiting this block. */
+ __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex);
+ __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger);
+ __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex);
+ }
+
+ /* Make sure we'll never enter this block again. */
+ if (__gthread_active < 0)
+ __gthread_active = 0;
+
+ __gthread_active_latest_value = __gthread_active;
+ }
+
+ return __gthread_active_latest_value != 0;
+}
+
+#else /* neither FreeBSD nor Solaris */
+
+static inline int
+__gthread_active_p (void)
+{
+/* Android's C library does not provide pthread_cancel, check for
+ `pthread_create' instead. */
+#ifndef __BIONIC__
+ static void *const __gthread_active_ptr
+ = __extension__ (void *) &__gthrw_(pthread_cancel);
+#else
+ static void *const __gthread_active_ptr
+ = __extension__ (void *) &__gthrw_(pthread_create);
+#endif
+ return __gthread_active_ptr != 0;
+}
+
+#endif /* FreeBSD or Solaris */
+
+#else /* not __GXX_WEAK__ */
+
+/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread
+ calls in shared flavors of the HP-UX C library. Most of the stubs
+ have no functionality. The details are described in the "libc cumulative
+ patch" for each subversion of HP-UX 11. There are two special interfaces
+ provided for checking whether an application is linked to a shared pthread
+ library or not. However, these interfaces aren't available in early
+ libpthread libraries. We also need a test that works for archive
+ libraries. We can't use pthread_once as some libc versions call the
+ init function. We also can't use pthread_create or pthread_attr_init
+ as these create a thread and thereby prevent changing the default stack
+ size. The function pthread_default_stacksize_np is available in both
+ the archive and shared versions of libpthread. It can be used to
+ determine the default pthread stack size. There is a stub in some
+ shared libc versions which returns a zero size if pthreads are not
+ active. We provide an equivalent stub to handle cases where libc
+ doesn't provide one. */
+
+#if defined(__hppa__) && defined(__hpux__)
+
+static volatile int __gthread_active = -1;
+
+static inline int
+__gthread_active_p (void)
+{
+ /* Avoid reading __gthread_active twice on the main code path. */
+ int __gthread_active_latest_value = __gthread_active;
+ size_t __s;
+
+ if (__builtin_expect (__gthread_active_latest_value < 0, 0))
+ {
+ pthread_default_stacksize_np (0, &__s);
+ __gthread_active = __s ? 1 : 0;
+ __gthread_active_latest_value = __gthread_active;
+ }
+
+ return __gthread_active_latest_value != 0;
+}
+
+#else /* not hppa-hpux */
+
+static inline int
+__gthread_active_p (void)
+{
+ return 1;
+}
+
+#endif /* hppa-hpux */
+
+#endif /* __GXX_WEAK__ */
#ifdef _LIBOBJC
+/* This is the config.h file in libobjc/ */
+#include <config.h>
+
+#ifdef HAVE_SCHED_H
+# include <sched.h>
+#endif
+
+/* Key structure for maintaining thread specific storage */
+static pthread_key_t _objc_thread_storage;
+static pthread_attr_t _objc_thread_attribs;
+
/* Thread local storage for a single thread */
static void *thread_local_storage = NULL;
@@ -51,7 +359,21 @@
static inline int
__gthread_objc_init_thread_system (void)
{
- /* No thread support available */
+ if (__gthread_active_p ())
+ {
+ /* Initialize the thread storage key. */
+ if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0)
+ {
+ /* The normal default detach state for threads is
+ * PTHREAD_CREATE_JOINABLE which causes threads to not die
+ * when you think they should. */
+ if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0
+ && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs,
+ PTHREAD_CREATE_DETACHED) == 0)
+ return 0;
+ }
+ }
+
return -1;
}
@@ -59,7 +381,11 @@
static inline int
__gthread_objc_close_thread_system (void)
{
- /* No thread support available */
+ if (__gthread_active_p ()
+ && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0
+ && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0)
+ return 0;
+
return -1;
}
@@ -67,41 +393,105 @@
/* Create a new thread of execution. */
static inline objc_thread_t
-__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED)
+__gthread_objc_thread_detach (void (*func)(void *), void *arg)
{
- /* No thread support available */
- return NULL;
+ objc_thread_t thread_id;
+ pthread_t new_thread_handle;
+
+ if (!__gthread_active_p ())
+ return NULL;
+
+ if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs,
+ (void *) func, arg)))
+ thread_id = (objc_thread_t) new_thread_handle;
+ else
+ thread_id = NULL;
+
+ return thread_id;
}
/* Set the current thread's priority. */
static inline int
-__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED)
+__gthread_objc_thread_set_priority (int priority)
{
- /* No thread support available */
- return -1;
+ if (!__gthread_active_p ())
+ return -1;
+ else
+ {
+#ifdef _POSIX_PRIORITY_SCHEDULING
+#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
+ pthread_t thread_id = __gthrw_(pthread_self) ();
+ int policy;
+ struct sched_param params;
+ int priority_min, priority_max;
+
+ if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0)
+ {
+ if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1)
+ return -1;
+
+ if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1)
+ return -1;
+
+ if (priority > priority_max)
+ priority = priority_max;
+ else if (priority < priority_min)
+ priority = priority_min;
+ params.sched_priority = priority;
+
+ /*
+ * The solaris 7 and several other man pages incorrectly state that
+ * this should be a pointer to policy but pthread.h is universally
+ * at odds with this.
+ */
+ if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0)
+ return 0;
+ }
+#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
+#endif /* _POSIX_PRIORITY_SCHEDULING */
+ return -1;
+ }
}
/* Return the current thread's priority. */
static inline int
__gthread_objc_thread_get_priority (void)
{
- return OBJC_THREAD_INTERACTIVE_PRIORITY;
+#ifdef _POSIX_PRIORITY_SCHEDULING
+#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
+ if (__gthread_active_p ())
+ {
+ int policy;
+ struct sched_param params;
+
+ if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0)
+ return params.sched_priority;
+ else
+ return -1;
+ }
+ else
+#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
+#endif /* _POSIX_PRIORITY_SCHEDULING */
+ return OBJC_THREAD_INTERACTIVE_PRIORITY;
}
/* Yield our process time to another thread. */
static inline void
__gthread_objc_thread_yield (void)
{
- return;
+ if (__gthread_active_p ())
+ __gthrw_(sched_yield) ();
}
/* Terminate the current thread. */
static inline int
__gthread_objc_thread_exit (void)
{
- /* No thread support available */
- /* Should we really exit the program */
- /* exit (&__objc_thread_exit_status); */
+ if (__gthread_active_p ())
+ /* exit the thread */
+ __gthrw_(pthread_exit) (&__objc_thread_exit_status);
+
+ /* Failed if we reached here */
return -1;
}
@@ -109,61 +499,122 @@
static inline objc_thread_t
__gthread_objc_thread_id (void)
{
- /* No thread support, use 1. */
- return (objc_thread_t) 1;
+ if (__gthread_active_p ())
+ return (objc_thread_t) __gthrw_(pthread_self) ();
+ else
+ return (objc_thread_t) 1;
}
/* Sets the thread's local storage pointer. */
static inline int
__gthread_objc_thread_set_data (void *value)
{
- thread_local_storage = value;
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_setspecific) (_objc_thread_storage, value);
+ else
+ {
+ thread_local_storage = value;
+ return 0;
+ }
}
/* Returns the thread's local storage pointer. */
static inline void *
__gthread_objc_thread_get_data (void)
{
- return thread_local_storage;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_getspecific) (_objc_thread_storage);
+ else
+ return thread_local_storage;
}
/* Backend mutex functions */
/* Allocate a mutex. */
static inline int
-__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_mutex_allocate (objc_mutex_t mutex)
{
+ if (__gthread_active_p ())
+ {
+ mutex->backend = objc_malloc (sizeof (pthread_mutex_t));
+
+ if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL))
+ {
+ objc_free (mutex->backend);
+ mutex->backend = NULL;
+ return -1;
+ }
+ }
+
return 0;
}
/* Deallocate a mutex. */
static inline int
-__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_mutex_deallocate (objc_mutex_t mutex)
{
+ if (__gthread_active_p ())
+ {
+ int count;
+
+ /*
+ * Posix Threads specifically require that the thread be unlocked
+ * for __gthrw_(pthread_mutex_destroy) to work.
+ */
+
+ do
+ {
+ count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend);
+ if (count < 0)
+ return -1;
+ }
+ while (count);
+
+ if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend))
+ return -1;
+
+ objc_free (mutex->backend);
+ mutex->backend = NULL;
+ }
return 0;
}
/* Grab a lock on a mutex. */
static inline int
-__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_mutex_lock (objc_mutex_t mutex)
{
- /* There can only be one thread, so we always get the lock */
+ if (__gthread_active_p ()
+ && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0)
+ {
+ return -1;
+ }
+
return 0;
}
/* Try to grab a lock on a mutex. */
static inline int
-__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_mutex_trylock (objc_mutex_t mutex)
{
- /* There can only be one thread, so we always get the lock */
+ if (__gthread_active_p ()
+ && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0)
+ {
+ return -1;
+ }
+
return 0;
}
/* Unlock the mutex */
static inline int
-__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_mutex_unlock (objc_mutex_t mutex)
{
+ if (__gthread_active_p ()
+ && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0)
+ {
+ return -1;
+ }
+
return 0;
}
@@ -171,101 +622,221 @@
/* Allocate a condition. */
static inline int
-__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED)
+__gthread_objc_condition_allocate (objc_condition_t condition)
{
+ if (__gthread_active_p ())
+ {
+ condition->backend = objc_malloc (sizeof (pthread_cond_t));
+
+ if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL))
+ {
+ objc_free (condition->backend);
+ condition->backend = NULL;
+ return -1;
+ }
+ }
+
return 0;
}
/* Deallocate a condition. */
static inline int
-__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED)
+__gthread_objc_condition_deallocate (objc_condition_t condition)
{
+ if (__gthread_active_p ())
+ {
+ if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend))
+ return -1;
+
+ objc_free (condition->backend);
+ condition->backend = NULL;
+ }
return 0;
}
/* Wait on the condition */
static inline int
-__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED,
- objc_mutex_t mutex _GLIBCXX_UNUSED)
+__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend,
+ (pthread_mutex_t *) mutex->backend);
+ else
+ return 0;
}
/* Wake up all threads waiting on this condition. */
static inline int
-__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED)
+__gthread_objc_condition_broadcast (objc_condition_t condition)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend);
+ else
+ return 0;
}
/* Wake up one thread waiting on this condition. */
static inline int
-__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED)
+__gthread_objc_condition_signal (objc_condition_t condition)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend);
+ else
+ return 0;
}
#else /* _LIBOBJC */
static inline int
-__gthread_active_p (void)
+__gthread_create (__gthread_t *__threadid, void *(*__func) (void*),
+ void *__args)
{
- return 0;
+ return __gthrw_(pthread_create) (__threadid, NULL, __func, __args);
}
static inline int
-__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED)
+__gthread_join (__gthread_t __threadid, void **__value_ptr)
{
- return 0;
+ return __gthrw_(pthread_join) (__threadid, __value_ptr);
}
-static inline int _GLIBCXX_UNUSED
-__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED)
+static inline int
+__gthread_detach (__gthread_t __threadid)
{
- return 0;
+ return __gthrw_(pthread_detach) (__threadid);
}
-static int _GLIBCXX_UNUSED
-__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED)
+static inline int
+__gthread_equal (__gthread_t __t1, __gthread_t __t2)
{
- return 0;
+ return __gthrw_(pthread_equal) (__t1, __t2);
+}
+
+static inline __gthread_t
+__gthread_self (void)
+{
+ return __gthrw_(pthread_self) ();
+}
+
+static inline int
+__gthread_yield (void)
+{
+ return __gthrw_(sched_yield) ();
+}
+
+static inline int
+__gthread_once (__gthread_once_t *__once, void (*__func) (void))
+{
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_once) (__once, __func);
+ else
+ return -1;
+}
+
+static inline int
+__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
+{
+ return __gthrw_(pthread_key_create) (__key, __dtor);
+}
+
+static inline int
+__gthread_key_delete (__gthread_key_t __key)
+{
+ return __gthrw_(pthread_key_delete) (__key);
}
static inline void *
-__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED)
+__gthread_getspecific (__gthread_key_t __key)
{
- return 0;
+ return __gthrw_(pthread_getspecific) (__key);
}
static inline int
-__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED)
+__gthread_setspecific (__gthread_key_t __key, const void *__ptr)
{
- return 0;
+ return __gthrw_(pthread_setspecific) (__key, __ptr);
+}
+
+#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC
+static inline void
+__gthread_mutex_init_function (__gthread_mutex_t *__mutex)
+{
+ if (__gthread_active_p ())
+ __gthrw_(pthread_mutex_init) (__mutex, NULL);
+}
+#endif
+
+static inline int
+__gthread_mutex_destroy (__gthread_mutex_t *__mutex)
+{
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_mutex_destroy) (__mutex);
+ else
+ return 0;
}
static inline int
-__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
+__gthread_mutex_lock (__gthread_mutex_t *__mutex)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_mutex_lock) (__mutex);
+ else
+ return 0;
}
static inline int
-__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
+__gthread_mutex_trylock (__gthread_mutex_t *__mutex)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_mutex_trylock) (__mutex);
+ else
+ return 0;
}
+#if _GTHREAD_USE_MUTEX_TIMEDLOCK
static inline int
-__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
+__gthread_mutex_timedlock (__gthread_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout)
{
- return 0;
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout);
+ else
+ return 0;
}
+#endif
static inline int
-__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
+__gthread_mutex_unlock (__gthread_mutex_t *__mutex)
{
+ if (__gthread_active_p ())
+ return __gthrw_(pthread_mutex_unlock) (__mutex);
+ else
+ return 0;
+}
+
+#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \
+ || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC)
+static inline int
+__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex)
+{
+ if (__gthread_active_p ())
+ {
+ pthread_mutexattr_t __attr;
+ int __r;
+
+ __r = __gthrw_(pthread_mutexattr_init) (&__attr);
+ if (!__r)
+ __r = __gthrw_(pthread_mutexattr_settype) (&__attr,
+ PTHREAD_MUTEX_RECURSIVE);
+ if (!__r)
+ __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr);
+ if (!__r)
+ __r = __gthrw_(pthread_mutexattr_destroy) (&__attr);
+ return __r;
+ }
return 0;
}
+#endif
static inline int
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
@@ -279,14 +850,76 @@
return __gthread_mutex_trylock (__mutex);
}
+#if _GTHREAD_USE_MUTEX_TIMEDLOCK
+static inline int
+__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout)
+{
+ return __gthread_mutex_timedlock (__mutex, __abs_timeout);
+}
+#endif
+
static inline int
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
{
return __gthread_mutex_unlock (__mutex);
}
+#ifdef _GTHREAD_USE_COND_INIT_FUNC
+static inline void
+__gthread_cond_init_function (__gthread_cond_t *__cond)
+{
+ if (__gthread_active_p ())
+ __gthrw_(pthread_cond_init) (__cond, NULL);
+}
+#endif
+
+static inline int
+__gthread_cond_broadcast (__gthread_cond_t *__cond)
+{
+ return __gthrw_(pthread_cond_broadcast) (__cond);
+}
+
+static inline int
+__gthread_cond_signal (__gthread_cond_t *__cond)
+{
+ return __gthrw_(pthread_cond_signal) (__cond);
+}
+
+static inline int
+__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex)
+{
+ return __gthrw_(pthread_cond_wait) (__cond, __mutex);
+}
+
+static inline int
+__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout)
+{
+ return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout);
+}
+
+static inline int
+__gthread_cond_wait_recursive (__gthread_cond_t *__cond,
+ __gthread_recursive_mutex_t *__mutex)
+{
+ return __gthread_cond_wait (__cond, __mutex);
+}
+
+static inline int
+__gthread_cond_timedwait_recursive (__gthread_cond_t *__cond,
+ __gthread_recursive_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout)
+{
+ return __gthread_cond_timedwait (__cond, __mutex, __abs_timeout);
+}
+
+static inline int
+__gthread_cond_destroy (__gthread_cond_t* __cond)
+{
+ return __gthrw_(pthread_cond_destroy) (__cond);
+}
+
#endif /* _LIBOBJC */
-#undef _GLIBCXX_UNUSED
-
-#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */
+#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/libgnustl_shared.so
index 3cf5756..6161949 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/libgnustl_static.a
index d203186..5607317 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/libsupc++.a
index 5d8911c..2a3f2d7 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/mips/libsupc++.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/include/bits/c++config.h b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/include/bits/c++config.h
index e5eb2c9..090ae08 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/include/bits/c++config.h
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/include/bits/c++config.h
@@ -455,13 +455,13 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the `acosf' function. */
-/* #undef _GLIBCXX_HAVE_ACOSF */
+#define _GLIBCXX_HAVE_ACOSF 1
/* Define to 1 if you have the `acosl' function. */
/* #undef _GLIBCXX_HAVE_ACOSL */
/* Define to 1 if you have the `asinf' function. */
-/* #undef _GLIBCXX_HAVE_ASINF */
+#define _GLIBCXX_HAVE_ASINF 1
/* Define to 1 if you have the `asinl' function. */
/* #undef _GLIBCXX_HAVE_ASINL */
@@ -470,13 +470,13 @@
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
/* Define to 1 if you have the `atan2f' function. */
-/* #undef _GLIBCXX_HAVE_ATAN2F */
+#define _GLIBCXX_HAVE_ATAN2F 1
/* Define to 1 if you have the `atan2l' function. */
/* #undef _GLIBCXX_HAVE_ATAN2L */
/* Define to 1 if you have the `atanf' function. */
-/* #undef _GLIBCXX_HAVE_ATANF */
+#define _GLIBCXX_HAVE_ATANF 1
/* Define to 1 if you have the `atanl' function. */
/* #undef _GLIBCXX_HAVE_ATANL */
@@ -485,19 +485,19 @@
/* #undef _GLIBCXX_HAVE_CC_TLS */
/* Define to 1 if you have the `ceilf' function. */
-/* #undef _GLIBCXX_HAVE_CEILF */
+#define _GLIBCXX_HAVE_CEILF 1
/* Define to 1 if you have the `ceill' function. */
-/* #undef _GLIBCXX_HAVE_CEILL */
+#define _GLIBCXX_HAVE_CEILL 1
/* Define to 1 if you have the <complex.h> header file. */
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
/* Define to 1 if you have the `cosf' function. */
-/* #undef _GLIBCXX_HAVE_COSF */
+#define _GLIBCXX_HAVE_COSF 1
/* Define to 1 if you have the `coshf' function. */
-/* #undef _GLIBCXX_HAVE_COSHF */
+#define _GLIBCXX_HAVE_COSHF 1
/* Define to 1 if you have the `coshl' function. */
/* #undef _GLIBCXX_HAVE_COSHL */
@@ -572,25 +572,25 @@
/* #undef _GLIBCXX_HAVE_EXECINFO_H */
/* Define to 1 if you have the `expf' function. */
-/* #undef _GLIBCXX_HAVE_EXPF */
+#define _GLIBCXX_HAVE_EXPF 1
/* Define to 1 if you have the `expl' function. */
/* #undef _GLIBCXX_HAVE_EXPL */
/* Define to 1 if you have the `fabsf' function. */
-/* #undef _GLIBCXX_HAVE_FABSF */
+#define _GLIBCXX_HAVE_FABSF 1
/* Define to 1 if you have the `fabsl' function. */
-/* #undef _GLIBCXX_HAVE_FABSL */
+#define _GLIBCXX_HAVE_FABSL 1
/* Define to 1 if you have the <fenv.h> header file. */
#define _GLIBCXX_HAVE_FENV_H 1
/* Define to 1 if you have the `finite' function. */
-/* #undef _GLIBCXX_HAVE_FINITE */
+#define _GLIBCXX_HAVE_FINITE 1
/* Define to 1 if you have the `finitef' function. */
-/* #undef _GLIBCXX_HAVE_FINITEF */
+#define _GLIBCXX_HAVE_FINITEF 1
/* Define to 1 if you have the `finitel' function. */
/* #undef _GLIBCXX_HAVE_FINITEL */
@@ -599,13 +599,13 @@
#define _GLIBCXX_HAVE_FLOAT_H 1
/* Define to 1 if you have the `floorf' function. */
-/* #undef _GLIBCXX_HAVE_FLOORF */
+#define _GLIBCXX_HAVE_FLOORF 1
/* Define to 1 if you have the `floorl' function. */
-/* #undef _GLIBCXX_HAVE_FLOORL */
+#define _GLIBCXX_HAVE_FLOORL 1
/* Define to 1 if you have the `fmodf' function. */
-/* #undef _GLIBCXX_HAVE_FMODF */
+#define _GLIBCXX_HAVE_FMODF 1
/* Define to 1 if you have the `fmodl' function. */
/* #undef _GLIBCXX_HAVE_FMODL */
@@ -617,7 +617,7 @@
/* #undef _GLIBCXX_HAVE_FP_H */
/* Define to 1 if you have the `frexpf' function. */
-/* #undef _GLIBCXX_HAVE_FREXPF */
+#define _GLIBCXX_HAVE_FREXPF 1
/* Define to 1 if you have the `frexpl' function. */
/* #undef _GLIBCXX_HAVE_FREXPL */
@@ -629,10 +629,10 @@
#define _GLIBCXX_HAVE_GETS 1
/* Define to 1 if you have the `hypot' function. */
-/* #undef _GLIBCXX_HAVE_HYPOT */
+#define _GLIBCXX_HAVE_HYPOT 1
/* Define to 1 if you have the `hypotf' function. */
-/* #undef _GLIBCXX_HAVE_HYPOTF */
+#define _GLIBCXX_HAVE_HYPOTF 1
/* Define to 1 if you have the `hypotl' function. */
/* #undef _GLIBCXX_HAVE_HYPOTL */
@@ -668,7 +668,7 @@
/* #undef _GLIBCXX_HAVE_ISNAN */
/* Define to 1 if you have the `isnanf' function. */
-/* #undef _GLIBCXX_HAVE_ISNANF */
+#define _GLIBCXX_HAVE_ISNANF 1
/* Define to 1 if you have the `isnanl' function. */
/* #undef _GLIBCXX_HAVE_ISNANL */
@@ -680,10 +680,10 @@
#define _GLIBCXX_HAVE_LC_MESSAGES 1
/* Define to 1 if you have the `ldexpf' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPF */
+#define _GLIBCXX_HAVE_LDEXPF 1
/* Define to 1 if you have the `ldexpl' function. */
-/* #undef _GLIBCXX_HAVE_LDEXPL */
+#define _GLIBCXX_HAVE_LDEXPL 1
/* Define to 1 if you have the <libintl.h> header file. */
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
@@ -710,13 +710,13 @@
#define _GLIBCXX_HAVE_LOCALE_H 1
/* Define to 1 if you have the `log10f' function. */
-/* #undef _GLIBCXX_HAVE_LOG10F */
+#define _GLIBCXX_HAVE_LOG10F 1
/* Define to 1 if you have the `log10l' function. */
/* #undef _GLIBCXX_HAVE_LOG10L */
/* Define to 1 if you have the `logf' function. */
-/* #undef _GLIBCXX_HAVE_LOGF */
+#define _GLIBCXX_HAVE_LOGF 1
/* Define to 1 if you have the `logl' function. */
/* #undef _GLIBCXX_HAVE_LOGL */
@@ -734,10 +734,10 @@
#define _GLIBCXX_HAVE_MEMORY_H 1
/* Define to 1 if you have the `modf' function. */
-/* #undef _GLIBCXX_HAVE_MODF */
+#define _GLIBCXX_HAVE_MODF 1
/* Define to 1 if you have the `modff' function. */
-/* #undef _GLIBCXX_HAVE_MODFF */
+#define _GLIBCXX_HAVE_MODFF 1
/* Define to 1 if you have the `modfl' function. */
/* #undef _GLIBCXX_HAVE_MODFL */
@@ -746,10 +746,10 @@
/* #undef _GLIBCXX_HAVE_NAN_H */
/* Define if poll is available in <poll.h>. */
-/* #undef _GLIBCXX_HAVE_POLL */
+#define _GLIBCXX_HAVE_POLL 1
/* Define to 1 if you have the `powf' function. */
-/* #undef _GLIBCXX_HAVE_POWF */
+#define _GLIBCXX_HAVE_POWF 1
/* Define to 1 if you have the `powl' function. */
/* #undef _GLIBCXX_HAVE_POWL */
@@ -761,19 +761,19 @@
/* #undef _GLIBCXX_HAVE_SETENV */
/* Define to 1 if you have the `sincos' function. */
-/* #undef _GLIBCXX_HAVE_SINCOS */
+#define _GLIBCXX_HAVE_SINCOS 1
/* Define to 1 if you have the `sincosf' function. */
-/* #undef _GLIBCXX_HAVE_SINCOSF */
+#define _GLIBCXX_HAVE_SINCOSF 1
/* Define to 1 if you have the `sincosl' function. */
-/* #undef _GLIBCXX_HAVE_SINCOSL */
+#define _GLIBCXX_HAVE_SINCOSL 1
/* Define to 1 if you have the `sinf' function. */
-/* #undef _GLIBCXX_HAVE_SINF */
+#define _GLIBCXX_HAVE_SINF 1
/* Define to 1 if you have the `sinhf' function. */
-/* #undef _GLIBCXX_HAVE_SINHF */
+#define _GLIBCXX_HAVE_SINHF 1
/* Define to 1 if you have the `sinhl' function. */
/* #undef _GLIBCXX_HAVE_SINHL */
@@ -782,7 +782,7 @@
/* #undef _GLIBCXX_HAVE_SINL */
/* Define to 1 if you have the `sqrtf' function. */
-/* #undef _GLIBCXX_HAVE_SQRTF */
+#define _GLIBCXX_HAVE_SQRTF 1
/* Define to 1 if you have the `sqrtl' function. */
/* #undef _GLIBCXX_HAVE_SQRTL */
@@ -867,13 +867,13 @@
/* #undef _GLIBCXX_HAVE_S_IFREG */
/* Define if S_IFREG is available in <sys/stat.h>. */
-/* #undef _GLIBCXX_HAVE_S_ISREG */
+#define _GLIBCXX_HAVE_S_ISREG 1
/* Define to 1 if you have the `tanf' function. */
-/* #undef _GLIBCXX_HAVE_TANF */
+#define _GLIBCXX_HAVE_TANF 1
/* Define to 1 if you have the `tanhf' function. */
-/* #undef _GLIBCXX_HAVE_TANHF */
+#define _GLIBCXX_HAVE_TANHF 1
/* Define to 1 if you have the `tanhl' function. */
/* #undef _GLIBCXX_HAVE_TANHL */
@@ -909,7 +909,7 @@
#define _GLIBCXX_HAVE_WCTYPE_H 1
/* Define if writev is available in <sys/uio.h>. */
-/* #undef _GLIBCXX_HAVE_WRITEV */
+#define _GLIBCXX_HAVE_WRITEV 1
/* Define to 1 if you have the `_acosf' function. */
/* #undef _GLIBCXX_HAVE__ACOSF */
@@ -1157,7 +1157,7 @@
#define _GLIBCXX_FULLY_DYNAMIC_STRING 0
/* Define if gthreads library is available. */
-/* #undef _GLIBCXX_HAS_GTHREADS */
+#define _GLIBCXX_HAS_GTHREADS 1
/* Define to 1 if a full hosted library is built, or 0 if freestanding. */
#define _GLIBCXX_HOSTED 1
@@ -1232,7 +1232,7 @@
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
in namespace std. */
-/* #undef _GLIBCXX_USE_C99_MATH */
+#define _GLIBCXX_USE_C99_MATH 1
/* Define if C99 functions or macros in <math.h> should be imported in
<tr1/cmath> in namespace std::tr1. */
@@ -1243,10 +1243,10 @@
#define _GLIBCXX_USE_C99_STDINT_TR1 1
/* Defined if clock_gettime has monotonic clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
+#define _GLIBCXX_USE_CLOCK_MONOTONIC 1
/* Defined if clock_gettime has realtime clock support. */
-/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
+#define _GLIBCXX_USE_CLOCK_REALTIME 1
/* Define if ISO/IEC TR 24733 decimal floating point types are supported on
this host. */
@@ -1256,7 +1256,7 @@
#define _GLIBCXX_USE_FLOAT128 1
/* Defined if gettimeofday is available. */
-/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
+#define _GLIBCXX_USE_GETTIMEOFDAY 1
/* Define if get_nprocs is available in <sys/sysinfo.h>. */
/* #undef _GLIBCXX_USE_GET_NPROCS */
@@ -1271,7 +1271,7 @@
#define _GLIBCXX_USE_LONG_LONG 1
/* Defined if nanosleep is available. */
-/* #undef _GLIBCXX_USE_NANOSLEEP */
+#define _GLIBCXX_USE_NANOSLEEP 1
/* Define if NLS translations are to be used. */
/* #undef _GLIBCXX_USE_NLS */
@@ -1284,10 +1284,10 @@
#define _GLIBCXX_USE_RANDOM_TR1 1
/* Defined if sched_yield is available. */
-/* #undef _GLIBCXX_USE_SCHED_YIELD */
+#define _GLIBCXX_USE_SCHED_YIELD 1
/* Define if _SC_NPROCESSORS_ONLN is available in <unistd.h>. */
-/* #undef _GLIBCXX_USE_SC_NPROCESSORS_ONLN */
+#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1
/* Define if _SC_NPROC_ONLN is available in <unistd.h>. */
/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/libgnustl_shared.so b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/libgnustl_shared.so
index 7e8d7cb..ce6b105 100755
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/libgnustl_shared.so
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/libgnustl_shared.so
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/libgnustl_static.a b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/libgnustl_static.a
index 977064d..eccbd77 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/libgnustl_static.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/libgnustl_static.a
Binary files differ
diff --git a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/libsupc++.a b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/libsupc++.a
index afba353..2c7faaf 100644
--- a/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/libsupc++.a
+++ b/8/sources/cxx-stl/gnu-libstdc++/4.7/libs/x86/libsupc++.a
Binary files differ