gcc/libstdc++-v3/libsupc++
Jonathan Wakely 34a2b7558b New std::string implementation.
* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_CXX11_ABI): Remove.
	(GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI, GLIBCXX_DEFAULT_ABI): Add.
	* configure.ac: Use new macros.
	* configure: Regenerate.
	* Makefile.in: Regenerate.
	* doc/Makefile.in: Regenerate.
	* libsupc++/Makefile.in: Regenerate.
	* po/Makefile.in: Regenerate.
	* src/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
	* include/Makefile.am: Set _GLIBCXX_USE_DUAL_ABI.
	* include/Makefile.in: Regenerate.
	* config/abi/pre/gnu.ver: Export symbols related to new std::string.
	Tighten old patterns to not match new symbols.
	* config/locale/generic/monetary_members.cc: Guard some definitions
	to not compile with new ABI.
	* config/locale/gnu/monetary_members.cc: Likewise.
	* config/locale/gnu/numeric_members.cc: Prevent double-free.
	* config/os/gnu-linux/ldbl-extra.ver: Add new __gnu_cxx_ldbl128
	exports. Tighten old patterns.
	* doc/xml/manual/configure.xml: Document new configure options.
	* doc/html/*: Regenerate.
	* include/bits/basic_string.h (__cxx11::basic_string): Define new
	non-reference-counted implementation in inline namespace __cxx11.
	(stoi, stol, stoll, stof, stod, stold, to_string): Conditionally use
	inline namespace.
	(literals::string_literals::operator"): Conditionally use abi-tag.
	* include/bits/basic_string.tcc (__cxx11::basic_string): Define.
	* include/bits/c++config: Define _GLIBCXX_USE_DUAL_ABI and
	LDBL_CXX11_ABI namespace macros.
	* include/bits/locale_classes.h (locale::name()): Use abi_tag when
	new ABI is in use.
	(locale::_S_twinned_facets): New static member.
	(locale::facet::__shim): Declare new type.
	(locale::_facet::_M_sso_shim, locale::_facet::_M_cow_shim): New
	functions for creating shims.
	(locale::_Impl::_M_facet_unchecked): New member function for use
	during construction.
	(locale::_Impl::_M_init_extra): New member functions to create second
	version of some facets.
	(collate, collate_byname): Use abi_tag when new ABI is in use.
	* include/bits/locale_facets.h: Add _GLIBCXX_NUM_CXX11_FACETS macro.
	(numpunct, numpunct_byname): Use __cxx11 namespace.
	(num_get::_M_extract_float, num_get::_M_extract_int): Use abi_tag
	when new ABI is in use.
	(num_get::__do_get, num_put::__do_put): Do not declare long double
	compat functions for new ABI.
	* include/bits/locale_facets.tcc (num_get, num_put): Use abi_tag on
	definitions.
	(numpunct, numpunct_byname): Qualify explicit instantiations.
	* include/bits/locale_facets_nonio.h (time_get, time_get_byname,
	moneypunct, moneypunct_byname, money_get, money_put, messages,
	messages_byname): Use new inline namespace macros.
	(money_get::__do_get, money_put::__do_put): Do not declare long
	double compat functions for new ABI.
	* include/bits/locale_facets_nonio.tcc (money_get, money_put): Use
	new namespace macros.
	(money_get::__do_get, money_put::__do_put): Do not define for new ABI.
	* include/bits/localefwd.h (numpunct, numpunct_byname, collate,
	collate_byname, time_get, time_get_byname, moneypunct,
	moneypunct_byname, money_get, money_put, messages, messages_byname):
	Use new namespace macros.
	* include/bits/regex.h: Use inline namespace macros.
	* include/bits/stl_list.h (_List_base, list): Use inline namespace
	instead of abi-tag.
	* include/bits/stringfwd.h (basic_string): Use namespace macros.
	* include/std/iosfwd (basic_stringbuf, basic_istringstream,
	basic_ostringstream, basic_stringstream): Likewise.
	* include/std/sstream: Likewise.
	(basic_stringbuf::__xfer_bufptrs): Update streambuf pointers on move.
	* include/std/stdexcept (__cow_string, __sso_string): New types for
	indirectly using std::string with either ABI.
	(logic_error, runtime_error): Replace std::string member with
	__cow_string when new ABI is in use. Declare non-inline copy
	constructor and assignment operator. Declare const char* constructors.
	(domain_error, invalid_argument, length_error, out_of_range,
	range_error, overflow_error, underflow_error): Declare const char*
	constructors.
	* include/std/system_error (error_category): Replace with new
	definition in inline namespace _V2.
	(error_code::message, error_condition::message): Use abi_tag on
	functions returning std::string.
	* python/libstdcxx/v6/printers.py (StdStringPrinter): Handle new ABI.
	* src/c++11/Makefile.am: Add new files.
	* src/c++11/Makefile.in: Regenerate.
	* src/c++11/compatibility-c++0x.cc: Compile with old std::string ABI.
	Define old error_category symbols.
	* src/c++11/cow-fstream-inst.cc: New. Instantiate fstream members
	using old std::string ABI.
	* src/c++11/cow-locale_init.cc (locale::_Impl::_M_init_extra): Define.
	* src/c++11/cow-shim_facets.cc: Define shim facets using old ABI.
	* src/c++11/cow-sstream-inst.cc: Instantiate stringstreams using old
	std::string ABI.
	* src/c++11/cow-stdexcept.cc: Define new constructors and assignment
	operators.
	(__cow_string, error_category::_M_message): Define.
	* src/c++11/cow-string-inst.cc: Explicit instantiations using old
	std::string. Include src/c++98/istream-string.cc.
	* src/c++11/cow-wstring-inst.cc: Explicit instantiations using old
	std::wstring.
	* src/c++11/cxx11-hash_tr1.cc: Explicit instantiations using new
	string.
	* src/c++11/cxx11-ios_failure.cc: Add sanity check.
	* src/c++11/cxx11-locale-inst.cc: Instantiate facets using new
	std::string.
	* src/c++11/cxx11-shim_facets.cc: Define shim facets using new ABI.
	* src/c++11/cxx11-stdexcept.cc: Define constructors taking new
	std::string.
	* src/c++11/cxx11-wlocale-inst.cc: Instantiate facets using
	new std::wstring.
	* src/c++11/fstream-inst.cc: Compile with new ABI.
	* src/c++11/functexcept.cc: Compile with old ABI.
	* src/c++11/random.cc: Compile with new ABI.
	* src/c++11/sstream-inst.cc: Compile with new ABI.
	* src/c++11/string-inst.cc: Explicit instantiations for new string.
	* src/c++11/system_error.cc (__sso_string, error_category::_M_message):
	Define.
	* src/c++11/wstring-inst.cc: Compile with new ABI.
	* src/c++98/Makefile.am: Compile some host files twice for old and
	new std::string. Add new files.
	* src/c++98/Makefile.in: Regenerate.
	* src/c++98/compatibility-ldbl.cc: Compile with old ABI.
	* src/c++98/compatibility.cc: Likewise.
	* src/c++98/concept-inst.cc: Likewise.
	* src/c++98/hash_tr1.cc: Likewise.
	* src/c++98/istream-string.cc: New file defining functions that
	work with istream and std::string moved from ...
	* src/c++98/istream.cc: ... here.
	* src/c++98/cow-istream-string.cc: Recompile istream-string.cc with
	old ABI.
	* src/c++98/locale-inst.cc: Adjust facet instantiations to work for
	either ABI.
	* src/c++98/locale.cc (locale::_M_install_facet,
	locale::_M_install_cache): Handle twinned facets.
	* src/c++98/locale-facets.cc: Compile with old std::string ABI.
	(__verify_grouping): Define new overload and old std::string version.
	* src/c++98/locale_init.cc: Initialize twinned facets.
	* src/c++98/localename.cc: Likewise.
	* src/c++98/misc-inst.cc: Instantiate C++98-only std::string members.
	(__verify_grouping): Define new std::string version.
	* src/c++98/stdexcept.cc: Compile with old std::string ABI.
	* src/c++98/wlocale-inst.cc: Likewise.
	* testsuite/18_support/50594.cc: Adjust to work with SSO strings.
	* testsuite/21_strings/basic_string/capacity/1.cc: Likewise.
	* testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise.
	* testsuite/21_strings/basic_string/capacity/char/18654.cc: Likewise.
	* testsuite/21_strings/basic_string/capacity/char/2.cc: Likewise.
	* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise.
	* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
	Likewise.
	* testsuite/21_strings/headers/string/synopsis.cc: Use inline
	namespace macros.
	* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
	* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Set dg-options so
	correct exception type can be caught.
	* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_arithmetic/char/
	exceptions_failbit.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
	exceptions_failbit.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_other/char/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
	* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
	* testsuite/27_io/basic_ostream/inserters_other/char/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/ios_base/storage/2.cc: Likewise.
	* testsuite/27_io/ios_base/failure/cxx11.cc: Disable for old ABI.
	* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error.
	* testsuite/libstdc++-prettyprinters/libfundts.cc: Use old ABI.
	* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
	* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
	* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
	* testsuite/util/exception/safety.h: Adjust member function types
	for new std::string.
	* testsuite/util/testsuite_abi.cc: Add new version and ignore
	__float128 symbols in __cxx11 namespace.

From-SVN: r218964
2014-12-19 18:16:39 +00:00
..
Makefile.am N3778: Sized Deallocation 2014-12-15 13:31:40 -05:00
Makefile.in New std::string implementation. 2014-12-19 18:16:39 +00:00
array_type_info.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
atexit_arm.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
atexit_thread.cc os_defines.h (_GLIBCXX_THREAD_ATEXIT_WIN32): Define. 2014-08-19 17:25:12 +02:00
atomic_lockfree_defines.h Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
bad_alloc.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
bad_array_length.cc Remove N3639 "array of runtime length" from -std=c++14. 2014-12-11 22:49:13 -05:00
bad_array_new.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
bad_cast.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
bad_typeid.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
class_type_info.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
cxxabi.h Remove N3639 "array of runtime length" from -std=c++14. 2014-12-11 22:49:13 -05:00
cxxabi_forced.h Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
del_op.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
del_opnt.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
del_ops.cc N3778: Sized Deallocation 2014-12-15 13:31:40 -05:00
del_opv.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
del_opvnt.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
del_opvs.cc N3778: Sized Deallocation 2014-12-15 13:31:40 -05:00
dyncast.cc dyncast.cc (__dynamic_cast): Handle mid-destruction dynamic_cast more gracefully. 2014-09-18 08:34:43 -04:00
eh_alloc.cc Core DR 475 PR c++/41174 PR c++/59224 2014-01-27 08:57:39 -05:00
eh_arm.cc re PR target/61223 (libstdc++ build fail due to pop lr register) 2014-05-20 17:25:26 +00:00
eh_aux_runtime.cc Remove N3639 "array of runtime length" from -std=c++14. 2014-12-11 22:49:13 -05:00
eh_call.cc re PR libstdc++/64276 (would be better to use __cpp_exceptions rather than __EXCEPTIONS to determine whether exceptions are available) 2014-12-12 15:58:49 +00:00
eh_catch.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
eh_exception.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
eh_globals.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
eh_personality.cc re PR libstdc++/64276 (would be better to use __cpp_exceptions rather than __EXCEPTIONS to determine whether exceptions are available) 2014-12-12 15:58:49 +00:00
eh_ptr.cc * libsupc++/eh_ptr.cc: Improve static_assert messages. 2014-03-31 19:16:14 +01:00
eh_term_handler.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
eh_terminate.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
eh_throw.cc Core DR 475 PR c++/41174 PR c++/59224 2014-01-27 08:57:39 -05:00
eh_tm.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
eh_type.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
eh_unex_handler.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
enum_type_info.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
exception Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
exception_defines.h re PR libstdc++/64276 (would be better to use __cpp_exceptions rather than __EXCEPTIONS to determine whether exceptions are available) 2014-12-12 15:58:49 +00:00
exception_ptr.h re PR libstdc++/64276 (would be better to use __cpp_exceptions rather than __EXCEPTIONS to determine whether exceptions are available) 2014-12-12 15:58:49 +00:00
function_type_info.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
fundamental_type_info.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
guard.cc re PR libstdc++/64276 (would be better to use __cpp_exceptions rather than __EXCEPTIONS to determine whether exceptions are available) 2014-12-12 15:58:49 +00:00
guard_error.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
hash_bytes.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
hash_bytes.h Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
initializer_list Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
nested_exception.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
nested_exception.h re PR libstdc++/62154 (std::throw_with_nested should not require a polymorphic type) 2014-08-15 16:22:44 +01:00
new Remove N3639 "array of runtime length" from -std=c++14. 2014-12-11 22:49:13 -05:00
new_handler.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
new_op.cc new_op.cc: Factor the calls to malloc, use __builtin_expect. 2014-05-17 17:47:36 +00:00
new_opnt.cc new_op.cc: Factor the calls to malloc, use __builtin_expect. 2014-05-17 17:47:36 +00:00
new_opv.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
new_opvnt.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
pbase_type_info.cc re PR libstdc++/64276 (would be better to use __cpp_exceptions rather than __EXCEPTIONS to determine whether exceptions are available) 2014-12-12 15:58:49 +00:00
pmem_type_info.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
pointer_type_info.cc re PR libstdc++/64276 (would be better to use __cpp_exceptions rather than __EXCEPTIONS to determine whether exceptions are available) 2014-12-12 15:58:49 +00:00
pure.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
si_class_type_info.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
tinfo.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
tinfo.h re PR libstdc++/61728 (lost symbol FUNC:_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@@CXXABI_1.3) 2014-07-09 18:21:49 -04:00
tinfo2.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
typeinfo Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
unwind-cxx.h re PR libstdc++/60612 (Throwing exception, catching and rethrowing (std::exception_ptr) in destructor leads to segfault) 2014-03-27 18:07:25 +00:00
vec.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
vmi_class_type_info.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00
vterminate.cc re PR libstdc++/64276 (would be better to use __cpp_exceptions rather than __EXCEPTIONS to determine whether exceptions are available) 2014-12-12 15:58:49 +00:00
vtv_stubs.cc Update copyright years in libstdc++-v3/ 2014-01-02 22:30:10 +00:00