From patchwork Tue Mar 22 14:47:54 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Jelinek X-Patchwork-Id: 87931 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 9E2001007D1 for ; Wed, 23 Mar 2011 01:48:43 +1100 (EST) Received: (qmail 17096 invoked by alias); 22 Mar 2011 14:48:41 -0000 Received: (qmail 17079 invoked by uid 22791); 22 Mar 2011 14:48:38 -0000 X-SWARE-Spam-Status: No, hits=-6.4 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_HI, SPF_HELO_PASS, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 22 Mar 2011 14:47:59 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p2MElvcc026307 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 22 Mar 2011 10:47:57 -0400 Received: from tyan-ft48-01.lab.bos.redhat.com (tyan-ft48-01.lab.bos.redhat.com [10.16.42.4]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p2MEltaO004617 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 22 Mar 2011 10:47:57 -0400 Received: from tyan-ft48-01.lab.bos.redhat.com (localhost.localdomain [127.0.0.1]) by tyan-ft48-01.lab.bos.redhat.com (8.14.4/8.14.4) with ESMTP id p2MEltTE029144; Tue, 22 Mar 2011 15:47:55 +0100 Received: (from jakub@localhost) by tyan-ft48-01.lab.bos.redhat.com (8.14.4/8.14.4/Submit) id p2MEls3r029142; Tue, 22 Mar 2011 15:47:54 +0100 Date: Tue, 22 Mar 2011 15:47:54 +0100 From: Jakub Jelinek To: Benjamin Kosnik Cc: Adam Butcher , gcc-patches@gcc.gnu.org, libstdc++@gcc.gnu.org Subject: Re: [Patch] [libstdc++] [C++0x] Export std::string base object move constructor. Message-ID: <20110322144754.GH18914@tyan-ft48-01.lab.bos.redhat.com> Reply-To: Jakub Jelinek References: <7db3e0ce41aacbeabd8c003deadabb98.squirrel@webmail.plus.net> <20110322133951.GF18914@tyan-ft48-01.lab.bos.redhat.com> <20110322152621.466dc9c6@shotwell> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20110322152621.466dc9c6@shotwell> User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org 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 > > > > * 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 resp. std::basic_string and with -fno-inline. Is that ok? 2011-03-22 Jakub Jelinek * 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 --- 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 +// . + +// 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 +#include +#include + +class tstring : public std::basic_string +{ +public: + tstring() : std::basic_string() {} + tstring(tstring&& s) : std::basic_string(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 +// . + +// 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 +#include +#include + +class twstring : public std::basic_string +{ +public: + twstring() : std::basic_string() {} + twstring(twstring&& s) : std::basic_string(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; +}