diff options
| -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): | 
