You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
3.1 KiB
85 lines
3.1 KiB
Typo in Python support breaks info type-printers command |
|
https://bugzilla.redhat.com/show_bug.cgi?id=1350436 |
|
|
|
[testsuite patch] PR python/17136: 'info type-printers' causes an exception when there are per-objfile printers |
|
https://sourceware.org/ml/gdb-patches/2016-06/msg00455.html |
|
|
|
--- gdb-7.8.2/gdb/python/lib/gdb/command/type_printers.py-orig 2015-01-15 11:58:12.000000000 +0100 |
|
+++ gdb-7.8.2/gdb/python/lib/gdb/command/type_printers.py 2015-06-26 15:33:43.972460415 +0200 |
|
@@ -47,7 +47,7 @@ class InfoTypePrinter(gdb.Command): |
|
sep = '' |
|
for objfile in gdb.objfiles(): |
|
if objfile.type_printers: |
|
- print ("%sType printers for %s:" % (sep, objfile.name)) |
|
+ print ("%sType printers for %s:" % (sep, objfile.filename)) |
|
self.list_type_printers(objfile.type_printers) |
|
sep = '\n' |
|
if gdb.current_progspace().type_printers: |
|
diff -dup -rup gdb-7.6.1/gdb/testsuite/gdb.python-orig/py-typeprint.cc gdb-7.6.1/gdb/testsuite/gdb.python/py-typeprint.cc |
|
--- gdb-7.6.1/gdb/testsuite/gdb.python-orig/py-typeprint.cc 2013-01-01 07:41:26.000000000 +0100 |
|
+++ gdb-7.6.1/gdb/testsuite/gdb.python/py-typeprint.cc 2016-06-27 22:57:58.168642470 +0200 |
|
@@ -31,6 +31,12 @@ templ<basic_string> s; |
|
|
|
basic_string bs; |
|
|
|
+class Other |
|
+{ |
|
+}; |
|
+ |
|
+Other ovar; |
|
+ |
|
int main() |
|
{ |
|
return 0; |
|
diff -dup -rup gdb-7.6.1/gdb/testsuite/gdb.python-orig/py-typeprint.exp gdb-7.6.1/gdb/testsuite/gdb.python/py-typeprint.exp |
|
--- gdb-7.6.1/gdb/testsuite/gdb.python-orig/py-typeprint.exp 2013-01-01 07:41:26.000000000 +0100 |
|
+++ gdb-7.6.1/gdb/testsuite/gdb.python/py-typeprint.exp 2016-06-27 22:58:13.846785208 +0200 |
|
@@ -50,4 +50,8 @@ gdb_test "whatis bs" "string" "whatis wi |
|
|
|
gdb_test "whatis s" "templ<string>" |
|
|
|
+gdb_test "info type-printers" "Type printers for \[^\r\n\]*/py-typeprint:\r\n *other\r\n.*" \ |
|
+ "info type-printers for other" |
|
+gdb_test "whatis ovar" "type = Another" |
|
+ |
|
remote_file host delete ${remote_python_file} |
|
diff -dup -rup gdb-7.6.1/gdb/testsuite/gdb.python-orig/py-typeprint.py gdb-7.6.1/gdb/testsuite/gdb.python/py-typeprint.py |
|
--- gdb-7.6.1/gdb/testsuite/gdb.python-orig/py-typeprint.py 2013-01-01 07:41:26.000000000 +0100 |
|
+++ gdb-7.6.1/gdb/testsuite/gdb.python/py-typeprint.py 2016-06-27 22:57:58.169642479 +0200 |
|
@@ -15,7 +15,7 @@ |
|
|
|
import gdb |
|
|
|
-class Recognizer(object): |
|
+class StringRecognizer(object): |
|
def __init__(self): |
|
self.enabled = True |
|
|
|
@@ -30,6 +30,26 @@ class StringTypePrinter(object): |
|
self.enabled = True |
|
|
|
def instantiate(self): |
|
- return Recognizer() |
|
+ return StringRecognizer() |
|
|
|
gdb.type_printers.append(StringTypePrinter()) |
|
+ |
|
+class OtherRecognizer(object): |
|
+ def __init__(self): |
|
+ self.enabled = True |
|
+ |
|
+ def recognize(self, type_obj): |
|
+ if type_obj.tag == 'Other': |
|
+ return 'Another' |
|
+ return None |
|
+ |
|
+class OtherTypePrinter(object): |
|
+ def __init__(self): |
|
+ self.name = 'other' |
|
+ self.enabled = True |
|
+ |
|
+ def instantiate(self): |
|
+ return OtherRecognizer() |
|
+ |
|
+import gdb.types |
|
+gdb.types.register_type_printer(gdb.objfiles()[0], OtherTypePrinter())
|
|
|