gdb: fix pretty printing max depth behaviour
authorKent Cheung <kent.cheung@arm.com>
Thu, 13 May 2021 14:42:20 +0000 (15:42 +0100)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Fri, 14 May 2021 05:51:21 +0000 (06:51 +0100)
commitecf25064e87a3d2d59871b3ea7126fa0dee0001d
treeda6aa892b6386531716e8e1b3b33f4168f09d3e4
parent64654371d6324794d11131fc95c1bc4caaaf173d
gdb: fix pretty printing max depth behaviour

The 'print max-depth' feature incorrectly causes GDB to skip printing
the string representation of pretty printed variables if the variable
is stored at a nested depth corresponding to the set max-depth value.
This change ensures that it is always printed before checking whether
the maximum print depth has been reached.

Regression tested with GCC 7.3.0 on x86_64, ppc64le, aarch64.

gdb/ChangeLog:

* cp-valprint.c (cp_print_value): Replaced duplicate code.
* guile/scm-pretty-print.c (ppscm_print_children): Check max_depth
just before printing child values.
(gdbscm_apply_val_pretty_printer): Don't check max_depth before
printing string representation.
* python/py-prettyprint.c (print_children): Check max_depth just
before printing child values.
(gdbpy_apply_val_pretty_printer): Don't check max_depth before
printing string representation.

gdb/testsuite/ChangeLog:

* gdb.python/py-format-string.c: Added a variable to test.
* gdb.python/py-format-string.exp: Check string representation is
printed at appropriate max_depth settings.
* gdb.python/py-nested-maps.exp: Likewise.
* gdb.guile/scm-pretty-print.exp: Add additional tests.
gdb/ChangeLog
gdb/cp-valprint.c
gdb/guile/scm-pretty-print.c
gdb/python/py-prettyprint.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.guile/scm-pretty-print.exp
gdb/testsuite/gdb.python/py-format-string.c
gdb/testsuite/gdb.python/py-format-string.exp
gdb/testsuite/gdb.python/py-nested-maps.exp