Commit Graph

20 Commits

Author SHA1 Message Date
Jakub Jelinek
5624e564d2 Update copyright years.
From-SVN: r219188
2015-01-05 13:33:28 +01:00
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
Tom de Vries
6a848e9de1 Ensure single 'UNSUPPORTED: prettyprinters.exp' message
2014-11-25  Tom de Vries  <tom@codesourcery.com>

	* testsuite/libstdc++-prettyprinters/prettyprinters.exp: Add missing
	dg-finish.  Only print unsupported message once.

From-SVN: r218060
2014-11-25 20:30:20 +00:00
Jonathan Wakely
6f440cceb4 printers.py (SingleObjContainerPrinter): New base class for experimental::any and experimental::optional printers.
* python/libstdcxx/v6/printers.py (SingleObjContainerPrinter): New
	base class for experimental::any and experimental::optional printers.
	(StdExpAnyPrinter, StdExpOptionalPrinter, StdExpStringViewPrinter):
	New printers for Fundamentals TS types.
	* testsuite/libstdc++-prettyprinters/libfundts.cc: New.

From-SVN: r212556
2014-07-15 13:00:18 +01:00
Jonathan Wakely
077aa95ec7 printers.py (TemplateTypePrinter): Add type printer for class templates.
* python/libstdcxx/v6/printers.py (TemplateTypePrinter): Add type
	printer for class templates.
	(register_type_printers): Use TemplateTypePrinter for containers
	and other class templates with default template arguments.
	* testsuite/libstdc++-prettyprinters/whatis.cc: Test new recognizers.

From-SVN: r212555
2014-07-15 13:00:12 +01:00
Jonathan Wakely
047f1cec7f re PR libstdc++/59476 (gdb pretty-printer cannot print C++11 _Rb_tree_iterator)
PR libstdc++/59476
	* python/libstdcxx/v6/printers.py (get_value_from_Rb_tree_node): New
	function to handle both C++03 and C++11 _Rb_tree_node implementations.
	(StdRbtreeIteratorPrinter, StdMapPrinter, StdSetPrinter): Use it.
	* testsuite/libstdc++-prettyprinters/simple.cc: Update comment to
	refer to...
	* testsuite/libstdc++-prettyprinters/simple11.cc: New.

From-SVN: r210008
2014-05-02 17:01:30 +01:00
Richard Sandiford
aa118a03c4 Update copyright years in libstdc++-v3/
From-SVN: r206301
2014-01-02 22:30:10 +00:00
Phil Muldoon
c77efe8f42 re PR libstdc++/53477 (pretty printer fails with: Python Exception <type 'exceptions.IndexError'> list index out of range)
2013-08-20  Phil Muldoon  <pmuldoon@redhat.com>

	PR libstdc++/53477
	http://sourceware.org/bugzilla/show_bug.cgi?id=15195

	* python/libstdcxx/v6/printers.py (Printer.__call__): If a value
	is a reference, fetch referenced value.
	(RxPrinter.invoke): Ditto.
	* testsuite/libstdc++-prettyprinters/cxx11.cc (main): Add -O0
	flag. Add referenced value tests.

From-SVN: r201888
2013-08-20 19:20:42 +00:00
Tom Tromey
0d471c50a3 * testsuite/libstdc++-prettyprinters/shared_ptr.cc: Use -O0.
From-SVN: r199708
2013-06-05 18:58:12 +00:00
François Dumont
4722d00530 printers.py (Tr1HashtableIterator): Fix rendering of std::tr1 unordered containers iterator.
2013-05-15  François Dumont  <fdumont@gcc.gnu.org>

	* python/libstdcxx/v6/printers.py (Tr1HashtableIterator): Fix
	rendering of std::tr1 unordered containers iterator.
	(StdHashtableIterator): New, render std unordered containers iterator.
	* testsuite/libstdc++-prettyprinters/tr1.cc: New.

From-SVN: r198947
2013-05-15 19:39:18 +00:00
Paolo Carlini
d6222d4ef0 cxx11.cc: Include <memory>.
2013-04-08  Paolo Carlini  <paolo.carlini@oracle.com>

	* testsuite/libstdc++-prettyprinters/cxx11.cc: Include <memory>.

From-SVN: r197594
2013-04-08 16:47:02 +00:00
Richard Sandiford
405feeb871 Update copyright in libstdc++-v3.
From-SVN: r195701
2013-02-03 17:54:05 +00:00
Tom Tromey
50605a7f19 whatis.cc: New file.
* testsuite/libstdc++-prettyprinters/whatis.cc: New file.
	* testsuite/lib/gdb-test.exp (whatis-test): New proc.
	(gdb-test): Handle 'whatis' tests.
	(gdb_batch_check): New proc.
	(gdb_version_check): Rewrite to use gdb_batch_check.
	* python/libstdcxx/v6/printers.py: Import gdb.types.
	(FilteringTypePrinter): New class.
	(add_one_type_printer, register_type_printers): New functions.
	(register_libstdcxx_printers): Call register_type_printers.

From-SVN: r193573
2012-11-16 18:17:25 +00:00
Tom Tromey
c4269a634c cxx11.cc (struct datum): New.
* testsuite/libstdc++-prettyprinters/cxx11.cc (struct datum):
	New.
	(global): New global.
	(main): Add test for unique_ptr.
	* python/libstdcxx/v6/printers.py
	(UniquePointerPrinter.to_string): Extract the pointer and also
	print its type.

From-SVN: r190417
2012-08-15 18:37:30 +00:00
Tom Tromey
d25b1e3a80 cxx11.cc (main): Add new tests.
* testsuite/libstdc++-prettyprinters/cxx11.cc (main): Add new
	tests.
	* python/libstdcxx/v6/printers.py (Tr1HashtableIterator.__init__):
	Rewrite.
	(Tr1HashtableIterator.update): Remove.
	(Tr1HashtableIterator.next): Rewrite.

From-SVN: r184233
2012-02-14 20:38:39 +00:00
Jonathan Wakely
a1527f2f5b re PR libstdc++/51956 ([patch] improve shared_ptr and weak_ptr pretty-printers for gdb)
PR libstdc++/51956
	* python/libstdcxx/v6/printers.py (StdPointerPrinter): Rename to...
	(SharedPointerPrinter): This. Also show weak count.
	* testsuite/libstdc++-prettyprinters/shared_ptr.cc: New.

From-SVN: r183914
2012-02-05 19:10:15 +00:00
Tom Tromey
3efe2bf72b re PR libstdc++/51649 (pretty printers don't handle std::__7:: namespace)
PR libstdc++/51649:
	* testsuite/libstdc++-prettyprinters/debug.cc: New file.
	* testsuite/lib/gdb-test.exp (regexp-test): New proc.
	(note-test): Update.
	(gdb-test): Handle regexp tests.  Add some logging.
	* testsuite/libstdc++-prettyprinters/simple.cc: Compile with -O0.
	(placeholder, use): Remove.
	(main): Add tests for deque, list, map, and set iterators.  Add
	tests for slist and slist iterator.
	* testsuite/libstdc++-prettyprinters/48362.cc (main): Handle __7
	namespace.
	* python/libstdcxx/v6/printers.py (StdListPrinter.children): Use
	the type's _Node typedef.
	(StdListIteratorPrinter.to_string): Change how node type is
	computed.
	(StdSlistPrinter.children): Use the type's _Node typedef.
	(StdSlistIteratorPrinter.to_string): Likewise.
	(StdRbtreeIteratorPrinter.to_string): Use the type's _Link_type
	typedef.
	(StdMapPrinter.children): Change how the node's type is computed.
	(StdSetPrinter.children): Likewise.
	(StdForwardListPrinter.children): Use the type's _Node typedef.
	(Printer.add_version): New method.
	(Printer.add_container): New method.
	(build_libstdcxx_dictionary): Handle __7 and __cxx1998
	namespaces.
	(find_type): New function.

From-SVN: r183732
2012-01-30 16:25:11 +00:00
Jonathan Wakely
8dfb08abc3 printers.py (StdForwardListPrinter): Add.
* python/libstdcxx/v6/printers.py (StdForwardListPrinter): Add.
	* testsuite/libstdc++-prettyprinters/cxx11.cc: New.

From-SVN: r182989
2012-01-08 12:34:00 +00:00
Jonathan Wakely
7bde813394 re PR libstdc++/48362 (pretty printer fails for zero-size std::tuple<>)
PR libstdc++/48362
	* testsuite/libstdc++-prettyprinters/48362.cc: New.

From-SVN: r182632
2011-12-22 18:58:15 +00:00
Tom Tromey
01bb8ae217 simple.cc: New file.
* testsuite/libstdc++-prettyprinters/simple.cc: New file.
	* testsuite/lib/gdb-test.exp: New file.
	* testsuite/libstdc++-prettyprinters/prettyprinters.exp: New
	file.

From-SVN: r178066
2011-08-25 14:29:47 +00:00