PR libstdc++/88681 export missing symbols

These new facet functions were added to GCC 5.1 but the versions for the
old std::string ABI were never exported from the shared library.

	PR libstdc++/88681
	* config/abi/pre/gnu.ver: Add missing exports.
	* testsuite/22_locale/collate_byname/88681.cc: New test.
	* testsuite/22_locale/time_get/get/char/88681.cc: New test.
	* testsuite/22_locale/time_get/get/wchar_t/88681.cc: New test.

From-SVN: r267563
This commit is contained in:
Jonathan Wakely 2019-01-03 20:38:04 +00:00 committed by Jonathan Wakely
parent 19db0ebb16
commit dd87c5c228
5 changed files with 161 additions and 0 deletions

View File

@ -1,3 +1,11 @@
2019-01-03 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/88681
* config/abi/pre/gnu.ver: Add missing exports.
* testsuite/22_locale/collate_byname/88681.cc: New test.
* testsuite/22_locale/time_get/get/char/88681.cc: New test.
* testsuite/22_locale/time_get/get/wchar_t/88681.cc: New test.
2019-01-02 Jonathan Wakely <jwakely@redhat.com>
* testsuite/23_containers/map/cons/deduction.cc: Test deduction from

View File

@ -2069,6 +2069,9 @@ GLIBCXX_3.4.26 {
_ZNSt3pmr28unsynchronized_pool_resource11do_allocateE[jmy][jmy];
_ZNSt3pmr28unsynchronized_pool_resource13do_deallocateEPv[jmy][jmy];
_ZNSt14collate_bynameI[cw]EC[12]ERKSs[jmy];
_ZNKSt8time_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc;
} GLIBCXX_3.4.25;
# Symbols in the support library (libsupc++) have their own tag.

View File

@ -0,0 +1,48 @@
// Copyright (C) 2019 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/>.
// { dg-options "-fno-inline" }
// { dg-do link { target c++11 } }
#undef _GLIBCXX_USE_CXX11_ABI
#define _GLIBCXX_USE_CXX11_ABI 0
#include <locale>
#include <string>
std::string s = "C";
template<typename C>
struct facet : std::collate_byname<C>
{
facet() : std::collate_byname<C>(s) { }
};
void
test01()
{
facet<char> c;
#ifdef _GLIBCXX_USE_WCHAR_T
facet<wchar_t> w;
#endif
}
int
main()
{
test01();
}

View File

@ -0,0 +1,51 @@
// Copyright (C) 2019 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/>.
// { dg-options "-fno-inline" }
// { dg-do link { target c++11 } }
#undef _GLIBCXX_USE_CXX11_ABI
#define _GLIBCXX_USE_CXX11_ABI 0
#include <locale>
#include <sstream>
using C = char;
void
test01()
{
using namespace std;
locale loc_c = locale::classic();
basic_istringstream<C> iss;
iss.imbue(loc_c);
const time_get<C>& tget = use_facet<time_get<C>>(iss.getloc());
typedef istreambuf_iterator<C> iter;
const iter end;
tm time;
ios_base::iostate err = ios_base::badbit;
tget.get(iter(iss), end, iss, err, &time, 'Y');
}
int
main()
{
test01();
}

View File

@ -0,0 +1,51 @@
// Copyright (C) 2019 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/>.
// { dg-options "-fno-inline" }
// { dg-do link { target c++11 } }
#undef _GLIBCXX_USE_CXX11_ABI
#define _GLIBCXX_USE_CXX11_ABI 0
#include <locale>
#include <sstream>
using C = wchar_t;
void
test01()
{
using namespace std;
locale loc_c = locale::classic();
basic_istringstream<C> iss;
iss.imbue(loc_c);
const time_get<C>& tget = use_facet<time_get<C>>(iss.getloc());
typedef istreambuf_iterator<C> iter;
const iter end;
tm time;
ios_base::iostate err = ios_base::badbit;
tget.get(iter(iss), end, iss, err, &time, 'Y');
}
int
main()
{
test01();
}