From 50b840ac5e1d6534e345c3fee9a97ae45ced6bc7 Mon Sep 17 00:00:00 2001
From: Jonathan Wakely <jwakely@redhat.com>
Date: Thu, 5 Nov 2020 13:41:40 +0000
Subject: [PATCH] libstdc++: Export basic_stringbuf constructor [PR 97729]

libstdc++-v3/ChangeLog:

	PR libstdc++/97729
	* config/abi/pre/gnu.ver (GLIBCXX_3.4.29): Add exports.
	* src/c++20/sstream-inst.cc (basic_stringbuf): Instantiate
	private constructor taking __xfer_bufptrs.
---
 libstdc++-v3/config/abi/pre/gnu.ver    | 1 +
 libstdc++-v3/src/c++20/sstream-inst.cc | 6 ++++++
 2 files changed, 7 insertions(+)

diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index 707539a17c3a..ed68ffa28723 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -2346,6 +2346,7 @@ GLIBCXX_3.4.29 {
 
     # basic_stringbuf::basic_stringbuf(basic_stringbuf&&, allocator const&)
     _ZNSt7__cxx1115basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EEC[12]EOS4_RKS3_;
+    _ZNSt7__cxx1115basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EEC[12]EOS4_RKS3_ONS4_14__xfer_bufptrsE;
 
     # basic_stringbuf::get_allocator()
     _ZNKSt7__cxx1115basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE13get_allocatorEv;
diff --git a/libstdc++-v3/src/c++20/sstream-inst.cc b/libstdc++-v3/src/c++20/sstream-inst.cc
index ada3eabac1f5..7d275de5cc24 100644
--- a/libstdc++-v3/src/c++20/sstream-inst.cc
+++ b/libstdc++-v3/src/c++20/sstream-inst.cc
@@ -41,6 +41,9 @@ template basic_stringbuf<char>::basic_stringbuf(__string_type&&,
 						ios_base::openmode);
 template basic_stringbuf<char>::basic_stringbuf(basic_stringbuf&&,
 						const allocator_type&);
+template basic_stringbuf<char>::basic_stringbuf(basic_stringbuf&&,
+						const allocator_type&,
+						__xfer_bufptrs&&);
 template basic_stringbuf<char>::allocator_type
 basic_stringbuf<char>::get_allocator() const noexcept;
 template string_view
@@ -75,6 +78,9 @@ template basic_stringbuf<wchar_t>::basic_stringbuf(__string_type&&,
 						   ios_base::openmode);
 template basic_stringbuf<wchar_t>::basic_stringbuf(basic_stringbuf&&,
 						   const allocator_type&);
+template basic_stringbuf<wchar_t>::basic_stringbuf(basic_stringbuf&&,
+						   const allocator_type&,
+						   __xfer_bufptrs&&);
 template basic_stringbuf<wchar_t>::allocator_type
 basic_stringbuf<wchar_t>::get_allocator() const noexcept;
 
-- 
GitLab