aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2021-03-12 11:47:20 +0000
committerJonathan Wakely <jwakely@redhat.com>2021-03-16 12:25:28 +0000
commit995a740cb01a0671a2082cb1ae13d0c356d4b568 (patch)
tree55fecfcb90d647cf56780c1b02b8c2e93d175272
parent6ee24638ed0ad51e568c799bacf149ba9bd7628b (diff)
downloadgcc-995a740cb01a0671a2082cb1ae13d0c356d4b568.zip
gcc-995a740cb01a0671a2082cb1ae13d0c356d4b568.tar.gz
gcc-995a740cb01a0671a2082cb1ae13d0c356d4b568.tar.bz2
libstdc++: Remove symbols for new std::call_once implementation [PR 99341]
This removes the new symbols added for the new futex-based std::call_once implementation. These symbols were new on trunk, so not in any released version. However, they are already present in some beta distro releases (Fedora Linux 34) and in Fedora Linux rawhide. This change can be locally reverted by distros that need to keep the symbols present until affected packages have been rebuilt. libstdc++-v3/ChangeLog: PR libstdc++/99341 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Remove std::once_flag symbols. * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Likewise. * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Likewise. * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Likewise. * config/abi/pre/gnu.ver: Likewise. * src/c++11/mutex.cc [_GLIBCXX_HAVE_LINUX_FUTEX] (struct __once_flag_compat): Remove. (_ZNSt9once_flag11_M_activateEv): Remove. (_ZNSt9once_flag9_M_finishEb): Remove.
-rw-r--r--libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt2
-rw-r--r--libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt2
-rw-r--r--libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt2
-rw-r--r--libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt2
-rw-r--r--libstdc++-v3/config/abi/pre/gnu.ver5
-rw-r--r--libstdc++-v3/src/c++11/mutex.cc84
6 files changed, 0 insertions, 97 deletions
diff --git a/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
index 45f1540..898c8e1 100644
--- a/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
@@ -4086,8 +4086,6 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX
FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
-FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29
-FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29
FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
index 62d28d2..92288cc 100644
--- a/libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
@@ -4086,8 +4086,6 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX
FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
-FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29
-FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29
FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt
index 45992ae..af5dc02 100644
--- a/libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt
@@ -4086,8 +4086,6 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX
FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
-FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29
-FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29
FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt
index 02a2e17..6e5da52 100644
--- a/libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt
@@ -4086,8 +4086,6 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX
FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4
FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4
FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4
-FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29
-FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29
FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4
FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4
FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index a2c151d..5323c7f 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -2388,11 +2388,6 @@ GLIBCXX_3.4.29 {
_ZNKRSt7__cxx1118basic_stringstreamI[cw]St11char_traitsI[cw]ESaI[cw]EE3strEv;
_ZNSt7__cxx1118basic_stringstreamI[cw]St11char_traitsI[cw]ESaI[cw]EE3strEONS_12basic_stringI[cw]S2_S3_EE;
- # std::once_flag::_M_activate()
- _ZNSt9once_flag11_M_activateEv;
- # std::once_flag::_M_finish(bool)
- _ZNSt9once_flag9_M_finishEb;
-
# std::to_chars(char*, char*, [float|double|long double])
_ZSt8to_charsPcS_[def];
# std::to_chars(char*, char*, [float|double|long double], chars_format)
diff --git a/libstdc++-v3/src/c++11/mutex.cc b/libstdc++-v3/src/c++11/mutex.cc
index 3b48998..646fd17 100644
--- a/libstdc++-v3/src/c++11/mutex.cc
+++ b/libstdc++-v3/src/c++11/mutex.cc
@@ -26,90 +26,6 @@
#ifdef _GLIBCXX_HAS_GTHREADS
-#if defined _GLIBCXX_SHARED && ! _GLIBCXX_INLINE_VERSION
-
-#ifdef _GLIBCXX_HAVE_LINUX_FUTEX
-# include <syscall.h>
-# include <unistd.h>
-# include <limits.h>
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-_GLIBCXX_BEGIN_NAMESPACE_VERSION
-
-struct __once_flag_compat
-{
- enum _Bits : int { _Init = 0, _Active = 1, _Done = 2 };
- int _M_once = 0;
- bool _M_activate();
- void _M_finish(bool returning) noexcept;
-};
-
-bool
-__once_flag_compat::_M_activate()
-{
- if (__gnu_cxx::__is_single_threaded())
- {
- if (_M_once == _Bits::_Done)
- return false;
- _M_once = _Bits::_Active;
- return true;
- }
-
- while (true)
- {
- int expected = _Bits::_Init;
- constexpr int active = _Bits::_Active;
- if (__atomic_compare_exchange_n(&_M_once, &expected, active, false,
- __ATOMIC_ACQ_REL,
- __ATOMIC_ACQUIRE))
- {
- // This thread is now doing an active execution.
- return true;
- }
-
- if (expected == _Bits::_Done)
- return false; // A returning execution happened, this is passive.
-
- // Otherwise, an active execution is happening. Wait for it to finish.
- constexpr int futex_wait = 128; // FUTEX_WAIT_PRIVATE
- syscall (SYS_futex, &_M_once, futex_wait, expected, 0);
- }
-}
-
-void
-std::__once_flag_compat::_M_finish(bool returning) noexcept
-{
- const int newval = returning ? _Bits::_Done : _Bits::_Init;
- if (__gnu_cxx::__is_single_threaded())
- {
- __glibcxx_assert(_M_once == _Bits::_Active);
- _M_once = newval;
- }
- else
- {
- int prev [[maybe_unused]]
- = __atomic_exchange_n(&_M_once, newval, __ATOMIC_RELEASE);
- __glibcxx_assert(prev & _Bits::_Active);
- // Wake any other threads waiting for this execution to finish.
- constexpr int futex_wake = 129; // FUTEX_WAKE_PRIVATE
- syscall (SYS_futex, &_M_once, futex_wake, INT_MAX);
- }
-}
-
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wattribute-alias"
-extern "C" bool _ZNSt9once_flag11_M_activateEv()
- __attribute__((alias ("_ZNSt18__once_flag_compat11_M_activateEv")));
-extern "C" void _ZNSt9once_flag9_M_finishEb() noexcept
- __attribute__((alias ("_ZNSt18__once_flag_compat9_M_finishEb")));
-#pragma GCC diagnostic pop
-
-_GLIBCXX_END_NAMESPACE_VERSION
-} // namespace std
-#endif // FUTEX
-#endif // ONCE_FLAG_COMPAT && SHARED && ! INLINE_VERSION
-
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION