aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/doc/ChangeLog5
-rw-r--r--gdb/doc/python.texi5
-rw-r--r--gdb/testsuite/ChangeLog9
-rw-r--r--gdb/testsuite/gdb.python/py-prettyprint.c2
-rw-r--r--gdb/testsuite/gdb.python/py-prettyprint.exp15
-rw-r--r--gdb/testsuite/gdb.python/py-prettyprint.py6
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):