Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. // Compatibility symbols for previous versions, C++0x bits -*- C++ -*-
  2.  
  3. // Copyright (C) 2009-2013 Free Software Foundation, Inc.
  4. //
  5. // This file is part of the GNU ISO C++ Library.  This library is free
  6. // software; you can redistribute it and/or modify it under the
  7. // terms of the GNU General Public License as published by the
  8. // Free Software Foundation; either version 3, or (at your option)
  9. // any later version.
  10.  
  11. // This library is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. // GNU General Public License for more details.
  15.  
  16. // Under Section 7 of GPL version 3, you are granted additional
  17. // permissions described in the GCC Runtime Library Exception, version
  18. // 3.1, as published by the Free Software Foundation.
  19.  
  20. // You should have received a copy of the GNU General Public License and
  21. // a copy of the GCC Runtime Library Exception along with this program;
  22. // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  23. // <http://www.gnu.org/licenses/>.
  24.  
  25. #include <bits/c++config.h>
  26. #if defined(_GLIBCXX_HAVE_TLS) && defined(_GLIBCXX_SHARED)
  27. #define _GLIBCXX_ASYNC_ABI_COMPAT
  28. #endif
  29.  
  30. #include <future>
  31. #include <mutex>
  32.  
  33. #if __cplusplus < 201103L
  34. # error "compatibility-thread-c++0x.cc must be compiled with -std=gnu++0x"
  35. #endif
  36.  
  37. #define _GLIBCXX_ASM_SYMVER(cur, old, version) \
  38.    asm (".symver " #cur "," #old "@@@" #version);
  39.  
  40. // XXX GLIBCXX_ABI Deprecated
  41. // gcc-4.6.0
  42. // <future> export changes
  43. #if defined(_GLIBCXX_SYMVER_GNU) && defined(_GLIBCXX_SHARED) \
  44.     && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \
  45.     && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT)
  46.  
  47. namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
  48. {
  49.   const std::error_category* future_category = &std::future_category();
  50. }
  51.  
  52. _GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx15future_categoryE, _ZSt15future_category, GLIBCXX_3.4.14)
  53.  
  54. #endif
  55.  
  56. // XXX GLIBCXX_ABI Deprecated
  57. // gcc-4.6.0
  58. // <mutex> export changes
  59. #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
  60. #if defined(_GLIBCXX_SYMVER_GNU) && defined(_GLIBCXX_SHARED) \
  61.     && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \
  62.     && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT)
  63.  
  64. namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
  65. {
  66.   std::defer_lock_t defer_lock;
  67.   std::try_to_lock_t try_to_lock;
  68.   std::adopt_lock_t adopt_lock;
  69. }
  70.  
  71. _GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx10adopt_lockE, _ZSt10adopt_lock, GLIBCXX_3.4.11)
  72. _GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx10defer_lockE, _ZSt10defer_lock, GLIBCXX_3.4.11)
  73. _GLIBCXX_ASM_SYMVER(_ZN9__gnu_cxx11try_to_lockE, _ZSt11try_to_lock, GLIBCXX_3.4.11)
  74.  
  75.  
  76. #endif
  77. #endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
  78.  
  79.  
  80. // XXX GLIBCXX_ABI Deprecated
  81. // gcc-4.7.0
  82. // <future> export changes
  83. #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) \
  84.   && (ATOMIC_INT_LOCK_FREE > 1)
  85. #if defined(_GLIBCXX_HAVE_TLS) && defined(_GLIBCXX_SHARED)
  86. namespace std _GLIBCXX_VISIBILITY(default)
  87. {
  88. _GLIBCXX_BEGIN_NAMESPACE_VERSION
  89.   __future_base::_Async_state_common::~_Async_state_common() { _M_join(); }
  90.  
  91.   // Explicit instantiation due to -fno-implicit-instantiation.
  92.   template void call_once(once_flag&, void (thread::*&&)(), reference_wrapper<thread>&&);
  93.   template _Bind_simple_helper<void (thread::*)(), reference_wrapper<thread>>::__type __bind_simple(void (thread::*&&)(), reference_wrapper<thread>&&);
  94. _GLIBCXX_END_NAMESPACE_VERSION
  95. } // namespace std
  96. #endif
  97. #endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
  98.