This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Fix a couple libstdc++ pretty-printer bugs
- From: Tom Tromey <tromey at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: libstdc <libstdc++ at gcc dot gnu dot org>
- Date: Thu, 04 Jun 2009 13:51:56 -0600
- Subject: Fix a couple libstdc++ pretty-printer bugs
- Reply-to: tromey at redhat dot com
This patch fixes a few pretty-printer bugs:
* There is a bogus ";" in the python code.
This doesn't hurt but it is unnecessary
* g++ has started emitting shorter names for some basic_string
instantiations. This caused the printer lookup code not to
recognize strings.
* Doug Evans pointed out that the code still refers to WideEncoding,
which no longer exists.
Ok?
Tom
2009-06-04 Tom Tromey <tromey@redhat.com>
* python/libstdcxx/v6/printers.py (lookup_function): Remove extra
';'.
(build_libstdcxx_dictionary): Accept shortened form of
basic_string names.
(StdStringPrinter.to_string): Remove reference to WideEncoding.
Index: python/libstdcxx/v6/printers.py
===================================================================
--- python/libstdcxx/v6/printers.py (revision 148103)
+++ python/libstdcxx/v6/printers.py (working copy)
@@ -452,8 +452,6 @@
encoding = gdb.parameter('target-charset')
elif encoding == 1:
encoding = gdb.parameter('target-wide-charset')
- elif isinstance(encoding, WideEncoding):
- encoding = encoding.value
return self.val['_M_dataplus']['_M_p'].string(encoding)
def display_hint (self):
@@ -559,7 +557,7 @@
"Look-up and return a pretty-printer that can print val."
# Get the type.
- type = val.type;
+ type = val.type
# If it points to a reference, get the reference.
if type.code == gdb.TYPE_CODE_REF:
@@ -587,10 +585,10 @@
# libstdc++ objects requiring pretty-printing.
# In order from:
# http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01847.html
- pretty_printers_dict[re.compile('^std::basic_string<char,.*>$')] = lambda val: StdStringPrinter(0, val)
- pretty_printers_dict[re.compile('^std::basic_string<wchar_t,.*>$')] = lambda val: StdStringPrinter(1, val)
- pretty_printers_dict[re.compile('^std::basic_string<char16_t,.*>$')] = lambda val: StdStringPrinter('UTF-16', val)
- pretty_printers_dict[re.compile('^std::basic_string<char32_t,.*>$')] = lambda val: StdStringPrinter('UTF-32', val)
+ pretty_printers_dict[re.compile('^std::basic_string<char(,.*)?>$')] = lambda val: StdStringPrinter(0, val)
+ pretty_printers_dict[re.compile('^std::basic_string<wchar_t(,.*)?>$')] = lambda val: StdStringPrinter(1, val)
+ pretty_printers_dict[re.compile('^std::basic_string<char16_t(,.*)?>$')] = lambda val: StdStringPrinter('UTF-16', val)
+ pretty_printers_dict[re.compile('^std::basic_string<char32_t(,.*)?>$')] = lambda val: StdStringPrinter('UTF-32', val)
pretty_printers_dict[re.compile('^std::bitset<.*>$')] = StdBitsetPrinter
pretty_printers_dict[re.compile('^std::deque<.*>$')] = StdDequePrinter
pretty_printers_dict[re.compile('^std::list<.*>$')] = StdListPrinter