aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Kosnik <bkoz@redhat.com>2006-10-10 10:14:13 +0000
committerBenjamin Kosnik <bkoz@gcc.gnu.org>2006-10-10 10:14:13 +0000
commit8ba9f0133450c920cfd936ebdf26b19f016b10d5 (patch)
treec2c560cabcd5a9374d25b6f6dd7da8d5c1b3bcb1
parent599a964a52716fadaa2e70337d36c54b9585cf0e (diff)
downloadgcc-8ba9f0133450c920cfd936ebdf26b19f016b10d5.zip
gcc-8ba9f0133450c920cfd936ebdf26b19f016b10d5.tar.gz
gcc-8ba9f0133450c920cfd936ebdf26b19f016b10d5.tar.bz2
re PR libstdc++/29118 (Timeouts in libstdc++, libjava and libgomp testsuites)
2006-10-09 Benjamin Kosnik <bkoz@redhat.com> PR libstdc++/29118 * src/locale_init.cc (__get_locale_mutex): New. (locale::locale): Use it. (locale::global): Use it. From-SVN: r117600
-rw-r--r--libstdc++-v3/ChangeLog7
-rw-r--r--libstdc++-v3/src/locale_init.cc13
2 files changed, 16 insertions, 4 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index c88fb998..6be5a03 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,12 @@
2006-10-09 Benjamin Kosnik <bkoz@redhat.com>
+ PR libstdc++/29118
+ * src/locale_init.cc (__get_locale_mutex): New.
+ (locale::locale): Use it.
+ (locale::global): Use it.
+
+2006-10-09 Benjamin Kosnik <bkoz@redhat.com>
+
PR libstdc++/29095
* libsupc++/cxxabi.h (__cxa_cdtor_type): Explicit "C" linkage.
* config/cpu/arm/cxxabi_tweaks.h: Same.
diff --git a/libstdc++-v3/src/locale_init.cc b/libstdc++-v3/src/locale_init.cc
index 2b6b4af..a2c18dd 100644
--- a/libstdc++-v3/src/locale_init.cc
+++ b/libstdc++-v3/src/locale_init.cc
@@ -36,6 +36,13 @@
namespace
{
+ __gnu_cxx::__mutex&
+ __get_locale_mutex()
+ {
+ static __gnu_cxx::__mutex locale_mutex;
+ return locale_mutex;
+ }
+
using namespace std;
typedef char fake_locale_Impl[sizeof(locale::_Impl)]
@@ -198,8 +205,6 @@ namespace
__attribute__ ((aligned(__alignof__(std::__timepunct_cache<wchar_t>))));
fake_time_cache_w timepunct_cache_w;
#endif
-
- __gnu_cxx::__mutex locale_mutex;
} // anonymous namespace
_GLIBCXX_BEGIN_NAMESPACE(std)
@@ -207,7 +212,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
locale::locale() throw() : _M_impl(0)
{
_S_initialize();
- __gnu_cxx::__scoped_lock sentry(locale_mutex);
+ __gnu_cxx::__scoped_lock sentry(__get_locale_mutex());
_S_global->_M_add_reference();
_M_impl = _S_global;
}
@@ -218,7 +223,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_S_initialize();
_Impl* __old;
{
- __gnu_cxx::__scoped_lock sentry(locale_mutex);
+ __gnu_cxx::__scoped_lock sentry(__get_locale_mutex());
__old = _S_global;
__other._M_impl->_M_add_reference();
_S_global = __other._M_impl;