Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/gpl3/gcc/dist/libstdc++-v3 Revert introduction of F...



details:   https://anonhg.NetBSD.org/src/rev/c5ee65c578f1
branches:  trunk
changeset: 819951:c5ee65c578f1
user:      kamil <kamil%NetBSD.org@localhost>
date:      Sat Dec 24 15:48:26 2016 +0000

description:
Revert introduction of FIXME_PR_51139

This change introduced ABI incompatible change with older versions shipped
on NetBSD. This back out code that is currently not working correctly due
to TLS-based std::call_once implementation in GNU libstdc++.

Error when starting gnuchash:

/usr/pkg/lib/libwebkitgtk-1.0.so.0: Undefined symbol "_ZSt15__once_callable" (symnum = 1705)

PR 51139

Reported by <wiz>

diffstat:

 external/gpl3/gcc/dist/libstdc++-v3/include/std/mutex  |  6 +++---
 external/gpl3/gcc/dist/libstdc++-v3/src/c++11/mutex.cc |  6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diffs (60 lines):

diff -r bdf7cc0d18e0 -r c5ee65c578f1 external/gpl3/gcc/dist/libstdc++-v3/include/std/mutex
--- a/external/gpl3/gcc/dist/libstdc++-v3/include/std/mutex     Sat Dec 24 15:46:50 2016 +0000
+++ b/external/gpl3/gcc/dist/libstdc++-v3/include/std/mutex     Sat Dec 24 15:48:26 2016 +0000
@@ -695,7 +695,7 @@
       call_once(once_flag& __once, _Callable&& __f, _Args&&... __args);
   };
 
-#if defined(_GLIBCXX_HAVE_TLS) && defined(FIXME_PR_51139)
+#ifdef _GLIBCXX_HAVE_TLS
   extern __thread void* __once_callable;
   extern __thread void (*__once_call)();
 
@@ -722,7 +722,7 @@
     void
     call_once(once_flag& __once, _Callable&& __f, _Args&&... __args)
     {
-#if defined(_GLIBCXX_HAVE_TLS) && defined(FIXME_PR_51139)
+#ifdef _GLIBCXX_HAVE_TLS
       auto __bound_functor = std::__bind_simple(std::forward<_Callable>(__f),
           std::forward<_Args>(__args)...);
       __once_callable = std::__addressof(__bound_functor);
@@ -737,7 +737,7 @@
 
       int __e = __gthread_once(&__once._M_once, &__once_proxy);
 
-#if !defined(_GLIBCXX_HAVE_TLS) || !defined(FIXME_PR_51139)
+#ifndef _GLIBCXX_HAVE_TLS
       if (__functor_lock)
         __set_once_functor_lock_ptr(0);
 #endif
diff -r bdf7cc0d18e0 -r c5ee65c578f1 external/gpl3/gcc/dist/libstdc++-v3/src/c++11/mutex.cc
--- a/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/mutex.cc    Sat Dec 24 15:46:50 2016 +0000
+++ b/external/gpl3/gcc/dist/libstdc++-v3/src/c++11/mutex.cc    Sat Dec 24 15:48:26 2016 +0000
@@ -25,7 +25,7 @@
 #include <mutex>
 
 #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
-#if !defined(_GLIBCXX_HAVE_TLS) || !defined(FIXME_PR_51139)
+#ifndef _GLIBCXX_HAVE_TLS
 namespace
 {
   inline std::unique_lock<std::mutex>*&
@@ -41,7 +41,7 @@
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
-#if defined(_GLIBCXX_HAVE_TLS) && defined(FIXME_PR_51139)
+#ifdef _GLIBCXX_HAVE_TLS
   __thread void* __once_callable;
   __thread void (*__once_call)();
 #else
@@ -76,7 +76,7 @@
   {
     void __once_proxy()
     {
-#if !defined(_GLIBCXX_HAVE_TLS) || !defined(FIXME_PR_51139)
+#ifndef _GLIBCXX_HAVE_TLS
       function<void()> __once_call = std::move(__once_functor);
       if (unique_lock<mutex>* __lock = __get_once_functor_lock_ptr())
       {



Home | Main Index | Thread Index | Old Index