Patchwork [libstdc++,C++0x] Export std::string base object move constructor.

login
register
mail settings
Submitter Jakub Jelinek
Date March 22, 2011, 2:47 p.m.
Message ID <20110322144754.GH18914@tyan-ft48-01.lab.bos.redhat.com>
Download mbox | patch
Permalink /patch/87931/
State New
Headers show

Comments

Jakub Jelinek - March 22, 2011, 2:47 p.m.
On Tue, Mar 22, 2011 at 03:26:21PM +0100, Benjamin Kosnik wrote:
> 
> Thanks for reporting this issue Adam. Don't hesitate to file bug
> reports in gcc bugzilla category libstdc++ when you find problems like
> this in the future!
> 
> > So, if Benjamin or other libstdc++ maintainers want it fixed for
> > 4.6, you want a patch like attached, plus some testcases for both
> > std::string and std::wstring.
> 
> I made a note to correct the testsuite deficiency.
> 
> > 2011-03-22  Jakub Jelinek  <jakub@redhat.com>
> > 
> > 	* config/abi/pre/gnu.ver (GLIBCXX_3.4.15): Export _ZNSsC2EOSs
> > 	and _ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_.
> 
> Yes please. Thanks for the quickness on this Jakub.
> 
> For the record, I just did an audit of src/*inst.cc files mapped to
> include files with non-operator && usage to look for similar issues in
> other classes. (Non-exported symbols required for move semantics to
> function in other library areas.) I didn't find any. 

Here is updated patch with testcases, tested with unpatched libstdc++
where it failed to link and patched where it succeeded.
The testcases are copies of corresponding moveable.cc tests, just
using the new class inheriting from std::basic_string<char> resp.
std::basic_string<wchar_t> and with -fno-inline.
Is that ok?

2011-03-22  Jakub Jelinek  <jakub@redhat.com>

	* config/abi/pre/gnu.ver (GLIBCXX_3.4.15): Export _ZNSsC2EOSs
	and _ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_.
	* config/abi/post/solaris2.8/baseline_symbols.txt: Regenerated.
	* config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt: Likewise.
	* config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Likewise.
	* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise.
	* config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Likewise.
	* config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Likewise.
	* config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise.
	* config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt:
	Likewise.
	* config/abi/post/solaris2.10/baseline_symbols.txt: Likewise.
	* config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
	* config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
	* config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise.
	* config/abi/post/i386-linux-gnu/baseline_symbols.txt: Likewise.
	* config/abi/post/s390-linux-gnu/baseline_symbols.txt: Likewise.
	* testsuite/21_strings/basic_string/cons/char/moveable2.cc: New test.
	* testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc: New
	test.



	Jakub
Benjamin Kosnik - March 22, 2011, 2:57 p.m.
> Here is updated patch with testcases, tested with unpatched libstdc++
> where it failed to link and patched where it succeeded.
> The testcases are copies of corresponding moveable.cc tests, just
> using the new class inheriting from std::basic_string<char> resp.
> std::basic_string<wchar_t> and with -fno-inline.
> Is that ok?
> 
> 2011-03-22  Jakub Jelinek  <jakub@redhat.com>
> 
> 	* config/abi/pre/gnu.ver (GLIBCXX_3.4.15): Export _ZNSsC2EOSs
> 	and _ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_.
> 	* config/abi/post/solaris2.8/baseline_symbols.txt:
> Regenerated.
> 	* config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt:
> Likewise.
> 	* config/abi/post/s390x-linux-gnu/baseline_symbols.txt:
> Likewise.
> 	* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt:
> Likewise.
> 	* config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt:
> Likewise.
> 	* config/abi/post/powerpc-linux-gnu/baseline_symbols.txt:
> Likewise.
> 	* config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt:
> Likewise.
> 	* config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt:
> 	Likewise.
> 	* config/abi/post/solaris2.10/baseline_symbols.txt: Likewise.
> 	* config/abi/post/solaris2.10/amd64/baseline_symbols.txt:
> Likewise.
> 	* config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt:
> Likewise.
> 	* config/abi/post/i486-linux-gnu/baseline_symbols.txt:
> Likewise.
> 	* config/abi/post/i386-linux-gnu/baseline_symbols.txt:
> Likewise.
> 	* config/abi/post/s390-linux-gnu/baseline_symbols.txt:
> Likewise.
> 	* testsuite/21_strings/basic_string/cons/char/moveable2.cc:
> New test.
> 	*
> testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc: New test.

OK. 

Thanks!

-benjamin
Paolo Carlini - March 22, 2011, 3 p.m.
Hi,
> The testcases are copies of corresponding moveable.cc tests, just
> using the new class inheriting from std::basic_string<char>  resp.
> std::basic_string<wchar_t>  and with -fno-inline.
> Is that ok?
Minor nit: no 2010 among the Copyright years.

Paolo.

Patch

--- libstdc++-v3/config/abi/pre/gnu.ver.jj	2011-03-21 19:59:31.184763637 +0100
+++ libstdc++-v3/config/abi/pre/gnu.ver	2011-03-22 14:26:41.769399466 +0100
@@ -1202,6 +1202,10 @@  GLIBCXX_3.4.15 {
     _ZNSbIwSt11char_traitsIwESaIwEE4backEv;
     _ZNKSbIwSt11char_traitsIwESaIwEE4backEv;
 
+    # string|wstring move contructor.
+    _ZNSsC2EOSs;
+    _ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_;
+
     # basic_filebuf::_M_get_ext_pos
     _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE14_M_get_ext_pos*;
 
--- libstdc++-v3/config/abi/post/solaris2.8/baseline_symbols.txt.jj	2010-12-13 15:56:01.001251812 +0100
+++ libstdc++-v3/config/abi/post/solaris2.8/baseline_symbols.txt	2011-03-22 14:32:12.433546348 +0100
@@ -815,6 +815,7 @@  FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
@@ -1043,6 +1044,7 @@  FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
 FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
--- libstdc++-v3/config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt.jj	2011-03-21 20:01:16.355388654 +0100
+++ libstdc++-v3/config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt	2011-03-22 14:32:26.587402287 +0100
@@ -815,6 +815,7 @@  FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
@@ -1043,6 +1044,7 @@  FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
 FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
--- libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt.jj	2011-03-21 20:01:16.359546090 +0100
+++ libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt	2011-03-22 14:32:37.942546488 +0100
@@ -978,6 +978,7 @@  FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
@@ -1216,6 +1217,7 @@  FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
 FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
--- libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt.jj	2011-03-21 20:01:16.369545261 +0100
+++ libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt	2011-03-22 14:32:54.974546326 +0100
@@ -836,6 +836,7 @@  FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
@@ -1070,6 +1071,7 @@  FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
 FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
--- libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt.jj	2011-03-21 20:01:16.364545549 +0100
+++ libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt	2011-03-22 14:33:04.707796477 +0100
@@ -836,6 +836,7 @@  FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
@@ -1070,6 +1071,7 @@  FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
 FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
--- libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt.jj	2011-03-21 20:01:16.375430896 +0100
+++ libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt	2011-03-22 14:33:13.586546183 +0100
@@ -978,6 +978,7 @@  FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
@@ -1216,6 +1217,7 @@  FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
 FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
--- libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt.jj	2011-03-21 20:01:16.386428160 +0100
+++ libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt	2011-03-22 14:33:21.905546032 +0100
@@ -978,6 +978,7 @@  FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
@@ -1216,6 +1217,7 @@  FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
 FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
--- libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt.jj	2011-03-21 20:01:16.380546242 +0100
+++ libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt	2011-03-22 14:33:31.082796227 +0100
@@ -978,6 +978,7 @@  FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
@@ -1216,6 +1217,7 @@  FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
 FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
--- libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt.jj	2010-12-13 15:56:01.123248763 +0100
+++ libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt	2011-03-22 14:33:38.879796360 +0100
@@ -816,6 +816,7 @@  FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
@@ -1044,6 +1045,7 @@  FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
 FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
--- libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt.jj	2011-03-21 20:01:16.390546286 +0100
+++ libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt	2011-03-22 14:33:47.659545927 +0100
@@ -816,6 +816,7 @@  FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
@@ -1044,6 +1045,7 @@  FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
 FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
--- libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt.jj	2011-03-21 20:01:16.394546032 +0100
+++ libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt	2011-03-22 14:33:57.393796468 +0100
@@ -816,6 +816,7 @@  FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
@@ -1044,6 +1045,7 @@  FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
 FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
--- libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt.jj	2011-03-21 20:01:16.399547139 +0100
+++ libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt	2011-03-22 14:34:07.314546078 +0100
@@ -836,6 +836,7 @@  FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
@@ -1070,6 +1071,7 @@  FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
 FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
--- libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt.jj	2011-03-21 20:01:16.404545759 +0100
+++ libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt	2011-03-22 14:34:20.787547857 +0100
@@ -836,6 +836,7 @@  FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
@@ -1070,6 +1071,7 @@  FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
 FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
--- libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt.jj	2011-03-21 20:01:16.409545303 +0100
+++ libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt	2011-03-22 14:34:29.850796323 +0100
@@ -978,6 +978,7 @@  FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1Ev
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
+FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
 FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
@@ -1216,6 +1217,7 @@  FUNC:_ZNSsC1Ev@@GLIBCXX_3.4
 FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
+FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
 FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
 FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
--- libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2.cc.jj	2011-03-22 15:26:56.000000000 +0100
+++ libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2.cc	2011-03-22 15:27:35.000000000 +0100
@@ -0,0 +1,54 @@ 
+// { dg-options "-std=gnu++0x -fno-inline" }
+// { dg-require-string-conversions "" }
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+// NOTE: This makes use of the fact that we know how moveable
+// is implemented on string (via swap). If the implementation changed
+// this test may begin to fail.
+
+#include <string>
+#include <utility>
+#include <testsuite_hooks.h>
+
+class tstring : public std::basic_string<char>
+{
+public:
+  tstring() : std::basic_string<char>() {}
+  tstring(tstring&& s) : std::basic_string<char>(std::move(s)) {}
+};
+
+void test01()
+{
+  bool test __attribute__((unused)) = true;
+
+  tstring a, b;
+  a.push_back('1');
+  b = std::move(a);
+  VERIFY( b.size() == 1 && b[0] == '1' && a.size() == 0 );
+
+  tstring c(std::move(b));
+  VERIFY( c.size() == 1 && c[0] == '1' );
+  VERIFY( b.size() == 0 );
+}
+
+int main()
+{
+  test01();
+  return 0;
+}
--- libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc.jj	2011-03-22 15:27:22.000000000 +0100
+++ libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc	2011-03-22 15:28:17.000000000 +0100
@@ -0,0 +1,54 @@ 
+// { dg-options "-std=gnu++0x -fno-inline" }
+// { dg-require-string-conversions "" }
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+// NOTE: This makes use of the fact that we know how moveable
+// is implemented on string (via swap). If the implementation changed
+// this test may begin to fail.
+
+#include <string>
+#include <utility>
+#include <testsuite_hooks.h>
+
+class twstring : public std::basic_string<wchar_t>
+{
+public:
+  twstring() : std::basic_string<wchar_t>() {}
+  twstring(twstring&& s) : std::basic_string<wchar_t>(std::move(s)) {}
+};
+
+void test01()
+{
+  bool test __attribute__((unused)) = true;
+
+  twstring a, b;
+  a.push_back(L'1');
+  b = std::move(a);
+  VERIFY( b.size() == 1 && b[0] == L'1' && a.size() == 0 );
+
+  twstring c(std::move(b));
+  VERIFY( c.size() == 1 && c[0] == L'1' );
+  VERIFY( b.size() == 0 );
+}
+
+int main()
+{
+  test01();
+  return 0;
+}