[RFC] Add ada-exception-catchpoints to -list-features command output.

Joel Brobecker
2013-11-10T09:49:40Z

Hello,

The -list-features GDB/MI command is extremely useful to GDB frontends
who would like to know whether the underlying GDB supports a given
feature or not. Recently, I added new coommands for Ada exception
catching, but forgot about -list-features.

This patch adds an entry meant to help the frontend for those features.
But looking at the way the -list-features command is designed, I am
wondering whether this approach is going to scale well. As new commands
and other new features or major bug fixes get in, it seems like the
list is going to grow maybe a little beyond what's reasonable.

Without trying to redesign this feature entirely, since we're far from
being in that difficult situation, I am thinking it would be OK
to aggregate both fields related to Ada exceptions, namely...

- "info-ada-exceptions" (being introduced as we speak, see
http://www.sourceware.org/ml/gdb-patches/2013-11/msg00232.html)

- this new field (I chose "ada-exceptions-catchpoints")

... into a single field. For instance, we could chose "ada-exceptions",
meant to cover both the commands already in (for catching Ada exceptions),
and the new command being introduced (for listing all Ada exceptions).

So, although this patch proposes a new field (this is the straightforward
approach), given that all this GDB/MI work was done within the same
release cycle, and withing a reasonable amount of time, I think it
would be fine for everyone to use one single field in -list-features.

Thoughts?

In practical terms, I would drop the part in the patch quoted above
that adds the new -list-features field, and would propose another
one, distinct from the "-info-ada-exceptions" patch, which would
then introduce the new "ada-exceptions" -list-features field instead.

Thank you!

gdb/ChangeLog:

* mi/mi-main.c (mi_cmd_list_features): Add
"ada-exception-catchpoints" to -list-features output.

gdb/doc/ChangeLog:

* gdb.texinfo (GDB/MI Miscellaneous Commands): Document new
field "ada-exception-catchpoints" in -list-features output.
---
gdb/doc/gdb.texinfo | 3 +++
gdb/mi/mi-main.c | 1 +
2 files changed, 4 insertions(+)

diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 9127f94..9731bbf 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -34971,6 +34971,9 @@ CLI will be announced via async records.
indicates support for the @code{-ada-task-info} command.
@item info-ada-exceptions
indicates support for the @code{-info-ada-exceptions} command.
+@item ada-exception-catchpoints
+indicates support for the @code{-catch-assert} and @code{-catch-exception}
+commands.
@end table

@subheading The @code{-list-target-features} Command
diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
index bf0fce3..8ff7f27 100644
--- a/gdb/mi/mi-main.c
+++ b/gdb/mi/mi-main.c
@@ -1816,6 +1816,7 @@ mi_cmd_list_features (char *command, char **argv, int argc)
ui_out_field_string (uiout, NULL, "breakpoint-notifications");
ui_out_field_string (uiout, NULL, "ada-task-info");
ui_out_field_string (uiout, NULL, "info-ada-exceptions");
+ ui_out_field_string (uiout, NULL, "ada-exception-catchpoints");

#if HAVE_PYTHON
if (gdb_python_initialized)
--
1.8.1.2