[gcc r15-10521] libstdc++: Fix std module for gcc4-compatible ABI
Jonathan Wakely
redi@gcc.gnu.org
Mon Nov 17 18:06:53 GMT 2025
https://gcc.gnu.org/g:e46321811a95faebb38a3996cec7317df3fa248a
commit r15-10521-ge46321811a95faebb38a3996cec7317df3fa248a
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Mon Nov 17 14:33:50 2025 +0000
libstdc++: Fix std module for gcc4-compatible ABI
Add preprocessor checks to std.cc.in for features which are not
supported with the old string ABI.
The COW std::string doesn't properly support C++11 allocators, so the
aliases such as std::pmr::string, std::pmr::u8string etc. are not
defined for the old string ABI.
The std::syncbuf type uses std::string and is not defined for the old
string ABI.
libstdc++-v3/ChangeLog:
* src/c++23/std.cc.in [!__cpp_lib_syncbuf]: Disable exports for
<syncstream> contents when not defined.
[!_GLIBCXX_USE_CXX11_ABI]: Disable exports for pmr aliases in
<string> when not defined.
(cherry picked from commit edde0ae2b5299aeef5555346788d9059de45d813)
Diff:
---
libstdc++-v3/src/c++23/std.cc.in | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/libstdc++-v3/src/c++23/std.cc.in b/libstdc++-v3/src/c++23/std.cc.in
index 5df25bb646af..36e4361e2a3f 100644
--- a/libstdc++-v3/src/c++23/std.cc.in
+++ b/libstdc++-v3/src/c++23/std.cc.in
@@ -1575,15 +1575,17 @@ export namespace std
using std::u32streampos;
using std::u8streampos;
using std::wstreampos;
- using std::basic_osyncstream;
- using std::basic_syncbuf;
using std::istreambuf_iterator;
using std::ostreambuf_iterator;
+ using std::fpos;
+#ifdef __cpp_lib_syncbuf
+ using std::basic_osyncstream;
+ using std::basic_syncbuf;
using std::osyncstream;
using std::syncbuf;
using std::wosyncstream;
using std::wsyncbuf;
- using std::fpos;
+#endif
}
// <iostream>
@@ -2116,9 +2118,11 @@ export namespace std
using std::ostream;
using std::wostream;
using std::operator<<;
+#ifdef __cpp_lib_syncbuf
using std::emit_on_flush;
using std::noemit_on_flush;
using std::flush_emit;
+#endif
}
// <print>
@@ -2559,11 +2563,13 @@ export namespace std
using std::wsregex_token_iterator;
namespace pmr
{
+#if _GLIBCXX_USE_CXX11_ABI
using std::pmr::cmatch;
using std::pmr::match_results;
using std::pmr::smatch;
using std::pmr::wcmatch;
using std::pmr::wsmatch;
+#endif
}
}
@@ -2789,12 +2795,14 @@ export namespace std
using std::wstring;
namespace pmr
{
+#if _GLIBCXX_USE_CXX11_ABI
using std::pmr::basic_string;
using std::pmr::string;
using std::pmr::u16string;
using std::pmr::u32string;
using std::pmr::u8string;
using std::pmr::wstring;
+#endif
}
using std::hash;
}
@@ -2839,6 +2847,7 @@ export namespace std
// <syncstream>
export namespace std
{
+#ifdef __cpp_lib_syncbuf
using std::basic_syncbuf;
using std::swap;
using std::basic_osyncstream;
@@ -2846,6 +2855,7 @@ export namespace std
using std::syncbuf;
using std::wosyncstream;
using std::wsyncbuf;
+#endif
}
// 19.5 <system_error>
More information about the Libstdc++-cvs
mailing list