From 85689f73bd8042d0a1b9f71d4d8251e5d3fd26ec Mon Sep 17 00:00:00 2001 From: redi Date: Fri, 16 Jun 2017 12:18:53 +0000 Subject: PR libstdc++/81092 add std::wstring symbols and bump library version PR libstdc++/81092 * acinclude.m4: Bump libtool_VERSION. * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update. * config/abi/pre/gnu.ver: Add wstring constructor symbols to new GLIBCXX_3.4.24 version. * doc/xml/manual/abi.xml: Document new versions. * doc/html/*: Regenerate. * testsuite/21_strings/basic_string/cons/char/8.cc: Use base object constructors to ensure required symbols are exported. * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise. * testsuite/util/testsuite_abi.cc: Add new version. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@249248 138bc75d-0d04-0410-961f-82ee72b054a4 --- .../testsuite/21_strings/basic_string/cons/char/8.cc | 17 ++++++++++++++++- .../testsuite/21_strings/basic_string/cons/wchar_t/8.cc | 17 ++++++++++++++++- libstdc++-v3/testsuite/util/testsuite_abi.cc | 3 ++- 3 files changed, 34 insertions(+), 3 deletions(-) (limited to 'libstdc++-v3/testsuite') diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc index 6fc4fdf6caa3..aceec5cea153 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc @@ -15,16 +15,31 @@ // with this library; see the file COPYING3. If not see // . +// { dg-options "-O0" } // { dg-do run { target c++11 } } #include #include +struct TestBaseObjCtor : std::string +{ + template + TestBaseObjCtor(Args&&... args) + : std::string(std::forward(args)...) + { } +}; + template std::size_t construct(Args&&... args) { - return std::string( std::forward(args)... ).length(); + // Use static_cast to produce either an lvalue or prvalue, + // so args... not left in moved-from state and can be reused below: + TestBaseObjCtor as_base_obj( static_cast(args)... ); + + std::string as_complete_obj( std::forward(args)... ); + + return as_complete_obj.length(); } void diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc index 0fee57826229..734573768d76 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc @@ -15,16 +15,31 @@ // with this library; see the file COPYING3. If not see // . +// { dg-options "-O0" } // { dg-do run { target c++11 } } #include #include +struct TestBaseObjCtor : std::wstring +{ + template + TestBaseObjCtor(Args&&... args) + : std::wstring(std::forward(args)...) + { } +}; + template std::size_t construct(Args&&... args) { - return std::wstring( std::forward(args)... ).length(); + // Use static_cast to produce either an lvalue or prvalue, + // so args... not left in moved-from state and can be reused below: + TestBaseObjCtor as_base_obj( static_cast(args)... ); + + std::wstring as_complete_obj( std::forward(args)... ); + + return as_complete_obj.length(); } void diff --git a/libstdc++-v3/testsuite/util/testsuite_abi.cc b/libstdc++-v3/testsuite/util/testsuite_abi.cc index f5fc594d194a..ee7572ea2444 100644 --- a/libstdc++-v3/testsuite/util/testsuite_abi.cc +++ b/libstdc++-v3/testsuite/util/testsuite_abi.cc @@ -204,6 +204,7 @@ check_version(symbol& test, bool added) known_versions.push_back("GLIBCXX_LDBL_3.4.21"); known_versions.push_back("GLIBCXX_3.4.22"); known_versions.push_back("GLIBCXX_3.4.23"); + known_versions.push_back("GLIBCXX_3.4.24"); known_versions.push_back("CXXABI_1.3"); known_versions.push_back("CXXABI_LDBL_1.3"); known_versions.push_back("CXXABI_1.3.1"); @@ -234,7 +235,7 @@ check_version(symbol& test, bool added) test.version_status = symbol::incompatible; // Check that added symbols are added in the latest pre-release version. - bool latestp = (test.version_name == "GLIBCXX_3.4.23" + bool latestp = (test.version_name == "GLIBCXX_3.4.24" || test.version_name == "CXXABI_1.3.11" || test.version_name == "CXXABI_FLOAT128" || test.version_name == "CXXABI_TM_1"); -- cgit v1.2.3