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

login
register
mail settings
Submitter Jakub Jelinek
Date March 22, 2011, 1:39 p.m.
Message ID <20110322133951.GF18914@tyan-ft48-01.lab.bos.redhat.com>
Download mbox | patch
Permalink /patch/87919/
State New
Headers show

Comments

Jakub Jelinek - March 22, 2011, 1:39 p.m.
On Tue, Mar 22, 2011 at 01:10:14PM -0000, Adam Butcher wrote:
> After a bit of poking around with nm in various objects I determined
> that the baseline_symbols files define what should be exported.  The
> following grep+sed combo adds the necessary export for any architecture
> that exports the C1 constructor symbol.
> 
>   grep _ZNSsC1EOSs libstdc++-v3/config/abi/post -R -l | xargs sed -i.bak
> '/_ZNSsC2EPKcRKSaIcE/ iFUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.14'
> 
> The result is attached as a patch against 4.6.0 20110321 (prerelease).

That's not the patch to export it, baseline_symbols.txt is just
for testing the ABI.
Furthermore, you can't add new symbols to GLIBCXX_3.4.14, which has
been already in gcc 4.5 and released almost a year ago, and lastly,
std::wstring has the same problem.

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.

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.


	Jakub
Paolo Carlini - March 22, 2011, 1:52 p.m.
Hi,
> On Tue, Mar 22, 2011 at 01:10:14PM -0000, Adam Butcher wrote:
>> After a bit of poking around with nm in various objects I determined
>> that the baseline_symbols files define what should be exported.  The
>> following grep+sed combo adds the necessary export for any architecture
>> that exports the C1 constructor symbol.
>>
>>    grep _ZNSsC1EOSs libstdc++-v3/config/abi/post -R -l | xargs sed -i.bak
>> '/_ZNSsC2EPKcRKSaIcE/ iFUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.14'
>>
>> The result is attached as a patch against 4.6.0 20110321 (prerelease).
> That's not the patch to export it, baseline_symbols.txt is just
> for testing the ABI.
> Furthermore, you can't add new symbols to GLIBCXX_3.4.14, which has
> been already in gcc 4.5 and released almost a year ago, and lastly,
> std::wstring has the same problem.
>
> 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.
Jakub, such a patch would be ok with me, if isn't too late, but, frankly 
I don't see why we are not seeing the issue in the existing 
cons/char/moveable.cc, maybe it's something sensitive to inlining 
decisions (yes a testcase is welcome!), and then if we are going to do 
this, I'm not sure we don't need it for more (inline) member functions 
of basic_string, in particular I'm worried by the constructor taking an 
initializer_list and an allocator, is it already exported?

Paolo.
Paolo Carlini - March 22, 2011, 2 p.m.
Il 22/03/11 14.52, Paolo Carlini ha scritto:
> Jakub, such a patch would be ok with me, if isn't too late, but, 
> frankly I don't see why we are not seeing the issue in the existing 
> cons/char/moveable.cc, maybe it's something sensitive to inlining 
> decisions (yes a testcase is welcome!), and then if we are going to do 
> this, I'm not sure we don't need it for more (inline) member functions 
> of basic_string, in particular I'm worried by the constructor taking 
> an initializer_list and an allocator, is it already exported?
Ok, I double checked the by now pretty old work done by Jason on the 
initilizer_list bits and everything seems in good shape. Great. The move 
constructor / assignment operator themselves ("C1") are also already 
exported, I'm not sure to understand what the additional "C2" (vs "C1") 
symbols amount to. Jakub, can you see this, if we are safe on that 
ground, I say let's go ahead. And thanks a lot.

Paolo.
Jakub Jelinek - March 22, 2011, 2:10 p.m.
On Tue, Mar 22, 2011 at 02:52:47PM +0100, Paolo Carlini wrote:
> >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.
> Jakub, such a patch would be ok with me, if isn't too late, but,
> frankly I don't see why we are not seeing the issue in the existing
> cons/char/moveable.cc, maybe it's something sensitive to inlining
> decisions (yes a testcase is welcome!), and then if we are going to
> do this, I'm not sure we don't need it for more (inline) member
> functions of basic_string, in particular I'm worried by the
> constructor taking an initializer_list and an allocator, is it
> already exported?

All I did was write a mechanical patch after noticing
that http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=155788
added just
    # string|wstring move contructor, move assignment operator and
    # move assign.
    _ZNSsC1EOSs;
    _ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_;
    _ZNSsaSEOSs;
    _ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_;
    _ZNSs6assignEOSs;
    _ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_;
and http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=156556
tweaked it:
-    _ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_;
+    _ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_;
i.e. from ctors only the complete ctors and not the base ctors.
Probably the testcases use only complete ctors...
And I couldn't find other cases in gnu.ver that would only
export the complete ctor and not the base ctor at the same time,
these two were the only ones.

The patch btw passed check-abi and no FAILs so far in libstdc++ testing.

	Jakub
Paolo Carlini - March 22, 2011, 2:14 p.m.
Il 22/03/11 15.10, Jakub Jelinek ha scritto:
> i.e. from ctors only the complete ctors and not the base ctors.
> Probably the testcases use only complete ctors...
> And I couldn't find other cases in gnu.ver that would only
> export the complete ctor and not the base ctor at the same time,
> these two were the only ones.
Ah good, that's nice to know. Thus, please go ahead at your ease.

Paolo.
Adam Butcher - March 22, 2011, 2:17 p.m.
On Tue, March 22, 2011 1:39 pm, Jakub Jelinek wrote:
> On Tue, Mar 22, 2011 at 01:10:14PM -0000, Adam Butcher wrote:
>> After a bit of poking around with nm in various objects I determined
>> that the baseline_symbols files define what should be exported.  The
>> following grep+sed combo adds the necessary export for any
>> architecture
>> that exports the C1 constructor symbol.
>>
>>   grep _ZNSsC1EOSs libstdc++-v3/config/abi/post -R -l | xargs sed
>> -i.bak
>> '/_ZNSsC2EPKcRKSaIcE/ iFUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.14'
>>
>> The result is attached as a patch against 4.6.0 20110321 (prerelease).
>
> That's not the patch to export it, baseline_symbols.txt is just
> for testing the ABI.
> Furthermore, you can't add new symbols to GLIBCXX_3.4.14, which has
> been already in gcc 4.5 and released almost a year ago, and lastly,
> std::wstring has the same problem.
>
Ah right.  Thanks for the clarifications.  I had actually modified
locally my:

  ../build/gcc-4.6.0/i686-pc-linux-gnu/libstdc++-v3/src/libstdc++-symbols.ver

file in my build directory which is what in fact made my build work.  I
had assumed incorrectly that this was generated for a particular target
from the baseline_symbols files as that was the only place that I found
the C1 constructor symbol reference.

In my haste I had missed the last line from git grep

  libstdc++-v3/config/abi/pre/gnu.ver:    _ZNSsC1EOSs;

which, from your patch below (and is now obvious that it is in fact the
exact content of the file I manually edited), is the true source for the
symbols.ver file in the build dir!

Had I have seen this previously the appropriate line would have been in
my patch.  The fact remains though that my patch would have still been
abusing the versioning completely!

> 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.
>
Fair enough.  So I currently have an abused libstdc++ that claims that
the base object move ctor for std::string is in 3.4.14 when it is not -
3.4.14 has been released already.  Get it.

I had thought about wstring but was it was not necessary to build our
tree so I thought that an minimal incremental change might be
acceptable.

Here's a simple test program for both string types.  Currently this
fails to link the wstring ctor on my build for the expected reason.  It
will work as soon as I apply your patch.

   #include <string>

   template <typename C>
   class another_string : std::basic_string<C>
   {
   public:
      another_string() : std::basic_string<C>() {}
      another_string(another_string&& s)
                       : std::basic_string<C>(std::move(s)) {}
   };

   template <typename C>
   another_string<C> get() { another_string<C> s; return s; }

   template <typename C>
   void use(another_string<C>) { }

   int main()
   {
      use(std::move(get<char>()));
      use(std::move(get<wchar_t>()));
   }

Cheers
Adam
Benjamin Kosnik - March 22, 2011, 2:26 p.m.
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. 

best,
benjamin

Patch

--- libstdc++-v3/config/abi/pre/gnu.ver	2011-03-21 19:59:31.184763637 +0100
+++ libstdc++-v3/config/abi/pre/gnu.ver	2011-03-22 14:20:04.974402217 +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/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