diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/doc/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/doc/python.texi | 5 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-prettyprint.c | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-prettyprint.exp | 15 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-prettyprint.py | 6 |
6 files changed, 40 insertions, 2 deletions
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 1f41498..87e20d3 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,8 @@ +2019-03-26 Andrew Burgess <andrew.burgess@embecosm.com> + + * python.texi (Pretty Printing API): Document use of None for the + display_hint. + 2019-03-22 Alan Hayward <alan.hayward@arm.com> Jiong Wang <jiong.wang@arm.com> diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi index 6fadaff..56c925d 100644 --- a/gdb/doc/python.texi +++ b/gdb/doc/python.texi @@ -1294,7 +1294,7 @@ consumer as a @samp{displayhint} attribute of the variable being printed. This method is optional. If it does exist, this method must return a -string. +string or the special value @code{None}. Some display hints are predefined by @value{GDBN}: @@ -1317,6 +1317,9 @@ string-printing function to format the string. For the CLI this means adding quotation marks, possibly escaping some characters, respecting @code{set print elements}, and the like. @end table + +The special value @code{None} causes @value{GDBN} to apply the default +display rules. @end defun @defun pretty_printer.to_string (self) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 04a90fc..e283f68 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,14 @@ 2019-03-26 Andrew Burgess <andrew.burgess@embecosm.com> + * gdb.python/py-prettyprint.c (struct container) <is_map_p>: New + field. + (make_container): Initialise new field. + * gdb.python/py-prettyprint.exp: Add new tests. + * gdb.python/py-prettyprint.py (class ContainerPrinter) + <display_hint>: New method. + +2019-03-26 Andrew Burgess <andrew.burgess@embecosm.com> + * gdb.python/py-prettyprint.exp: Use gdb_breakpoint and gdb_continue_to_breakpoint more throughout this test. (run_lang_tests) Supply unique test names, and use diff --git a/gdb/testsuite/gdb.python/py-prettyprint.c b/gdb/testsuite/gdb.python/py-prettyprint.c index 01fdf8a..1b9aeb4 100644 --- a/gdb/testsuite/gdb.python/py-prettyprint.c +++ b/gdb/testsuite/gdb.python/py-prettyprint.c @@ -175,6 +175,7 @@ struct container string name; int len; int *elements; + int is_map_p; }; typedef struct container zzz_type; @@ -195,6 +196,7 @@ make_container (const char *s) result.name = make_string (s); result.len = 0; result.elements = 0; + result.is_map_p = 0; return result; } diff --git a/gdb/testsuite/gdb.python/py-prettyprint.exp b/gdb/testsuite/gdb.python/py-prettyprint.exp index 3359082..82e7e65 100644 --- a/gdb/testsuite/gdb.python/py-prettyprint.exp +++ b/gdb/testsuite/gdb.python/py-prettyprint.exp @@ -109,7 +109,12 @@ proc run_lang_tests {exefile lang} { gdb_test_no_output "set python print-stack full" gdb_test "print hint_error" "Exception: hint failed\r\nhint_error_val" - gdb_test "print c" " = container \"container\" with 2 elements = {$nl *.0. = 23,$nl *.1. = 72$nl}" + gdb_test "print c" " = container \"container\" with 2 elements = {$nl *.0. = 23,$nl *.1. = 72$nl}" \ + "print c, pretty printing on, default display hint" + + gdb_test_no_output "set variable c.is_map_p=1" + gdb_test "print c" " = container \"container\" with 2 elements = \{$nl \\\[23\\\] = 72$nl\}" \ + "print c, pretty printing on, display hint is now map" gdb_test "print nstype" " = {$nl *.0. = 7,$nl *.1. = 42$nl}" @@ -117,6 +122,14 @@ proc run_lang_tests {exefile lang} { gdb_test "print nstype" " = {.0. = 7, .1. = 42}" \ "print nstype on one line" + # Now we have pretty printing turned off, try printing 'c' again. + gdb_test "print c" " = container \"container\" with 2 elements = \{\\\[23\\\] = 72\}" \ + "print c, pretty printing off, display hint is now map" + + gdb_test_no_output "set variable c.is_map_p=0" + gdb_test "print c" " = container \"container\" with 2 elements = \{\\\[0\\\] = 23, \\\[1\\\] = 72\}" \ + "print c, pretty printing off, default display hint" + # Check that GDB doesn't lose typedefs when looking for a printer. gdb_test "print an_int" " = -1" gdb_test "print (int) an_int" " = -1" diff --git a/gdb/testsuite/gdb.python/py-prettyprint.py b/gdb/testsuite/gdb.python/py-prettyprint.py index 92fe815..43727f7 100644 --- a/gdb/testsuite/gdb.python/py-prettyprint.py +++ b/gdb/testsuite/gdb.python/py-prettyprint.py @@ -56,6 +56,12 @@ class ContainerPrinter (object): def children(self): return _iterator(self.val['elements'], self.val['len']) + def display_hint (self): + if (self.val['is_map_p']): + return 'map' + else: + return None + # Treats a container as array. class ArrayPrinter (object): def __init__(self, val): |