diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 1f41498dc83..87e20d3adb4 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 6fadaffa371..56c925d4dd2 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 04a90fca41c..e283f68201e 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+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
diff --git a/gdb/testsuite/gdb.python/py-prettyprint.c b/gdb/testsuite/gdb.python/py-prettyprint.c
index 01fdf8a96e6..1b9aeb4b679 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 335908279c9..82e7e650316 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 92fe81525b1..43727f7231d 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):