aboutsummaryrefslogtreecommitdiff
path: root/gdb/python
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2022-06-07 07:05:02 -0600
committerTom Tromey <tromey@adacore.com>2022-07-15 09:26:54 -0600
commit72be9d6be7de305b34ac298f1466167b9aba9bc2 (patch)
tree44543f544c27b7d0006baa6559e72e2d49f4eba0 /gdb/python
parentc4a3dbaf1132105586586617a59d0e7566eefd41 (diff)
downloadgdb-72be9d6be7de305b34ac298f1466167b9aba9bc2.zip
gdb-72be9d6be7de305b34ac298f1466167b9aba9bc2.tar.gz
gdb-72be9d6be7de305b34ac298f1466167b9aba9bc2.tar.bz2
Add 'summary' mode to Value.format_string
This adds a 'summary' mode to Value.format_string and to gdb.print_options. For the former, it lets Python code format values using this mode. For the latter, it lets a printer potentially detect if it is being called in a backtrace with 'set print frame-arguments' set to 'scalars'. I considered adding a new mode here to let a pretty-printer see whether it was being called in a 'backtrace' context at all, but I'm not sure if this is really desirable.
Diffstat (limited to 'gdb/python')
-rw-r--r--gdb/python/py-prettyprint.c2
-rw-r--r--gdb/python/py-value.c7
2 files changed, 8 insertions, 1 deletions
diff --git a/gdb/python/py-prettyprint.c b/gdb/python/py-prettyprint.c
index 4ef45b2..7b2aa58 100644
--- a/gdb/python/py-prettyprint.c
+++ b/gdb/python/py-prettyprint.c
@@ -753,6 +753,8 @@ gdbpy_print_options (PyObject *unused1, PyObject *unused2)
opts.static_field_print) < 0
|| set_boolean (result.get (), "deref_refs",
opts.deref_ref) < 0
+ || set_boolean (result.get (), "summary",
+ opts.summary) < 0
|| set_unsigned (result.get (), "max_elements",
opts.print_max) < 0
|| set_unsigned (result.get (), "max_depth",
diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c
index 93cb9b9..3b75cda 100644
--- a/gdb/python/py-value.c
+++ b/gdb/python/py-value.c
@@ -641,6 +641,7 @@ valpy_format_string (PyObject *self, PyObject *args, PyObject *kw)
"address", /* See set print address on|off. */
"styling", /* Should we apply styling. */
"nibbles", /* See set print nibbles on|off. */
+ "summary", /* Summary mode for non-scalars. */
/* C++ options. */
"deref_refs", /* No corresponding setting. */
"actual_objects", /* See set print object on|off. */
@@ -690,10 +691,11 @@ valpy_format_string (PyObject *self, PyObject *args, PyObject *kw)
PyObject *deref_refs_obj = NULL;
PyObject *actual_objects_obj = NULL;
PyObject *static_members_obj = NULL;
+ PyObject *summary_obj = NULL;
char *format = NULL;
if (!gdb_PyArg_ParseTupleAndKeywords (args,
kw,
- "|O!O!O!O!O!O!O!O!O!O!O!O!IIIs",
+ "|O!O!O!O!O!O!O!O!O!O!O!O!O!IIIs",
keywords,
&PyBool_Type, &raw_obj,
&PyBool_Type, &pretty_arrays_obj,
@@ -704,6 +706,7 @@ valpy_format_string (PyObject *self, PyObject *args, PyObject *kw)
&PyBool_Type, &address_obj,
&PyBool_Type, &styling_obj,
&PyBool_Type, &nibbles_obj,
+ &PyBool_Type, &summary_obj,
&PyBool_Type, &deref_refs_obj,
&PyBool_Type, &actual_objects_obj,
&PyBool_Type, &static_members_obj,
@@ -736,6 +739,8 @@ valpy_format_string (PyObject *self, PyObject *args, PyObject *kw)
return NULL;
if (!copy_py_bool_obj (&opts.static_field_print, static_members_obj))
return NULL;
+ if (!copy_py_bool_obj (&opts.summary, summary_obj))
+ return nullptr;
/* Numeric arguments for which 0 means unlimited (which we represent as
UINT_MAX). Note that the max-depth numeric argument uses -1 as